pyholos 0.0.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pyholos might be problematic. Click here for more details.

Files changed (55) hide show
  1. pyholos/__init__.py +0 -0
  2. pyholos/common.py +141 -0
  3. pyholos/common2.py +157 -0
  4. pyholos/components/__init__.py +0 -0
  5. pyholos/components/animals/__init__.py +0 -0
  6. pyholos/components/animals/beef.py +766 -0
  7. pyholos/components/animals/common.py +2301 -0
  8. pyholos/components/animals/dairy.py +341 -0
  9. pyholos/components/animals/sheep.py +412 -0
  10. pyholos/components/common.py +170 -0
  11. pyholos/components/land_management/__init__.py +0 -0
  12. pyholos/components/land_management/carbon/__init__.py +0 -0
  13. pyholos/components/land_management/carbon/climate.py +863 -0
  14. pyholos/components/land_management/carbon/management.py +21 -0
  15. pyholos/components/land_management/carbon/relative_biomass_information.py +410 -0
  16. pyholos/components/land_management/carbon/tillage.py +88 -0
  17. pyholos/components/land_management/common.py +220 -0
  18. pyholos/components/land_management/crop.py +1233 -0
  19. pyholos/components/land_management/field_system.py +458 -0
  20. pyholos/components/land_management/utils.py +66 -0
  21. pyholos/config.py +49 -0
  22. pyholos/core_constants.py +20 -0
  23. pyholos/defaults.py +116 -0
  24. pyholos/farm/__init__.py +0 -0
  25. pyholos/farm/enums.py +54 -0
  26. pyholos/farm/farm.py +101 -0
  27. pyholos/farm/farm_inputs.py +633 -0
  28. pyholos/farm/farm_settings.py +542 -0
  29. pyholos/launching.py +86 -0
  30. pyholos/postprocessing/__init__.py +0 -0
  31. pyholos/postprocessing/plots.py +164 -0
  32. pyholos/postprocessing/postprocessing.py +38 -0
  33. pyholos/resources/holos/Table_16_Livestock_Coefficients_BeefAndDairy_Cattle_Provider.csv +21 -0
  34. pyholos/resources/holos/Table_21_Average_Milk_Production_For_Dairy_Cows_By_Province.csv +23 -0
  35. pyholos/resources/holos/Table_22_Livestock_Coefficients_For_Sheep.csv +28 -0
  36. pyholos/resources/holos/Table_29_Percentage_Total_Manure_Produced_In_Systems.csv +56 -0
  37. pyholos/resources/holos/Table_30_Default_Bedding_Material_Composition_Provider.csv +28 -0
  38. pyholos/resources/holos/Table_50_Fuel_Energy_Requirement_Estimates_By_Region.csv +81 -0
  39. pyholos/resources/holos/Table_51_Herbicide_Energy_Requirement_Estimates_By_Region.csv +81 -0
  40. pyholos/resources/holos/Table_61_Fractions_of_dairy_cattle_N_volatilized.csv +25 -0
  41. pyholos/resources/holos/Table_62_Fractions_of_swine_N_volatilized.csv +25 -0
  42. pyholos/resources/holos/Table_6_Manure_Types_And_Default_Composition.csv +126 -0
  43. pyholos/resources/holos/Table_7_Relative_Biomass_Information.csv +112 -0
  44. pyholos/resources/holos/Table_9_Default_Values_For_Nitrogen_Lignin_In_Crops.csv +72 -0
  45. pyholos/resources/holos/Table_Tillage_Factor.csv +13 -0
  46. pyholos/resources/holos/feeds.csv +223 -0
  47. pyholos/resources/holos/main_tables.py +493 -0
  48. pyholos/resources/holos/small_area_yields.csv +167159 -0
  49. pyholos/resources/soil_landscapes_of_canada_v3r2.zip +0 -0
  50. pyholos/soil.py +439 -0
  51. pyholos/utils.py +83 -0
  52. pyholos-0.0.1.dist-info/METADATA +16 -0
  53. pyholos-0.0.1.dist-info/RECORD +55 -0
  54. pyholos-0.0.1.dist-info/WHEEL +4 -0
  55. pyholos-0.0.1.dist-info/licenses/LICENSE +677 -0
@@ -0,0 +1,341 @@
1
+ from datetime import date
2
+
3
+ from pyholos.common import Component, EnumGeneric, HolosVar
4
+ from pyholos.components.animals.common import (
5
+ AnimalCoefficientData, AnimalType, Bedding, BeddingMaterialType, Diet,
6
+ DietAdditiveType, HousingType, LivestockEmissionConversionFactorsData,
7
+ ManureStateType, Milk, ProductionStage,
8
+ get_beef_and_dairy_cattle_coefficient_data,
9
+ get_beef_and_dairy_cattle_feeding_activity_coefficient,
10
+ get_default_methane_producing_capacity_of_manure)
11
+ from pyholos.config import DATE_FMT
12
+ from pyholos.utils import convert_camel_case_to_space_delimited, get_local_args
13
+
14
+
15
+ class _GroupNameType:
16
+ def __init__(
17
+ self,
18
+ animal_type: AnimalType,
19
+ ):
20
+ self.type = animal_type
21
+ self.name = convert_camel_case_to_space_delimited(s=animal_type.value.replace('Cow', '')).capitalize()
22
+
23
+
24
+ class GroupNameType(EnumGeneric):
25
+ dairy_heifers = _GroupNameType(animal_type=AnimalType.dairy_heifers)
26
+ dairy_lactating_cow = _GroupNameType(animal_type=AnimalType.dairy_lactating_cow)
27
+ dairy_calves = _GroupNameType(animal_type=AnimalType.dairy_calves)
28
+ dairy_dry_cow = _GroupNameType(animal_type=AnimalType.dairy_dry_cow)
29
+
30
+
31
+ class DairyBase(Component):
32
+ def __init__(self):
33
+ super().__init__()
34
+ self.name = HolosVar(name="Name", value="Dairy cattle")
35
+ self.component_type = HolosVar(name="Component Type", value="H.Core.Models.Animals.Dairy.DairyComponent")
36
+ self.group_name = HolosVar(name="Group Name", value=None)
37
+ self.group_type = HolosVar(name="Group Type", value=None)
38
+ self.management_period_name = HolosVar(name="Management Period Name", value=None)
39
+ self.management_period_start_date = HolosVar(name="Management Period Start Date", value=None)
40
+ self.management_period_days = HolosVar(name="Management Period Days", value=None)
41
+ self.number_of_animals = HolosVar(name="Number Of Animals", value=None)
42
+ self.production_stage = HolosVar(name="Production Stage", value=None)
43
+ self.number_of_young_animals = HolosVar(name="Number Of Young Animals", value=None)
44
+ self.group_pairing_number = HolosVar(name="Group Pairing Number", value=None)
45
+ self.start_weight = HolosVar(name="Start Weight", value=None)
46
+ self.end_weight = HolosVar(name="End Weight", value=None)
47
+ self.average_daily_gain = HolosVar(name="Average Daily Gain", value=None)
48
+ self.milk_production = HolosVar(name="Milk Production", value=None)
49
+ self.milk_fat_content = HolosVar(name="Milk Fat Content", value=None)
50
+ self.milk_protein_content_as_percentage = HolosVar(name="Milk Protein Content As Percentage", value=None)
51
+ self.diet_additive_type = HolosVar(name="Diet Additive Type", value=None)
52
+ self.methane_conversion_factor_of_diet = HolosVar(name="Methane Conversion Factor Of Diet", value=None)
53
+
54
+ self.methane_conversion_factor_adjusted = HolosVar(name="Methane Conversion Factor Adjusted", value=0)
55
+ """deprecated"""
56
+
57
+ self.feed_intake = HolosVar(name="Feed Intake", value=0)
58
+ """deprecated"""
59
+
60
+ self.crude_protein = HolosVar(name="Crude Protein", value=None)
61
+ self.ash_content_of_diet = HolosVar(name="Ash Content Of Diet", value=None)
62
+ self.forage = HolosVar(name="Forage", value=None)
63
+ self.tdn = HolosVar(name="TDN", value=None)
64
+ self.starch = HolosVar(name="Starch", value=None)
65
+ self.fat = HolosVar(name="Fat", value=None)
66
+ self.me = HolosVar(name="ME", value=None)
67
+ self.ndf = HolosVar(name="NDF", value=None)
68
+
69
+ self.volatile_solid_adjusted = HolosVar(name="Volatile Solid Adjusted", value=1)
70
+ """deprecated"""
71
+
72
+ self.nitrogen_excretion_adjusted = HolosVar(name="Nitrogen Excretion Adjusted", value=1)
73
+ """deprecated"""
74
+
75
+ self.dietary_net_energy_concentration = HolosVar(name="Dietary Net Energy Concentration", value=None)
76
+ self.gain_coefficient = HolosVar(name="Gain Coefficient", value=None)
77
+
78
+ self.gain_coefficient_a = HolosVar(name="Gain Coefficient A", value=0)
79
+ """deprecated"""
80
+
81
+ self.gain_coefficient_b = HolosVar(name="Gain Coefficient B", value=0)
82
+ """deprecated"""
83
+
84
+ self.housing_type = HolosVar(name="Housing Type", value=None)
85
+ self.activity_coefficient_of_feeding_situation = HolosVar(name="Activity Coefficient Of Feeding Situation",
86
+ value=None)
87
+ self.maintenance_coefficient = HolosVar(name="Maintenance Coefficient", value=None)
88
+ self.user_defined_bedding_rate = HolosVar(name="User Defined Bedding Rate", value=None)
89
+ self.total_carbon_kilograms_dry_matter_for_bedding = HolosVar(
90
+ name="Total Carbon Kilograms Dry Matter For Bedding", value=None)
91
+ self.total_nitrogen_kilograms_dry_matter_for_bedding = HolosVar(
92
+ name="Total Nitrogen Kilograms Dry Matter For Bedding", value=None)
93
+ self.moisture_content_of_bedding_material = HolosVar(name="Moisture Content Of Bedding Material", value=None)
94
+ self.methane_conversion_factor_of_manure = HolosVar(name="Methane Conversion Factor Of Manure", value=None)
95
+ self.n2o_direct_emission_factor = HolosVar(name="N2O Direct Emission Factor", value=None)
96
+ self.emission_factor_volatilization = HolosVar(name="Emission Factor Volatilization", value=None)
97
+ self.volatilization_fraction = HolosVar(name="Volatilization Fraction", value=None)
98
+ self.emission_factor_leaching = HolosVar(name="Emission Factor Leaching", value=None)
99
+ self.fraction_leaching = HolosVar(name="Fraction Leaching", value=None)
100
+
101
+ self.ash_content = HolosVar(name="Ash Content", value=8.0)
102
+ """deprecated"""
103
+
104
+ self.methane_producing_capacity_of_manure = HolosVar(name="Methane Producing Capacity Of Manure", value=None)
105
+
106
+ self._animal_coefficient_data: AnimalCoefficientData | None = None
107
+
108
+ def get_animal_coefficient_data(self):
109
+ self._animal_coefficient_data = get_beef_and_dairy_cattle_coefficient_data(animal_type=self.group_type.value)
110
+
111
+ def set_feeding_activity_coefficient(self):
112
+ self.activity_coefficient_of_feeding_situation.value = get_beef_and_dairy_cattle_feeding_activity_coefficient(
113
+ housing_type=self.housing_type.value)
114
+
115
+
116
+ class Dairy(DairyBase):
117
+ def __init__(
118
+ self,
119
+ group_name: str,
120
+ animal_type: AnimalType,
121
+ management_period_name: str,
122
+ group_pairing_number: int,
123
+ management_period_start_date: date,
124
+ management_period_days: int,
125
+ number_of_animals: int,
126
+ production_stage: ProductionStage,
127
+ number_of_young_animals: int,
128
+ milk_data: Milk,
129
+ diet: Diet,
130
+ housing_type: HousingType,
131
+ manure_handling_system: ManureStateType,
132
+ manure_emission_factors: LivestockEmissionConversionFactorsData,
133
+ start_weight: float = None,
134
+ end_weight: float = None,
135
+ diet_additive_type: DietAdditiveType = DietAdditiveType.NONE,
136
+ bedding_material_type: BeddingMaterialType = BeddingMaterialType.NONE,
137
+ ):
138
+ """
139
+
140
+ Args:
141
+ group_name: GroupNames member
142
+ animal_type: AnimalType class instance
143
+ management_period_name: given name for the management period
144
+ group_pairing_number: number of paired animals
145
+ management_period_start_date: starting date for the management period
146
+ management_period_days: number of days of the management period
147
+ number_of_animals: number of animals
148
+ production_stage: ProductionStage class instance
149
+ number_of_young_animals: number of young animals
150
+ milk_data: class object that contains all required milk production data
151
+ diet: class object that contains all required diet data
152
+ housing_type: HousingType class instance
153
+ manure_handling_system: ManureStateType class instance
154
+ manure_emission_factors: LivestockEmissionConversionFactorsData class instance
155
+ start_weight: (kg) animal weight at the beginning of the management period
156
+ end_weight: (kg) animal weight at the end of the management period
157
+ diet_additive_type: type of the diet additive
158
+ bedding_material_type: bedding material type
159
+ """
160
+ super().__init__()
161
+ self.group_name.value = group_name
162
+ self.group_type.value = animal_type.value
163
+ self.management_period_name.value = management_period_name
164
+ self.management_period_start_date.value = management_period_start_date.strftime(DATE_FMT)
165
+ self.management_period_days.value = management_period_days
166
+ self.number_of_animals.value = number_of_animals
167
+ self.production_stage.value = production_stage.value
168
+ self.number_of_young_animals.value = number_of_young_animals
169
+ self.group_pairing_number.value = group_pairing_number
170
+
171
+ self.get_animal_coefficient_data()
172
+ self.start_weight.value = self._animal_coefficient_data.default_initial_weight if start_weight is None else start_weight
173
+ self.end_weight.value = self._animal_coefficient_data.default_final_weight if end_weight is None else end_weight
174
+ self.maintenance_coefficient.value = self._animal_coefficient_data.baseline_maintenance_coefficient
175
+ self.gain_coefficient.value = self._animal_coefficient_data.gain_coefficient
176
+
177
+ self.average_daily_gain.value = (self.end_weight.value - self.start_weight.value) / management_period_days
178
+
179
+ self.milk_production.value = milk_data.production
180
+ self.milk_fat_content.value = milk_data.fat_content
181
+ self.milk_protein_content_as_percentage.value = milk_data.protein_content_as_percentage
182
+
183
+ self.diet_additive_type.value = diet_additive_type.value
184
+
185
+ self.crude_protein.value = diet.crude_protein_percentage
186
+ self.forage.value = diet.forage_percentage
187
+ self.tdn.value = diet.total_digestible_nutrient_percentage
188
+ self.ash_content_of_diet.value = diet.ash_percentage
189
+ self.starch.value = diet.starch_percentage
190
+ self.fat.value = diet.fat_percentage
191
+ self.me.value = diet.metabolizable_energy
192
+ self.ndf.value = diet.neutral_detergent_fiber_percentage
193
+
194
+ self.dietary_net_energy_concentration.value = diet.calc_dietary_net_energy_concentration_for_beef()
195
+ self.methane_conversion_factor_of_diet.value = diet.calc_methane_conversion_factor(animal_type=animal_type)
196
+
197
+ self.housing_type.value = housing_type.value
198
+
199
+ bedding = Bedding(
200
+ housing_type=housing_type,
201
+ bedding_material_type=bedding_material_type,
202
+ animal_type=animal_type)
203
+
204
+ self.user_defined_bedding_rate.value = bedding.user_defined_bedding_rate.value
205
+ self.total_carbon_kilograms_dry_matter_for_bedding.value = bedding.total_carbon_kilograms_dry_matter_for_bedding.value
206
+ self.total_nitrogen_kilograms_dry_matter_for_bedding.value = bedding.total_nitrogen_kilograms_dry_matter_for_bedding.value
207
+ self.moisture_content_of_bedding_material.value = bedding.moisture_content_of_bedding_material.value
208
+
209
+ self.set_feeding_activity_coefficient()
210
+
211
+ self.methane_producing_capacity_of_manure.value = get_default_methane_producing_capacity_of_manure(
212
+ is_pasture=housing_type.is_pasture(),
213
+ animal_type=animal_type)
214
+
215
+ self.methane_conversion_factor_of_manure.value = manure_emission_factors.MethaneConversionFactor
216
+ self.n2o_direct_emission_factor.value = manure_emission_factors.N2ODirectEmissionFactor
217
+ self.volatilization_fraction.value = manure_emission_factors.VolatilizationFraction
218
+ self.emission_factor_volatilization.value = manure_emission_factors.EmissionFactorVolatilization
219
+ self.fraction_leaching.value = manure_emission_factors.LeachingFraction
220
+ self.emission_factor_leaching.value = manure_emission_factors.EmissionFactorLeach
221
+
222
+ self.volatile_solid_adjusted.value = 1
223
+ self.nitrogen_excretion_adjusted.value = 1
224
+ self.gain_coefficient_a.value = 0
225
+ self.gain_coefficient_b.value = 0
226
+
227
+
228
+ class DairyHeifers(Dairy):
229
+ animal_group = GroupNameType.dairy_heifers.value
230
+
231
+ def __init__(
232
+ self,
233
+ management_period_name: str,
234
+ group_pairing_number: int,
235
+ management_period_start_date: date,
236
+ management_period_days: int,
237
+ number_of_animals: int,
238
+ production_stage: ProductionStage,
239
+ number_of_young_animals: int,
240
+ milk_data: Milk,
241
+ diet: Diet,
242
+ housing_type: HousingType,
243
+ manure_handling_system: ManureStateType,
244
+ manure_emission_factors: LivestockEmissionConversionFactorsData,
245
+ start_weight: float = None,
246
+ end_weight: float = None,
247
+ diet_additive_type: DietAdditiveType = DietAdditiveType.NONE,
248
+ bedding_material_type: BeddingMaterialType = BeddingMaterialType.NONE,
249
+ ):
250
+ super().__init__(
251
+ group_name=self.animal_group.name,
252
+ animal_type=self.animal_group.type,
253
+ **get_local_args(locals())
254
+ )
255
+
256
+
257
+ class DairyLactatingCow(Dairy):
258
+ animal_group = GroupNameType.dairy_lactating_cow.value
259
+
260
+ def __init__(
261
+ self,
262
+ management_period_name: str,
263
+ group_pairing_number: int,
264
+ management_period_start_date: date,
265
+ management_period_days: int,
266
+ number_of_animals: int,
267
+ production_stage: ProductionStage,
268
+ number_of_young_animals: int,
269
+ milk_data: Milk,
270
+ diet: Diet,
271
+ housing_type: HousingType,
272
+ manure_handling_system: ManureStateType,
273
+ manure_emission_factors: LivestockEmissionConversionFactorsData,
274
+ start_weight: float = None,
275
+ end_weight: float = None,
276
+ diet_additive_type: DietAdditiveType = DietAdditiveType.NONE,
277
+ bedding_material_type: BeddingMaterialType = BeddingMaterialType.NONE,
278
+ ):
279
+ super().__init__(
280
+ group_name=self.animal_group.name,
281
+ animal_type=self.animal_group.type,
282
+ **get_local_args(locals())
283
+ )
284
+
285
+
286
+ class DairyCalves(Dairy):
287
+ animal_group = GroupNameType.dairy_calves.value
288
+
289
+ def __init__(
290
+ self,
291
+ management_period_name: str,
292
+ group_pairing_number: int,
293
+ management_period_start_date: date,
294
+ management_period_days: int,
295
+ number_of_animals: int,
296
+ production_stage: ProductionStage,
297
+ number_of_young_animals: int,
298
+ milk_data: Milk,
299
+ diet: Diet,
300
+ housing_type: HousingType,
301
+ manure_handling_system: ManureStateType,
302
+ manure_emission_factors: LivestockEmissionConversionFactorsData,
303
+ start_weight: float = None,
304
+ end_weight: float = None,
305
+ diet_additive_type: DietAdditiveType = DietAdditiveType.NONE,
306
+ bedding_material_type: BeddingMaterialType = BeddingMaterialType.NONE,
307
+ ):
308
+ super().__init__(
309
+ group_name=self.animal_group.name,
310
+ animal_type=self.animal_group.type,
311
+ **get_local_args(locals())
312
+ )
313
+
314
+
315
+ class DairyDryCow(Dairy):
316
+ animal_group = GroupNameType.dairy_dry_cow.value
317
+
318
+ def __init__(
319
+ self,
320
+ management_period_name: str,
321
+ group_pairing_number: int,
322
+ management_period_start_date: date,
323
+ management_period_days: int,
324
+ number_of_animals: int,
325
+ production_stage: ProductionStage,
326
+ number_of_young_animals: int,
327
+ milk_data: Milk,
328
+ diet: Diet,
329
+ housing_type: HousingType,
330
+ manure_handling_system: ManureStateType,
331
+ manure_emission_factors: LivestockEmissionConversionFactorsData,
332
+ start_weight: float = None,
333
+ end_weight: float = None,
334
+ diet_additive_type: DietAdditiveType = DietAdditiveType.NONE,
335
+ bedding_material_type: BeddingMaterialType = BeddingMaterialType.NONE,
336
+ ):
337
+ super().__init__(
338
+ group_name=self.animal_group.name,
339
+ animal_type=self.animal_group.type,
340
+ **get_local_args(locals())
341
+ )