v2: linter doesn't check that placeholder IDs are unique
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Facilidade para iniciantes
- 48/100
Direção de pesquisa
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.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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. 🤖
- Linguagem predominante
- Python
- Estrelas
- 18
- Forks
- 9
- Merge médio
- 1d 21h
- PRs com merge (30d)
- 25
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de PEtab-dev/libpetab-python
-
`petab1to2`: random column name for pre-existing `experimentId` columnTalvez já em andamento @dweindl assumiu há 1 dia. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
PEtab-dev/libpetab-python#568 · 1 responsável ·
Mantenedores costumam responder em até 1 dia
-
`petab_files_1to2` keeps a stale model file when converting into a non-empty output directoryAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 73/100
PEtab-dev/libpetab-python#566 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
PEtab-dev/libpetab-python#549 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
PEtab-dev/libpetab-python#525 ·
Mantenedores costumam responder em até 1 dia
-
`petablint` fails for PEtab v2 problems with only warningsTalvez já em andamento @dweindl assumiu há 1 dia. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 35/100
PEtab-dev/libpetab-python#567 · 1 responsável ·
Mantenedores costumam responder em até 1 dia
Todas as issues de PEtab-dev/libpetab-python
Issues semelhantes
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 85/100
521xueweihan/HelloGitHub#4115 ·
-
get_lldp_neighbors_detail: query asks for 'max-address' (typo for 'mac-address'), so remote_chassis_id is always emptyTalvez já em andamento @Jah-yee assumiu hoje. Aberta
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 88/100
-
lesson-submission pending-review
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 74/100
Ikalus1988/MisakaNet#3899 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
aws-samples/sample-per-model-bedrock#549 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 90/100