ModelPolisher
ModelPolisher copied to clipboard
MetaNetX annotations not added properly
When reading a model created with ModelPolisher with COBRApy, a series of warnings appear pointed to the fact that the MetaNetX annotations are not added in the desired form using identifiers.org. The following is an example of such a warning for the MetaNetX ID MNXR98569:
MNXR98569 does not conform to 'http(s)://identifiers.org/collection/id' or'http(s)://identifiers.org/COLLECTION:id
Here is the annotation entry of the .XML file:
<bqbiol:is>
<rdf:Bag>
<rdf:li rdf:resource="MNXR98569" />
<rdf:li rdf:resource="https://identifiers.org/bigg.reaction/EX_glc__D_e" />
<rdf:li rdf:resource="https://identifiers.org/biocyc/META:TRANS-RXN0-574" />
<rdf:li rdf:resource="https://identifiers.org/metanetx.reaction/MNXR100188" />
<rdf:li rdf:resource="https://identifiers.org/seed.reaction/rxn08617" />
<rdf:li rdf:resource="https://identifiers.org/seed.reaction/rxn09679" />
<rdf:li rdf:resource="https://identifiers.org/seed.reaction/rxn09875" />
</rdf:Bag>
</bqbiol:is>
Yes, this is a bug. The correct prefixes are
https://registry.identifiers.org/registry/metanetx.chemical
https://identifiers.org/metanetx.chemical
https://registry.identifiers.org/registry/metanetx.reaction
https://identifiers.org/metanetx.reaction
https://registry.identifiers.org/registry/metanetx.compartment
https://identifiers.org/metanetx.compartment
If I am not mistaken the ModelPolisher just draws this from AnnotateDB, right? See here: this is called via
BiGGAnnotation::annotateSpecies
BiGGAnnotation::annotateListOfSpecies
BiGGAnnotation::annotate(Model)
BiGGAnnotation::annotate(SBMLDocument)
ModelPolisher::polish(SBMLDocument ...)
If so, and this is basically an upstream bug, it does not really seem sensible to me to try and fix it in the Polisher. I'd be happy to help fix it in AnnotateDB though.
Thanks. So this is most likely my bug in the annotation database :/ Just opened an issue https://github.com/matthiaskoenig/annotatedb/issues/42 I wanted to make an update of the database in the next few days and can fix this as part of it.
@NantiaL I'll close this for now then
Keep it open until it is fixed upstream, so other users can find it
I just realized this is also an issue with the data in BiGG too, so this issue is very much unresolved anyways.
I can normalize this in annotatedb, i.e. add the prefixes.
Update for the problem described in issue #103 As I described before I got COBRApy warnings for my model created with CarveMe after ModelPolisher was used. These warnings were like stated above due to 165 MetaNetX identifiers being not properly added to the annotations. After taking a closer look at some of these identifiers I realised - as stated in issue #103 - that two MetaNetX identifiers were added by ModelPolisher. Today, I analysed the first 20 MetaNetX identifiers. So far I encountered four cases A to D. In each case the incorrectly added MetaNetX identifier could be removed (see Table). Case A: Searching the improper added MetaNetX identifier in the MetaNetX database yielded an identifier that was already present and fits to the other specified database identifiers. Case B: Searching the improper added MetaNetX identifier in the MetaNetX database yielded the same identifier as is found with the properly added MetaNetX identifier. Case C: Searching the improper added MetaNetX identifier in the MetaNetX database shows that it does not conform with any of the other specified database identifiers. Case D: Searching the improper added MetaNetX identifier in the MetaNetX database yielded more than one result of which at least one yielded the same identifier as is found with the properly added MetaNetX identifier. This case contains four different scenarios so far. Either only one of the non-overlapping MetaNetX identifiers (D0) or all MetaNetX identifiers found with the improper added identifier (D1) or only the overlapping MetaNetX identifiers (D2) conform(s) to the other specified database identifiers. Subcase D3 is a combination of subcases D0 and D2.
| Case | MetaNetX ID | Notes | Status |
|---|---|---|---|
| A | MNXR98054 | Searching in MetaNetX yielded: MNXR94968, which is already present | Removed |
| B | MNXR98057 | Searching in MetaNetX yielded: MNXR190466, https://identifiers.org/metanetx.reaction/MNXR94983 also leads to: MNXR190466 |
Removed & Replaced ID in link with MNXR190466 |
| C | MNXR98064 | Searching in MetaNetX yielded: MNXR137954, does not conform with specified BiGG ID! | Removed |
| D0 | MNXR98195 | Searching in MetaNetX yielded: MNXR152734 & MNXR152735, https://identifiers.org/metanetx.reaction/MNXR95190 also leads to: MNXR152734, Only MNXR152735 fits to specified BiGG & SEED IDs! |
Removed & Replaced ID in link with MNXR152735 |
| D1 | MNXR98220 | Searching in MetaNetX yielded: MNXR190115 & MNXR152783, https://identifiers.org/metanetx.reaction/MNXR95292 also leads to: MNXR152783, Both IDs fit to most of the other database IDs |
Replaced with https://identifiers.org/metanetx.reaction/MNXR190115 & Replaced ID in this link with MNXR152783 & Put both identifiers close to each other |
| D2 | MNXR98974 | Searching in MetaNetX yielded: MNXR151498 & MNXR151499, https://identifiers.org/metanetx.reaction/MNXR131128 also leads to: MNXR151498, Only MNXR151498 fits to all other database IDs! |
Removed & Replaced ID in link with MNXR151498 |
| D3 | MNXR98492 | Searching in MetaNetX yielded: MNXR153613, MNXR153614, MNXR192550 & MNXR192551, https://identifiers.org/metanetx.reaction/MNXR99663 also leads to: MNXR153613, Only MNXR153613 & MNXR192550 fit to most of the other database IDs! |
Replaced with https://identifiers.org/metanetx.reaction/MNXR153613 & Replaced ID in this link with MNXR192550 & Put both identifiers close to each other |
Update on this problem: After I resolved all 165 improper added MetaNetX identifiers by hand I came to the conclusion that the underlying problem can be divided into two sub-problems.
- Problem 1: Most of the MetaNetX identifiers from the BiGG database seem to be deprecated.
- Problem 2: Either AnnotateDB or the BiGG database contains for some entries two MetaNetX identifiers from which one is added as URI to the model while for the other only the identifier is added to the annotations.