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