@@ -1555,6 +1555,49 @@ def simulate(self):
15551555 # obtain petab problem
15561556 petab_problem = self .model .current_petab_problem
15571557
1558+ # Check if nominalValue column exists, if not add it from SBML model
1559+ parameter_df = petab_problem .parameter_df .copy ()
1560+ if (
1561+ parameter_df is not None
1562+ and not parameter_df .empty
1563+ and petab .C .NOMINAL_VALUE not in parameter_df .columns
1564+ ):
1565+ self .logger .log_message (
1566+ "nominalValue column missing in parameter table. "
1567+ "Extracting nominal values from SBML model..." ,
1568+ color = "orange" ,
1569+ )
1570+ # Extract parameter values from SBML model
1571+ sbml_model = self .model .sbml .get_current_sbml_model ()
1572+ if sbml_model is not None :
1573+ nominal_values = []
1574+ for param_id in parameter_df .index :
1575+ try :
1576+ value = sbml_model .get_parameter_value (param_id )
1577+ nominal_values .append (value )
1578+ except Exception :
1579+ # If parameter not found in SBML, use default value of 1
1580+ nominal_values .append (1.0 )
1581+
1582+ # Add nominalValue column to parameter_df
1583+ parameter_df [petab .C .NOMINAL_VALUE ] = nominal_values
1584+ self .logger .log_message (
1585+ f"Successfully extracted { len (nominal_values )} "
1586+ f"nominal values from SBML model. Add nominalValue "
1587+ f"column to parameter table to set values manually." ,
1588+ color = "green" ,
1589+ )
1590+
1591+ # Update the petab problem with the modified parameter_df
1592+ petab_problem = petab .Problem (
1593+ condition_df = petab_problem .condition_df ,
1594+ measurement_df = petab_problem .measurement_df ,
1595+ observable_df = petab_problem .observable_df ,
1596+ parameter_df = parameter_df ,
1597+ visualization_df = petab_problem .visualization_df ,
1598+ model = petab_problem .model ,
1599+ )
1600+
15581601 # import petabsimualtor
15591602 import basico
15601603 from basico .petab import PetabSimulator
0 commit comments