Skip to content

Commit 3680e50

Browse files
committed
Added #238 back into code (lost due to merge conflict)
1 parent f634bd5 commit 3680e50

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

src/petab_gui/controllers/simulation_controller.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99

1010
import tempfile
1111

12+
import petab.v1 as petab
13+
1214

1315
class SimulationController:
1416
"""Controller for PEtab simulations.
@@ -57,6 +59,49 @@ def simulate(self):
5759
# obtain petab problem
5860
petab_problem = self.model.current_petab_problem
5961

62+
# Check if nominalValue column exists, if not add it from SBML model
63+
parameter_df = petab_problem.parameter_df.copy()
64+
if (
65+
parameter_df is not None
66+
and not parameter_df.empty
67+
and petab.C.NOMINAL_VALUE not in parameter_df.columns
68+
):
69+
self.logger.log_message(
70+
"nominalValue column missing in parameter table. "
71+
"Extracting nominal values from SBML model...",
72+
color="orange",
73+
)
74+
# Extract parameter values from SBML model
75+
sbml_model = self.model.sbml.get_current_sbml_model()
76+
if sbml_model is not None:
77+
nominal_values = []
78+
for param_id in parameter_df.index:
79+
try:
80+
value = sbml_model.get_parameter_value(param_id)
81+
nominal_values.append(value)
82+
except Exception:
83+
# If parameter not found in SBML, use default value of 1
84+
nominal_values.append(1.0)
85+
86+
# Add nominalValue column to parameter_df
87+
parameter_df[petab.C.NOMINAL_VALUE] = nominal_values
88+
self.logger.log_message(
89+
f"Successfully extracted {len(nominal_values)} "
90+
f"nominal values from SBML model. Add nominalValue "
91+
f"column to parameter table to set values manually.",
92+
color="green",
93+
)
94+
95+
# Update the petab problem with the modified parameter_df
96+
petab_problem = petab.Problem(
97+
condition_df=petab_problem.condition_df,
98+
measurement_df=petab_problem.measurement_df,
99+
observable_df=petab_problem.observable_df,
100+
parameter_df=parameter_df,
101+
visualization_df=petab_problem.visualization_df,
102+
model=petab_problem.model,
103+
)
104+
60105
# import petabsimualtor
61106
import basico
62107
from basico.petab import PetabSimulator

0 commit comments

Comments
 (0)