Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

v2: linter doesn't check that placeholder IDs are unique

Offen
#555 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

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
Issue-Typ
Feature
Klarheit
Größtenteils klar
Aktivitätsstatus
Aktiv
Tech-Stack
python
Bereich
data

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

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus PEtab-dev/libpetab-python

Alle Issues in PEtab-dev/libpetab-python

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.