diff --git a/example/extended_usage/beef_inputs.py b/example/extended_usage/beef_inputs.py index e19d300..145f456 100644 --- a/example/extended_usage/beef_inputs.py +++ b/example/extended_usage/beef_inputs.py @@ -1,4 +1,5 @@ from datetime import date +from uuid import UUID, uuid4 from pyholos.components.animals.common import (Diet, HousingType, ManureStateType, @@ -8,6 +9,8 @@ global _WEATHER_SUMMARY +_DUMMY_PASTURE_LOCATION_UUID: UUID = uuid4() + def _set_beef_bulls_data() -> list[farm_inputs.BeefManagementPeriod]: return [ @@ -20,6 +23,7 @@ def _set_beef_bulls_data() -> list[farm_inputs.BeefManagementPeriod]: production_stage=ProductionStage.gestating, number_of_young_animals=0, is_milk_fed_only=False, + diet_name='custom', diet=Diet( crude_protein_percentage=14.8, forage_percentage=80, @@ -30,6 +34,7 @@ def _set_beef_bulls_data() -> list[farm_inputs.BeefManagementPeriod]: neutral_detergent_fiber_percentage=46.44, metabolizable_energy=2.2), housing_type=HousingType.pasture, + pasture_location=_DUMMY_PASTURE_LOCATION_UUID, manure_handling_system=ManureStateType.pasture, weather_summary=_WEATHER_SUMMARY), farm_inputs.BeefManagementPeriod( @@ -41,6 +46,7 @@ def _set_beef_bulls_data() -> list[farm_inputs.BeefManagementPeriod]: production_stage=ProductionStage.gestating, number_of_young_animals=0, is_milk_fed_only=False, + diet_name='custom', diet=Diet( crude_protein_percentage=12.44, forage_percentage=97, @@ -51,6 +57,7 @@ def _set_beef_bulls_data() -> list[farm_inputs.BeefManagementPeriod]: neutral_detergent_fiber_percentage=53.478, metabolizable_energy=1.965), housing_type=HousingType.pasture, + pasture_location=_DUMMY_PASTURE_LOCATION_UUID, manure_handling_system=ManureStateType.pasture, weather_summary=_WEATHER_SUMMARY), farm_inputs.BeefManagementPeriod( @@ -62,6 +69,7 @@ def _set_beef_bulls_data() -> list[farm_inputs.BeefManagementPeriod]: production_stage=ProductionStage.gestating, number_of_young_animals=0, is_milk_fed_only=False, + diet_name='custom', diet=Diet( crude_protein_percentage=15.35, forage_percentage=100, @@ -72,6 +80,7 @@ def _set_beef_bulls_data() -> list[farm_inputs.BeefManagementPeriod]: neutral_detergent_fiber_percentage=49.3, metabolizable_energy=2.1), housing_type=HousingType.confined_no_barn, + pasture_location=None, manure_handling_system=ManureStateType.deep_bedding, weather_summary=_WEATHER_SUMMARY) ] @@ -88,6 +97,7 @@ def _set_beef_cows_data() -> list[farm_inputs.BeefManagementPeriod]: production_stage=ProductionStage.gestating, number_of_young_animals=0, is_milk_fed_only=False, + diet_name='custom', diet=Diet( crude_protein_percentage=14.8, forage_percentage=80, @@ -98,6 +108,7 @@ def _set_beef_cows_data() -> list[farm_inputs.BeefManagementPeriod]: neutral_detergent_fiber_percentage=46.44, metabolizable_energy=2.2), housing_type=HousingType.pasture, + pasture_location=_DUMMY_PASTURE_LOCATION_UUID, manure_handling_system=ManureStateType.pasture, weather_summary=_WEATHER_SUMMARY), farm_inputs.BeefManagementPeriod( @@ -109,6 +120,7 @@ def _set_beef_cows_data() -> list[farm_inputs.BeefManagementPeriod]: production_stage=ProductionStage.gestating, number_of_young_animals=0, is_milk_fed_only=False, + diet_name='custom', diet=Diet( crude_protein_percentage=12.44, forage_percentage=97, @@ -119,6 +131,7 @@ def _set_beef_cows_data() -> list[farm_inputs.BeefManagementPeriod]: neutral_detergent_fiber_percentage=53.478, metabolizable_energy=1.965), housing_type=HousingType.pasture, + pasture_location=_DUMMY_PASTURE_LOCATION_UUID, manure_handling_system=ManureStateType.pasture, weather_summary=_WEATHER_SUMMARY), farm_inputs.BeefManagementPeriod( @@ -130,6 +143,7 @@ def _set_beef_cows_data() -> list[farm_inputs.BeefManagementPeriod]: production_stage=ProductionStage.gestating, number_of_young_animals=0, is_milk_fed_only=False, + diet_name='custom', diet=Diet( crude_protein_percentage=15.35, forage_percentage=100, @@ -140,6 +154,7 @@ def _set_beef_cows_data() -> list[farm_inputs.BeefManagementPeriod]: neutral_detergent_fiber_percentage=49.3, metabolizable_energy=2.1), housing_type=HousingType.confined_no_barn, + pasture_location=None, manure_handling_system=ManureStateType.deep_bedding, weather_summary=_WEATHER_SUMMARY) ] @@ -156,6 +171,7 @@ def _set_beef_calf_data() -> list[farm_inputs.BeefManagementPeriod]: production_stage=ProductionStage.gestating, number_of_young_animals=0, is_milk_fed_only=True, + diet_name='custom', diet=Diet( crude_protein_percentage=12.44, forage_percentage=97, @@ -166,6 +182,7 @@ def _set_beef_calf_data() -> list[farm_inputs.BeefManagementPeriod]: neutral_detergent_fiber_percentage=53.478, metabolizable_energy=1.965), housing_type=HousingType.confined_no_barn, + pasture_location=None, manure_handling_system=ManureStateType.deep_bedding, weather_summary=_WEATHER_SUMMARY), farm_inputs.BeefManagementPeriod( @@ -177,6 +194,7 @@ def _set_beef_calf_data() -> list[farm_inputs.BeefManagementPeriod]: production_stage=ProductionStage.gestating, number_of_young_animals=0, is_milk_fed_only=False, + diet_name='custom', diet=Diet( crude_protein_percentage=14.8, forage_percentage=80, @@ -187,6 +205,7 @@ def _set_beef_calf_data() -> list[farm_inputs.BeefManagementPeriod]: neutral_detergent_fiber_percentage=46.44, metabolizable_energy=2.2), housing_type=HousingType.pasture, + pasture_location=_DUMMY_PASTURE_LOCATION_UUID, manure_handling_system=ManureStateType.pasture, weather_summary=_WEATHER_SUMMARY) ] @@ -202,6 +221,7 @@ def _set_beef_finisher_data() -> list[farm_inputs.BeefManagementPeriod]: production_stage=ProductionStage.gestating, number_of_young_animals=0, is_milk_fed_only=False, + diet_name='custom', diet=Diet( crude_protein_percentage=12.72, forage_percentage=10, @@ -212,6 +232,7 @@ def _set_beef_finisher_data() -> list[farm_inputs.BeefManagementPeriod]: neutral_detergent_fiber_percentage=21.95, metabolizable_energy=2.92), housing_type=HousingType.confined_no_barn, + pasture_location=None, manure_handling_system=ManureStateType.deep_bedding, weather_summary=_WEATHER_SUMMARY) @@ -228,6 +249,7 @@ def _set_beef_stocker_and_backgrounder_data() -> list[farm_inputs.BeefManagement production_stage=ProductionStage.gestating, number_of_young_animals=0, is_milk_fed_only=False, + diet_name='custom', diet=Diet( crude_protein_percentage=12.28, forage_percentage=65, @@ -238,6 +260,7 @@ def _set_beef_stocker_and_backgrounder_data() -> list[farm_inputs.BeefManagement neutral_detergent_fiber_percentage=42.025, metabolizable_energy=2.48), housing_type=HousingType.confined_no_barn, + pasture_location=None, manure_handling_system=ManureStateType.deep_bedding, weather_summary=_WEATHER_SUMMARY) return [management_period] diff --git a/example/extended_usage/field_inputs.py b/example/extended_usage/field_inputs.py index aa561cd..aff4ca2 100644 --- a/example/extended_usage/field_inputs.py +++ b/example/extended_usage/field_inputs.py @@ -1,11 +1,9 @@ from pyholos.components.animals.common import (ManureAnimalSourceTypes, ManureLocationSourceType, ManureStateType) -from pyholos.components.land_management.common import (FertilizerBlends, - HarvestMethod, - IrrigationType, - ManureApplicationTypes, - TillageType) +from pyholos.components.land_management.common import ( + FertilizerApplicationMethodologies, FertilizerBlends, HarvestMethod, + IrrigationType, ManureApplicationTypes, TillageType) from pyholos.components.land_management.crop import CropType from pyholos.farm.farm_inputs import FieldAnnualData, FieldsInput, WeatherData @@ -22,6 +20,7 @@ def set_field_data(weather_data: WeatherData) -> FieldsInput: tillage_type=TillageType.Reduced, harvest_method=HarvestMethod.CashCrop, nitrogen_fertilizer_rate=100, + fertilizer_application_method=FertilizerApplicationMethodologies.IncorporatedOrPartiallyInjected, fertilizer_blend=FertilizerBlends.Custom, irrigation_type=IrrigationType.Irrigated, amount_of_irrigation=0, diff --git a/src/pyholos/components/animals/beef.py b/src/pyholos/components/animals/beef.py index 671c24f..c56de95 100644 --- a/src/pyholos/components/animals/beef.py +++ b/src/pyholos/components/animals/beef.py @@ -1,4 +1,5 @@ from datetime import date +from uuid import UUID from pyholos import utils from pyholos.common import Component, EnumGeneric, HolosVar @@ -82,6 +83,9 @@ def __init__(self): self.milk_protein_content_as_percentage = HolosVar( name="Milk Protein Content As Percentage", value=None) + self.diet_name = HolosVar( + name="Diet Name", + value=None) self.diet_additive_type = HolosVar( name="Diet Additive Type", value=None) @@ -151,6 +155,10 @@ def __init__(self): value=None) """(MJ day⁻¹ kg⁻¹) C_f_adjusted""" + self.pasture_location = HolosVar( + name="Pasture Location", + value=None) + self.methane_conversion_factor_of_manure = HolosVar( name="Methane Conversion Factor Of Manure", value=None) @@ -233,6 +241,7 @@ def __init__( number_of_young_animals: int, is_milk_fed_only: bool, milk_data: Milk, + diet_name: str, diet: Diet, housing_type: HousingType, manure_handling_system: ManureStateType, @@ -241,6 +250,7 @@ def __init__( end_weight: float = None, diet_additive_type: DietAdditiveType = DietAdditiveType.NONE, bedding_material_type: BeddingMaterialType = BeddingMaterialType.NONE, + pasture_location: UUID | None = None, ): """ @@ -258,6 +268,7 @@ def __init__( number_of_young_animals: number of young animals is_milk_fed_only: used to indicate when animals are not consuming forage but only milk (distinction needed for calculate enteric methane for beef calves) milk_data: class object that contains all required milk production data + diet_name: name of the diet simulated diet: class object that contains all required diet data housing_type: HousingType class instance manure_handling_system: ManureStateType class instance @@ -266,8 +277,14 @@ def __init__( start_weight: (kg) animal weight at the beginning of the management period end_weight: (kg) animal weight at the end of the management period bedding_material_type: bedding material type + pasture_location: (optional) UUID class instance """ + if pasture_location is None: + assert housing_type != HousingType.pasture, ( + "Pasture location must be specified (UUID). " + "Ensure that the same UUID is set to an existing field data under 'Field System Component Guid'") + super().__init__() self.update_name(name=name) self.update_component_type(component_type.to_str()) @@ -299,6 +316,7 @@ def __init__( self.methane_conversion_factor_adjusted.value = 0 self.feed_intake.value = 0 + self.diet_name.value = diet_name self.crude_protein.value = diet.crude_protein_percentage self.forage.value = diet.forage_percentage self.tdn.value = diet.total_digestible_nutrient_percentage @@ -342,6 +360,8 @@ def __init__( get_ammonia_emission_factor_for_storage_of_beef_and_dairy_cattle_manure( storage_type=manure_handling_system)) + self.pasture_location.value = str(pasture_location) if pasture_location is not None else "N/A" + self.methane_conversion_factor_of_manure.value = manure_emission_factors.MethaneConversionFactor self.n2o_direct_emission_factor.value = manure_emission_factors.N2ODirectEmissionFactor self.volatilization_fraction.value = manure_emission_factors.VolatilizationFraction @@ -365,6 +385,7 @@ def __init__( number_of_young_animals: int, is_milk_fed_only: bool, milk_data: Milk, + diet_name: str, diet: Diet, housing_type: HousingType, manure_handling_system: ManureStateType, @@ -373,6 +394,7 @@ def __init__( end_weight: float = None, diet_additive_type: DietAdditiveType = DietAdditiveType.NONE, bedding_material_type: BeddingMaterialType = BeddingMaterialType.NONE, + pasture_location: UUID | None = None, ): """ @@ -388,9 +410,11 @@ def __init__( start_weight: (kg) animal weight at the beginning of the management period end_weight: (kg) animal weight at the end of the management period milk_data: class object that contains all required milk production data + diet_name: name of the diet simulated diet: class object that contains all required diet data diet_additive_type: type of the diet additive bedding_material_type: bedding material type + pasture_location: (optional) UUID class instance """ super().__init__( name='Cow-Calf', @@ -417,6 +441,7 @@ def __init__( number_of_young_animals: int, is_milk_fed_only: bool, milk_data: Milk, + diet_name: str, diet: Diet, housing_type: HousingType, manure_handling_system: ManureStateType, @@ -425,6 +450,7 @@ def __init__( end_weight: float = None, diet_additive_type: DietAdditiveType = DietAdditiveType.NONE, bedding_material_type: BeddingMaterialType = BeddingMaterialType.NONE, + pasture_location: UUID | None = None, ): """ @@ -440,9 +466,11 @@ def __init__( start_weight: (kg) animal weight at the beginning of the management period end_weight: (kg) animal weight at the end of the management period milk_data: class object that contains all required milk production data + diet_name: name of the diet simulated diet: class object that contains all required diet data diet_additive_type: type of the diet additive bedding_material_type: bedding material type + pasture_location: (optional) UUID class instance """ super().__init__( name='Cow-Calf', @@ -469,6 +497,7 @@ def __init__( number_of_young_animals: int, is_milk_fed_only: bool, milk_data: Milk, + diet_name: str, diet: Diet, housing_type: HousingType, manure_handling_system: ManureStateType, @@ -477,6 +506,7 @@ def __init__( end_weight: float = None, diet_additive_type: DietAdditiveType = DietAdditiveType.NONE, bedding_material_type: BeddingMaterialType = BeddingMaterialType.NONE, + pasture_location: UUID | None = None, ): """ @@ -492,9 +522,11 @@ def __init__( start_weight: (kg) animal weight at the beginning of the management period end_weight: (kg) animal weight at the end of the management period milk_data: class object that contains all required milk production data + diet_name: name of the diet simulated diet: class object that contains all required diet data diet_additive_type: type of the diet additive bedding_material_type: bedding material type + pasture_location: (optional) UUID class instance """ super().__init__( name='Cow-Calf', @@ -521,6 +553,7 @@ def __init__( number_of_young_animals: int, is_milk_fed_only: bool, milk_data: Milk, + diet_name: str, diet: Diet, housing_type: HousingType, manure_handling_system: ManureStateType, @@ -529,6 +562,7 @@ def __init__( end_weight: float = None, diet_additive_type: DietAdditiveType = DietAdditiveType.NONE, bedding_material_type: BeddingMaterialType = BeddingMaterialType.NONE, + pasture_location: UUID | None = None, ): """ @@ -544,9 +578,11 @@ def __init__( start_weight: (kg) animal weight at the beginning of the management period end_weight: (kg) animal weight at the end of the management period milk_data: class object that contains all required milk production data + diet_name: name of the diet simulated diet: class object that contains all required diet data diet_additive_type: type of the diet additive bedding_material_type: bedding material type + pasture_location: (optional) UUID class instance """ super().__init__( name='Cow-Calf', @@ -573,6 +609,7 @@ def __init__( number_of_young_animals: int, is_milk_fed_only: bool, milk_data: Milk, + diet_name: str, diet: Diet, housing_type: HousingType, manure_handling_system: ManureStateType, @@ -581,6 +618,7 @@ def __init__( end_weight: float = None, diet_additive_type: DietAdditiveType = DietAdditiveType.NONE, bedding_material_type: BeddingMaterialType = BeddingMaterialType.NONE, + pasture_location: UUID | None = None, ): """ @@ -596,9 +634,11 @@ def __init__( start_weight: (kg) animal weight at the beginning of the management period end_weight: (kg) animal weight at the end of the management period milk_data: class object that contains all required milk production data + diet_name: name of the diet simulated diet: class object that contains all required diet data diet_additive_type: type of the diet additive bedding_material_type: bedding material type + pasture_location: (optional) UUID class instance """ super().__init__( name='Finisher', @@ -625,6 +665,7 @@ def __init__( number_of_young_animals: int, is_milk_fed_only: bool, milk_data: Milk, + diet_name: str, diet: Diet, housing_type: HousingType, manure_handling_system: ManureStateType, @@ -633,6 +674,7 @@ def __init__( end_weight: float = None, diet_additive_type: DietAdditiveType = DietAdditiveType.NONE, bedding_material_type: BeddingMaterialType = BeddingMaterialType.NONE, + pasture_location: UUID | None = None, ): """ @@ -648,9 +690,11 @@ def __init__( start_weight: (kg) animal weight at the beginning of the management period end_weight: (kg) animal weight at the end of the management period milk_data: class object that contains all required milk production data + diet_name: name of the diet simulated diet: class object that contains all required diet data diet_additive_type: type of the diet additive bedding_material_type: bedding material type + pasture_location: (optional) UUID class instance """ super().__init__( name='Finisher', @@ -677,6 +721,7 @@ def __init__( number_of_young_animals: int, is_milk_fed_only: bool, milk_data: Milk, + diet_name: str, diet: Diet, housing_type: HousingType, manure_handling_system: ManureStateType, @@ -685,6 +730,7 @@ def __init__( end_weight: float = None, diet_additive_type: DietAdditiveType = DietAdditiveType.NONE, bedding_material_type: BeddingMaterialType = BeddingMaterialType.NONE, + pasture_location: UUID | None = None, ): """ @@ -700,9 +746,11 @@ def __init__( start_weight: (kg) animal weight at the beginning of the management period end_weight: (kg) animal weight at the end of the management period milk_data: class object that contains all required milk production data + diet_name: name of the diet simulated diet: class object that contains all required diet data diet_additive_type: type of the diet additive bedding_material_type: bedding material type + pasture_location: (optional) UUID class instance """ super().__init__( name='Stockers & Backgrounders', @@ -729,6 +777,7 @@ def __init__( number_of_young_animals: int, is_milk_fed_only: bool, milk_data: Milk, + diet_name: str, diet: Diet, housing_type: HousingType, manure_handling_system: ManureStateType, @@ -737,6 +786,7 @@ def __init__( end_weight: float = None, diet_additive_type: DietAdditiveType = DietAdditiveType.NONE, bedding_material_type: BeddingMaterialType = BeddingMaterialType.NONE, + pasture_location: UUID | None = None, ): """ @@ -752,9 +802,11 @@ def __init__( start_weight: (kg) animal weight at the beginning of the management period end_weight: (kg) animal weight at the end of the management period milk_data: class object that contains all required milk production data + diet_name: name of the diet simulated diet: class object that contains all required diet data diet_additive_type: type of the diet additive bedding_material_type: bedding material type + pasture_location: (optional) UUID class instance """ super().__init__( name='Stockers & Backgrounders', diff --git a/src/pyholos/components/animals/dairy.py b/src/pyholos/components/animals/dairy.py index 21d1cb3..1135c28 100644 --- a/src/pyholos/components/animals/dairy.py +++ b/src/pyholos/components/animals/dairy.py @@ -5,9 +5,11 @@ AnimalCoefficientData, AnimalType, Bedding, BeddingMaterialType, Diet, DietAdditiveType, HousingType, LivestockEmissionConversionFactorsData, ManureStateType, Milk, ProductionStage, + get_ammonia_emission_factor_for_storage_of_beef_and_dairy_cattle_manure, get_beef_and_dairy_cattle_coefficient_data, get_beef_and_dairy_cattle_feeding_activity_coefficient, - get_default_methane_producing_capacity_of_manure) + get_default_methane_producing_capacity_of_manure, + get_fraction_of_organic_nitrogen_mineralized_data) from pyholos.config import DATE_FMT from pyholos.utils import convert_camel_case_to_space_delimited, get_local_args @@ -91,7 +93,7 @@ def __init__(self): self.total_nitrogen_kilograms_dry_matter_for_bedding = HolosVar( name="Total Nitrogen Kilograms Dry Matter For Bedding", value=None) self.moisture_content_of_bedding_material = HolosVar(name="Moisture Content Of Bedding Material", value=None) - self.indoor_barn_temperature = HolosVar(name="Indoor Barn Temperature(°C)", value=25) + self.indoor_barn_temperature = HolosVar(name="Indoor Barn Temperature", value=25) self.methane_conversion_factor_of_manure = HolosVar(name="Methane Conversion Factor Of Manure", value=None) self.n2o_direct_emission_factor = HolosVar(name="N2O Direct Emission Factor", value=None) self.emission_factor_volatilization = HolosVar(name="Emission Factor Volatilization", value=None) @@ -104,6 +106,26 @@ def __init__(self): self.methane_producing_capacity_of_manure = HolosVar(name="Methane Producing Capacity Of Manure", value=None) + self.fraction_of_organic_nitrogen_immobilized = HolosVar( + name="Fraction Of Organic Nitrogen Immobilized", + value=None) + self.fraction_of_organic_nitrogen_nitrified = HolosVar( + name="Fraction Of Organic Nitrogen Nitrified", + value=None) + self.fraction_of_organic_nitrogen_mineralized = HolosVar( + name="Fraction Of Organic Nitrogen Mineralized", + value=None) + self.manure_state_type = HolosVar( + name="Manure State Type", + value=None) + self.ammonia_emission_factor_for_manure_storage = HolosVar( + name="Ammonia Emission Factor For Manure Storage", + value=None) + + self.use_custom_indoor_housing_temperature = HolosVar( + name="Use Custom Indoor Housing Temperature", + value=False) + self._animal_coefficient_data: AnimalCoefficientData | None = None def get_animal_coefficient_data(self): @@ -225,6 +247,19 @@ def __init__( self.gain_coefficient_a.value = 0 self.gain_coefficient_b.value = 0 + fraction_of_organic_nitrogen_mineralized_data = get_fraction_of_organic_nitrogen_mineralized_data( + state_type=manure_handling_system, + animal_type=animal_type) + + self.manure_state_type.value = manure_handling_system.value + self.fraction_of_organic_nitrogen_immobilized.value = fraction_of_organic_nitrogen_mineralized_data.fraction_immobilized + self.fraction_of_organic_nitrogen_nitrified.value = fraction_of_organic_nitrogen_mineralized_data.fraction_nitrified + self.fraction_of_organic_nitrogen_mineralized.value = fraction_of_organic_nitrogen_mineralized_data.fraction_mineralized + + self.ammonia_emission_factor_for_manure_storage.value = ( + get_ammonia_emission_factor_for_storage_of_beef_and_dairy_cattle_manure( + storage_type=manure_handling_system)) + class DairyHeifers(Dairy): animal_group = GroupNameType.dairy_heifers.value diff --git a/src/pyholos/components/animals/sheep.py b/src/pyholos/components/animals/sheep.py index 3bc87d7..11d9fd4 100644 --- a/src/pyholos/components/animals/sheep.py +++ b/src/pyholos/components/animals/sheep.py @@ -1,5 +1,6 @@ from datetime import date from enum import Enum +from uuid import UUID from pyholos import utils from pyholos.common import Component, HolosVar @@ -143,6 +144,7 @@ def __init__(self): self.ndf = HolosVar(name="NDF", value=None) self.gain_coefficient_a = HolosVar(name="Gain Coefficient A", value=None) self.gain_coefficient_b = HolosVar(name="Gain Coefficient B", value=None) + self.housing_type = HolosVar(name="Housing Type", value=None) self.activity_coefficient_of_feeding_situation = HolosVar(name="Activity Coefficient Of Feeding Situation", value=None) self.maintenance_coefficient = HolosVar(name="Maintenance Coefficient", value=None) @@ -152,6 +154,10 @@ def __init__(self): self.total_nitrogen_kilograms_dry_matter_for_bedding = HolosVar( name="Total Nitrogen Kilograms Dry Matter For Bedding", value=None) self.moisture_content_of_bedding_material = HolosVar(name="Moisture Content Of Bedding Material", value=None) + + self.pasture_location = HolosVar(name="Pasture Location", value=None) + self.manure_state_type = HolosVar(name="Manure State Type",value=None) + self.methane_conversion_factor_of_manure = HolosVar(name="Methane Conversion Factor Of Manure", value=None) self.n2o_direct_emission_factor = HolosVar(name="N2O Direct Emission Factor", value=None) self.emission_factor_volatilization = HolosVar(name="Emission Factor Volatilization", value=None) @@ -216,7 +222,13 @@ def __init__( diet_additive_type: DietAdditiveType = DietAdditiveType.NONE, bedding_material_type: BeddingMaterialType = BeddingMaterialType.NONE, + pasture_location: UUID | None = None, ): + if pasture_location is None: + assert housing_type != HousingType.pasture, ( + "Pasture location must be specified (UUID). " + "Ensure that the same UUID is set to an existing field data under 'Field System Component Guid'") + super().__init__() # group_name = GroupNames.sheep_feedlot.value @@ -241,6 +253,7 @@ def __init__( self.end_weight.value = _animal_coefficient_data.final_weight if end_weight is None else end_weight self.gain_coefficient_a.value = _animal_coefficient_data.coefficient_a self.gain_coefficient_b.value = _animal_coefficient_data.coefficient_b + self.housing_type.value = housing_type.value self.wool_production.value = _animal_coefficient_data.wool_production self.average_daily_gain.value = (self.end_weight.value - self.start_weight.value) / management_period_days @@ -269,6 +282,9 @@ def __init__( self.total_nitrogen_kilograms_dry_matter_for_bedding.value = bedding.total_nitrogen_kilograms_dry_matter_for_bedding.value self.moisture_content_of_bedding_material.value = bedding.moisture_content_of_bedding_material.value + self.pasture_location.value = str(pasture_location) if pasture_location is not None else "N/A" + self.manure_state_type.value = manure_handling_system.value + self.methane_conversion_factor_of_manure.value = manure_emission_factors.MethaneConversionFactor self.n2o_direct_emission_factor.value = manure_emission_factors.N2ODirectEmissionFactor self.volatilization_fraction.value = manure_emission_factors.VolatilizationFraction @@ -289,6 +305,7 @@ def __init__( class SheepFeedlot(Sheep): animal_type = AnimalType.sheep_feedlot + def __init__( self, management_period_name: str, @@ -306,6 +323,7 @@ def __init__( end_weight: float = None, diet_additive_type: DietAdditiveType = DietAdditiveType.NONE, bedding_material_type: BeddingMaterialType = BeddingMaterialType.NONE, + pasture_location: UUID | None = None, ): _group_name = GroupNames.sheep_feedlot.value super().__init__( @@ -320,6 +338,7 @@ def __init__( class Rams(Sheep): animal_type = AnimalType.ram + def __init__( self, management_period_name: str, @@ -337,6 +356,7 @@ def __init__( end_weight: float = None, diet_additive_type: DietAdditiveType = DietAdditiveType.NONE, bedding_material_type: BeddingMaterialType = BeddingMaterialType.NONE, + pasture_location: UUID | None = None, ): _group_name = GroupNames.rams.value @@ -370,6 +390,7 @@ def __init__( end_weight: float = None, diet_additive_type: DietAdditiveType = DietAdditiveType.NONE, bedding_material_type: BeddingMaterialType = BeddingMaterialType.NONE, + pasture_location: UUID | None = None, ): super().__init__( name=GroupNames.lambs_and_ewes.value, @@ -401,6 +422,7 @@ def __init__( end_weight: float = None, diet_additive_type: DietAdditiveType = DietAdditiveType.NONE, bedding_material_type: BeddingMaterialType = BeddingMaterialType.NONE, + pasture_location: UUID | None = None, ): super().__init__( name=GroupNames.lambs_and_ewes.value, diff --git a/src/pyholos/components/land_management/common.py b/src/pyholos/components/land_management/common.py index 91dd73b..cfc2dc8 100644 --- a/src/pyholos/components/land_management/common.py +++ b/src/pyholos/components/land_management/common.py @@ -115,6 +115,12 @@ class FertilizerBlends(AutoNameEnum): PotassiumSulphate = auto() +class FertilizerApplicationMethodologies(AutoNameEnum): + Broadcast = auto() + IncorporatedOrPartiallyInjected = auto() + FullyInjected = auto() + + def read_energy_table(path_table: Path) -> DataFrame: df = read_holos_resource_table(path_file=path_table, header=[0, 1, 2]) df.index = [convert_crop_type_name(s) for s in df.pop(('Unnamed: 0_level_0', 'Unnamed: 0_level_1', 'CROP'))] diff --git a/src/pyholos/components/land_management/field_system.py b/src/pyholos/components/land_management/field_system.py index 1da3d7c..ac491f0 100644 --- a/src/pyholos/components/land_management/field_system.py +++ b/src/pyholos/components/land_management/field_system.py @@ -15,9 +15,9 @@ from pyholos.components.land_management.carbon.tillage import \ calculate_tillage_factor from pyholos.components.land_management.common import ( - FertilizerBlends, HarvestMethod, IrrigationType, ManureApplicationTypes, - TillageType, TimePeriodCategory, get_fuel_energy_estimate, - get_herbicide_energy_estimate) + FertilizerApplicationMethodologies, FertilizerBlends, HarvestMethod, + IrrigationType, ManureApplicationTypes, TillageType, TimePeriodCategory, + get_fuel_energy_estimate, get_herbicide_energy_estimate) from pyholos.components.land_management.crop import (CropType, get_nitrogen_fixation) from pyholos.core_constants import CoreConstants @@ -75,6 +75,7 @@ def __init__(self): self.percentage_of_straw_returned_to_soil = HolosVar(name='PercentageOfStrawReturnedToSoil') self.percentage_of_roots_returned_to_soil = HolosVar(name='PercentageOfRootsReturnedToSoil') self.percentage_of_product_yield_returned_to_soil = HolosVar(name='PercentageOfProductYieldReturnedToSoil') + self.percentage_of_extraroots_returned_to_soil = HolosVar(name='PercentageOfExtrarootsReturnedToSoil') self.is_pesticide_used = HolosVar(name='Is Pesticide Used') self.number_of_pesticide_passes = HolosVar(name='Number Of Pesticide Passes') self.manure_applied = HolosVar(name='Manure Applied') @@ -157,6 +158,7 @@ def __init__(self): self.fuel_energy = HolosVar(name='Fuel Energy') self.herbicide_energy = HolosVar(name='Herbicide Energy') self.fertilizer_blend = HolosVar(name='Fertilizer Blend') + self.fertilizer_application_method = HolosVar(name='Fertilizer Application Method') def get_default_harvest_method(self) -> HarvestMethod: """Returns default harvest method based on the cultivated crop. @@ -327,6 +329,7 @@ def __init__( organic_carbon_percentage: float, soil_top_layer_thickness: float, soil_functional_category: SoilFunctionalCategory, + fertilizer_application_method: FertilizerApplicationMethodologies, fertilizer_blend: FertilizerBlends, evapotranspiration: list[float], precipitation: list[float], @@ -338,7 +341,9 @@ def __init__( manure_application_type: ManureApplicationTypes = ManureApplicationTypes.NotSelected, manure_animal_source_type: ManureAnimalSourceTypes = ManureAnimalSourceTypes.NotSelected, manure_state_type: ManureStateType = ManureStateType.not_selected, - manure_location_source_type: ManureLocationSourceType = ManureLocationSourceType.NotSelected + manure_location_source_type: ManureLocationSourceType = ManureLocationSourceType.NotSelected, + + percentage_of_extraroots_returned_to_soil: float = 100., ): """ @@ -402,6 +407,7 @@ def __init__( self.moisture_content_of_crop.value = relative_biomass_information_data.moisture_content_of_product / 100 self.set_moisture_content() + self.percentage_of_extraroots_returned_to_soil.value = percentage_of_extraroots_returned_to_soil self.set_percentage_returns() self.number_of_pesticide_passes.value = number_of_pesticide_passes self.is_pesticide_used.value = "Yes" if number_of_pesticide_passes > 0 else "No" @@ -426,6 +432,7 @@ def __init__( tillage_type=tillage_type, crop_type=crop_type) self.fertilizer_blend.value = fertilizer_blend + self.fertilizer_application_method.value = fertilizer_application_method.value is_perennial = crop_type.is_perennial() self.climate_parameter.value = calculate_climate_parameter( diff --git a/src/pyholos/farm/farm_inputs.py b/src/pyholos/farm/farm_inputs.py index c3542fd..34a1ab6 100644 --- a/src/pyholos/farm/farm_inputs.py +++ b/src/pyholos/farm/farm_inputs.py @@ -18,11 +18,9 @@ from pyholos.components.land_management.carbon.relative_biomass_information import ( RelativeBiomassInformationData, get_relative_biomass_information_data, parse_table_7) -from pyholos.components.land_management.common import (FertilizerBlends, - HarvestMethod, - IrrigationType, - ManureApplicationTypes, - TillageType) +from pyholos.components.land_management.common import ( + FertilizerApplicationMethodologies, FertilizerBlends, HarvestMethod, + IrrigationType, ManureApplicationTypes, TillageType) from pyholos.components.land_management.crop import CropType from pyholos.components.land_management.field_system import CropViewItem from pyholos.core_constants import CoreConstants @@ -77,6 +75,7 @@ class BeefManagementPeriod(BaseModel): production_stage: ProductionStage number_of_young_animals: conint(ge=0) is_milk_fed_only: bool + diet_name: str diet: Diet housing_type: HousingType manure_handling_system: ManureStateType @@ -85,6 +84,7 @@ class BeefManagementPeriod(BaseModel): end_weight: confloat(ge=0, allow_inf_nan=False) = None diet_additive_type: DietAdditiveType = DietAdditiveType.NONE bedding_material_type: BeddingMaterialType = BeddingMaterialType.straw + pasture_location: UUID | None = None class DairyManagementPeriod(BaseModel): @@ -246,6 +246,7 @@ def _create_component( number_of_young_animals=management_period.number_of_young_animals, is_milk_fed_only=management_period.is_milk_fed_only, milk_data=Milk(), + diet_name=management_period.diet_name, diet=management_period.diet, housing_type=management_period.housing_type, manure_handling_system=management_period.manure_handling_system, @@ -263,7 +264,8 @@ def _create_component( start_weight=management_period.start_weight, end_weight=management_period.end_weight, diet_additive_type=management_period.diet_additive_type, - bedding_material_type=management_period.bedding_material_type + bedding_material_type=management_period.bedding_material_type, + pasture_location=management_period.pasture_location, ) @@ -423,6 +425,7 @@ class FieldAnnualData(BaseModel): tillage_type: TillageType harvest_method: HarvestMethod nitrogen_fertilizer_rate: NonNegativeFloat = Field(default=0) + fertilizer_application_method: FertilizerApplicationMethodologies fertilizer_blend: FertilizerBlends irrigation_type: IrrigationType = IrrigationType.RainFed amount_of_irrigation: NonNegativeFloat = 0 @@ -552,6 +555,7 @@ def _create_one_year_component( organic_carbon_percentage=organic_carbon_percentage, soil_top_layer_thickness=soil_top_layer_thickness, soil_functional_category=soil_functional_category, + fertilizer_application_method=field_one_year_data.fertilizer_application_method, fertilizer_blend=field_one_year_data.fertilizer_blend, evapotranspiration=weather_data.potential_evapotranspiration, precipitation=weather_data.precipitation, diff --git a/src/pyholos/farm/farm_settings.py b/src/pyholos/farm/farm_settings.py index 4db0d83..3b12367 100644 --- a/src/pyholos/farm/farm_settings.py +++ b/src/pyholos/farm/farm_settings.py @@ -48,15 +48,32 @@ def __init__( decomposition_maximum_temperature: float = 30, moisture_response_function_at_saturation: float = 0.42, moisture_response_function_at_wilting_point: float = 0.18, + path_to_custom_yield_input_file: str = '', + use_custom_starting_soil_organic_carbon_value: bool = False, + starting_soc_value: float = 0., + residue_input_calculation_method: str = "Default", + soil_data_acquisition_method: str = "Default", **kwargs ): super().__init__(title="General") self.yield_assignment_method = FarmSettingsVar( name="Yield Assignment Method", value=YieldAssignmentMethod.SmallAreaData.name) + self.path_to_custom_yield_input_file = FarmSettingsVar( + name="Path To Custom Yield Input File", value=path_to_custom_yield_input_file) self.polygon_number = FarmSettingsVar(name="Polygon Number", value=polygon_id) self.latitude = FarmSettingsVar(name="Latitude", value=latitude) self.Longitude = FarmSettingsVar(name="Longitude", value=longitude) + + self.use_custom_starting_soil_organic_carbon_value = FarmSettingsVar( + name="Use Custom Starting Soil Organic Carbon Value", value=use_custom_starting_soil_organic_carbon_value) + self.starting_soc_value = FarmSettingsVar( + name="Starting SOC Value", value=starting_soc_value) + self.residue_input_calculation_method = FarmSettingsVar( + name="Residue Input Calculation Method", value=residue_input_calculation_method) + self.soil_data_acquisition_method = FarmSettingsVar( + name="Soil Data Acquisition Method", value=soil_data_acquisition_method) + self.carbon_concentration = FarmSettingsVar(name="Carbon Concentration (kg kg^-1)", value=carbon_concentration) self.emergence_day = FarmSettingsVar(name="Emergence Day", value=emergence_day) self.ripening_day = FarmSettingsVar(name="Ripening Day", value=ripening_day) @@ -356,6 +373,12 @@ def __init__( monthly_potential_evapotranspiration: list, monthly_temperature: list, + path_to_custom_yield_input_file: str = "", + use_custom_starting_soil_organic_carbon_value: bool = False, + starting_soc_value: float = 0., + residue_input_calculation_method: str = "Default", + soil_data_acquisition_method: str = "Default", + run_in_period_years: int = Defaults.DefaultRunInPeriod, carbon_concentration: float = CoreConstants.CarbonConcentration, diff --git a/src/pyholos/resources/holos4_cli.zip b/src/pyholos/resources/holos4_cli.zip index a852d44..4944bc3 100644 Binary files a/src/pyholos/resources/holos4_cli.zip and b/src/pyholos/resources/holos4_cli.zip differ diff --git a/tests/components/animals/test_beef.py b/tests/components/animals/test_beef.py index 02f1983..1b619c8 100644 --- a/tests/components/animals/test_beef.py +++ b/tests/components/animals/test_beef.py @@ -36,6 +36,8 @@ def setUpClass(cls): path_file=Path(__file__).parents[2] / 'sources/holos/non_regression_beef_cow_calf.csv', keep_default_na=False) cls.non_regression_data.set_index("Group Name", inplace=True) + cls.diet_name: str = 'custom' + cls.pasture_location = None cls.animal_type = common.AnimalType.beef_bulls cls.manure_emission_kwargs = dict( @@ -78,6 +80,7 @@ def test_bulls(self): number_of_young_animals=0, is_milk_fed_only=False, milk_data=common.Milk(), + diet_name=self.diet_name, diet=common.Diet( crude_protein_percentage=12.44, forage_percentage=97, @@ -94,7 +97,8 @@ def test_bulls(self): year=2024, manure_state_type=manure_state_type, **self.manure_emission_kwargs), - bedding_material_type=common.BeddingMaterialType.straw + bedding_material_type=common.BeddingMaterialType.straw, + pasture_location=self.pasture_location, ) self.run_test( group_name="Bulls", @@ -114,6 +118,7 @@ def test_replacement_heifers(self): number_of_young_animals=0, is_milk_fed_only=False, milk_data=common.Milk(), + diet_name=self.diet_name, diet=common.Diet( crude_protein_percentage=6.8, forage_percentage=100, @@ -130,7 +135,8 @@ def test_replacement_heifers(self): year=2024, manure_state_type=manure_state_type, **self.manure_emission_kwargs), - bedding_material_type=common.BeddingMaterialType.straw + bedding_material_type=common.BeddingMaterialType.straw, + pasture_location=self.pasture_location, ) self.run_test( group_name="Replacement heifers", @@ -150,6 +156,7 @@ def test_cows(self): number_of_young_animals=0, is_milk_fed_only=False, milk_data=common.Milk(), + diet_name=self.diet_name, diet=common.Diet( crude_protein_percentage=12.44, forage_percentage=97, @@ -166,7 +173,8 @@ def test_cows(self): year=2024, manure_state_type=manure_state_type, **self.manure_emission_kwargs), - bedding_material_type=common.BeddingMaterialType.straw + bedding_material_type=common.BeddingMaterialType.straw, + pasture_location=self.pasture_location, ) self.run_test( group_name="Cows", @@ -186,6 +194,7 @@ def test_calves(self): number_of_young_animals=0, is_milk_fed_only=True, milk_data=common.Milk(), + diet_name=self.diet_name, diet=common.Diet( crude_protein_percentage=12.44, forage_percentage=97, @@ -202,7 +211,8 @@ def test_calves(self): year=2024, manure_state_type=manure_state_type, **self.manure_emission_kwargs), - bedding_material_type=common.BeddingMaterialType.straw + bedding_material_type=common.BeddingMaterialType.straw, + pasture_location=self.pasture_location, ) self.run_test( group_name="Calves", @@ -217,6 +227,8 @@ def setUpClass(cls): path_file=Path(__file__).parents[2] / 'sources/holos/non_regression_beef_finisher.csv', keep_default_na=False) cls.non_regression_data.set_index("Group Name", inplace=True) + cls.diet_name: str = 'custom' + cls.pasture_location = None cls.manure_emission_kwargs = dict( mean_annual_precipitation=541.5, @@ -245,7 +257,6 @@ def run_test( str(v), str(res[k])) - def test_heifers(self): manure_state_type = common.ManureStateType.deep_bedding @@ -259,6 +270,7 @@ def test_heifers(self): number_of_young_animals=0, is_milk_fed_only=False, milk_data=common.Milk(), + diet_name=self.diet_name, diet=common.Diet( crude_protein_percentage=12.72, forage_percentage=10, @@ -275,7 +287,8 @@ def test_heifers(self): year=2024, manure_state_type=manure_state_type, **self.manure_emission_kwargs), - bedding_material_type=common.BeddingMaterialType.straw + bedding_material_type=common.BeddingMaterialType.straw, + pasture_location=self.pasture_location, ) self.run_test( group_name="Heifers", @@ -295,6 +308,7 @@ def test_steers(self): number_of_young_animals=0, is_milk_fed_only=False, milk_data=common.Milk(), + diet_name=self.diet_name, diet=common.Diet( crude_protein_percentage=12.72, forage_percentage=10, @@ -311,7 +325,8 @@ def test_steers(self): year=2024, manure_state_type=manure_state_type, **self.manure_emission_kwargs), - bedding_material_type=common.BeddingMaterialType.straw + bedding_material_type=common.BeddingMaterialType.straw, + pasture_location=self.pasture_location, ) self.run_test( group_name="Steers", @@ -327,6 +342,8 @@ def setUpClass(cls): keep_default_na=False) cls.non_regression_data.set_index("Group Name", inplace=True) + cls.diet_name: str = 'custom' + cls.pasture_location = None cls.manure_emission_kwargs = dict( mean_annual_precipitation=541.5, @@ -368,6 +385,7 @@ def test_heifers(self): number_of_young_animals=0, is_milk_fed_only=False, milk_data=common.Milk(), + diet_name=self.diet_name, diet=common.Diet( crude_protein_percentage=12.28, forage_percentage=65, @@ -384,7 +402,8 @@ def test_heifers(self): year=2024, manure_state_type=manure_state_type, **self.manure_emission_kwargs), - bedding_material_type=common.BeddingMaterialType.straw + bedding_material_type=common.BeddingMaterialType.straw, + pasture_location=self.pasture_location, ) self.run_test( group_name="Heifers", @@ -404,6 +423,7 @@ def test_steers(self): number_of_young_animals=0, is_milk_fed_only=False, milk_data=common.Milk(), + diet_name=self.diet_name, diet=common.Diet( crude_protein_percentage=12.28, forage_percentage=65, @@ -420,7 +440,8 @@ def test_steers(self): year=2024, manure_state_type=manure_state_type, **self.manure_emission_kwargs), - bedding_material_type=common.BeddingMaterialType.straw + bedding_material_type=common.BeddingMaterialType.straw, + pasture_location=self.pasture_location, ) self.run_test( group_name="Steers", diff --git a/tests/components/land_management/test_field_system.py b/tests/components/land_management/test_field_system.py index 39081e3..85d0ce0 100644 --- a/tests/components/land_management/test_field_system.py +++ b/tests/components/land_management/test_field_system.py @@ -7,10 +7,9 @@ from pyholos.components.land_management import field_system from pyholos.components.land_management.carbon.relative_biomass_information import ( get_relative_biomass_information_data, parse_table_7) -from pyholos.components.land_management.common import (FertilizerBlends, - HarvestMethod, - IrrigationType, - TillageType) +from pyholos.components.land_management.common import ( + FertilizerApplicationMethodologies, FertilizerBlends, HarvestMethod, + IrrigationType, TillageType) from pyholos.components.land_management.crop import CropType from pyholos.defaults import Defaults from pyholos.soil import SoilFunctionalCategory @@ -303,6 +302,7 @@ def test_values(self): organic_carbon_percentage=3.2, soil_top_layer_thickness=230, soil_functional_category=SoilFunctionalCategory.EasternCanada, + fertilizer_application_method=FertilizerApplicationMethodologies.IncorporatedOrPartiallyInjected, fertilizer_blend=FertilizerBlends.Custom, evapotranspiration=self.weather_data['Mean Daily Pet'], precipitation=self.weather_data['Mean Daily Precipitation'], diff --git a/tests/farm/test_farm_inputs.py b/tests/farm/test_farm_inputs.py index 74cd048..efccbf7 100644 --- a/tests/farm/test_farm_inputs.py +++ b/tests/farm/test_farm_inputs.py @@ -15,11 +15,9 @@ ManureLocationSourceType, ManureStateType, Milk, ProductionStage) -from pyholos.components.land_management.common import (FertilizerBlends, - HarvestMethod, - IrrigationType, - ManureApplicationTypes, - TillageType) +from pyholos.components.land_management.common import ( + FertilizerApplicationMethodologies, FertilizerBlends, HarvestMethod, + IrrigationType, ManureApplicationTypes, TillageType) from pyholos.components.land_management.crop import CropType from pyholos.farm import farm_inputs from pyholos.farm.farm import create_farm @@ -430,6 +428,7 @@ def get_kwargs(self) -> dict: production_stage=ProductionStage.gestating, number_of_young_animals=0, is_milk_fed_only=False, + diet_name='custom', diet=Diet( crude_protein_percentage=14.8, forage_percentage=80, @@ -641,6 +640,7 @@ def get_kwargs(self) -> dict: production_stage=ProductionStage.gestating, number_of_young_animals=0, milk_data=Milk(), + diet_name='custom', diet=Diet( crude_protein_percentage=16.146, forage_percentage=77.8, @@ -851,6 +851,7 @@ def get_kwargs(self) -> dict: number_of_animals=4, production_stage=ProductionStage.gestating, number_of_young_animals=0, + diet_name='custom', diet=Diet( crude_protein_percentage=17.7, forage_percentage=0, @@ -1073,6 +1074,7 @@ def get_kwargs(self) -> dict: tillage_type=TillageType.Reduced, harvest_method=HarvestMethod.CashCrop, nitrogen_fertilizer_rate=100, + fertilizer_application_method=FertilizerApplicationMethodologies.IncorporatedOrPartiallyInjected, fertilizer_blend=FertilizerBlends.Custom, irrigation_type=IrrigationType.Irrigated, amount_of_irrigation=0, diff --git a/tests/farm/test_farm_settings.py b/tests/farm/test_farm_settings.py index 2d7d1fe..bde6939 100644 --- a/tests/farm/test_farm_settings.py +++ b/tests/farm/test_farm_settings.py @@ -33,131 +33,10 @@ def setUpClass(cls): monthly_potential_evapotranspiration=list(range(10, 22)), monthly_temperature=list(range(-5, 7)), run_in_period_years=15) - cls.path_farm_settings = Path(__file__).parents[1] / 'sources/Farm.settings' - cls.expected_output = [ - '# General', - 'Yield Assignment Method = SmallAreaData', - 'Polygon Number = 851003', - 'Latitude = 50', - 'Longitude = -98', - 'Carbon Concentration (kg kg^-1) = 0.45', - 'Emergence Day = 141', - 'Ripening Day = 197', - 'Variance = 300', - 'Alfa = 0.7', - 'Decomposition Minimum Temperature (°C) = -3.78', - 'Decomposition Maximum Temperature (°C) = 30', - 'Moisture Response Function At Saturation = 0.42', - 'Moisture Response Function At Wilting Point = 0.18', - '', - '# Annual Crops', - 'Percentage Of Product Returned To Soil For Annuals = 2', - 'Percentage Of Straw Returned To Soil For Annuals = 100', - 'Percentage Of Roots Returned To Soil For Annuals = 100', - '', - '# Silage Crops', - 'Percentage Of Product Yield Returned To Soil For Silage Crops = 35', - 'Percentage Of Roots Returned To Soil For Silage Crops = 100', - '', - '# Cover Crops', - 'Percentage Of Product Yield Returned To Soil For Cover Crops = 100', - 'Percentage Of Product Yield Returned To Soil For Cover Crops Forage = 35', - 'Percentage Of Product Yield Returned To Soil For Cover Crops Produce = 0', - 'Percentage Of Straw Returned To Soil For Cover Crops = 100', - 'Percentage Of Roots Returned To Soil For Cover Crops = 100', - '', - '# Root Crops', - 'Percentage Of Product Returned To Soil For Root Crops = 0', - 'Percentage Of Straw Returned To Soil For Root Crops = 100', - '', - '# Perennial Crops', - 'Percentage Of Product Returned To Soil For Perennials = 35', - 'Percentage Of Roots Returned To Soil For Perennials = 100', - '', - '# Rangeland', - 'Percentage Of Product Returned To Soil For Rangeland Due To Harvest Loss = 35', - 'Percentage Of Roots Returned To Soil For Rangeland = 100', - '', - '# Fodder Corn', - 'Percentage Of Product Returned To Soil For Fodder Corn = 35', - 'Percentage Of Roots Returned To Soil For Fodder Corn = 100', - 'Decomposition Rate Constant Young Pool = 0.8', - 'Decomposition Rate Constant Old Pool = 0.00605', - 'Old Pool Carbon N = 0.1', - 'NO Ratio = 0.1', - 'Emission Factor For Leaching And Runoff (kg N2O-N (kg N)^-1) = 0.011', - 'Emission Factor For Volatilization (kg N2O-N (kg N)^-1) = 0.01', - 'Fraction Of N Lost By Volatilization = 0.21', - 'Microbe Death = 0.2', - 'Denitrification = 0.5', - 'Carbon modelling strategy = ICBM', - 'Run In Period Years = 15', - '', - '# ICBM/Climate', - 'Humification Coefficient Above Ground = 0.125', - 'Humification Coefficient Below Ground = 0.3', - 'Humification Coefficient Manure = 0.31', - 'Climate filename = climate.csv', - 'Climate Data Acquisition = NASA', - 'Use climate parameter instead of management factor = True', - 'Enable Carbon Modelling = True', - '', - '# Precipitation Data (mm)', - 'January Precipitation = 0', - 'February Precipitation = 1', - 'March Precipitation = 2', - 'April Precipitation = 3', - 'May Precipitation = 4', - 'June Precipitation = 5', - 'July Precipitation = 6', - 'August Precipitation = 7', - 'September Precipitation = 8', - 'October Precipitation = 9', - 'November Precipitation = 10', - 'December Precipitation = 11', - '', - '# Evapotranspiration Data (mm year^-1)', - 'January Potential Evapotranspiration = 10', - 'February Potential Evapotranspiration = 11', - 'March Potential Evapotranspiration = 12', - 'April Potential Evapotranspiration = 13', - 'May Potential Evapotranspiration = 14', - 'June Potential Evapotranspiration = 15', - 'July Potential Evapotranspiration = 16', - 'August Potential Evapotranspiration = 17', - 'September Potential Evapotranspiration = 18', - 'October Potential Evapotranspiration = 19', - 'November Potential Evapotranspiration = 20', - 'December Potential Evapotranspiration = 21', - '', - '# Temperature Data (°C)', - 'January Mean Temperature = -5', - 'February Mean Temperature = -4', - 'March Mean Temperature = -3', - 'April Mean Temperature = -2', - 'May Mean Temperature = -1', - 'June Mean Temperature = 0', - 'July Mean Temperature = 1', - 'August Mean Temperature = 2', - 'September Mean Temperature = 3', - 'October Mean Temperature = 4', - 'November Mean Temperature = 5', - 'December Mean Temperature = 6', - '', - '# Soil Data', - 'Province = Manitoba', - 'Year Of Observation = 1', - 'Ecodistrict ID = 851', - 'Soil Great Group = Regosol', - 'Soil functional category = Black', - 'Bulk Density = 1.2', - 'Soil Texture = Fine', - 'Soil Ph = 7.8', - 'Top Layer Thickness (mm) = 200', - 'Proportion Of Sand In Soil = 0.2', - 'Proportion Of Clay In Soil = 0.3', - 'Proportion Of Soil Organic Carbon = 3.1' - ] + _path_sources: Path = Path(__file__).parents[1] / 'sources' + cls.path_farm_settings = _path_sources / 'Farm.settings' + with (_path_sources / 'holos/non_regression_farm_settings.txt').open(mode='r', encoding='utf-8') as f: + cls.expected_output = f.readlines() @classmethod def tearDownClass(cls): @@ -170,12 +49,15 @@ def test_params_farm_settings_output_is_written_to_file(self): with self.path_farm_settings.open(mode='r', encoding='utf-8') as f: output = f.readlines() - self.assertEqual(self.expected_output, [s.replace('\n', '') for s in output]) + self.assertEqual(self.expected_output, output) pass def test_params_farm_settings_output_is_passed_to_dict(self): - output = self.params_farm_settings.export_to_dict() - self.assertEqual(self.expected_output, output['Farm.settings']) + for v_expected, v_output in zip( + self.expected_output, + self.params_farm_settings.export_to_dict()['Farm.settings'] + ): + self.assertEqual(v_expected.replace('\n', ''), v_output) pass diff --git a/tests/sources/holos/non_regression_beef_cow_calf.csv b/tests/sources/holos/non_regression_beef_cow_calf.csv index fb398da..99af253 100644 --- a/tests/sources/holos/non_regression_beef_cow_calf.csv +++ b/tests/sources/holos/non_regression_beef_cow_calf.csv @@ -1,8 +1,8 @@ # The "Dietary Net Energy Concentration" value was set to 7.094 (which is calculated based on metabolizable energy) instead of 6 (which is a hard-coded value for LabelMediumEnergyProteinDiet in Holos). # The "Methane Conversion Factor Of Diet" value was set to 0.08 (which is calculated based on total digestible nutrient) instead of 0.07 (which is a hard-coded value for LabelMediumEnergyProteinDiet in Holos). # -Name,Component Type,Group Name,Group Type,Management Period Name,Group Pairing Number,Management Period Start Date,Management Period Days,Number Of Animals,Production Stage,Number Of Young Animals,Animals Are Milk Fed Only,Start Weight,End Weight,Average Daily Gain,Milk Production,Milk Fat Content,Milk Protein Content As Percentage,Diet Additive Type,Methane Conversion Factor Of Diet,Methane Conversion Factor Adjusted,Feed Intake,Crude Protein,Forage,TDN,Ash Content Of Diet,Starch,Fat,ME,NDF,Dietary Net Energy Concentration,Housing Type,Gain Coefficient,User Defined Bedding Rate,Total Carbon Kilograms Dry Matter For Bedding,Total Nitrogen Kilograms Dry Matter For Bedding,Moisture Content Of Bedding Material,Activity Coefficient Of Feeding Situation,Maintenance Coefficient,Methane Conversion Factor Of Manure,N2O Direct Emission Factor,Emission Factor Volatilization,Volatilization Fraction,Emission Factor Leaching,Fraction Leaching,Ash Content,Methane Producing Capacity Of Manure,Fraction Of Organic Nitrogen Immobilized,Fraction Of Organic Nitrogen Nitrified,Fraction Of Organic Nitrogen Mineralized,Manure State Type,Ammonia Emission Factor For Manure Storage -Beef Cow-Calf,H.Core.Models.Animals.Beef.CowCalfComponent,Bulls,BeefBulls,Winter feeding,0,2024-01-01,119,4,Gestating,0,False,900.0000,900.0000,0.0000,0.0000,4.0000,3.5000,None,0.0800,0.0000,0.0000,12.4400,97.0000,54.5720,10.3270,7.0810,1.7160,1.9650,53.4780,7.0937,ConfinedNoBarn,1.2000,1.5000,0.4470,0.0057,9.5700,0.0000,0.3700,0.2600,0.0100,0.0050,0.2500,0.0110,0.0350,8.0000,0.1900,0.0000,0.1250,0.2800,DeepBedding,0.3500 -Beef Cow-Calf,H.Core.Models.Animals.Beef.CowCalfComponent,Replacement heifers,BeefReplacementHeifers,Management period 1,0,2024-01-01,365,20,Gestating,0,False,240.0000,360.0000,0.3288,0.0000,4.0000,3.5000,None,0.0800,0.0000,0.0000,6.8000,100.0000,48.4000,10.3000,4.2000,1.8000,1.8000,66.6000,5.9624,ConfinedNoBarn,0.8000,1.5000,0.4470,0.0057,9.5700,0.0000,0.3220,0.0047,0.0004,0.0050,0.2100,0.0110,0.1942,8.0000,0.1900,0.0000,0.0000,0.0000,Pasture,0.0000 -Beef Cow-Calf,H.Core.Models.Animals.Beef.CowCalfComponent,Cows,BeefCowLactating,Winter feeding - lactating,1,2024-03-01,61,120,Gestating,0,False,610,610,0,0,4,3.5,None,0.0800,0,0,12.44,97,54.572,10.327,7.081,1.716,1.965,53.478,7.0937,ConfinedNoBarn,0.8,1.5,0.447,0.0057,9.57,0,0.386,0.26,0.01,0.005,0.25,0.011,0.035,8,0.19,0,0.125,0.28,DeepBedding,0.35 -Beef Cow-Calf,H.Core.Models.Animals.Beef.CowCalfComponent,Calves,BeefCalf,Management period 1,1,2024-03-01,60,102,Gestating,0,True,39.0000,260.0000,3.6833,0.0000,4.0000,3.5000,None,0.0800,0.0000,0.0000,12.4400,97.0000,54.5720,10.3270,7.0810,1.7160,1.9650,53.4780,7.0937,ConfinedNoBarn,-100000.0000,0.0000,0.4470,0.0057,9.5700,0.0000,-100000.0000,0.2600,0.0100,0.0050,0.2500,0.0110,0.0350,8.0000,0.1900,0.0000,0.1250,0.2800,DeepBedding,0.3500 \ No newline at end of file +Name,Component Type,Group Name,Group Type,Management Period Name,Group Pairing Number,Management Period Start Date,Management Period Days,Number Of Animals,Production Stage,Number Of Young Animals,Animals Are Milk Fed Only,Start Weight,End Weight,Average Daily Gain,Milk Production,Milk Fat Content,Milk Protein Content As Percentage,Diet Name,Diet Additive Type,Methane Conversion Factor Of Diet,Methane Conversion Factor Adjusted,Feed Intake,Crude Protein,Forage,TDN,Ash Content Of Diet,Starch,Fat,ME,NDF,Dietary Net Energy Concentration,Housing Type,Gain Coefficient,User Defined Bedding Rate,Total Carbon Kilograms Dry Matter For Bedding,Total Nitrogen Kilograms Dry Matter For Bedding,Moisture Content Of Bedding Material,Activity Coefficient Of Feeding Situation,Maintenance Coefficient,Pasture Location,Methane Conversion Factor Of Manure,N2O Direct Emission Factor,Emission Factor Volatilization,Volatilization Fraction,Emission Factor Leaching,Fraction Leaching,Ash Content,Methane Producing Capacity Of Manure,Fraction Of Organic Nitrogen Immobilized,Fraction Of Organic Nitrogen Nitrified,Fraction Of Organic Nitrogen Mineralized,Manure State Type,Ammonia Emission Factor For Manure Storage +Beef Cow-Calf,H.Core.Models.Animals.Beef.CowCalfComponent,Bulls,BeefBulls,Winter feeding,0,2024-01-01,119,4,Gestating,0,False,900.0000,900.0000,0.0000,0.0000,4.0000,3.5000,custom,None,0.0800,0.0000,0.0000,12.4400,97.0000,54.5720,10.3270,7.0810,1.7160,1.9650,53.4780,7.0937,ConfinedNoBarn,1.2000,1.5000,0.4470,0.0057,9.5700,0.0000,0.3700,N/A,0.2600,0.0100,0.0050,0.2500,0.0110,0.0350,8.0000,0.1900,0.0000,0.1250,0.2800,DeepBedding,0.3500 +Beef Cow-Calf,H.Core.Models.Animals.Beef.CowCalfComponent,Replacement heifers,BeefReplacementHeifers,Management period 1,0,2024-01-01,365,20,Gestating,0,False,240.0000,360.0000,0.3288,0.0000,4.0000,3.5000,custom,None,0.0800,0.0000,0.0000,6.8000,100.0000,48.4000,10.3000,4.2000,1.8000,1.8000,66.6000,5.9624,ConfinedNoBarn,0.8000,1.5000,0.4470,0.0057,9.5700,0.0000,0.3220,N/A,0.0047,0.0004,0.0050,0.2100,0.0110,0.1942,8.0000,0.1900,0.0000,0.0000,0.0000,Pasture,0.0000 +Beef Cow-Calf,H.Core.Models.Animals.Beef.CowCalfComponent,Cows,BeefCowLactating,Winter feeding - lactating,1,2024-03-01,61,120,Gestating,0,False,610,610,0,0,4,3.5,custom,None,0.0800,0,0,12.44,97,54.572,10.327,7.081,1.716,1.965,53.478,7.0937,ConfinedNoBarn,0.8,1.5,0.447,0.0057,9.57,0,0.386,N/A,0.26,0.01,0.005,0.25,0.011,0.035,8,0.19,0,0.125,0.28,DeepBedding,0.35 +Beef Cow-Calf,H.Core.Models.Animals.Beef.CowCalfComponent,Calves,BeefCalf,Management period 1,1,2024-03-01,60,102,Gestating,0,True,39.0000,260.0000,3.6833,0.0000,4.0000,3.5000,custom,None,0.0800,0.0000,0.0000,12.4400,97.0000,54.5720,10.3270,7.0810,1.7160,1.9650,53.4780,7.0937,ConfinedNoBarn,-100000.0000,0.0000,0.4470,0.0057,9.5700,0.0000,-100000.0000,N/A,0.2600,0.0100,0.0050,0.2500,0.0110,0.0350,8.0000,0.1900,0.0000,0.1250,0.2800,DeepBedding,0.3500 \ No newline at end of file diff --git a/tests/sources/holos/non_regression_beef_finisher.csv b/tests/sources/holos/non_regression_beef_finisher.csv index 7ebd693..e998b8c 100644 --- a/tests/sources/holos/non_regression_beef_finisher.csv +++ b/tests/sources/holos/non_regression_beef_finisher.csv @@ -14,6 +14,6 @@ # The "Methane Conversion Factor Of Diet" value was set to 0.065 (which is calculated based on total digestible nutrient) instead of 0.035 (which is a hard-coded value for LabelBarleyGrainBasedDiet in Holos). # The "Dietary Net Energy Concentration" value was set to 13.642 (which is calculated based on metabolizable energy) instead of 0 (which is a hard-coded (wrongly initialized?)). # -Name,Component Type,Group Name,Group Type,Management Period Name,Group Pairing Number,Management Period Start Date,Management Period Days,Number Of Animals,Production Stage,Number Of Young Animals,Animals Are Milk Fed Only,Start Weight,End Weight,Average Daily Gain,Milk Production,Milk Fat Content,Milk Protein Content As Percentage,Diet Additive Type,Methane Conversion Factor Of Diet,Methane Conversion Factor Adjusted,Feed Intake,Crude Protein,Forage,TDN,Ash Content Of Diet,Starch,Fat,ME,NDF,Dietary Net Energy Concentration,Housing Type,Gain Coefficient,User Defined Bedding Rate,Total Carbon Kilograms Dry Matter For Bedding,Total Nitrogen Kilograms Dry Matter For Bedding,Moisture Content Of Bedding Material,Activity Coefficient Of Feeding Situation,Maintenance Coefficient,Methane Conversion Factor Of Manure,N2O Direct Emission Factor,Emission Factor Volatilization,Volatilization Fraction,Emission Factor Leaching,Fraction Leaching,Ash Content,Methane Producing Capacity Of Manure,Fraction Of Organic Nitrogen Immobilized,Fraction Of Organic Nitrogen Nitrified,Fraction Of Organic Nitrogen Mineralized,Manure State Type,Ammonia Emission Factor For Manure Storage -Beef Finisher,H.Core.Models.Animals.Beef.FinishingComponent,Heifers,BeefFinishingHeifer,Management period 1,0,2024-01-19,170,100,Gestating,0,False,300.0000,580.0000,1.6471,0.0000,4.0000,3.5000,None,0.0650,0.0000,0.0000,12.7200,10.0000,81.7500,3.3800,51.9500,2.3300,2.9200,21.9500,13.642,ConfinedNoBarn,0.8000,1.5000,0.4470,0.0057,9.5700,0.0000,0.3220,0.2600,0.0100,0.0050,0.2500,0.0110,0.0350,8.0000,0.1900,0.0000,0.1250,0.2800,DeepBedding,0.3500 -Beef Finisher,H.Core.Models.Animals.Beef.FinishingComponent,Steers,BeefFinishingSteer,Management period 1,0,2024-01-19,170,100,Gestating,0,False,310.0000,610.0000,1.7647,0.0000,4.0000,3.5000,None,0.0650,0.0000,0.0000,12.7200,10.0000,81.7500,3.3800,51.9500,2.3300,2.9200,21.9500,13.642,ConfinedNoBarn,1.0000,1.5000,0.4470,0.0057,9.5700,0.0000,0.3220,0.2600,0.0100,0.0050,0.2500,0.0110,0.0350,8.0000,0.1900,0.0000,0.1250,0.2800,DeepBedding,0.3500 \ No newline at end of file +Name,Component Type,Group Name,Group Type,Management Period Name,Group Pairing Number,Management Period Start Date,Management Period Days,Number Of Animals,Production Stage,Number Of Young Animals,Animals Are Milk Fed Only,Start Weight,End Weight,Average Daily Gain,Milk Production,Milk Fat Content,Milk Protein Content As Percentage,Diet Name,Diet Additive Type,Methane Conversion Factor Of Diet,Methane Conversion Factor Adjusted,Feed Intake,Crude Protein,Forage,TDN,Ash Content Of Diet,Starch,Fat,ME,NDF,Dietary Net Energy Concentration,Housing Type,Gain Coefficient,User Defined Bedding Rate,Total Carbon Kilograms Dry Matter For Bedding,Total Nitrogen Kilograms Dry Matter For Bedding,Moisture Content Of Bedding Material,Activity Coefficient Of Feeding Situation,Maintenance Coefficient,Pasture Location,Methane Conversion Factor Of Manure,N2O Direct Emission Factor,Emission Factor Volatilization,Volatilization Fraction,Emission Factor Leaching,Fraction Leaching,Ash Content,Methane Producing Capacity Of Manure,Fraction Of Organic Nitrogen Immobilized,Fraction Of Organic Nitrogen Nitrified,Fraction Of Organic Nitrogen Mineralized,Manure State Type,Ammonia Emission Factor For Manure Storage +Beef Finisher,H.Core.Models.Animals.Beef.FinishingComponent,Heifers,BeefFinishingHeifer,Management period 1,0,2024-01-19,170,100,Gestating,0,False,300.0000,580.0000,1.6471,0.0000,4.0000,3.5000,custom,None,0.0650,0.0000,0.0000,12.7200,10.0000,81.7500,3.3800,51.9500,2.3300,2.9200,21.9500,13.642,ConfinedNoBarn,0.8000,1.5000,0.4470,0.0057,9.5700,0.0000,0.3220,N/A,0.2600,0.0100,0.0050,0.2500,0.0110,0.0350,8.0000,0.1900,0.0000,0.1250,0.2800,DeepBedding,0.3500 +Beef Finisher,H.Core.Models.Animals.Beef.FinishingComponent,Steers,BeefFinishingSteer,Management period 1,0,2024-01-19,170,100,Gestating,0,False,310.0000,610.0000,1.7647,0.0000,4.0000,3.5000,custom,None,0.0650,0.0000,0.0000,12.7200,10.0000,81.7500,3.3800,51.9500,2.3300,2.9200,21.9500,13.642,ConfinedNoBarn,1.0000,1.5000,0.4470,0.0057,9.5700,0.0000,0.3220,N/A,0.2600,0.0100,0.0050,0.2500,0.0110,0.0350,8.0000,0.1900,0.0000,0.1250,0.2800,DeepBedding,0.3500 \ No newline at end of file diff --git a/tests/sources/holos/non_regression_beef_stockers_and_backgrounders.csv b/tests/sources/holos/non_regression_beef_stockers_and_backgrounders.csv index b6a93ef..c8ec957 100644 --- a/tests/sources/holos/non_regression_beef_stockers_and_backgrounders.csv +++ b/tests/sources/holos/non_regression_beef_stockers_and_backgrounders.csv @@ -1,6 +1,6 @@ # The "Methane Conversion Factor Of Diet" value was set to 0.065 (which is calculated based on total digestible nutrient) instead of 0.063 (which is a hard-coded value for LabelMediumGrowthDiet in Holos). # The "Dietary Net Energy Concentration" value was set to 13.642 (which is calculated based on metabolizable energy) instead of 0 (which is a hard-coded (wrongly initialized?)). # -Name,Component Type,Group Name,Group Type,Management Period Name,Group Pairing Number,Management Period Start Date,Management Period Days,Number Of Animals,Production Stage,Number Of Young Animals,Animals Are Milk Fed Only,Start Weight,End Weight,Average Daily Gain,Milk Production,Milk Fat Content,Milk Protein Content As Percentage,Diet Additive Type,Methane Conversion Factor Of Diet,Methane Conversion Factor Adjusted,Feed Intake,Crude Protein,Forage,TDN,Ash Content Of Diet,Starch,Fat,ME,NDF,Dietary Net Energy Concentration,Housing Type,Gain Coefficient,User Defined Bedding Rate,Total Carbon Kilograms Dry Matter For Bedding,Total Nitrogen Kilograms Dry Matter For Bedding,Moisture Content Of Bedding Material,Activity Coefficient Of Feeding Situation,Maintenance Coefficient,Methane Conversion Factor Of Manure,N2O Direct Emission Factor,Emission Factor Volatilization,Volatilization Fraction,Emission Factor Leaching,Fraction Leaching,Ash Content,Methane Producing Capacity Of Manure,Fraction Of Organic Nitrogen Immobilized,Fraction Of Organic Nitrogen Nitrified,Fraction Of Organic Nitrogen Mineralized,Manure State Type,Ammonia Emission Factor For Manure Storage -Beef Stockers & Backgrounders,H.Core.Models.Animals.Beef.BackgroundingComponent,Heifers,BeefBackgrounderHeifer,Management period 1,0,2023-10-01,110,100,Gestating,0,False,240.0000,360.0000,1.0910,0.0000,4.0000,3.5000,None,0.0650,0.0000,0.0000,12.2800,65.0000,68.8250,6.5700,25.8250,3.0450,2.4800,42.0250,10.6249,ConfinedNoBarn,0.8000,1.5000,0.4470,0.0057,9.5700,0.0000,0.3220,0.2600,0.0100,0.0050,0.2500,0.0110,0.0350,8.0000,0.1900,0.0000,0.1250,0.2800,DeepBedding,0.3500 -Beef Stockers & Backgrounders,H.Core.Models.Animals.Beef.BackgroundingComponent,Steers,BeefBackgrounderSteer,Management period 1,0,2023-10-01,110,100,Gestating,0,False,250.0000,380.0000,1.1818,0.0000,4.0000,3.5000,None,0.0650,0.0000,0.0000,12.2800,65.0000,68.8250,6.5700,25.8250,3.0450,2.4800,42.0250,10.6249,ConfinedNoBarn,1.0000,1.5000,0.4470,0.0057,9.5700,0.0000,0.3220,0.2600,0.0100,0.0050,0.2500,0.0110,0.0350,8.0000,0.1900,0.0000,0.1250,0.2800,DeepBedding,0.3500 \ No newline at end of file +Name,Component Type,Group Name,Group Type,Management Period Name,Group Pairing Number,Management Period Start Date,Management Period Days,Number Of Animals,Production Stage,Number Of Young Animals,Animals Are Milk Fed Only,Start Weight,End Weight,Average Daily Gain,Milk Production,Milk Fat Content,Milk Protein Content As Percentage,Diet Name,Diet Additive Type,Methane Conversion Factor Of Diet,Methane Conversion Factor Adjusted,Feed Intake,Crude Protein,Forage,TDN,Ash Content Of Diet,Starch,Fat,ME,NDF,Dietary Net Energy Concentration,Housing Type,Gain Coefficient,User Defined Bedding Rate,Total Carbon Kilograms Dry Matter For Bedding,Total Nitrogen Kilograms Dry Matter For Bedding,Moisture Content Of Bedding Material,Activity Coefficient Of Feeding Situation,Maintenance Coefficient,Pasture Location,Methane Conversion Factor Of Manure,N2O Direct Emission Factor,Emission Factor Volatilization,Volatilization Fraction,Emission Factor Leaching,Fraction Leaching,Ash Content,Methane Producing Capacity Of Manure,Fraction Of Organic Nitrogen Immobilized,Fraction Of Organic Nitrogen Nitrified,Fraction Of Organic Nitrogen Mineralized,Manure State Type,Ammonia Emission Factor For Manure Storage +Beef Stockers & Backgrounders,H.Core.Models.Animals.Beef.BackgroundingComponent,Heifers,BeefBackgrounderHeifer,Management period 1,0,2023-10-01,110,100,Gestating,0,False,240.0000,360.0000,1.0910,0.0000,4.0000,3.5000,custom,None,0.0650,0.0000,0.0000,12.2800,65.0000,68.8250,6.5700,25.8250,3.0450,2.4800,42.0250,10.6249,ConfinedNoBarn,0.8000,1.5000,0.4470,0.0057,9.5700,0.0000,0.3220,N/A,0.2600,0.0100,0.0050,0.2500,0.0110,0.0350,8.0000,0.1900,0.0000,0.1250,0.2800,DeepBedding,0.3500 +Beef Stockers & Backgrounders,H.Core.Models.Animals.Beef.BackgroundingComponent,Steers,BeefBackgrounderSteer,Management period 1,0,2023-10-01,110,100,Gestating,0,False,250.0000,380.0000,1.1818,0.0000,4.0000,3.5000,custom,None,0.0650,0.0000,0.0000,12.2800,65.0000,68.8250,6.5700,25.8250,3.0450,2.4800,42.0250,10.6249,ConfinedNoBarn,1.0000,1.5000,0.4470,0.0057,9.5700,0.0000,0.3220,N/A,0.2600,0.0100,0.0050,0.2500,0.0110,0.0350,8.0000,0.1900,0.0000,0.1250,0.2800,DeepBedding,0.3500 \ No newline at end of file diff --git a/tests/sources/holos/non_regression_crop_view_item/field_data.csv b/tests/sources/holos/non_regression_crop_view_item/field_data.csv index c8420fd..dff35ec 100644 --- a/tests/sources/holos/non_regression_crop_view_item/field_data.csv +++ b/tests/sources/holos/non_regression_crop_view_item/field_data.csv @@ -1,41 +1,41 @@ -Phase Number,Name,Area,Current Year,Crop Year,Crop Type,Tillage Type,Year In Perennial Stand,Perennial Stand ID,Perennial Stand Length,Biomass Coefficient Product,Biomass Coefficient Straw,Biomass Coefficient Roots,Biomass Coefficient Extraroot,Nitrogen Content In Product,Nitrogen Content In Straw,Nitrogen Content In Roots,Nitrogen Content In Extraroot,Nitrogen Fixation,Nitrogen Deposit,Carbon Concentration,Yield,Harvest Method,Nitrogen Fertilizer Rate,Phosphorous Fertilizer Rate,Is Irrigated,Irrigation Type,Amount Of Irrigation,Moisture Content Of Crop,Moisture Content Of Crop Percentage,PercentageOfStrawReturnedToSoil,PercentageOfRootsReturnedToSoil,PercentageOfProductYieldReturnedToSoil,Is Pesticide Used,Number Of Pesticide Passes,Manure Applied,Amount Of Manure Applied,Manure Application Type,Manure Animal Source Type,Manure State Type,Manure Location Source Type,Under Sown Crops Used,Crop Is Grazed,Field System Component Guid,Time Period Category String,Climate Parameter,Tillage Factor,Management Factor,Plant Carbon In Agricultural Product,Carbon Input From Product,Carbon Input From Straw,Carbon Input From Roots,Carbon Input From Extraroots,Size Of First Rotation For Field,Above Ground Carbon Input,Below Ground Carbon Input,Manure Carbon Inputs Per Hectare,Digestate Carbon Inputs Per Hectare,Total Carbon Inputs,Sand,Lignin,WFac,TFac,Total Nitrogen Inputs For Ipcc Tier 2,Nitrogen Content,Above Ground Residue Dry Matter,Below Ground Residue Dry Matter,Fuel Energy,Herbicide Energy,Fertilizer Blend -0,field_1,1,2025,1985,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3490,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.208,1,1.208,0,0,0,0,0,1,2042.76365145934,757.273131864188,0,0,2800.03678332352,0.28,0.053,0,0,0,0.007,4863.72297966508,1803.0312663433,1.8,0.24,Custom -0,field_1,1,2025,1986,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3100,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.17,1,1.17,0,0,0,0,0,1,1853.77371813364,681.645640652603,0,0,2535.41935878624,0.28,0.053,0,0,0,0.007,4413.74694793723,1622.96581107763,1.8,0.24,Custom -0,field_1,1,2025,1987,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,2800,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.332,1,1.332,0,0,0,0,0,1,1702.3232698866,622.079798404032,0,0,2324.40306829063,0.28,0.053,0,0,0,0.007,4053.15064258715,1481.14237715246,1.8,0.24,Custom -0,field_1,1,2025,1988,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,2600,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.282,1,1.282,0,0,0,0,0,1,1598.33109680694,581.676464368788,0,0,2180.00756117572,0.28,0.053,0,0,0,0.007,3805.5502304927,1384.94396278283,1.8,0.24,Custom -0,field_1,1,2025,1989,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3100,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.284,1,1.284,0,0,0,0,0,1,1853.77371813364,681.645640652603,0,0,2535.41935878624,0.28,0.053,0,0,0,0.007,4413.74694793723,1622.96581107763,1.8,0.24,Custom -0,field_1,1,2025,1990,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3100,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.344,1,1.344,0,0,0,0,0,1,1853.77371813364,681.645640652603,0,0,2535.41935878624,0.28,0.053,0,0,0,0.007,4413.74694793723,1622.96581107763,1.8,0.24,Custom -0,field_1,1,2025,1991,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,2900,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.356,1,1.356,0,0,0,0,0,1,1753.40552658784,642.072198388616,0,0,2395.47772497646,0.28,0.053,0,0,0,0.007,4174.77506330439,1528.7433294967,1.8,0.24,Custom -0,field_1,1,2025,1992,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3300,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.149,1,1.149,0,0,0,0,0,1,1951.78760144494,720.679946330891,0,0,2672.46754777583,0.28,0.053,0,0,0,0.007,4647.11333677366,1715.90463412117,1.8,0.24,Custom -0,field_1,1,2025,1993,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3000,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.319,1,1.319,0,0,0,0,0,1,1803.88694890511,661.92700729927,0,0,2465.81395620438,0.28,0.053,0,0,0,0.007,4294.96892596455,1576.01668404588,1.8,0.24,Custom -0,field_1,1,2025,1994,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,2500,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.467,1,1.467,0,0,0,0,0,1,1545.40838196286,561.262599469496,0,0,2106.67098143236,0.28,0.053,0,0,0,0.007,3679.54376657825,1336.33952254642,1.8,0.24,Custom -0,field_1,1,2025,1995,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,2800,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.413,1,1.413,0,0,0,0,0,1,1702.3232698866,622.079798404032,0,0,2324.40306829063,0.28,0.053,0,0,0,0.007,4053.15064258715,1481.14237715246,1.8,0.24,Custom -0,field_1,1,2025,1996,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,2800,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.366,1,1.366,0,0,0,0,0,1,1702.3232698866,622.079798404032,0,0,2324.40306829063,0.28,0.053,0,0,0,0.007,4053.15064258715,1481.14237715246,1.8,0.24,Custom -0,field_1,1,2025,1997,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3100,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.307,1,1.307,0,0,0,0,0,1,1853.77371813364,681.645640652603,0,0,2535.41935878624,0.28,0.053,0,0,0,0.007,4413.74694793723,1622.96581107763,1.8,0.24,Custom -0,field_1,1,2025,1998,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,2900,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.569,1,1.569,0,0,0,0,0,1,1753.40552658784,642.072198388616,0,0,2395.47772497646,0.28,0.053,0,0,0,0.007,4174.77506330439,1528.7433294967,1.8,0.24,Custom -0,field_1,1,2025,1999,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3000,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.5,1,1.5,0,0,0,0,0,1,1803.88694890511,661.92700729927,0,0,2465.81395620438,0.28,0.053,0,0,0,0.007,4294.96892596455,1576.01668404588,1.8,0.24,Custom -0,field_1,1,2025,2000,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3300,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.26,1,1.26,0,0,0,0,0,1,1951.78760144494,720.679946330891,0,0,2672.46754777583,0.28,0.053,0,0,0,0.007,4647.11333677366,1715.90463412117,1.8,0.24,Custom -0,field_1,1,2025,2001,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3200,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.413,1,1.413,0,0,0,0,0,1,1903.07193106877,701.229494614747,0,0,2604.30142568351,0.28,0.053,0,0,0,0.007,4531.12364540182,1669.59403479702,1.8,0.24,Custom -0,field_1,1,2025,2002,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3300,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.367,1,1.367,0,0,0,0,0,1,1951.78760144494,720.679946330891,0,0,2672.46754777583,0.28,0.053,0,0,0,0.007,4647.11333677366,1715.90463412117,1.8,0.24,Custom -0,field_1,1,2025,2003,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3100,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.378,1,1.378,0,0,0,0,0,1,1853.77371813364,681.645640652603,0,0,2535.41935878624,0.28,0.053,0,0,0,0.007,4413.74694793723,1622.96581107763,1.8,0.24,Custom -0,field_1,1,2025,2004,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3300,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.356,1,1.356,0,0,0,0,0,1,1951.78760144494,720.679946330891,0,0,2672.46754777583,0.28,0.053,0,0,0,0.007,4647.11333677366,1715.90463412117,1.8,0.24,Custom -0,field_1,1,2025,2005,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,2900,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.495,1,1.495,0,0,0,0,0,1,1753.40552658784,642.072198388616,0,0,2395.47772497646,0.28,0.053,0,0,0,0.007,4174.77506330439,1528.7433294967,1.8,0.24,Custom -0,field_1,1,2025,2006,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,2900,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.442,1,1.442,0,0,0,0,0,1,1753.40552658784,642.072198388616,0,0,2395.47772497646,0.28,0.053,0,0,0,0.007,4174.77506330439,1528.7433294967,1.8,0.24,Custom -0,field_1,1,2025,2007,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,2800,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.405,1,1.405,0,0,0,0,0,1,1702.3232698866,622.079798404032,0,0,2324.40306829063,0.28,0.053,0,0,0,0.007,4053.15064258715,1481.14237715246,1.8,0.24,Custom -0,field_1,1,2025,2008,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,2200,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.374,1,1.374,0,0,0,0,0,1,1382.85503135321,499.154192579884,0,0,1882.00922393309,0.28,0.053,0,0,0,0.007,3292.5119794124,1188.46236328544,1.8,0.24,Custom -0,field_1,1,2025,2009,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,2500,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.293,1,1.293,0,0,0,0,0,1,1545.40838196286,561.262599469496,0,0,2106.67098143236,0.28,0.053,0,0,0,0.007,3679.54376657825,1336.33952254642,1.8,0.24,Custom -0,field_1,1,2025,2010,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,2900,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.518,1,1.518,0,0,0,0,0,1,1753.40552658784,642.072198388616,0,0,2395.47772497646,0.28,0.053,0,0,0,0.007,4174.77506330439,1528.7433294967,1.8,0.24,Custom -0,field_1,1,2025,2011,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,2800,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.519,1,1.519,0,0,0,0,0,1,1702.3232698866,622.079798404032,0,0,2324.40306829063,0.28,0.053,0,0,0,0.007,4053.15064258715,1481.14237715246,1.8,0.24,Custom -0,field_1,1,2025,2012,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3100,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.448,1,1.448,0,0,0,0,0,1,1853.77371813364,681.645640652603,0,0,2535.41935878624,0.28,0.053,0,0,0,0.007,4413.74694793723,1622.96581107763,1.8,0.24,Custom -0,field_1,1,2025,2013,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3300,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.433,1,1.433,0,0,0,0,0,1,1951.78760144494,720.679946330891,0,0,2672.46754777583,0.28,0.053,0,0,0,0.007,4647.11333677366,1715.90463412117,1.8,0.24,Custom -0,field_1,1,2025,2014,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3400,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.381,1,1.381,0,0,0,0,0,1,1999.9266613454,739.998354248097,0,0,2739.9250155935,0.28,0.053,0,0,0,0.007,4761.73014606048,1761.90084344785,1.8,0.24,Custom -0,field_1,1,2025,2015,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3500,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.497,1,1.497,0,0,0,0,0,1,2047.49496258329,759.186058431574,0,0,2806.68102101486,0.28,0.053,0,0,0,0.007,4874.98800615069,1807.58585340851,1.8,0.24,Custom -0,field_1,1,2025,2016,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3400,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.463,1,1.463,0,0,0,0,0,1,1999.9266613454,739.998354248097,0,0,2739.9250155935,0.28,0.053,0,0,0,0.007,4761.73014606048,1761.90084344785,1.8,0.24,Custom -0,field_1,1,2025,2017,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3020,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.449,1,1.449,0,0,0,0,0,1,1813.91167869287,665.881583060667,0,0,2479.79326175354,0.28,0.053,0,0,0,0.007,4318.83733022112,1585.43234062064,1.8,0.24,Custom -0,field_1,1,2025,2018,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3210,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.442,1,1.442,0,0,0,0,0,1,1907.96961400681,703.18052032756,0,0,2611.15013433437,0.28,0.053,0,0,0,0.007,4542.78479525432,1674.23933411324,1.8,0.24,Custom -0,field_1,1,2025,2019,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3030,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.372,1,1.372,0,0,0,0,0,1,1818.9151392227,667.856831841998,0,0,2486.7719710647,0.28,0.053,0,0,0,0.007,4330.75033148262,1590.13531390952,1.8,0.24,Custom -0,field_1,1,2025,2020,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3030,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.364,1,1.364,0,0,0,0,0,1,1818.9151392227,667.856831841998,0,0,2486.7719710647,0.28,0.053,0,0,0,0.007,4330.75033148262,1590.13531390952,1.8,0.24,Custom -0,field_1,1,2025,2021,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3030,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.478,1,1.478,0,0,0,0,0,1,1818.9151392227,667.856831841998,0,0,2486.7719710647,0.28,0.053,0,0,0,0.007,4330.75033148262,1590.13531390952,1.8,0.24,Custom -0,field_1,1,2025,2022,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3030,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.574,1,1.574,0,0,0,0,0,1,1818.9151392227,667.856831841998,0,0,2486.7719710647,0.28,0.053,0,0,0,0.007,4330.75033148262,1590.13531390952,1.8,0.24,Custom -0,field_1,1,2025,2023,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3030,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.584,1,1.584,0,0,0,0,0,1,1818.9151392227,667.856831841998,0,0,2486.7719710647,0.28,0.053,0,0,0,0.007,4330.75033148262,1590.13531390952,1.8,0.24,Custom -0,field_1,1,2025,2024,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3030,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,No,0,False,0,NotSelected,NotSelected,NotSelected,NotSelected,False,False,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.741,1,1.741,0,0,0,0,0,1,1818.9151392227,667.856831841998,0,0,2486.7719710647,0.28,0.053,0,0,0,0.007,4330.75033148262,1590.13531390952,1.8,0.24,Custom \ No newline at end of file +Phase Number,Name,Area,Current Year,Crop Year,Crop Type,Tillage Type,Year In Perennial Stand,Perennial Stand ID,Perennial Stand Length,Biomass Coefficient Product,Biomass Coefficient Straw,Biomass Coefficient Roots,Biomass Coefficient Extraroot,Nitrogen Content In Product,Nitrogen Content In Straw,Nitrogen Content In Roots,Nitrogen Content In Extraroot,Nitrogen Fixation,Nitrogen Deposit,Carbon Concentration,Yield,Harvest Method,Nitrogen Fertilizer Rate,Phosphorous Fertilizer Rate,Is Irrigated,Irrigation Type,Amount Of Irrigation,Moisture Content Of Crop,Moisture Content Of Crop Percentage,PercentageOfStrawReturnedToSoil,PercentageOfRootsReturnedToSoil,PercentageOfProductYieldReturnedToSoil,PercentageOfExtrarootsReturnedToSoil,Is Pesticide Used,Number Of Pesticide Passes,Manure Applied,Amount Of Manure Applied,Manure Application Type,Manure Animal Source Type,Manure State Type,Manure Location Source Type,Under Sown Crops Used,Crop Is Grazed,Field System Component Guid,Time Period Category String,Climate Parameter,Tillage Factor,Management Factor,Plant Carbon In Agricultural Product,Carbon Input From Product,Carbon Input From Straw,Carbon Input From Roots,Carbon Input From Extraroots,Size Of First Rotation For Field,Above Ground Carbon Input,Below Ground Carbon Input,Manure Carbon Inputs Per Hectare,Digestate Carbon Inputs Per Hectare,Total Carbon Inputs,Sand,Lignin,WFac,TFac,Total Nitrogen Inputs For Ipcc Tier 2,Nitrogen Content,Above Ground Residue Dry Matter,Below Ground Residue Dry Matter,Fuel Energy,Herbicide Energy,Fertilizer Blend,Fertilizer Application Method +0,field_1,1,2025,1985,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3490,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.208,1,1.208,0,0,0,0,0,1,2042.763651,757.2731319,0,0,2800.036783,0.28,0.053,0,0,0,0.007,4863.72298,1803.031266,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,1986,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3100,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.17,1,1.17,0,0,0,0,0,1,1853.773718,681.6456407,0,0,2535.419359,0.28,0.053,0,0,0,0.007,4413.746948,1622.965811,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,1987,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,2800,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.332,1,1.332,0,0,0,0,0,1,1702.32327,622.0797984,0,0,2324.403068,0.28,0.053,0,0,0,0.007,4053.150643,1481.142377,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,1988,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,2600,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.282,1,1.282,0,0,0,0,0,1,1598.331097,581.6764644,0,0,2180.007561,0.28,0.053,0,0,0,0.007,3805.55023,1384.943963,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,1989,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3100,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.284,1,1.284,0,0,0,0,0,1,1853.773718,681.6456407,0,0,2535.419359,0.28,0.053,0,0,0,0.007,4413.746948,1622.965811,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,1990,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3100,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.344,1,1.344,0,0,0,0,0,1,1853.773718,681.6456407,0,0,2535.419359,0.28,0.053,0,0,0,0.007,4413.746948,1622.965811,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,1991,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,2900,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.356,1,1.356,0,0,0,0,0,1,1753.405527,642.0721984,0,0,2395.477725,0.28,0.053,0,0,0,0.007,4174.775063,1528.743329,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,1992,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3300,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.149,1,1.149,0,0,0,0,0,1,1951.787601,720.6799463,0,0,2672.467548,0.28,0.053,0,0,0,0.007,4647.113337,1715.904634,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,1993,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3000,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.319,1,1.319,0,0,0,0,0,1,1803.886949,661.9270073,0,0,2465.813956,0.28,0.053,0,0,0,0.007,4294.968926,1576.016684,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,1994,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,2500,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.467,1,1.467,0,0,0,0,0,1,1545.408382,561.2625995,0,0,2106.670981,0.28,0.053,0,0,0,0.007,3679.543767,1336.339523,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,1995,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,2800,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.413,1,1.413,0,0,0,0,0,1,1702.32327,622.0797984,0,0,2324.403068,0.28,0.053,0,0,0,0.007,4053.150643,1481.142377,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,1996,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,2800,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.366,1,1.366,0,0,0,0,0,1,1702.32327,622.0797984,0,0,2324.403068,0.28,0.053,0,0,0,0.007,4053.150643,1481.142377,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,1997,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3100,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.307,1,1.307,0,0,0,0,0,1,1853.773718,681.6456407,0,0,2535.419359,0.28,0.053,0,0,0,0.007,4413.746948,1622.965811,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,1998,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,2900,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.569,1,1.569,0,0,0,0,0,1,1753.405527,642.0721984,0,0,2395.477725,0.28,0.053,0,0,0,0.007,4174.775063,1528.743329,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,1999,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3000,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.5,1,1.5,0,0,0,0,0,1,1803.886949,661.9270073,0,0,2465.813956,0.28,0.053,0,0,0,0.007,4294.968926,1576.016684,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,2000,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3300,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.26,1,1.26,0,0,0,0,0,1,1951.787601,720.6799463,0,0,2672.467548,0.28,0.053,0,0,0,0.007,4647.113337,1715.904634,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,2001,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3200,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.413,1,1.413,0,0,0,0,0,1,1903.071931,701.2294946,0,0,2604.301426,0.28,0.053,0,0,0,0.007,4531.123645,1669.594035,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,2002,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3300,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.367,1,1.367,0,0,0,0,0,1,1951.787601,720.6799463,0,0,2672.467548,0.28,0.053,0,0,0,0.007,4647.113337,1715.904634,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,2003,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3100,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.378,1,1.378,0,0,0,0,0,1,1853.773718,681.6456407,0,0,2535.419359,0.28,0.053,0,0,0,0.007,4413.746948,1622.965811,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,2004,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3300,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.356,1,1.356,0,0,0,0,0,1,1951.787601,720.6799463,0,0,2672.467548,0.28,0.053,0,0,0,0.007,4647.113337,1715.904634,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,2005,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,2900,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.495,1,1.495,0,0,0,0,0,1,1753.405527,642.0721984,0,0,2395.477725,0.28,0.053,0,0,0,0.007,4174.775063,1528.743329,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,2006,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,2900,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.442,1,1.442,0,0,0,0,0,1,1753.405527,642.0721984,0,0,2395.477725,0.28,0.053,0,0,0,0.007,4174.775063,1528.743329,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,2007,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,2800,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.405,1,1.405,0,0,0,0,0,1,1702.32327,622.0797984,0,0,2324.403068,0.28,0.053,0,0,0,0.007,4053.150643,1481.142377,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,2008,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,2200,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.374,1,1.374,0,0,0,0,0,1,1382.855031,499.1541926,0,0,1882.009224,0.28,0.053,0,0,0,0.007,3292.511979,1188.462363,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,2009,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,2500,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.293,1,1.293,0,0,0,0,0,1,1545.408382,561.2625995,0,0,2106.670981,0.28,0.053,0,0,0,0.007,3679.543767,1336.339523,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,2010,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,2900,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.518,1,1.518,0,0,0,0,0,1,1753.405527,642.0721984,0,0,2395.477725,0.28,0.053,0,0,0,0.007,4174.775063,1528.743329,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,2011,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,2800,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.519,1,1.519,0,0,0,0,0,1,1702.32327,622.0797984,0,0,2324.403068,0.28,0.053,0,0,0,0.007,4053.150643,1481.142377,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,2012,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3100,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.448,1,1.448,0,0,0,0,0,1,1853.773718,681.6456407,0,0,2535.419359,0.28,0.053,0,0,0,0.007,4413.746948,1622.965811,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,2013,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3300,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.433,1,1.433,0,0,0,0,0,1,1951.787601,720.6799463,0,0,2672.467548,0.28,0.053,0,0,0,0.007,4647.113337,1715.904634,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,2014,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3400,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.381,1,1.381,0,0,0,0,0,1,1999.926661,739.9983542,0,0,2739.925016,0.28,0.053,0,0,0,0.007,4761.730146,1761.900843,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,2015,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3500,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.497,1,1.497,0,0,0,0,0,1,2047.494963,759.1860584,0,0,2806.681021,0.28,0.053,0,0,0,0.007,4874.988006,1807.585853,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,2016,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3400,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.463,1,1.463,0,0,0,0,0,1,1999.926661,739.9983542,0,0,2739.925016,0.28,0.053,0,0,0,0.007,4761.730146,1761.900843,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,2017,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3020,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.449,1,1.449,0,0,0,0,0,1,1813.911679,665.8815831,0,0,2479.793262,0.28,0.053,0,0,0,0.007,4318.83733,1585.432341,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,2018,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3210,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.442,1,1.442,0,0,0,0,0,1,1907.969614,703.1805203,0,0,2611.150134,0.28,0.053,0,0,0,0.007,4542.784795,1674.239334,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,2019,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3030,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.372,1,1.372,0,0,0,0,0,1,1818.915139,667.8568318,0,0,2486.771971,0.28,0.053,0,0,0,0.007,4330.750331,1590.135314,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,2020,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3030,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.364,1,1.364,0,0,0,0,0,1,1818.915139,667.8568318,0,0,2486.771971,0.28,0.053,0,0,0,0.007,4330.750331,1590.135314,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,2021,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3030,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.478,1,1.478,0,0,0,0,0,1,1818.915139,667.8568318,0,0,2486.771971,0.28,0.053,0,0,0,0.007,4330.750331,1590.135314,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,2022,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3030,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.574,1,1.574,0,0,0,0,0,1,1818.915139,667.8568318,0,0,2486.771971,0.28,0.053,0,0,0,0.007,4330.750331,1590.135314,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,2023,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3030,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.584,1,1.584,0,0,0,0,0,1,1818.915139,667.8568318,0,0,2486.771971,0.28,0.053,0,0,0,0.007,4330.750331,1590.135314,1.8,0.24,Custom,IncorporatedOrPartiallyInjected +0,field_1,1,2025,2024,Wheat,Reduced,0,00000000-0000-0000-0000-000000000000,1,0.431,0.488,0.049,0.032,0.0562,0.0065,0.0119,0.0119,0,5,0.45,3030,CashCrop,0,0,No,RainFed,0,0.12,12,100,100,2,100,No,0,FALSE,0,NotSelected,NotSelected,NotSelected,NotSelected,FALSE,FALSE,21d4222f-fc6c-439f-b606-a896abc1c38f,Current,1.741,1,1.741,0,0,0,0,0,1,1818.915139,667.8568318,0,0,2486.771971,0.28,0.053,0,0,0,0.007,4330.750331,1590.135314,1.8,0.24,Custom,IncorporatedOrPartiallyInjected diff --git a/tests/sources/holos/non_regression_dairy.csv b/tests/sources/holos/non_regression_dairy.csv index ba1ed21..ca3e846 100644 --- a/tests/sources/holos/non_regression_dairy.csv +++ b/tests/sources/holos/non_regression_dairy.csv @@ -2,8 +2,8 @@ # The "Methane Conversion Factor Of Diet" value was set to 0.063 (which is calculated based on total digestible nutrient) instead of 0.056 (which is a hard-coded value for LabelLegumeForageBasedDiet in Holos). # The "User Defined Bedding Rate" value was set to 24.3 (which is calculated based on housing type) instead of 0 (which is a non-initialized value). # -Name,Component Type,Group Name,Group Type,Management Period Name,Management Period Start Date,Management Period Days,Number Of Animals,Production Stage,Number Of Young Animals,Group Pairing Number,Start Weight,End Weight,Average Daily Gain,Milk Production,Milk Fat Content,Milk Protein Content As Percentage,Diet Additive Type,Methane Conversion Factor Of Diet,Methane Conversion Factor Adjusted,Feed Intake,Crude Protein,Ash Content Of Diet,Forage,TDN,Starch,Fat,ME,NDF,Volatile Solid Adjusted,Nitrogen Excretion Adjusted,Dietary Net Energy Concentration,Gain Coefficient,Gain Coefficient A,Gain Coefficient B,Housing Type,Activity Coefficient Of Feeding Situation,Maintenance Coefficient,User Defined Bedding Rate,Total Carbon Kilograms Dry Matter For Bedding,Total Nitrogen Kilograms Dry Matter For Bedding,Moisture Content Of Bedding Material,Indoor Barn Temperature(°C),Methane Conversion Factor Of Manure,N2O Direct Emission Factor,Emission Factor Volatilization,Volatilization Fraction,Emission Factor Leaching,Fraction Leaching,Ash Content,Methane Producing Capacity Of Manure -Dairy cattle,H.Core.Models.Animals.Dairy.DairyComponent,Dairy heifers,DairyHeifers,Management period 1,2025-01-01,30,20,Gestating,0,0,637,687,1.6667,0,4,3.5,None,0.063,0,0,16.146,6.323,77.8,69.516,0,0,2.4459,35.289,1, 1,10.391,0.8,0,0,FreeStallBarnSolidLitter,0,0.322,24.3,0,0,0,25,0.001,0,0.005,0.07,0.011,0,8,0.24 -Dairy cattle,H.Core.Models.Animals.Dairy.DairyComponent,Dairy lactating,DairyLactatingCow,Early lactation,2024-01-01,150,20,Gestating,0,1,687,687,0,34.1,3.71,3.5,None,0.063,0,0,16.146,6.323,77.8,69.516,0,0,2.4459,35.289,1, 1,10.391,0.8,0,0,FreeStallBarnSolidLitter,0,0.386,24.3,0,0,0,25,0.0047,0.0004,0.005,0.13,0.011,0.1942,8,0.24 -Dairy cattle,H.Core.Models.Animals.Dairy.DairyComponent,Dairy calves,DairyCalves,Milk-fed dairy calves. A period of no enteric methane emissions,2024-01-01,30,20,Weaning,0,1,45,127,2.7333,0,4,3.5,None,0.063,0,0,16.146,6.323,77.8,69.516,0,0,2.4459,35.289,1, 1,10.391,0,0,0,FreeStallBarnSolidLitter,0,0,0,0,0,0,25,0.02,0.01,0.005,0.3,0.011,0.02,8,0.24 -Dairy cattle,H.Core.Models.Animals.Dairy.DairyComponent,Dairy dry,DairyDryCow,Dry period,2024-11-05,60,20,Gestating,0,0,687,687,0,0,4,3.5,None,0.063,0,0,16.146,6.323,77.8,69.516,0,0,2.4459,35.289,1,1,10.391,0.8,0,0,FreeStallBarnSolidLitter,0,0.322,24.3,0,0,0,25,0.02,0.01,0.005,0.3,0.011,0.02,8,0.24 \ No newline at end of file +Name,Component Type,Group Name,Group Type,Management Period Name,Management Period Start Date,Management Period Days,Number Of Animals,Production Stage,Number Of Young Animals,Group Pairing Number,Start Weight,End Weight,Average Daily Gain,Milk Production,Milk Fat Content,Milk Protein Content As Percentage,Diet Additive Type,Methane Conversion Factor Of Diet,Methane Conversion Factor Adjusted,Feed Intake,Crude Protein,Ash Content Of Diet,Forage,TDN,Starch,Fat,ME,NDF,Volatile Solid Adjusted,Nitrogen Excretion Adjusted,Dietary Net Energy Concentration,Gain Coefficient,Gain Coefficient A,Gain Coefficient B,Housing Type,Activity Coefficient Of Feeding Situation,Maintenance Coefficient,User Defined Bedding Rate,Total Carbon Kilograms Dry Matter For Bedding,Total Nitrogen Kilograms Dry Matter For Bedding,Moisture Content Of Bedding Material,Indoor Barn Temperature,Methane Conversion Factor Of Manure,N2O Direct Emission Factor,Emission Factor Volatilization,Volatilization Fraction,Emission Factor Leaching,Fraction Leaching,Ash Content,Methane Producing Capacity Of Manure,Fraction Of Organic Nitrogen Immobilized,Fraction Of Organic Nitrogen Nitrified,Fraction Of Organic Nitrogen Mineralized,Manure State Type,Ammonia Emission Factor For Manure Storage,Use Custom Indoor Housing Temperature +Dairy cattle,H.Core.Models.Animals.Dairy.DairyComponent,Dairy heifers,DairyHeifers,Management period 1,2025-01-01,30,20,Gestating,0,0,637,687,1.6667,0,4,3.5,None,0.063,0,0,16.146,6.323,77.8,69.516,0,0,2.4459,35.289,1, 1,10.391,0.8,0,0,FreeStallBarnSolidLitter,0,0.322,24.3,0,0,0,25,0.001,0,0.005,0.07,0.011,0,8,0.24,0,0,0,DailySpread,0,False +Dairy cattle,H.Core.Models.Animals.Dairy.DairyComponent,Dairy lactating,DairyLactatingCow,Early lactation,2024-01-01,150,20,Gestating,0,1,687,687,0,34.1,3.71,3.5,None,0.063,0,0,16.146,6.323,77.8,69.516,0,0,2.4459,35.289,1, 1,10.391,0.8,0,0,FreeStallBarnSolidLitter,0,0.386,24.3,0,0,0,25,0.0047,0.0004,0.005,0.13,0.011,0.1942,8,0.240,0,0,0,Pasture,0,False +Dairy cattle,H.Core.Models.Animals.Dairy.DairyComponent,Dairy calves,DairyCalves,Milk-fed dairy calves. A period of no enteric methane emissions,2024-01-01,30,20,Weaning,0,1,45,127,2.7333,0,4,3.5,None,0.063,0,0,16.146,6.323,77.8,69.516,0,0,2.4459,35.289,1, 1,10.391,0,0,0,FreeStallBarnSolidLitter,0,0,0,0,0,0,25,0.02,0.01,0.005,0.3,0.011,0.02,8,0.24,0,0.141,0.28,SolidStorage,0.35,False +Dairy cattle,H.Core.Models.Animals.Dairy.DairyComponent,Dairy dry,DairyDryCow,Dry period,2024-11-05,60,20,Gestating,0,0,687,687,0,0,4,3.5,None,0.063,0,0,16.146,6.323,77.8,69.516,0,0,2.4459,35.289,1,1,10.391,0.8,0,0,FreeStallBarnSolidLitter,0,0.322,24.3,0,0,0,25,0.02,0.01,0.005,0.3,0.011,0.02,8,0.24,0,0.141,0.28,SolidStorage,0.35,False \ No newline at end of file diff --git a/tests/sources/holos/non_regression_farm_settings.txt b/tests/sources/holos/non_regression_farm_settings.txt new file mode 100644 index 0000000..ff9d4e2 --- /dev/null +++ b/tests/sources/holos/non_regression_farm_settings.txt @@ -0,0 +1,127 @@ +# General +Yield Assignment Method = SmallAreaData +Path To Custom Yield Input File = +Polygon Number = 851003 +Latitude = 50 +Longitude = -98 +Use Custom Starting Soil Organic Carbon Value = False +Starting SOC Value = 0.0 +Residue Input Calculation Method = Default +Soil Data Acquisition Method = Default +Carbon Concentration (kg kg^-1) = 0.45 +Emergence Day = 141 +Ripening Day = 197 +Variance = 300 +Alfa = 0.7 +Decomposition Minimum Temperature (°C) = -3.78 +Decomposition Maximum Temperature (°C) = 30 +Moisture Response Function At Saturation = 0.42 +Moisture Response Function At Wilting Point = 0.18 + +# Annual Crops +Percentage Of Product Returned To Soil For Annuals = 2 +Percentage Of Straw Returned To Soil For Annuals = 100 +Percentage Of Roots Returned To Soil For Annuals = 100 + +# Silage Crops +Percentage Of Product Yield Returned To Soil For Silage Crops = 35 +Percentage Of Roots Returned To Soil For Silage Crops = 100 + +# Cover Crops +Percentage Of Product Yield Returned To Soil For Cover Crops = 100 +Percentage Of Product Yield Returned To Soil For Cover Crops Forage = 35 +Percentage Of Product Yield Returned To Soil For Cover Crops Produce = 0 +Percentage Of Straw Returned To Soil For Cover Crops = 100 +Percentage Of Roots Returned To Soil For Cover Crops = 100 + +# Root Crops +Percentage Of Product Returned To Soil For Root Crops = 0 +Percentage Of Straw Returned To Soil For Root Crops = 100 + +# Perennial Crops +Percentage Of Product Returned To Soil For Perennials = 35 +Percentage Of Roots Returned To Soil For Perennials = 100 + +# Rangeland +Percentage Of Product Returned To Soil For Rangeland Due To Harvest Loss = 35 +Percentage Of Roots Returned To Soil For Rangeland = 100 + +# Fodder Corn +Percentage Of Product Returned To Soil For Fodder Corn = 35 +Percentage Of Roots Returned To Soil For Fodder Corn = 100 +Decomposition Rate Constant Young Pool = 0.8 +Decomposition Rate Constant Old Pool = 0.00605 +Old Pool Carbon N = 0.1 +NO Ratio = 0.1 +Emission Factor For Leaching And Runoff (kg N2O-N (kg N)^-1) = 0.011 +Emission Factor For Volatilization (kg N2O-N (kg N)^-1) = 0.01 +Fraction Of N Lost By Volatilization = 0.21 +Microbe Death = 0.2 +Denitrification = 0.5 +Carbon modelling strategy = ICBM +Run In Period Years = 15 + +# ICBM/Climate +Humification Coefficient Above Ground = 0.125 +Humification Coefficient Below Ground = 0.3 +Humification Coefficient Manure = 0.31 +Climate filename = climate.csv +Climate Data Acquisition = NASA +Use climate parameter instead of management factor = True +Enable Carbon Modelling = True + +# Precipitation Data (mm) +January Precipitation = 0 +February Precipitation = 1 +March Precipitation = 2 +April Precipitation = 3 +May Precipitation = 4 +June Precipitation = 5 +July Precipitation = 6 +August Precipitation = 7 +September Precipitation = 8 +October Precipitation = 9 +November Precipitation = 10 +December Precipitation = 11 + +# Evapotranspiration Data (mm year^-1) +January Potential Evapotranspiration = 10 +February Potential Evapotranspiration = 11 +March Potential Evapotranspiration = 12 +April Potential Evapotranspiration = 13 +May Potential Evapotranspiration = 14 +June Potential Evapotranspiration = 15 +July Potential Evapotranspiration = 16 +August Potential Evapotranspiration = 17 +September Potential Evapotranspiration = 18 +October Potential Evapotranspiration = 19 +November Potential Evapotranspiration = 20 +December Potential Evapotranspiration = 21 + +# Temperature Data (°C) +January Mean Temperature = -5 +February Mean Temperature = -4 +March Mean Temperature = -3 +April Mean Temperature = -2 +May Mean Temperature = -1 +June Mean Temperature = 0 +July Mean Temperature = 1 +August Mean Temperature = 2 +September Mean Temperature = 3 +October Mean Temperature = 4 +November Mean Temperature = 5 +December Mean Temperature = 6 + +# Soil Data +Province = Manitoba +Year Of Observation = 1 +Ecodistrict ID = 851 +Soil Great Group = Regosol +Soil functional category = Black +Bulk Density = 1.2 +Soil Texture = Fine +Soil Ph = 7.8 +Top Layer Thickness (mm) = 200 +Proportion Of Sand In Soil = 0.2 +Proportion Of Clay In Soil = 0.3 +Proportion Of Soil Organic Carbon = 3.1 \ No newline at end of file diff --git a/tests/sources/holos/non_regression_sheep_feedlot.csv b/tests/sources/holos/non_regression_sheep_feedlot.csv index d6fceb3..43087c6 100644 --- a/tests/sources/holos/non_regression_sheep_feedlot.csv +++ b/tests/sources/holos/non_regression_sheep_feedlot.csv @@ -1,2 +1,2 @@ -Name,Component Type,Group Name,Group Type,Management Period Name,Group Pairing Number,Management Period Start Date,Management Period Days,Number Of Animals,Production Stage,Number Of Young Animals,Start Weight,End Weight,Average Daily Gain,Energy Required To Produce Wool,Wool Production,Energy Required To Produce Milk,Diet Additive Type,Methane Conversion Factor Of Diet,Methane Conversion Factor Adjusted,Feed Intake,Crude Protein,Forage,TDN,Ash Content Of Diet,Starch,Fat,ME,NDF,Gain Coefficient A,Gain Coefficient B,Activity Coefficient Of Feeding Situation,Maintenance Coefficient,User Defined Bedding Rate,Total Carbon Kilograms Dry Matter For Bedding,Total Nitrogen Kilograms Dry Matter For Bedding,Moisture Content Of Bedding Material,Methane Conversion Factor Of Manure,N2O Direct Emission Factor,Emission Factor Volatilization,Volatilization Fraction,Emission Factor Leaching,Fraction Leaching,Ash Content,Methane Producing Capacity Of Manure,Manure Excretion Rate,Fraction Of Carbon In Manure -Sheep feedlot,H.Core.Models.Animals.Sheep.SheepFeedlotComponent,Sheep feedlot,SheepFeedlot,Management period 1,0,2025-01-01,30,100,Gestating,0,125.0000,125.0000,0.0000,24.0000,4.0000,4.6000,None,0.0670,0.0000,0.0000,17.7000,0.0000,60.0000,8.0000,0.0000,0.0000,0.0000,0.0000,2.5000,0.3500,0.0067,0.2500,0.5700,0.4470,0.0057,9.5700,0.0047,0.0004,0.0050,0.2100,0.0110,0.1942,8.0000,0.1900,1.8000,6.1820 +Name,Component Type,Group Name,Group Type,Management Period Name,Group Pairing Number,Management Period Start Date,Management Period Days,Number Of Animals,Production Stage,Number Of Young Animals,Start Weight,End Weight,Average Daily Gain,Energy Required To Produce Wool,Wool Production,Energy Required To Produce Milk,Diet Additive Type,Methane Conversion Factor Of Diet,Methane Conversion Factor Adjusted,Feed Intake,Crude Protein,Forage,TDN,Ash Content Of Diet,Starch,Fat,ME,NDF,Gain Coefficient A,Gain Coefficient B,Housing Type,Activity Coefficient Of Feeding Situation,Maintenance Coefficient,User Defined Bedding Rate,Total Carbon Kilograms Dry Matter For Bedding,Total Nitrogen Kilograms Dry Matter For Bedding,Moisture Content Of Bedding Material,Pasture Location,Manure State Type,Methane Conversion Factor Of Manure,N2O Direct Emission Factor,Emission Factor Volatilization,Volatilization Fraction,Emission Factor Leaching,Fraction Leaching,Ash Content,Methane Producing Capacity Of Manure,Manure Excretion Rate,Fraction Of Carbon In Manure +Sheep feedlot,H.Core.Models.Animals.Sheep.SheepFeedlotComponent,Sheep feedlot,SheepFeedlot,Management period 1,0,2025-01-01,30,100,Gestating,0,125.0000,125.0000,0.0000,24.0000,4.0000,4.6000,None,0.0670,0.0000,0.0000,17.7000,0.0000,60.0000,8.0000,0.0000,0.0000,0.0000,0.0000,2.5000,0.3500,Confined,0.0067,0.2500,0.5700,0.4470,0.0057,9.5700,N/A,Pasture,0.0047,0.0004,0.0050,0.2100,0.0110,0.1942,8.0000,0.1900,1.8000,6.1820 diff --git a/tests/sources/holos/non_regression_sheep_lambs_and_ewes.csv b/tests/sources/holos/non_regression_sheep_lambs_and_ewes.csv index 931214f..8b94ee9 100644 --- a/tests/sources/holos/non_regression_sheep_lambs_and_ewes.csv +++ b/tests/sources/holos/non_regression_sheep_lambs_and_ewes.csv @@ -1,3 +1,3 @@ -Name,Component Type,Group Name,Group Type,Management Period Name,Group Pairing Number,Management Period Start Date,Management Period Days,Number Of Animals,Production Stage,Number Of Young Animals,Start Weight,End Weight,Average Daily Gain,Energy Required To Produce Wool,Wool Production,Energy Required To Produce Milk,Diet Additive Type,Methane Conversion Factor Of Diet,Methane Conversion Factor Adjusted,Feed Intake,Crude Protein,Forage,TDN,Ash Content Of Diet,Starch,Fat,ME,NDF,Gain Coefficient A,Gain Coefficient B,Activity Coefficient Of Feeding Situation,Maintenance Coefficient,User Defined Bedding Rate,Total Carbon Kilograms Dry Matter For Bedding,Total Nitrogen Kilograms Dry Matter For Bedding,Moisture Content Of Bedding Material,Methane Conversion Factor Of Manure,N2O Direct Emission Factor,Emission Factor Volatilization,Volatilization Fraction,Emission Factor Leaching,Fraction Leaching,Ash Content,Methane Producing Capacity Of Manure,Manure Excretion Rate,Fraction Of Carbon In Manure -Lambs & ewes,H.Core.Models.Animals.Sheep.EwesAndLambsComponent,Ewes,Ewes,Lactation,1,2024-05-28,218,100,Lactating,0,70.0000,70.0000,0.0000,24.0000,4.0000,4.6000,None,0.0670,0.0000,0.0000,17.7000,0.0000,60.0000,8.0000,0.0000,0.0000,0.0000,0.0000,2.1000,0.4500,0.0067,0.2170,0.5700,0.4470,0.0057,9.5700,0.0047,0.0004,0.0050,0.2100,0.0110,0.1942,8.0000,0.1900,1.8000,6.1820 -Lambs & ewes,H.Core.Models.Animals.Sheep.EwesAndLambsComponent,Lambs,Lambs,Management period 1,1,2025-01-01,30,100,Weaning,0,30.0000,50.0000,0.6666,24.0000,0.0000,4.6000,None,0.0670,0.0000,0.0000,17.7000,0.0000,60.0000,8.0000,0.0000,0.0000,0.0000,0.0000,3.2500,0.3850,0.0067,0.2360,0.0000,0.4470,0.0057,9.5700,0.0047,0.0004,0.0050,0.2100,0.0110,0.1942,8.0000,0.1900,1.8000,6.1820 +Name,Component Type,Group Name,Group Type,Management Period Name,Group Pairing Number,Management Period Start Date,Management Period Days,Number Of Animals,Production Stage,Number Of Young Animals,Start Weight,End Weight,Average Daily Gain,Energy Required To Produce Wool,Wool Production,Energy Required To Produce Milk,Diet Additive Type,Methane Conversion Factor Of Diet,Methane Conversion Factor Adjusted,Feed Intake,Crude Protein,Forage,TDN,Ash Content Of Diet,Starch,Fat,ME,NDF,Gain Coefficient A,Gain Coefficient B,Housing Type,Activity Coefficient Of Feeding Situation,Maintenance Coefficient,User Defined Bedding Rate,Total Carbon Kilograms Dry Matter For Bedding,Total Nitrogen Kilograms Dry Matter For Bedding,Moisture Content Of Bedding Material,Pasture Location,Manure State Type,Methane Conversion Factor Of Manure,N2O Direct Emission Factor,Emission Factor Volatilization,Volatilization Fraction,Emission Factor Leaching,Fraction Leaching,Ash Content,Methane Producing Capacity Of Manure,Manure Excretion Rate,Fraction Of Carbon In Manure +Lambs & ewes,H.Core.Models.Animals.Sheep.EwesAndLambsComponent,Ewes,Ewes,Lactation,1,2024-05-28,218,100,Lactating,0,70.0000,70.0000,0.0000,24.0000,4.0000,4.6000,None,0.0670,0.0000,0.0000,17.7000,0.0000,60.0000,8.0000,0.0000,0.0000,0.0000,0.0000,2.1000,0.4500,Confined,0.0067,0.2170,0.5700,0.4470,0.0057,9.5700,N/A,Pasture,0.0047,0.0004,0.0050,0.2100,0.0110,0.1942,8.0000,0.1900,1.8000,6.1820 +Lambs & ewes,H.Core.Models.Animals.Sheep.EwesAndLambsComponent,Lambs,Lambs,Management period 1,1,2025-01-01,30,100,Weaning,0,30.0000,50.0000,0.6666,24.0000,0.0000,4.6000,None,0.0670,0.0000,0.0000,17.7000,0.0000,60.0000,8.0000,0.0000,0.0000,0.0000,0.0000,3.2500,0.3850,Confined,0.0067,0.2360,0.0000,0.4470,0.0057,9.5700,N/A,Pasture,0.0047,0.0004,0.0050,0.2100,0.0110,0.1942,8.0000,0.1900,1.8000,6.1820 diff --git a/tests/sources/holos/non_regression_sheep_rams.csv b/tests/sources/holos/non_regression_sheep_rams.csv index b996a4d..f2a8de3 100644 --- a/tests/sources/holos/non_regression_sheep_rams.csv +++ b/tests/sources/holos/non_regression_sheep_rams.csv @@ -1,2 +1,2 @@ -Name,Component Type,Group Name,Group Type,Management Period Name,Group Pairing Number,Management Period Start Date,Management Period Days,Number Of Animals,Production Stage,Number Of Young Animals,Start Weight,End Weight,Average Daily Gain,Energy Required To Produce Wool,Wool Production,Energy Required To Produce Milk,Diet Additive Type,Methane Conversion Factor Of Diet,Methane Conversion Factor Adjusted,Feed Intake,Crude Protein,Forage,TDN,Ash Content Of Diet,Starch,Fat,ME,NDF,Gain Coefficient A,Gain Coefficient B,Activity Coefficient Of Feeding Situation,Maintenance Coefficient,User Defined Bedding Rate,Total Carbon Kilograms Dry Matter For Bedding,Total Nitrogen Kilograms Dry Matter For Bedding,Moisture Content Of Bedding Material,Methane Conversion Factor Of Manure,N2O Direct Emission Factor,Emission Factor Volatilization,Volatilization Fraction,Emission Factor Leaching,Fraction Leaching,Ash Content,Methane Producing Capacity Of Manure,Manure Excretion Rate,Fraction Of Carbon In Manure -Rams,H.Core.Models.Animals.Sheep.RamsComponent,Rams,Ram,Management period 1,0,2025-01-01,30,100,Gestating,0,125.0000,125.0000,0.0000,24.0000,4.0000,4.6000,None,0.0670,0.0000,0.0000,17.7000,0.0000,60.0000,8.0000,0.0000,0.0000,0.0000,0.0000,2.5000,0.3500,0.0067,0.2500,0.5700,0.4470,0.0057,9.5700,0.0047,0.0004,0.0050,0.2100,0.0110,0.1942,8.0000,0.1900,1.8000,6.1820 +Name,Component Type,Group Name,Group Type,Management Period Name,Group Pairing Number,Management Period Start Date,Management Period Days,Number Of Animals,Production Stage,Number Of Young Animals,Start Weight,End Weight,Average Daily Gain,Energy Required To Produce Wool,Wool Production,Energy Required To Produce Milk,Diet Additive Type,Methane Conversion Factor Of Diet,Methane Conversion Factor Adjusted,Feed Intake,Crude Protein,Forage,TDN,Ash Content Of Diet,Starch,Fat,ME,NDF,Gain Coefficient A,Gain Coefficient B,Housing Type,Activity Coefficient Of Feeding Situation,Maintenance Coefficient,User Defined Bedding Rate,Total Carbon Kilograms Dry Matter For Bedding,Total Nitrogen Kilograms Dry Matter For Bedding,Moisture Content Of Bedding Material,Pasture Location,Manure State Type,Methane Conversion Factor Of Manure,N2O Direct Emission Factor,Emission Factor Volatilization,Volatilization Fraction,Emission Factor Leaching,Fraction Leaching,Ash Content,Methane Producing Capacity Of Manure,Manure Excretion Rate,Fraction Of Carbon In Manure +Rams,H.Core.Models.Animals.Sheep.RamsComponent,Rams,Ram,Management period 1,0,2025-01-01,30,100,Gestating,0,125.0000,125.0000,0.0000,24.0000,4.0000,4.6000,None,0.0670,0.0000,0.0000,17.7000,0.0000,60.0000,8.0000,0.0000,0.0000,0.0000,0.0000,2.5000,0.3500,Confined,0.0067,0.2500,0.5700,0.4470,0.0057,9.5700,N/A,Pasture,0.0047,0.0004,0.0050,0.2100,0.0110,0.1942,8.0000,0.1900,1.8000,6.1820 diff --git a/tests/test_launching.py b/tests/test_launching.py index fecea68..f40d0d0 100644 --- a/tests/test_launching.py +++ b/tests/test_launching.py @@ -76,7 +76,7 @@ def test_create_farm_files_from_json_with_complete_inputs(self): outputs = [v.name for v in self.path_dir_farms.iterdir() if v.is_dir()] self.assertEqual(outputs, self.expected_output_folders) for f in ('farm_from_json_Results', 'TotalResultsForAllFarms'): - self.assertTrue((path_dir_outputs / 'Outputs' / f).is_dir()) + self.assertTrue((path_dir_outputs / f).is_dir()) def test_run_on_existing_farm_data(self): launching.launch_holos(