v2: linter doesn't check that placeholder IDs are unique
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 48/100
Piste de recherche
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.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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. 🤖
- Langage dominant
- Python
- Étoiles
- 18
- Forks
- 9
- Merge moyen
- 1 j 21 h
- PR mergées (30 j)
- 25
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de PEtab-dev/libpetab-python
-
`petab1to2`: random column name for pre-existing `experimentId` columnPeut-être pris @dweindl l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
PEtab-dev/libpetab-python#568 · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
`petab_files_1to2` keeps a stale model file when converting into a non-empty output directoryOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 73/100
PEtab-dev/libpetab-python#566 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
PEtab-dev/libpetab-python#549 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
PEtab-dev/libpetab-python#525 ·
Les mainteneurs répondent en général sous 1 jour
-
`petablint` fails for PEtab v2 problems with only warningsPeut-être pris @dweindl l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 35/100
PEtab-dev/libpetab-python#567 · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de PEtab-dev/libpetab-python
Issues similaires
-
The changelog workflow excludes otelbot but not dependabot, so every Dependabot pull request fails the changelog checkPeut-être pris @ocelotl l’a pris aujourd’hui. Ouverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 82/100
open-telemetry/opentelemetry-python#5825 ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
cuga-project/cuga-agent#1020 ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 70/100
microsoft/playwright#43640 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
stac-utils/stac-fastapi-elasticsearch-opensearch#965 ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
Les mainteneurs répondent en général sous 1 jour