Skip to content

Commit 883351d

Browse files
committed
Formatting
1 parent 18cad9a commit 883351d

2 files changed

Lines changed: 91 additions & 95 deletions

File tree

test/test-ModelList.jl

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -231,40 +231,38 @@ end=#
231231
@testset "ModelList outputs preallocation" begin
232232
meteo_day = CSV.read(joinpath(pkgdir(PlantSimEngine), "examples/meteo_day.csv"), DataFrame, header=18)
233233
vals = (var1=15.0, var2=0.3, TT_cu=cumsum(meteo_day.TT))
234-
leaf = ModelList(
234+
leaf = ModelList(
235235
process1=Process1Model(1.0),
236236
process2=Process2Model(),
237237
status=vals
238238
)
239-
outs=(:var3,)
239+
outs = (:var3,)
240240

241241
mtg, mapping, outputs_mapping, nsteps, filtered_outputs_modellist = test_filtered_output_begin(leaf, vals, outs, meteo_day)
242242
@test test_filtered_output(mtg, mapping, nsteps, outputs_mapping, meteo_day, filtered_outputs_modellist)
243243

244-
meteos =
245-
[Atmosphere(T=20.0, Wind=1.0, P=101.3, Rh=0.65, Ri_PAR_f=300.0),
246-
CSV.read(joinpath(pkgdir(PlantSimEngine), "examples/meteo_day.csv"), DataFrame, header=18),
247-
]
244+
meteos =
245+
[Atmosphere(T=20.0, Wind=1.0, P=101.3, Rh=0.65, Ri_PAR_f=300.0),
246+
CSV.read(joinpath(pkgdir(PlantSimEngine), "examples/meteo_day.csv"), DataFrame, header=18),
247+
]
248248
modellists, status_tuples, outs_vectors = get_modellist_bank()
249249

250250
# remove some of the currently unhandled cases
251-
outs_vectors =
252-
[
253-
# this one has one tuple with a duplicate, and one with a nonexistent variable
254-
[(:var1,), #=(:var1, :var1),=# (:var1, :var2), (:var1, :var3), (:var1, :var4, :var5),
255-
#=(:var2, :var7, :var3, :var1),=# (:var1, :var2, :var3, :var4, :var5)],
256-
[#=NamedTuple(),=# (:TT_cu,), (:TT_cu,:LAI) , (:biomass,:LAI), (:TT_cu, :LAI, :aPPFD, :biomass, :biomass_increment),],
257-
[#=NamedTuple(),=# (:var1,), (:var1, :var4), (:var1, :var2), (:var1, :var3), (:var1, :var4, :var6, :var5),
258-
#=(:var2, :var7, :var3, :var1),=# (:var1, :var2, :var3, :var4, :var5, :var6)],
259-
[#=NamedTuple(),=# (:var1,), (:var1, :var4), (:var1, :var2), (:var1, :var3), (:var1, :var4, :var6, :var5),
260-
(:var2, :var7, :var3, :var1), (:var1, :var2, :var3, :var4, :var5, :var6)],
261-
[#=NamedTuple(),=# (:var1,), (:var1, :var4), (:var1, :var2), (:var1, :var3), (:var1, :var4, :var6, :var5),
262-
(:var2, :var7, :var3, :var1), (:var1, :var2, :var3, :var4, :var5, :var6)
263-
, (:var1, :var2, :var3, :var4, :var5, :var6, :var7, :var8, :var9)],
264-
[#=NamedTuple(),=# (:var1,), #=(:var1, :var1),=# (:var1, :var2), (:var1, :var3), (:var1, :var4, :var6, :var5),
265-
(:var2, :var7, :var3, :var1), (:var1, :var2, :var3, :var4, :var5, :var6)
266-
, (:var1, :var2, :var3, :var4, :var5, :var6, :var7, #=:var8, :var9,=# :var0)],
267-
]
251+
outs_vectors =
252+
[
253+
# this one has one tuple with a duplicate, and one with a nonexistent variable
254+
[(:var1,), (:var1, :var2), (:var1, :var3), (:var1, :var4, :var5), #=(:var1, :var1),=#
255+
(:var1, :var2, :var3, :var4, :var5)], #=(:var2, :var7, :var3, :var1),=#
256+
[(:TT_cu,), (:TT_cu, :LAI), (:biomass, :LAI), (:TT_cu, :LAI, :aPPFD, :biomass, :biomass_increment),], #=NamedTuple(),=#
257+
[(:var1,), (:var1, :var4), (:var1, :var2), (:var1, :var3), (:var1, :var4, :var6, :var5), #=NamedTuple(),=#
258+
(:var1, :var2, :var3, :var4, :var5, :var6)], #=(:var2, :var7, :var3, :var1),=#
259+
[(:var1,), (:var1, :var4), (:var1, :var2), (:var1, :var3), (:var1, :var4, :var6, :var5), #=NamedTuple(),=#
260+
(:var2, :var7, :var3, :var1), (:var1, :var2, :var3, :var4, :var5, :var6)],
261+
[(:var1,), (:var1, :var4), (:var1, :var2), (:var1, :var3), (:var1, :var4, :var6, :var5), #=NamedTuple(),=#
262+
(:var2, :var7, :var3, :var1), (:var1, :var2, :var3, :var4, :var5, :var6), (:var1, :var2, :var3, :var4, :var5, :var6, :var7, :var8, :var9)],
263+
[(:var1,), (:var1, :var2), (:var1, :var3), (:var1, :var4, :var6, :var5), #=(:var1, :var1),=#
264+
(:var2, :var7, :var3, :var1), (:var1, :var2, :var3, :var4, :var5, :var6), (:var1, :var2, :var3, :var4, :var5, :var6, :var7, :var0)], #=:var8, :var9,=#
265+
]
268266

269267

270268

@@ -281,17 +279,17 @@ end=#
281279
for j in 1:length(meteos)
282280
meteo = meteos[j]
283281
for k in 1:length(outs_vector)
284-
out_tuple = outs_vector[k]
282+
out_tuple = outs_vector[k]
285283
#print(i, " ", j, " ", k)
286284
meteo_adjusted = PlantSimEngine.adjust_weather_timesteps_to_given_length(
287-
PlantSimEngine.get_status_vector_max_length(modellist.status) , meteo)
285+
PlantSimEngine.get_status_vector_max_length(modellist.status), meteo)
288286
mtg, mapping, outputs_mapping, nsteps, filtered_outputs_modellist = test_filtered_output_begin(modellist, status_tuple, out_tuple, meteo_adjusted)
289287
@test to_initialize(mapping) == Dict()
290288
@test test_filtered_output(mtg, mapping, nsteps, outputs_mapping, meteo_adjusted, filtered_outputs_modellist)
291289
end
292290
end
293291
end
294-
292+
295293
#mtg, mapping, outputs_mapping, nsteps, filtered_outputs_modellist = test_filtered_output_begin(modellists[1], status_tuples[1], outs_vectors[1][1], meteos[1])
296294
#@test test_filtered_output(mtg, mapping, nsteps, outputs_mapping, meteo_day, filtered_outputs_modellist)
297295
end
@@ -305,7 +303,7 @@ end
305303

306304
function PlantSimEngine.run!(::Reeb, models, status, meteo, constants, extra=nothing)
307305
status.LAI =
308-
status.aPPFD + 0.4*k
306+
status.aPPFD + 0.4 * k
309307
end
310308

311309
function PlantSimEngine.inputs_(::Reeb)

test/test-mapping.jl

Lines changed: 66 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -72,29 +72,29 @@ end
7272
mapping_with_vector = Dict(
7373
"Scale" =>
7474
(ToyAssimGrowthModel(0.0, 0.0, 0.0),
75-
ToyCAllocationModel(),
76-
Status( TT_cu=Vector(cumsum(meteo_day.TT))),
75+
ToyCAllocationModel(),
76+
Status(TT_cu=Vector(cumsum(meteo_day.TT))),
7777
),
78-
)
79-
80-
mtg = import_mtg_example()
81-
@test !last(PlantSimEngine.check_statuses_contain_no_remaining_vectors(mapping_with_vector))
82-
@test_throws "call the function generate_models_from_status_vectors" PlantSimEngine.GraphSimulation(mtg, mapping_with_vector)
83-
84-
mapping_with_empty_status = Dict(
78+
)
79+
80+
mtg = import_mtg_example()
81+
@test !last(PlantSimEngine.check_statuses_contain_no_remaining_vectors(mapping_with_vector))
82+
@test_throws "call the function generate_models_from_status_vectors" PlantSimEngine.GraphSimulation(mtg, mapping_with_vector)
83+
84+
mapping_with_empty_status = Dict(
8585
"Scale" =>
8686
(ToyAssimGrowthModel(0.0, 0.0, 0.0),
87-
ToyCAllocationModel(),
88-
Status(),
87+
ToyCAllocationModel(),
88+
Status(),
8989
),
90-
)
91-
92-
@test last(PlantSimEngine.check_statuses_contain_no_remaining_vectors(mapping_with_empty_status))
90+
)
91+
92+
@test last(PlantSimEngine.check_statuses_contain_no_remaining_vectors(mapping_with_empty_status))
9393
end
9494

9595
# simple conversion to a mapping, with a manually written model
9696
function modellist_to_mapping_manual(modellist_original::ModelList, modellist_status, nsteps; check=true, outputs=nothing, TT_cu_vec=Vector{Float64}())
97-
97+
9898
modellist = Base.copy(modellist_original, modellist_original.status)
9999

100100
default_scale = "Default"
@@ -106,17 +106,17 @@ function modellist_to_mapping_manual(modellist_original::ModelList, modellist_st
106106

107107
mapping = Dict(
108108
default_scale => (
109-
models...,
110-
ToyTestDegreeDaysCumulModel(TT_cu_vec=TT_cu_vec),
111-
PlantSimEngine.HelperNextTimestepModel(),
112-
MultiScaleModel(
113-
model=PlantSimEngine.HelperCurrentTimestepModel(),
114-
mapped_variables=[PreviousTimeStep(:next_timestep),],
115-
),
116-
Status(current_timestep=1,next_timestep=1)
109+
models...,
110+
ToyTestDegreeDaysCumulModel(TT_cu_vec=TT_cu_vec),
111+
PlantSimEngine.HelperNextTimestepModel(),
112+
MultiScaleModel(
113+
model=PlantSimEngine.HelperCurrentTimestepModel(),
114+
mapped_variables=[PreviousTimeStep(:next_timestep),],
115+
),
116+
Status(current_timestep=1, next_timestep=1)
117117
),
118118
)
119-
119+
120120
if isnothing(outputs)
121121
f = []
122122
for i in 1:length(modellist.models)
@@ -131,7 +131,7 @@ function modellist_to_mapping_manual(modellist_original::ModelList, modellist_st
131131
f = unique!(f)
132132
all_vars = (f...,)
133133
#all_vars = merge((keys(init_variables(object.models[i])) for i in 1:length(object.models))...)
134-
else
134+
else
135135
all_vars = outputs
136136
# TODO sanity check
137137
end
@@ -150,7 +150,7 @@ end
150150
PlantSimEngine.inputs_(::ToyTestDegreeDaysCumulModel) = (current_timestep=1,)
151151
PlantSimEngine.outputs_(::ToyTestDegreeDaysCumulModel) = (TT_cu=0.0,)
152152

153-
ToyTestDegreeDaysCumulModel(; TT_cu_vec = Vector{Float64}()) = ToyTestDegreeDaysCumulModel(TT_cu_vec)
153+
ToyTestDegreeDaysCumulModel(; TT_cu_vec=Vector{Float64}()) = ToyTestDegreeDaysCumulModel(TT_cu_vec)
154154

155155

156156
function PlantSimEngine.run!(m::ToyTestDegreeDaysCumulModel, models, status, meteo, constants=nothing, extra=nothing)
@@ -164,7 +164,7 @@ PlantSimEngine.ObjectDependencyTrait(::Type{<:ToyTestDegreeDaysCumulModel}) = Pl
164164
meteo_day = CSV.read(joinpath(pkgdir(PlantSimEngine), "examples/meteo_day.csv"), DataFrame, header=18)
165165

166166
st = (TT_cu=cumsum(meteo_day.TT),)
167-
167+
168168
TT_cu_vec = Vector(cumsum(meteo_day.TT))
169169

170170
rue = 0.3
@@ -197,9 +197,9 @@ PlantSimEngine.ObjectDependencyTrait(::Type{<:ToyTestDegreeDaysCumulModel}) = Pl
197197

198198
# fully automated model generation
199199
st2 = (TT_cu=Vector(cumsum(meteo_day.TT)),)
200-
200+
201201
mtg, mapping, outputs_mapping = PlantSimEngine.modellist_to_mapping(models, st2; nsteps=nsteps, outputs=nothing)
202-
202+
203203
@test to_initialize(mapping) == Dict()
204204

205205
graphsim2 = PlantSimEngine.GraphSimulation(mtg, mapping, nsteps=nsteps, check=true, outputs=outputs_mapping)
@@ -225,52 +225,50 @@ end
225225
TT_cu_vec = Vector(cumsum(meteo_day.TT))
226226
nsteps = length(meteo_day.TT)
227227

228-
mapping_with_vector = Dict(
229-
230-
"Plant" => (
231-
MultiScaleModel(
232-
model=ToyCAllocationModel(),
233-
mapped_variables=[
234-
# inputs
235-
:carbon_assimilation => ["Leaf"],
236-
:carbon_demand => ["Leaf", "Internode"],
237-
# outputs
238-
:carbon_allocation => ["Leaf", "Internode"]
239-
],
228+
mapping_with_vector = Dict("Plant" => (
229+
MultiScaleModel(
230+
model=ToyCAllocationModel(),
231+
mapped_variables=[
232+
# inputs
233+
:carbon_assimilation => ["Leaf"],
234+
:carbon_demand => ["Leaf", "Internode"],
235+
# outputs
236+
:carbon_allocation => ["Leaf", "Internode"]
237+
],
238+
),
239+
MultiScaleModel(
240+
model=ToyPlantRmModel(),
241+
mapped_variables=[:Rm_organs => ["Leaf" => :Rm, "Internode" => :Rm],],
242+
),
240243
),
241-
MultiScaleModel(
242-
model=ToyPlantRmModel(),
243-
mapped_variables=[:Rm_organs => ["Leaf" => :Rm, "Internode" => :Rm],],
244+
"Internode" => (
245+
ToyCDemandModel(optimal_biomass=10.0, development_duration=200.0),
246+
ToyMaintenanceRespirationModel(1.5, 0.06, 25.0, 0.6, 0.004),
247+
Status(TT=TT_v, carbon_biomass=1.0)
244248
),
245-
),
246-
"Internode" => (
247-
ToyCDemandModel(optimal_biomass=10.0, development_duration=200.0),
248-
ToyMaintenanceRespirationModel(1.5, 0.06, 25.0, 0.6, 0.004),
249-
Status(TT=TT_v, carbon_biomass=1.0)
250-
),
251-
"Leaf" => (
252-
MultiScaleModel(
253-
model=ToyAssimModel(),
254-
mapped_variables=[:soil_water_content => "Soil",],
255-
# Notice we provide "Soil", not ["Soil"], so a single value is expected here
249+
"Leaf" => (
250+
MultiScaleModel(
251+
model=ToyAssimModel(),
252+
mapped_variables=[:soil_water_content => "Soil",],
253+
# Notice we provide "Soil", not ["Soil"], so a single value is expected here
254+
),
255+
ToyCDemandModel(optimal_biomass=10.0, development_duration=200.0),
256+
ToyMaintenanceRespirationModel(2.1, 0.06, 25.0, 1.0, 0.025),
257+
Status(aPPFD=1300.0, carbon_biomass=2.0, TT=10.0), # TODO try calling the generated TT output through a variable mapping
256258
),
257-
ToyCDemandModel(optimal_biomass=10.0, development_duration=200.0),
258-
ToyMaintenanceRespirationModel(2.1, 0.06, 25.0, 1.0, 0.025),
259-
Status(aPPFD=1300.0, carbon_biomass=2.0, TT=10.0), # TODO try calling the generated TT output through a variable mapping
260-
),
261-
"Soil" => (
262-
ToySoilWaterModel(),
263-
),
264-
)
259+
"Soil" => (
260+
ToySoilWaterModel(),
261+
),
262+
)
265263

266-
out_multiscale = Dict("Plant" => (:Rm_organs,),)
267-
mtg = import_mtg_example();
264+
out_multiscale = Dict("Plant" => (:Rm_organs,),)
265+
mtg = import_mtg_example()
268266

269-
mapping_without_vectors = PlantSimEngine.replace_mapping_status_vectors_with_generated_models(mapping_with_vector, "Soil", nsteps)
267+
mapping_without_vectors = PlantSimEngine.replace_mapping_status_vectors_with_generated_models(mapping_with_vector, "Soil", nsteps)
270268

271-
@test to_initialize(mapping_without_vectors) == Dict()
269+
@test to_initialize(mapping_without_vectors) == Dict()
272270

273-
graph_sim_multiscale = @test_nowarn PlantSimEngine.GraphSimulation(mtg, mapping_without_vectors, nsteps=nsteps, check=true, outputs=out_multiscale)
271+
graph_sim_multiscale = @test_nowarn PlantSimEngine.GraphSimulation(mtg, mapping_without_vectors, nsteps=nsteps, check=true, outputs=out_multiscale)
274272

275273
sim_multiscale = run!(graph_sim_multiscale,
276274
meteo_day,

0 commit comments

Comments
 (0)