Skip to content

Commit 0d26f30

Browse files
committed
allow for sciml problems setting cond ids in array files
1 parent 3914829 commit 0d26f30

4 files changed

Lines changed: 18 additions & 15 deletions

File tree

petab/v2/converters.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -249,11 +249,13 @@ def _convert_experiment(self, experiment: Experiment) -> None:
249249
# single-period experiments.
250250
if i_period == 0:
251251
exp_ind_id = self.get_experiment_indicator(experiment.id)
252-
# If condition ids are set by array data, skip as importers handle this
253-
if set(period.condition_ids).issubset(
254-
self._new_problem._get_array_data_condition_ids()
255-
):
256-
continue
252+
# Skip if condition ids are set by array data
253+
# importers handle this
254+
if self._new_problem.extensions.sciml:
255+
if set(period.condition_ids).issubset(
256+
self._new_problem.extensions.sciml._get_array_data_condition_ids()
257+
):
258+
continue
257259

258260
for change in self._new_problem.get_changes_for_period(period):
259261
period0_assignments.setdefault(

petab/v2/core.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2288,14 +2288,6 @@ def add_experiment(self, id_: str, *args):
22882288
Experiment(id=id_, periods=periods)
22892289
)
22902290

2291-
def _get_array_data_condition_ids(self) -> set[str]:
2292-
"""Get the set of condition IDs that are referenced in the array data files."""
2293-
condition_ids = set()
2294-
for array_data in self.array_data_files:
2295-
for input in array_data.inputs.values():
2296-
condition_ids.update(input.keys())
2297-
return condition_ids
2298-
22992291
def __iadd__(self, other):
23002292
"""Add Observable, Parameter, Measurement, Condition, or Experiment"""
23012293
from .core import (

petab/v2/extensions/sciml.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,3 +303,12 @@ def from_config(
303303
hybridization_tables=hybridization_tables,
304304
array_data_files=array_data_files,
305305
)
306+
307+
def _get_array_data_condition_ids(self) -> set[str]:
308+
"""Get the set of condition IDs that are referenced in the array data
309+
files."""
310+
condition_ids = set()
311+
for array_data in self.array_data_files:
312+
for input in array_data.inputs.values():
313+
condition_ids.update(input.keys())
314+
return condition_ids

petab/v2/lint.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -532,10 +532,10 @@ class CheckExperimentConditionsExist(ValidationTask):
532532
def run(self, problem: Problem) -> ValidationIssue | None:
533533
messages = []
534534
available_conditions = {c.id for c in problem.conditions}
535-
if problem.array_data_files:
535+
if problem.extensions.sciml:
536536
available_conditions |= {
537537
key
538-
for array_data in problem.array_data_files
538+
for array_data in problem.extensions.sciml.array_data_files
539539
for input_array in array_data.inputs.values()
540540
for key in input_array.keys()
541541
}

0 commit comments

Comments
 (0)