File size: 3,399 Bytes
43a1446 8d81017 43a1446 8d81017 43a1446 8d81017 43a1446 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | import gradio as gr
def get_model_inputs(config):
spA = config["species"][0]
spB = config["species"][1]
# Species A
planting_density_A = gr.Number(value=spA['planting_density'], label=f"{spA['name']} Planting Density (trees/ha)")
r0_dbh_A = gr.Number(value=spA['declining_increment']['dbh']['r0'], label=f"{spA['name']} r0 (DBH, cm/yr)")
tm_dbh_A = gr.Number(value=spA['declining_increment']['dbh']['T_m'], label=f"{spA['name']} Tm (DBH, yrs)")
r0_height_A = gr.Number(value=spA['declining_increment']['height']['r0'], label=f"{spA['name']} r0 (Height, m/yr)")
tm_height_A = gr.Number(value=spA['declining_increment']['height']['T_m'], label=f"{spA['name']} Tm (Height, yrs)")
# Species B
planting_density_B = gr.Number(value=spB['planting_density'], label=f"{spB['name']} Planting Density (trees/ha)")
r0_dbh_B = gr.Number(value=spB['declining_increment']['dbh']['r0'], label=f"{spB['name']} r0 (DBH, cm/yr)")
tm_dbh_B = gr.Number(value=spB['declining_increment']['dbh']['T_m'], label=f"{spB['name']} Tm (DBH, yrs)")
r0_height_B = gr.Number(value=spB['declining_increment']['height']['r0'], label=f"{spB['name']} r0 (Height, m/yr)")
tm_height_B = gr.Number(value=spB['declining_increment']['height']['T_m'], label=f"{spB['name']} Tm (Height, yrs)")
# Mortality (one set, mirrored, years 1-10 + subsequent)
mort_inputs = {}
mort_defaults = []
for yr in range(1, 11):
key = f"year_{yr}"
mort_inputs[key] = gr.Number(value=spA['mortality_rates'][key], label=f"Year {yr} Mortality (%)")
mort_defaults.append(spA['mortality_rates'][key])
mort_inputs['subsequent'] = gr.Number(value=spA['mortality_rates']['subsequent'], label="Subsequent Years Mortality (%)")
mort_defaults.append(spA['mortality_rates']['subsequent'])
# Project/Carbon
project_duration = gr.Number(value=config['project']['duration_years'], label="Project Duration (years)")
buffer_pct = gr.Number(value=config['carbon']['buffer_percentage'], label="Buffer %")
soil_carbon = gr.Number(value=config['carbon']['soil_carbon_per_ha_per_year'], label="Soil Carbon per ha per year (tCO2)")
# Return as dict and list of default values (for initial call)
components = {
'planting_density_A': planting_density_A,
'r0_dbh_A': r0_dbh_A,
'tm_dbh_A': tm_dbh_A,
'r0_height_A': r0_height_A,
'tm_height_A': tm_height_A,
'planting_density_B': planting_density_B,
'r0_dbh_B': r0_dbh_B,
'tm_dbh_B': tm_dbh_B,
'r0_height_B': r0_height_B,
'tm_height_B': tm_height_B,
**mort_inputs,
'project_duration': project_duration,
'buffer_pct': buffer_pct,
'soil_carbon': soil_carbon
}
defaults = [
spA['planting_density'], spA['declining_increment']['dbh']['r0'], spA['declining_increment']['dbh']['T_m'],
spA['declining_increment']['height']['r0'], spA['declining_increment']['height']['T_m'],
spB['planting_density'], spB['declining_increment']['dbh']['r0'], spB['declining_increment']['dbh']['T_m'],
spB['declining_increment']['height']['r0'], spB['declining_increment']['height']['T_m'],
*mort_defaults,
config['project']['duration_years'], config['carbon']['buffer_percentage'], config['carbon']['soil_carbon_per_ha_per_year']
]
return components, defaults |