Skip to content

Commit 98b94ab

Browse files
committed
single condition per timepoint
1 parent 264c066 commit 98b94ab

File tree

1 file changed

+13
-16
lines changed

1 file changed

+13
-16
lines changed

petab/v2/core.py

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -324,20 +324,19 @@ class ExperimentPeriod(BaseModel):
324324
"""
325325

326326
start: float = Field(alias=C.TIME)
327-
condition_ids: list[str] = Field(alias=C.CONDITION_ID)
327+
condition_id: str = Field(alias=C.CONDITION_ID)
328328

329329
class Config:
330330
populate_by_name = True
331331

332-
@field_validator("condition_ids")
332+
@field_validator("condition_id")
333333
@classmethod
334-
def validate_id(cls, v):
335-
for condition_id in v:
336-
if not condition_id:
337-
raise ValueError("ID must not be empty.")
338-
if not is_valid_identifier(condition_id):
339-
raise ValueError(f"Invalid ID: {condition_id}")
340-
return v
334+
def validate_id(cls, condition_id):
335+
if not condition_id:
336+
raise ValueError("ID must not be empty.")
337+
if not is_valid_identifier(condition_id):
338+
raise ValueError(f"Invalid ID: {condition_id}")
339+
return condition_id
341340

342341

343342
class Experiment(BaseModel):
@@ -377,14 +376,12 @@ def from_dataframe(cls, df: pd.DataFrame) -> ExperimentsTable:
377376

378377
experiments = []
379378
for experiment_id, cur_exp_df in df.groupby(C.EXPERIMENT_ID):
380-
periods = []
381-
for time, cur_period_df in cur_exp_df.groupby(C.TIME):
382-
period_conditions = list(cur_period_df[C.CONDITION_ID])
383-
periods.append(
384-
ExperimentPeriod(
385-
start=time, condition_ids=period_conditions
386-
)
379+
periods = [
380+
ExperimentPeriod(
381+
start=row[C.TIME], condition_id=row[C.CONDITION_ID]
387382
)
383+
for _, row in cur_exp_df.iterrows()
384+
]
388385
experiments.append(Experiment(id=experiment_id, periods=periods))
389386

390387
return cls(experiments=experiments)

0 commit comments

Comments
 (0)