Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
8331a6d
Added variables to link animal herbivory waste products to the litter…
jacobcook1995 Oct 1, 2024
99e0f45
Collected the functions to calculate litter input splits into a singl…
jacobcook1995 Oct 2, 2024
857be5d
Added a function that combines herbivory and plant derived matter bef…
jacobcook1995 Oct 2, 2024
ae204d3
Added a method to collect all the litter input calculation stages
jacobcook1995 Oct 3, 2024
febc9a3
Changed input partitioning flow to use both plant biomass input streams
jacobcook1995 Oct 3, 2024
5a4d632
Changed LitterChemistry methods to take in input chemistries directly…
jacobcook1995 Oct 3, 2024
8c653c9
Collected all the litter details into a single dataclass
jacobcook1995 Oct 9, 2024
e7b234b
Fixed broken litter chemistry unit tests
jacobcook1995 Oct 9, 2024
8a3a8cf
Merge branch 'develop' into 510-animal-input-into-litter-model-should…
jacobcook1995 Oct 10, 2024
22584fc
Renamed InputDetails to LitterInputs
jacobcook1995 Oct 10, 2024
1a88fe5
Removed InputPartition class and moved relevant code into a factory m…
jacobcook1995 Oct 10, 2024
309a7af
Renamed input_partition submodule to just simply be inputs
jacobcook1995 Oct 10, 2024
a03f6ad
Fixed broken docs links that arose because of renaming litter.inputs …
jacobcook1995 Oct 11, 2024
6dfa543
Made LitterInputs dataclass a frozen dataclass
jacobcook1995 Oct 11, 2024
c45e6f2
Consitently renamed input_details to litter_inputs
jacobcook1995 Oct 11, 2024
8ca5363
Merge branch 'develop' into 510-animal-input-into-litter-model-should…
jacobcook1995 Oct 11, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions docs/source/_toc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -183,8 +183,8 @@ subtrees:
title: The constants submodule
- file: api/models/litter/env_factors
title: The env_factors submodule
- file: api/models/litter/input_partition
title: The input_partition submodule
- file: api/models/litter/inputs
title: The inputs submodule
- file: api/models/litter/litter_model
title: The litter_model submodule
- file: api/models/soil
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ kernelspec:
name: python3
---

# API documentation for the {mod}`~virtual_ecosystem.models.litter.input_partition` module
# API documentation for the {mod}`~virtual_ecosystem.models.litter.inputs` module

```{eval-rst}
.. automodule:: virtual_ecosystem.models.litter.input_partition
.. automodule:: virtual_ecosystem.models.litter.inputs
:autosummary:
:members:
```
4 changes: 4 additions & 0 deletions tests/models/animals/test_animal_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,10 @@ def test_animal_model_initialization(
(INFO, "Adding data array for 'litter_consumption_woody'"),
(INFO, "Adding data array for 'litter_consumption_below_metabolic'"),
(INFO, "Adding data array for 'litter_consumption_below_structural'"),
(INFO, "Adding data array for 'herbivory_waste_leaf_carbon'"),
(INFO, "Adding data array for 'herbivory_waste_leaf_nitrogen'"),
(INFO, "Adding data array for 'herbivory_waste_leaf_phosphorus'"),
(INFO, "Adding data array for 'herbivory_waste_leaf_lignin'"),
),
id="success",
),
Expand Down
128 changes: 63 additions & 65 deletions tests/models/litter/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,10 @@ def dummy_litter_data(fixture_core_components):
"litter_consumption_woody": [0.4773833, 0.385701, 0.373456, 0.162192],
"litter_consumption_below_metabolic": [0.010373, 0.005794, 0.010181, 0.013494],
"litter_consumption_below_structural": [0.013547, 0.011674, 0.012738, 0.009168],
"herbivory_waste_leaf_carbon": [3e-5, 2.1e-3, 2.85e-3, 2.7e-3],
"herbivory_waste_leaf_nitrogen": [23.1, 33.5, 23.1, 17.3],
"herbivory_waste_leaf_phosphorus": [212.5, 344.8, 334.8, 420.1],
"herbivory_waste_leaf_lignin": [0.13, 0.08, 0.27, 0.22],
}

for var, vals in pool_values.items():
Expand Down Expand Up @@ -125,59 +129,6 @@ def decay_rates(dummy_litter_data, fixture_core_components, post_consumption_poo
return decay_rates


@pytest.fixture
def metabolic_splits(dummy_litter_data):
"""Metabolic splits for the various plant inputs."""

from virtual_ecosystem.models.litter.input_partition import (
calculate_metabolic_proportions_of_input,
)

metabolic_splits = calculate_metabolic_proportions_of_input(
leaf_turnover_lignin_proportion=dummy_litter_data[
"leaf_turnover_lignin"
].to_numpy(),
reproduct_turnover_lignin_proportion=dummy_litter_data[
"plant_reproductive_tissue_turnover_lignin"
].to_numpy(),
root_turnover_lignin_proportion=dummy_litter_data[
"root_turnover_lignin"
].to_numpy(),
leaf_turnover_c_n_ratio=dummy_litter_data["leaf_turnover_c_n_ratio"].to_numpy(),
reproduct_turnover_c_n_ratio=dummy_litter_data[
"plant_reproductive_tissue_turnover_c_n_ratio"
].to_numpy(),
root_turnover_c_n_ratio=dummy_litter_data["root_turnover_c_n_ratio"].to_numpy(),
leaf_turnover_c_p_ratio=dummy_litter_data["leaf_turnover_c_p_ratio"].to_numpy(),
reproduct_turnover_c_p_ratio=dummy_litter_data[
"plant_reproductive_tissue_turnover_c_p_ratio"
].to_numpy(),
root_turnover_c_p_ratio=dummy_litter_data["root_turnover_c_p_ratio"].to_numpy(),
constants=LitterConsts,
)

return metabolic_splits


@pytest.fixture
def plant_inputs(dummy_litter_data, metabolic_splits):
"""Plant inputs to each of the litter pools."""

from virtual_ecosystem.models.litter.input_partition import (
partion_plant_inputs_between_pools,
)

plant_inputs = partion_plant_inputs_between_pools(
deadwood_production=dummy_litter_data["deadwood_production"],
leaf_turnover=dummy_litter_data["leaf_turnover"],
reproduct_turnover=dummy_litter_data["plant_reproductive_tissue_turnover"],
root_turnover=dummy_litter_data["root_turnover"],
metabolic_splits=metabolic_splits,
)

return plant_inputs


@pytest.fixture
def litter_chemistry(dummy_litter_data):
"""LitterChemistry object to be use throughout testing."""
Expand All @@ -189,41 +140,64 @@ def litter_chemistry(dummy_litter_data):


@pytest.fixture
def input_lignin(dummy_litter_data, plant_inputs, litter_chemistry):
def input_lignin(litter_inputs):
"""Lignin proportion of the relevant input flows."""
from virtual_ecosystem.models.litter.chemistry import (
calculate_litter_input_lignin_concentrations,
)

input_lignin = litter_chemistry.calculate_litter_input_lignin_concentrations(
plant_input_below_struct=plant_inputs["below_ground_structural"],
plant_input_above_struct=plant_inputs["above_ground_structural"],
input_lignin = calculate_litter_input_lignin_concentrations(
litter_inputs=litter_inputs
)

return input_lignin


@pytest.fixture
def input_c_n_ratios(dummy_litter_data, metabolic_splits, litter_chemistry):
def input_c_n_ratios(litter_inputs):
"""Carbon:nitrogen ratio of each input flow."""
from virtual_ecosystem.models.litter.chemistry import (
calculate_litter_input_nitrogen_ratios,
)

input_c_n_ratios = litter_chemistry.calculate_litter_input_nitrogen_ratios(
metabolic_splits=metabolic_splits,
input_c_n_ratios = calculate_litter_input_nitrogen_ratios(
litter_inputs=litter_inputs,
struct_to_meta_nitrogen_ratio=LitterConsts.structural_to_metabolic_n_ratio,
)

return input_c_n_ratios


@pytest.fixture
def input_c_p_ratios(dummy_litter_data, metabolic_splits, litter_chemistry):
def input_c_p_ratios(litter_inputs):
"""Carbon:nitrogen ratio of each input flow."""
from virtual_ecosystem.models.litter.chemistry import (
calculate_litter_input_phosphorus_ratios,
)

input_c_p_ratios = litter_chemistry.calculate_litter_input_phosphorus_ratios(
metabolic_splits=metabolic_splits,
input_c_p_ratios = calculate_litter_input_phosphorus_ratios(
litter_inputs=litter_inputs,
struct_to_meta_phosphorus_ratio=LitterConsts.structural_to_metabolic_p_ratio,
)

return input_c_p_ratios


@pytest.fixture
def metabolic_splits(total_litter_input):
"""Metabolic splits for the various plant inputs."""
from virtual_ecosystem.models.litter.inputs import (
calculate_metabolic_proportions_of_input,
)

metabolic_splits = calculate_metabolic_proportions_of_input(
total_input=total_litter_input,
constants=LitterConsts,
)

return metabolic_splits


@pytest.fixture
def post_consumption_pools(dummy_litter_data):
"""Pool sizes after animal consumption for each litter pool."""
Expand Down Expand Up @@ -254,15 +228,39 @@ def post_consumption_pools(dummy_litter_data):


@pytest.fixture
def updated_pools(dummy_litter_data, decay_rates, plant_inputs, post_consumption_pools):
def total_litter_input(dummy_litter_data):
"""Total input mass a chemistry for each plant biomass type."""
from virtual_ecosystem.models.litter.inputs import combine_input_sources

total_litter_input = combine_input_sources(dummy_litter_data)

return total_litter_input


@pytest.fixture
def updated_pools(
dummy_litter_data, decay_rates, post_consumption_pools, litter_inputs
):
"""Updated carbon mass of each pool."""
from virtual_ecosystem.models.litter.carbon import calculate_updated_pools

updated_pools = calculate_updated_pools(
post_consumption_pools=post_consumption_pools,
decay_rates=decay_rates,
plant_inputs=plant_inputs,
litter_inputs=litter_inputs,
update_interval=2.0,
)

return updated_pools


@pytest.fixture
def litter_inputs(dummy_litter_data):
"""Complete set of details for inputs to the litter model."""
from virtual_ecosystem.models.litter.inputs import LitterInputs

litter_inputs = LitterInputs.create_from_data(
data=dummy_litter_data, constants=LitterConsts
)

return litter_inputs
8 changes: 4 additions & 4 deletions tests/models/litter/test_carbon.py
Original file line number Diff line number Diff line change
Expand Up @@ -140,14 +140,14 @@ def test_calculate_total_C_mineralised(decay_rates):


def test_calculate_updated_pools(
dummy_litter_data, decay_rates, plant_inputs, post_consumption_pools
dummy_litter_data, decay_rates, post_consumption_pools, litter_inputs
):
"""Test that the function to calculate the pool values after the update works."""
from virtual_ecosystem.models.litter.carbon import calculate_updated_pools

expected_pools = {
"above_metabolic": [0.3154561, 0.15193439, 0.07892301, 0.0712972],
"above_structural": [0.50519138, 0.25011962, 0.10250070, 0.11882651],
"above_metabolic": [0.3154788, 0.15354349, 0.080772679, 0.073701212],
"above_structural": [0.5051986807, 0.2506105228, 0.1035010262, 0.1191224962],
"woody": [4.77403361, 11.89845863, 7.3598224, 7.3298224],
"below_metabolic": [0.3976309, 0.3630269, 0.06787947, 0.07794085],
"below_structural": [0.61050583, 0.32205947352, 0.02014514530, 0.03468376530],
Expand All @@ -156,7 +156,7 @@ def test_calculate_updated_pools(
actual_pools = calculate_updated_pools(
post_consumption_pools=post_consumption_pools,
decay_rates=decay_rates,
plant_inputs=plant_inputs,
litter_inputs=litter_inputs,
update_interval=2.0,
)

Expand Down
Loading