Skip to content

Commit d45100a

Browse files
committed
Merge branch 'main' into fix229
2 parents 50fdf42 + e6b608b commit d45100a

File tree

4 files changed

+49
-3
lines changed

4 files changed

+49
-3
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ maintainers = [
1414
description = "Graphical user interface for the PEtab format"
1515
dependencies = [
1616
"pyside6",
17-
"pandas",
17+
"pandas<3.0.0",
1818
"antimony",
1919
"python-libsbml",
2020
"matplotlib",

src/petab_gui/controllers/mother_controller.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

src/petab_gui/utils.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -408,6 +408,9 @@ def process_file(filepath, logger):
408408
)
409409
return None, None
410410

411+
# if separator is None:
412+
# separator = "\t"
413+
411414
# Case 3.2: Identify the table type based on header content
412415
if {petab.C.OBSERVABLE_ID, petab.C.MEASUREMENT, petab.C.TIME}.issubset(
413416
header
@@ -427,7 +430,7 @@ def process_file(filepath, logger):
427430
petab.C.CONDITION_ID in header
428431
or f"\ufeff{petab.C.CONDITION_ID}" in header
429432
):
430-
return "condition", separator
433+
return "condition", separator if separator is not None else "\t"
431434
if petab.C.PLOT_ID in header:
432435
return "visualization", separator
433436
logger.log_message(

src/petab_gui/views/simple_plot_view.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ def _render_on_main_thread(self, payload):
180180
meas_df is None
181181
or meas_df.empty
182182
or cond_df is None
183-
or cond_df.empty
183+
or not len(cond_df) > 0
184184
):
185185
self._update_tabs(None)
186186
return

0 commit comments

Comments
 (0)