Source code for calcey.test_fert_model

import pandas as pd

# Define the function to calculate emissions
[docs] def calculate_emissions(user_input_fert_kg_N, user_input_fert_kg_P): # Create dataframe for generic fertilizer content data_fertilizer_content = { 'fertilizer_type': ['Ammonium Sulphate', 'Ammonium chloride', 'Calcium Ammonium Nitrate', 'Calcium Nitrate', 'Urea', 'Single superphosphate SSP 14%', 'Rock Phosphate (powder/granular)', 'Potassium chloride (powder/granular)', 'Potassium Sulphate', 'NPK 15-15-15', 'NPK 10-26-26'], 'fert_N_content_%': [0.206, 0.250, 0.260, 0.155, 0.460, 0.000, 0.000, 0.000, 0.000, 0.150, 0.100], 'fert_P2O5_content_%': [0.000, 0.000, 0.000, 0.000, 0.000, 0.140, 0.180, 0.000, 0.000, 0.150, 0.221], 'fert_K2O_content_%': [0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.50, 0.15, 0.26] } df_fertilizer_content = pd.DataFrame(data_fertilizer_content) def calculate_individual_nutrient_contents(user_input_fert_type, user_input_fert_quantity_kg): fert_row = df_fertilizer_content[df_fertilizer_content['fertilizer_type'] == user_input_fert_type] if fert_row.empty: raise ValueError(f"Fertilizer type '{user_input_fert_type}' not found in the DataFrame.") nutrient_content_N = fert_row['fert_N_content_%'].values[0] nutrient_content_P = fert_row['fert_P2O5_content_%'].values[0] nutrient_content_K = fert_row['fert_K2O_content_%'].values[0] user_input_fert_kg_N = user_input_fert_quantity_kg * nutrient_content_N user_input_fert_kg_P = user_input_fert_quantity_kg * nutrient_content_P user_input_fert_kg_K = user_input_fert_quantity_kg * nutrient_content_K return user_input_fert_kg_N, user_input_fert_kg_P, user_input_fert_kg_K # Emission factors EF_N2O_fert = 0.022 EF_NH3_syn_fert = 0.12 EF_NH3_org_fert = 0.24 EF_NO3_fert = 1.33 EF_NOx_fert = 0.012 EF_P_fert = 0.05 Emission_kg_N2O = user_input_fert_kg_N * EF_N2O_fert Emission_syn_kg_NH3 = user_input_fert_kg_N * EF_NH3_syn_fert Emission_org_kg_NH3 = user_input_fert_kg_N * EF_NH3_org_fert Emission_kg_NH3 = Emission_syn_kg_NH3 + Emission_org_kg_NH3 Emission_kg_NO3 = user_input_fert_kg_N * EF_NO3_fert Emission_kg_NOx = ((user_input_fert_kg_N - Emission_kg_NH3 * 17 / 14) * EF_NOx_fert) * 14 / 17 Emission_kg_P = user_input_fert_kg_P * EF_P_fert emissions_data = { 'Emission_kg_N2O': [Emission_kg_N2O], 'Emission_kg_NH3': [Emission_kg_NH3], 'Emission_kg_NO3': [Emission_kg_NO3], 'Emission_kg_NOx_N': [Emission_kg_NOx], 'Emission_kg_P': [Emission_kg_P] } return pd.DataFrame(emissions_data)
# Test the function with appropriate inputs
[docs] df_emissions = calculate_emissions(user_input_fert_kg_N=2, user_input_fert_kg_P=1)
# Display the result print(df_emissions) calculate_emissions(user_input_fert_kg_N=1, user_input_fert_kg_P=5)