Skip to content

Commit f0b68e6

Browse files
FFroehlichdweindl
andcommitted
Proposal for the introduction of extensions (#537)
* extract all changes from previous * fixup * allow hyphens in extension names * fixup hyphens * only require one toolbox that implements extension * specify how to work with multiple PEtab problems * specify we do not require a quorum number of votes * allow test cases to be provided by the extension library * Apply suggestions from code review Co-authored-by: Daniel Weindl <dweindl@users.noreply.github.com> Co-authored-by: Daniel Weindl <dweindl@users.noreply.github.com>
1 parent ed45001 commit f0b68e6

7 files changed

Lines changed: 131 additions & 15 deletions

File tree

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
---
2+
3+
name: PEtab Extension
4+
about: Suggest a new extension for PEtab core
5+
title: ''
6+
labels: file format
7+
assignees: ''
8+
9+
---
10+
11+
**Name of the Extension**
12+
Please make sure that the extension name matches the regular expression `^[a-zA-Z_]\w*$`.
13+
14+
**Which problem would you like to address?**
15+
A clear and concise description of which use case you want to address and, if applicable, why the current specifications do not fulfill your requirements.
16+
17+
**Describe the solution you would like**
18+
A clear and concise description of the changes you want to propose. Please describe any additional fields / files you would want to add, including allowed inputs and implications.
19+
20+
**Describe why this should not be implemented by changes to PEtab core**
21+
A clear and concise description in what way the proposed changes introduce features that are orthogonal to the PEtab core specification.
22+
23+
**List the extension library that implements validation checks**
24+
A link to the website or github repository that accompanies the proposed extension.
25+
26+
**List the toolboxes that support the proposed standard**
27+
A link to the website or github repository that contains the software that implements support for the standard.

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,13 @@ available at https://github.com/PEtab-dev/libpetab-python/.
1414
* Update tutorial.rst (#512)
1515
* Update how-to-cite (Closes #432) (#509)
1616

17+
## 0.2 series
18+
19+
### 0.2.0
20+
21+
* Specify how PEtab functionality can be expanded through extensions.
22+
* YAML files are now required for the specification of PEtab problems
23+
1724
## 0.1 series
1825

1926
### 0.1.14

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,8 @@ will have to:
136136

137137
1. Create a parameter table.
138138

139+
1. Create a yaml file that lists the model and all of the tables above.
140+
139141
If you are using Python, some handy functions of the
140142
[PEtab library](https://github.com/PEtab-dev/libpetab-python/) can help
141143
you with that. This includes also a PEtab validator called `petablint` which

doc/_static/petab_schema.yaml

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,13 @@ description: PEtab parameter estimation problem config file schema
66
properties:
77

88
format_version:
9-
type: integer
10-
description: Version of the PEtab format (e.g. 1).
9+
anyof:
10+
- type: string
11+
# (corresponding to PEP 440).
12+
pattern: ^([1-9][0-9]*!)?(0|[1-9][0-9]*)(\.(0|[1-9][0-9]*))*((a|b|rc)(0|[1-9][0-9]*))?(\.post(0|[1-9][0-9]*))?(\.dev(0|[1-9][0-9]*))?$
13+
- type: integer
14+
15+
description: Version of the PEtab format
1116

1217
parameter_file:
1318
oneOf:
@@ -17,7 +22,6 @@ properties:
1722
File name (absolute or relative) or URL to PEtab parameter table
1823
containing parameters of all models listed in `problems`. A single
1924
table may be split into multiple files and described as an array here.
20-
2125
problems:
2226
type: array
2327
description: |
@@ -80,7 +84,28 @@ properties:
8084
- measurement_files
8185
- condition_files
8286

87+
extensions:
88+
type: object
89+
description: |
90+
PEtab extensions being used.
91+
patternProperties:
92+
"^[a-zA-Z][\\-\\w]*$":
93+
94+
type: object
95+
description: |
96+
Information on a specific extension
97+
properties:
98+
version:
99+
type: string
100+
pattern: ^([1-9][0-9]*!)?(0|[1-9][0-9]*)(\.(0|[1-9][0-9]*))*((a|b|rc)(0|[1-9][0-9]*))?(\.post(0|[1-9][0-9]*))?(\.dev(0|[1-9][0-9]*))?$
101+
102+
required:
103+
- version
104+
additionalProperties: true
105+
106+
additionalProperties: false
107+
83108
required:
84109
- format_version
85110
- parameter_file
86-
- problems
111+
- problems

doc/development.rst

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,56 @@ Upon a new release, the PEtab editors ensure that
192192
* the new version of the specifications is deposited at Zenodo
193193
* the new release is announced on the PEtab mailing list
194194

195+
PEtab Extensions
196+
----------------
197+
198+
An elaborate, monolithic format would make it difficult to understand and
199+
implement support for PEtab, leading to a steep learning curve and discouraging
200+
support in new toolboxes. To address this issue, the PEtab format is modular and
201+
permits modifications through extensions that complement the core standard.
202+
This modular specification evens the learning curve and provides toolbox
203+
developers with more guidance on which features to implement to maximize
204+
support for real world applications. Moreover, such modular extensions
205+
facilitate and promote the use of specialized tools for specific, non-parameter
206+
estimation tasks such as visualization.
207+
208+
Requirements for new extensions:
209+
210+
* Specifications in PEtab extensions take precedence over PEtab core, i.e., they
211+
can ease or refine format restrictions imposed by PEtab core.
212+
* PEtab extensions should extend PEtab core with new orthogonal features or
213+
tasks, i.e., they should not make trivial changes to PEtab core.
214+
* PEtab extensions must be named according to ^[a-zA-Z][\w\-]*$
215+
* PEtab extensions must be versioned using semantic versioning.
216+
* PEtab extensions required for interpretation of a problem specification must
217+
be specified in the PEtab-YAML files
218+
* There is at least one tool that supports the proposed extension
219+
* The authors provide a library that provides test cases and implements
220+
validation checks for the proposed format.
221+
222+
Developers are free to develop any PEtab extension. To become an official
223+
PEtab extension, it needs to go through the following process.
224+
225+
1. The developers write a proposal describing the motivation and specification
226+
of the extension, following the respective issue template provided in this
227+
repository.
228+
1. The proposal is submitted as an issue in this repository.
229+
1. The technical specification and documentation of the extension is submitted
230+
as a pull request in this repository that references the respective issue.
231+
232+
The PEtab editors jointly decide whether an extension meets the requirements
233+
described here. In case of a positive evaluation, they announce a poll for the
234+
acceptance as official extension to the PEtab forum. All members of the PEtab
235+
community are eligible to vote. If at least 50% of the votes are in favor,
236+
the extension is accepted and the respective pull requests with specifications,
237+
documentation and test cases are merged. There is no quorum number of votes
238+
for acceptance.
239+
240+
It is encouraged that extensions are informally discussed with the community
241+
before initiating the process of becoming an official extension. Such
242+
discussions can be conducted through the communication channels mentioned
243+
above.
244+
195245
Versioning of the PEtab format
196246
------------------------------
197247

@@ -219,4 +269,4 @@ Changes to these processes
219269
Changes to the processes specified above require a public vote with
220270
agreement of the majority of voters. Any other changes not directly
221271
affecting those processes, such as changes to structure, orthography,
222-
grammar, formatting, the preamble can be made by the editors any time.
272+
grammar, formatting, the preamble can be made by the editors any time.

doc/documentation_data_format.rst

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ and
5858
- A parameter file specifying estimateable parameters and related information
5959
[TSV]
6060

61+
- A grouping file that lists all of the files and provides additional information
62+
including employed extensions [YAML]
63+
6164
- (optional) A simulation file, which has the same format as the measurement
6265
file, but contains model simulations [TSV]
6366

@@ -680,8 +683,11 @@ Detailed field description
680683
Extensions
681684
~~~~~~~~~~
682685

683-
Additional columns, such as ``Color``, etc. may be specified.
684-
686+
Additional columns, such as ``Color``, etc. may be specified. Extensions
687+
that define operations on multiple PEtab problems need to employ a single
688+
PEtab YAML file as entrypoint to the analysis. This PEtab file may leave all
689+
fields specifying files empty and reference the other PEtab problems in the
690+
extension specific fields.
685691

686692
Examples
687693
~~~~~~~~
@@ -698,7 +704,7 @@ To link the SBML model, measurement table, condition table, etc. in an
698704
unambiguous way, we use a `YAML <https://yaml.org/>`_ file.
699705

700706
This file also allows specifying a PEtab version (as the format is not unlikely
701-
to change in the future).
707+
to change in the future) and employed PEtab extensions.
702708

703709
Furthermore, this can be used to describe parameter estimation problems
704710
comprising multiple models (more details below).

doc/tutorial.rst

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ For more details, we refer to the original publication.
2020

2121
A PEtab problem consists of 1) an SBML model of a biological system, 2)
2222
condition, observable and measurement definitions, and 3) the
23-
specification of the parameters. We will show how to generate the
24-
respective files in the following.
23+
specification of the parameters and 4) a configuration file that lists all of
24+
these files. We will show how to generate the respective files in the following.
2525

2626
1. The model
2727
++++++++++++
@@ -324,11 +324,10 @@ https://petab.readthedocs.io/en/latest/documentation_data_format.html#visualizat
324324
5. YAML file
325325
++++++++++++
326326

327-
To group the previously mentioned PEtab files, a YAML file can be used,
328-
defining which files constitute a PEtab problem. While being optional,
329-
this makes it easier to import a PEtab problem into tools, and allows
330-
reusing files for different PEtab problems. This file has the following
331-
format (``Boehm_JProteomeRes2014.yaml``):
327+
To group the previously mentioned PEtab files, a YAML file must be used,
328+
defining which files constitute a PEtab problem. This makes it easier to import
329+
a PEtab problem into tools, and allows reusing files for different PEtab
330+
problems. This file has the following format (``Boehm_JProteomeRes2014.yaml``):
332331

333332
.. code-block:: yaml
334333

0 commit comments

Comments
 (0)