Skip to content

Commit c94bb1b

Browse files
authored
v2: parameter_file -> parameter_files (#406)
Adapt to PEtab-dev/PEtab#641.
1 parent fb36efa commit c94bb1b

File tree

5 files changed

+24
-14
lines changed

5 files changed

+24
-14
lines changed

petab/schemas/petab_schema.v2.0.0.yaml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@ properties:
2323
- type: integer
2424
description: Version of the PEtab format
2525

26-
parameter_file:
27-
oneOf:
28-
- type: string
29-
- type: array
26+
parameter_files:
27+
type: array
3028
description: |
31-
File name (absolute or relative) or URL to PEtab parameter table
32-
containing parameters of all models listed in `problems`. A single
33-
table may be split into multiple files and described as an array here.
29+
List of PEtab parameter files.
30+
items:
31+
type: string
32+
description: |
33+
File name (absolute or relative) or URL to a PEtab parameter table.
3434
3535
model_files:
3636
type: object
@@ -95,7 +95,7 @@ properties:
9595

9696
required:
9797
- format_version
98-
- parameter_file
98+
- parameter_files
9999
- model_files
100100
- observable_files
101101
- measurement_files

petab/v2/C.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -344,8 +344,8 @@
344344
# YAML
345345
#: PEtab version key in the YAML file
346346
FORMAT_VERSION = "format_version"
347-
#: Parameter file key in the YAML file
348-
PARAMETER_FILE = "parameter_file"
347+
#: Parameter files key in the YAML file
348+
PARAMETER_FILES = "parameter_files"
349349
#: Problems key in the YAML file
350350
PROBLEMS = "problems"
351351
#: Model files key in the YAML file

petab/v2/petab1to2.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,9 @@ def petab_files_1to2(yaml_config: Path | str, output_dir: Path | str):
9696

9797
# parameter table
9898
parameter_df = v1v2_parameter_df(petab_problem.parameter_df.copy())
99-
file = yaml_config[v2.C.PARAMETER_FILE]
100-
v2.write_parameter_df(parameter_df, get_dest_path(file))
99+
v2.write_parameter_df(
100+
parameter_df, get_dest_path(new_yaml_config.parameter_files[0])
101+
)
101102

102103
# copy files that don't need conversion
103104
# (models, visualizations)
@@ -294,6 +295,15 @@ def _update_yaml(yaml_config: dict) -> dict:
294295
if file_type in problem:
295296
yaml_config[file_type] = problem[file_type]
296297
del problem[file_type]
298+
del yaml_config[v1.C.PROBLEMS]
299+
300+
# parameter_file -> parameter_files
301+
if not isinstance(
302+
(par_files := yaml_config.pop(v1.C.PARAMETER_FILE, [])), list
303+
):
304+
par_files = [par_files]
305+
yaml_config[v2.C.PARAMETER_FILES] = par_files
306+
297307
return yaml_config
298308

299309

petab/v2/problem.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1298,7 +1298,7 @@ class ProblemConfig(BaseModel):
12981298
# rename to parameter_files in yaml for consistency with other files?
12991299
# always a list?
13001300
parameter_files: list[str | AnyUrl] = Field(
1301-
default=[], alias=PARAMETER_FILE
1301+
default=[], alias=PARAMETER_FILES
13021302
)
13031303

13041304
# TODO: consider changing str to Path

tests/v2/test_problem.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ def test_problem_from_yaml_multiple_files():
6767
"""
6868
yaml_config = """
6969
format_version: 2.0.0
70-
parameter_file: []
70+
parameter_files: []
7171
condition_files: [conditions1.tsv, conditions2.tsv]
7272
measurement_files: [measurements1.tsv, measurements2.tsv]
7373
observable_files: [observables1.tsv, observables2.tsv]

0 commit comments

Comments
 (0)