v2: linter doesn't check that placeholder IDs are unique
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 48/100
Rechercherichtung
Start from Problem.validate() in the petab.v2 Problem class and the reproducer in the issue, which adds two observables sharing the placeholder a. Add a check that collects placeholder IDs from both placeholder columns across all observables and reports duplicates, plus IDs that collide with model species, observable, parameter, condition or experiment IDs. Done when the reproducer reports an issue and the existing validation tests still pass.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
The PEtab v2 spec requires the IDs in observablePlaceholders and noisePlaceholders to be "valid PEtab identifiers that have not been introduced elsewhere", and all identifiers to be globally unique within the problem. This was discussed in PEtab-dev/PEtab#594 (starting at https://github.com/PEtab-dev/PEtab/issues/594#issuecomment-2850839215) and specified in PEtab-dev/PEtab#625.
Problem.validate() doesn't check this. Tested on main (5fb4066), adding observables and measurements to an otherwise valid problem (Boehm_JProteomeRes2014 from Benchmark-Models-PEtab):
| Case | Result |
|---|---|
Same placeholder a in observablePlaceholders of two observables |
no issues |
a as observable placeholder of one observable and noise placeholder of another |
no issues |
Placeholder ID = model species ID (STAT5A) |
no issues |
| Placeholder ID = observable ID | no issues |
Placeholder ID = parameter table ID (ratio) |
reported, but only indirectly: "Extraneous parameter(s) in parameter table" / "is not allowed to occur in the parameters table" |
Reproducer for the first case:
from petab.v2 import Problem
p = Problem.from_yaml("Boehm_JProteomeRes2014/v2/problem.yaml")
p.add_observable("o1", "a * STAT5A", noise_formula="1", observable_placeholders=["a"])
p.add_observable("o2", "a + STAT5A", noise_formula="1", observable_placeholders=["a"])
p.add_measurement("o1", time=1, measurement=1, observable_parameters=[2])
p.add_measurement("o2", time=1, measurement=1, observable_parameters=[3])
print(p.validate()) # no issues
I'd suggest a validation task that collects all placeholder IDs, from both columns and all observables, and reports:
- duplicates among placeholders, including the same ID within one observable's observable and noise placeholders;
- placeholders that coincide with any other ID in the problem: model entities, parameter/observable/condition/experiment IDs, mapping table
petabEntityIds, and so on.
The parameter table case could then get a clearer message than "Extraneous parameter(s)".
Drafted with AI assistance. 🤖
- Vorherrschende Sprache
- Python
- Sterne
- 18
- Forks
- 9
- Ø Merge
- 1 T. 8 Std.
- Gemergte PRs (30 T.)
- 21
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus PEtab-dev/libpetab-python
-
`petab1to2`: random column name for pre-existing `experimentId` columnEvtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
PEtab-dev/libpetab-python#568 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 73/100
PEtab-dev/libpetab-python#566 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
PEtab-dev/libpetab-python#549 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
PEtab-dev/libpetab-python#525 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Deprecation warnings with pandas 3.1 (`inplace`, `read_csv(float_precision=...)`)Evtl. vergeben @dweindl hat das vor 3 Tagen übernommen. Offen
PEtab-dev/libpetab-python#570 · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in PEtab-dev/libpetab-python
Ähnliche Issues
-
The changelog workflow excludes otelbot but not dependabot, so every Dependabot pull request fails the changelog checkEvtl. vergeben @ocelotl hat das heute übernommen. Offen
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 82/100
open-telemetry/opentelemetry-python#5825 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
cuga-project/cuga-agent#1020 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 70/100
microsoft/playwright#43640 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
stac-utils/stac-fastapi-elasticsearch-opensearch#965 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
from-review-extraction library privacy python severity:suggested
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 83/100
LearningCircuit/local-deep-research#7951 ·
Maintainer antworten meist innerhalb von 2 Tagen