Reference guide#
This manual details, for each module of openalea.cnwgrass.morphogenesis,
the functions and objects included in openalea.cnwgrass.morphogenesis,
describing what they are and what they do.
openalea.cnwgrass.morphogenesis package#
morphogenesis#
The model Morphogenesis.
Mechanistic model of leaf elongation. See:
morphogenesis.simulationfor the front-end of the model,
morphogenesis.modelfor the equations of the model,
morphogenesis.parametersfor the parameters of the model.
openalea.cnwgrass.morphogenesis.model module#
- class openalea.cnwgrass.morphogenesis.model.MorphogenesisModel[source]#
Bases:
object- Beta_function(leaf_pseudo_age, leaf_rank)[source]#
Normalized leaf length from the emergence of the previous leaf to the end of elongation (automate function depending on leaf pseudo age).
- Beta_function_internode(internode_pseudo_age)[source]#
Normalized internode length from the emergence of the previous leaf to the end of elongation (automate function depending on internode pseudo age).
- calculate_LSIW(LSSW, phytomer_rank, optimal_growth_option=False)[source]#
Lineic Structural Internode Weight.
- calculate_LSSW(leaf_rank, integral_conc_sucr, optimal_growth_option=False)[source]#
Lineic Structural Sheath Weight.
- Parameters:
- Returns:
Lineic Structural Sheath Weight (g m-1)
- Return type:
- calculate_SAM_GA(status, teq_since_primordium)[source]#
Synthesis of GA by the SAM according to its stage
- calculate_SAM_primodia(status, teq_since_primordium, delta_teq, nb_leaves, cohort_id)[source]#
Update SAM status, leaf number
- Parameters:
status (str) – SAM status (‘vegetative’, if emitting leaf primordia or ‘reproductive’)
teq_since_primordium (float) – Time since last primordium initiation (in time equivalent to a reference temperature) (s)
delta_teq (float) – time increment (in time equivalent to a reference temperature) (s)
nb_leaves (int) – Number of leaves already emitted by the SAM.
cohort_id (int) – Corresponding leaf on the Main Stem for the first leaf of a tiller
- Returns:
Number of leaf to be initiated (should be 0 or 1), updated leaf number on the SAM, status, time since last primordium initiation (in time equivalent to a reference temperature, s)
- Return type:
- calculate_SL_ratio(leaf_rank)[source]#
Sheath:Lamina final length ratio according to the rank. Parameters from Dornbush (2011).
- calculate_SSLW(leaf_rank, integral_conc_sucr, optimal_growth_option=False)[source]#
Structural Specific Lamina Weight.
- Parameters:
- Returns:
Structural Specific Leaf Weight (g m-2)
- Return type:
- static calculate_coleoptile_emergence(coleoptile_L, sowing_depth)[source]#
Calculate if a given coleoptile has emerged above the soil
- static calculate_cumulated_internode_length(internode_lengths)[source]#
Calculate cumulative internode length
- calculate_cumulated_thermal_time(sum_TT, temperature, delta_teq)[source]#
Return cumulated thermal time (used by Adel-Wheat model to calculate leaf geometry).
- calculate_deltaL_postE(prev_leaf_pseudo_age, leaf_pseudo_age, prev_leaf_L, leaf_Lmax, sucrose, amino_acids, mstruct, leaf_rank, optimal_growth_option=False)[source]#
Leaf length from the emergence of the previous leaf to the end of elongation (automate function depending on leaf pseudo age and final length).
- Parameters:
prev_leaf_pseudo_age (float) – Pseudo age of the leaf since beginning of automate elongation at previous time step (s)
leaf_pseudo_age (float) – Pseudo age of the leaf since beginning of automate elongation (s)
prev_leaf_L (float) – Leaf length at previous time step (m)
leaf_Lmax (float) – Final leaf length (m)
sucrose (float) – Amount of sucrose (µmol C)
amino_acids (float) – Amount of amino acids (µmol N)
mstruct (float) – Structural mass (g)
leaf_rank (int) – rank of the leaf
optimal_growth_option (bool) – if True the function will calculate leaf elongation assuming optimal growth conditions (except if sucrose and amino acids are zero)
- Returns:
delta_leaf_L (m)
- Return type:
- calculate_deltaL_preE(sucrose, leaf_L, amino_acids, mstruct, delta_teq, leaf_rank, optimal_growth_option, xylem_water_potential=None)[source]#
Delta of leaf length over delta_t as a function of sucrose and amino acids, from initiation to the emergence of the previous leaf.
- Parameters:
sucrose (float) – Amount of sucrose (µmol C)
leaf_L (float) – Total leaf length (m)
amino_acids (float) – Amount of amino acids (µmol N)
mstruct (float) – Structural mass (g)
delta_teq (float) – Temperature-compensated time = time duration at a reference temperature (s)
leaf_rank (int) – leaf phytomer number
optimal_growth_option (bool) – if True the function will calculate leaf elongation assuming optimal growth conditions (except if sucrose and amino acids are zero)
xylem_water_potential (None) – not used in this instance of the model
- Returns:
delta delta_leaf_L (m)
- Return type:
- calculate_delta_internode_L_postL(prev_internode_pseudo_age, internode_pseudo_age, prev_internode_L, internode_Lmax_lig, sucrose, amino_acids, mstruct, optimal_growth_option=False)[source]#
Internode length, from the ligulation of the previous leaf to the end of elongation (automate function depending on leaf pseudo age and final length).
- Parameters:
prev_internode_pseudo_age (float) – Pseudo age of the internode since beginning of automate elongation at previous time step (s)
internode_pseudo_age (float) – Pseudo age of the internode since beginning of automate elongation (s)
prev_internode_L (float) – Internode length before elongation (m)
internode_Lmax_lig (float) – Estimate of final internode length at previous leaf ligulation (m)
sucrose (float) – Amount of sucrose (µmol C)
amino_acids (float) – Amount of amino acids (µmol N)
mstruct (float) – Structural mass (µmol N)
optimal_growth_option (bool) – if True the function will calculate delta of internode length assuming optimal growth conditions
- Returns:
internode_L (m)
- Return type:
- calculate_delta_internode_L_preL(phytomer_rank, sucrose, internode_L, amino_acids, mstruct, delta_teq, optimal_growth_option=False)[source]#
delta of internode length over delta_t as a function of sucrose and amino acids, from initiation to the ligulation of the previous leaf.
- Parameters:
phytomer_rank (int) – phytomer rank
sucrose (float) – Amount of sucrose (µmol C)
internode_L (float) – Total internode length (m)
amino_acids (float) – Amount of amino acids (µmol N)
mstruct (float) – Structural mass of the hidden zone(g)
delta_teq (float) – Temperature-compensated time = time duration at a reference temperature (s)
optimal_growth_option (bool) – if True the function will calculate delta of internode length assuming optimal growth conditions
- Returns:
delta delta_internode_L (m)
- Return type:
- static calculate_element_age_teq(age_teq, delta_teq)[source]#
Age time equivalent of the element (s)
- static calculate_emerged_coleo_L(coleoptile_L, sowing_depth)[source]#
Calculate coleoptile length emerged above the soil
- static calculate_emerged_internode_L(internode_L, internode_distance_to_emerge)[source]#
Emerged internode length.
- static calculate_emerged_sheath_L(leaf_L, leaf_pseudostem_length, lamina_L, sheath_Lmax)[source]#
Emerged sheath length. Assumes that leaf_L = leaf_pseudostem_length + emerged_sheath_L + lamina_L
- calculate_end_internode_elongation(internode_L, internode_Lmax, internode_pseudo_age)[source]#
Calculate if a given internode has finished elongating
- static calculate_growing_temperature(Tair, Tsol, SAM_height, sowing_depth)[source]#
Return temperature to be used for growth zone
- Parameters:
- Returns:
Return temperature to be used for growth zone at t (degree Celsius)
- Return type:
Hidden lamina length at the end of lamina growth.
- calculate_init_internode_elongation(hiddenzone_age, leaf_rank)[source]#
Initialize internode elongation.
- static calculate_internode_distance_to_emerge(ligule_heights, bottom_hiddenzone_height, phytomer_rank, curr_internode_L)[source]#
Distance for the internode to be visible given by the pseudostem length.
- Parameters:
ligule_heights (pandas.Series) – height of all ligules of a given axis (m)
bottom_hiddenzone_height (float) – height of the bottom of the hidden zone given by the cumulated lengths of below internodes (m)
phytomer_rank (int) – phytomer rank
curr_internode_L (float) – Internode length of the current phytomer (m).
- Returns:
Distance for the internode to be visible (m)
- Return type:
- static calculate_internode_pseudo_age(internode_pseudo_age, delta_teq)[source]#
Pseudo age of the internode since beginning of automate elongation (s)
- static calculate_internode_visibility(internode_L, internode_distance_to_emerge)[source]#
Calculate if a given internode is visible
- static calculate_lamina_L(leaf_L, leaf_pseudostem_length, lamina_Lmax)[source]#
Emerged lamina length given by the difference between leaf length and leaf pseudostem length.
- calculate_leaf_Wmax(lamina_Lmax, leaf_rank, integral_conc_sucr, optimal_growth_option=False)[source]#
Maximal lamina width.
- Parameters:
lamina_Lmax (float) – Maximal lamina length (m)
leaf_rank (int) – leaf phytomer number
integral_conc_sucr (float) – mean sucrose concentration of the hiddenzone since leaf n-2 emergence (µmol C g-1)
optimal_growth_option (bool) – if True the function will calculate leaf Wmax assuming optimal growth conditions
- Returns:
Maximal leaf width (m)
- Return type:
- static calculate_leaf_emergence(leaf_L, leaf_pseudostem_length)[source]#
Calculate if a given leaf has emerged from its pseudostem
- calculate_leaf_pseudo_age(leaf_pseudo_age, delta_teq, turgor_water_potential=None)[source]#
Pseudo age of the leaf since beginning of automate elongation (s)
- Parameters:
- Returns:
Updated leaf_pseudo_age (s)
- Return type:
- static calculate_leaf_pseudostem_length(ligule_heights, bottom_hiddenzone_height, phytomer_id)[source]#
Distance between the bottom of the hidden zone and the highest previous ligule
- Parameters:
- Returns:
Distance for the leaf to emerge out of the pseudostem (m)
- Return type:
- static calculate_ligule_height(sheath_internode_length, all_element_inputs, SAM_id, all_ligule_height_df)[source]#
Calculate ligule heights below each phytomer of an axis from lengths of internodes and sheaths.
The result is formated into a dataframe which is concatenated with a shared dataframe storing all ligule heights
- Parameters:
sheath_internode_length (dict) – Dictionary with sheath and internode lengths for a given axis, (m)
all_element_inputs (dict) – Dictionary of all element inputs
SAM_id (tuple) – Id of the SAM (plant_id, axis_id)
all_ligule_height_df (pandas.DataFrame) – Shared dataframe used to store all ligule heights
- Returns:
A dataframe with ligule height of a given axis
- Return type:
pandas.DataFrame
- static calculate_mean_conc_sucrose(prev_mean_conc_sucrose, time_prev_leaf2_emergence, delta_teq, sucrose, mstruct)[source]#
Update the mean sucrose concentration of the hiddenzone since leaf n-2 emergence. Calculation starts at leaf n-2 emergence, the updated mean accounts for the [sucrose] of current time step weighted by a function of temperature.
- Parameters:
prev_mean_conc_sucrose (float) – Mean sucrose concentration of the hiddenzone at the end of previous simulation time step (µmol C g-1).
time_prev_leaf2_emergence (float) – Time elapsed since leaf n-2 emergence (s at Tref).
delta_teq (float) – Duration of the current simulation time step (s at Tref).
sucrose (float) – Sucrose in the hidden zone (µmol C).
mstruct (float) – Mstruct of the hidden zone (g).
- Returns:
Updated mean sucrose concentration of the hiddenzone since leaf n-2 emergence (µmol C g-1)
- Return type:
- calculate_ratio_DZ_postE(leaf_L, leaf_Lmax, leaf_pseudostem_length)[source]#
Ratio of the hiddenzone length which is made of division zone. Calculated from an inverse beta function representing the ratio of the leaf composed by the division zone according to its relative length in log. The model was fitted on literature data on wheat.
- calculate_short_internode_Lmax(internode_L_lig, internode_pseudo_age)[source]#
Final internode length.
- calculate_time_equivalent_Tref(temperature, time)[source]#
Return the time equivalent to a reference temperature i.e. temperature-compensated time (Parent, 2010).
- calculate_update_internode_Lmax(internode_Lmax_lig, internode_L, internode_pseudo_age)[source]#
Update internode_Lmax following a reduction of delta_leaf_L due to C and N regulation
- Parameters:
internode_Lmax_lig (float) – Estimate of final internode length at previous leaf ligulation (m)
internode_L (float) – actual internode length at the end of the time step, calculated according to CN concentration (m)
internode_pseudo_age (float) – Pseudo age of the internode since beginning of automate elongation at the end of the time step (s)
- Returns:
Updated internode Lmax (m)
- Return type:
- calculate_update_leaf_Lmax(leaf_Lmax_em, leaf_L, leaf_pseudo_age, leaf_rank)[source]#
Update leaf_Lmax following a reduction of delta_leaf_L due to C and N regulation. Updated final length is calculated as the sum of the theoretical remaining length to elongate (leaf_Lmax_em * (1 - Beta_function(leaf_pseudo_age))) and the actual elongation at the end of the time step. This could lead to shorter or longer leaves, but the duration of elongation is not modified.
- Parameters:
leaf_Lmax_em (float) – Estimate of final leaf length at previous leaf emergence (m)
leaf_L (float) – actual leaf length at the end of the time step, calculated according to CN concentration (m)
leaf_pseudo_age (float) – Pseudo age of the leaf since beginning of automate elongation at the end of the time step (s)
leaf_rank (int) – rank of the leaf
- Returns:
updated leaf_Lmax (m)
- Return type:
- ligule_topology_columns#
topology columns for ligule height dataframe
- class openalea.cnwgrass.morphogenesis.model.MorphogenesisModelHydraulics[source]#
Bases:
MorphogenesisModel- calculate_deltaL_preE(sucrose, leaf_L, amino_acids, mstruct, delta_teq, leaf_rank, optimal_growth_option, xylem_water_potential=0.0)[source]#
Delta of leaf length over delta_t as a function of sucrose and amino acids, from initiation to the emergence of the previous leaf.
- Parameters:
sucrose (float) – Amount of sucrose (µmol C)
leaf_L (float) – Total leaf length (m)
amino_acids (float) – Amount of amino acids (µmol N)
mstruct (float) – Structural mass (g)
delta_teq (float) – Temperature-compensated time = time duration at a reference temperature (s)
leaf_rank (int) – leaf phytomer number
optimal_growth_option (bool) – if True the function will calculate leaf elongation assuming optimal growth conditions (except if sucrose and amino acids are zero)
xylem_water_potential (float) – xylem water potential (Mpa)
- Returns:
delta delta_leaf_L (m)
- Return type:
- calculate_leaf_pseudo_age(leaf_pseudo_age, delta_teq, turgor_water_potential=0)[source]#
Pseudo age of the leaf since beginning of automate elongation (s)
- Parameters:
- Returns:
Updated leaf_pseudo_age (s)
- Return type:
- calculate_ratio_DZ_postE(leaf_L, leaf_pseudo_age, leaf_pseudostem_length)[source]#
Ratio of the hiddenzone length which is made of division zone. Calculated from an inverse beta function representing the ratio of the leaf composed by the division zone according to its relative length in log. The model was fitted on literature data on wheat.
openalea.cnwgrass.morphogenesis.simulation module#
- class openalea.cnwgrass.morphogenesis.simulation.Simulation(delta_t=1, hydraulics=False, optimal_growth_option=False, update_parameters=None)[source]#
Bases:
objectThe Simulation class allows to initialize and run a simulation.
- axis_inputs#
The inputs and outputs of Morphogenesis at each scale.
- delta_t#
the delta t of the simulation (in seconds)
- hydraulics#
Checks whether the Hydraulic version should be used
- inputs#
inputs is a dictionary of dictionaries: {‘hiddenzone’: {(plant_index, axis_label, metamer_index): {hiddenzone_input_name: hiddenzone_input_value, …}, …},
‘elements’: {(plant_index, axis_label, metamer_index, organ_label, element): {element_input_name: element_input_value, …}, …}, ‘axes’: {(plant_index, axis_label): {axis_input_name: axis_input_value, …}, …}, ‘sheath_internode_lengths’: {(plant_index, axis_label, metamer_index): {‘sheath’: [list of sheath length belonging to the phytomer],
‘cumulated_internode’: [list of internode lengths cumulated from phytomer 1 to n]}, …}}
- optimal_growth_option#
Optimal growth option
- outputs#
outputs is a dictionary of dictionaries: {‘hiddenzone’: {(plant_index, axis_label, metamer_index): {hiddenzone_input_name: hiddenzone_input_value, …}, …},
‘elements’: {(plant_index, axis_label, metamer_index, organ_label, element): {element_output_name: element_output_value, …}, …}, ‘axes’: {(plant_index, axis_label): {axis_output_name: axis_output_value, …}, …}}
- exception openalea.cnwgrass.morphogenesis.simulation.SimulationRunError[source]#
Bases:
SimulationError
openalea.cnwgrass.morphogenesis.converter module#
- openalea.cnwgrass.morphogenesis.converter.HIDDENZONE_TOPOLOGY_COLUMNS = ['plant', 'axis', 'metamer']#
the columns which define the topology in the input/output dataframe
- openalea.cnwgrass.morphogenesis.converter.from_dataframes(hiddenzone_inputs, element_inputs, axis_inputs)[source]#
Convert inputs/outputs from Pandas dataframe to Morphogenesis format.
- Parameters:
axis_inputs (pandas.DataFrame) – axis inputs dataframe to convert, with one line by axis
hiddenzone_inputs (pandas.DataFrame) – Hidden zone inputs dataframe to convert, with one line by Hidden zone.
element_inputs (pandas.DataFrame) – Emerging and mature element inputs dataframe to convert, with one line by element.
- Returns:
The inputs in a dictionary.
- Return type:
see also::
simulation.Simulation.inputsfor the structure of Morphogenesis inputs.
- openalea.cnwgrass.morphogenesis.converter.to_dataframes(data_dict, axis_outputs, hiddenzone_outputs, element_outputs)[source]#
Convert outputs from Morphogenesis format to Pandas dataframe.
- Parameters:
- Returns:
One dataframe for hiddenzone outputs, one dataframe for element outputs and one dataframe for axis outputs.
- Return type:
(pandas.DataFrame, pandas.DataFrame, pandas.DataFrame)
openalea.cnwgrass.morphogenesis.parameters module#
- class openalea.cnwgrass.morphogenesis.parameters.ElementInit[source]#
Bases:
objectInitial values for emerged and growing elements
- Nresidual#
g
- Nstruct#
g
- age#
Thermal Time
- age_teq#
s
- amino_acids#
µmol N
- cytokinins#
g
- fructan#
µmol C
- green_area#
m2
- length#
m
- max_mstruct#
g
- max_proteins#
µmol N
- mstruct#
g
- nitrates#
µmol N
- proteins#
µmol N
- senesced_length_element#
m
- senesced_mstruct#
g
- starch#
µmol C
- sucrose#
µmol C
- class openalea.cnwgrass.morphogenesis.parameters.HiddenZoneInit[source]#
Bases:
objectInitial values for hidden zones
- LSIW#
g m-1, no calculation before ligulation Ln
- LSSW#
g m-1, no calculation before emergence Ln-1 (about 2)
- Nstruct#
g
- SSLW#
g m-2, no calculation before emergence Ln-1
- amino_acids#
µmol N
- conc_cytokinins#
AU / g mstruct
- delta_internode_L#
m, needed for growth
- delta_internode_distance_to_emerge#
m, needed for growth
- delta_leaf_L#
m, needed for growth
- delta_leaf_pseudostem_length#
m
- fructan#
µmol C - about 10% DM
- internode_L#
m
- internode_Lmax#
m, no calculation before ligulation Ln
- internode_Lmax_lig#
m, no calculation before ligulation Ln
- internode_distance_to_emerge#
m
- internode_enclosed_Nstruct#
g, parameter value in Growth
- internode_enclosed_mstruct#
g
- lamina_Lmax#
m, no calculation before emergence Ln-1
- leaf_L#
m, should be consistent with PLASTOCHRONE
- leaf_Lmax#
m, no calculation before emergence Ln-1
- leaf_Lmax_em#
m, no calculation before emergence Ln-1
- leaf_Wmax#
m, no calculation before emergence Ln-1
- leaf_enclosed_Nstruct#
g, parameter value in Growth
- leaf_enclosed_mstruct#
g
- leaf_pseudostem_length#
m
- mean_conc_sucrose#
µmol C / g mstruct
- mstruct#
g
- proteins#
µmol N - about 9% N
- sheath_Lmax#
m, no calculation before emergence Ln-1
- sucrose#
µmol C
- class openalea.cnwgrass.morphogenesis.parameters.HiddenZoneInitHydraulics[source]#
Bases:
HiddenZoneInitInitial values for hidden zones
- init_leaf_L#
m, needed for growth
- leaf_pseudo_age#
s, no calculation before emergence Ln-1
- class openalea.cnwgrass.morphogenesis.parameters.Parameters[source]#
Bases:
object- RER_Kc#
affinity coefficient of RER to C (µmol g-1)
- RER_Kn#
affinity coefficient of RER to N (µmol g-1)
- RERmax_dict_IN#
s-1 at 12°C FIT jan 20
- conc_sucrose_offset#
sucrose concentration under which no leaf and internode growth occurs (µmol of C g-1 mstruct) - same for root growth, see growth
- delta_L_emergence#
length of visible coleoptile ie emerged from soil (m). Current value set allows coleo to match length of sheath 1 in Sreten.
- property delta_TT_GA#
- internode_LSIW_dict#
experiment of M.Gauthier 2017/18, consistent with R.Barillot 2014
- internode_L_init#
Initial internode length (m)
- leaf_Lmax_MAX#
Maximum leaf_Lmax (m)
- leaf_W_L_MIN#
Minimal leaf width
- leaf_Wmax_Marion#
m (Ljutovac 2002)
- leaf_Wmax_dict#
m (Ljutovac 2002)
- leaf_pseudo_age_Kc#
affinity coefficient to C (µmol g-1)
- leaf_pseudo_age_Kn#
affinity coefficient to N (µmol g-1)
- leaf_pseudo_age_Vmax#
Maximal regulation of leaf length after emergence by CN status (dimensionless)
- max_nb_leaves#
Max number of leaves per axis
- nb_PLASTO_internode_init#
Delay between leaf initiation and internode initiation expressed as a number of plastochron. From Malvoisin 1984b, associated with primordia of 5.10-4 m
- ratio_DZ_l_end#
normalized log of leaf length at which the leaf has no more division zone (dimensionless).
- ratio_DZ_l_init#
normalized log of leaf length at which the leaf is fully composed by the division zone (dimensionless).
- ratio_DZ_l_mid#
intermediate point of the beta function (dimensionless).
- ratio_LSIW_LSSW#
ratio lineic structural internode mass / lineic structural sheath mass of the specific structural dry masses (from data of J. Bertheloot, 2004)
- tb#
beginning of leaf elongation in automate growth (s at 12°c); fitted from adapted data from Fournier 2005
- tb_IN#
beginning of internode elongation in automate growth (s);Ljutovac 2002, 250pl.m-2
- te#
end of leaf elongation in automate growth (s at 12°c); fitted from adapted data from Fournier 2005
- te_IN#
end of internode elongation in automate growth; Ljutovac 2002, 250pl.m-2
- tm#
time at which leaf elongation rate is maximal in automate growth (s at 12°c); fitted from adapted data from Fournier 2005
- tm_IN#
time at which internode elongation rate is maximal in automate growth (s);Ljutovac 2002, 250pl.m-2
- class openalea.cnwgrass.morphogenesis.parameters.ParametersHydraulics[source]#
Bases:
Parameters- GAMMA#
0.3 Mpa for soybean.
- Type:
Critical value for the pressure component which must be exceeded for irreversible volume changes (MPa). Found from Coussement et al., 2018
- lamina_Lmax_dict#
Maximum lamina length (m)
- n#
Shape parameter of the xylem water potential function in RER (-)
- psi_ref#
Critical leaf water potential threshold at which RER is reduced by 50% (Mpa) (adapted from Boyer, 1968)
- openalea.cnwgrass.morphogenesis.parameters.parameters_factory(hydraulics=False)[source]#
Factory for parameter instantiation according to the version of the model used
- Parameters:
hydraulics (bool) – if True the model will assume the coupling to the turgor-driven growth model
- Returns:
Instance of Parameters oo ParametersHydraulics