Source code for test_annotation

from os.path import join

from cobra.io import read_sbml_model, write_sbml_model


[docs]def _check_sbml_annotations(model): """Checks the annotations from the annotation.xml. """ assert model is not None # model annotation # {'bigg.model': 'e_coli_core', 'doi': '10.1128/ecosalplus.10.2.1', # 'taxonomy': '511145'} annotation = model.annotation assert annotation is not None assert len(annotation) == 3 for key in ["bigg.model", "doi", "taxonomy"]: assert key in annotation assert annotation["bigg.model"] == "e_coli_core" assert annotation["doi"] == "10.1128/ecosalplus.10.2.1" assert annotation["taxonomy"] == "511145" # gene annotation # {'asap': 'ABE-0006162', 'ncbigene': '946368', 'uniprot': 'P33221', # 'ncbigi': 'gi:16129802', 'ecogene': 'EG11809'} annotation = model.genes.G1.annotation assert len(annotation) == 5 for key in ["asap", "ncbigene", "uniprot", "ncbigi", "ecogene"]: assert key in annotation assert annotation["asap"] == "ABE-0006162" assert annotation["ncbigene"] == "946368" assert annotation["uniprot"] == "P33221" assert annotation["ncbigi"] == "gi:16129802" assert annotation["ecogene"] == "EG11809" # compartment annotation # FIXME: add tests with first class compartment model # annotation = model.compartments.c.annotation # assert len(annotation) == 1 # for key in ["bigg.compartment"]: # assert key in annotation # assert annotation["bigg.compartment"] == "c" # metabolite/species annotation # {'inchi': 'InChI=1S/C3H8O2/c1-3(5)2-4/h3-5H,2H2,1H3/t3-/m0/s1', # 'bigg.metabolite': '13dpg', 'chebi': ['CHEBI:11881', 'CHEBI:16001', # 'CHEBI:1658', 'CHEBI:20189', 'CHEBI:57604'], # 'metanetx.chemical': 'MNXM261', # 'kegg.compound': ['C00236', 'C02917'], # 'seed.compound': 'cpd00203', 'hmdb': ['HMDB62758', 'HMDB06213'], # 'biocyc': 'META:DPG'} annotation = model.metabolites.A.annotation for key in [ "inchi", "bigg.metabolite", "chebi", "metanetx.chemical", "kegg.compound", "seed.compound", "hmdb", "biocyc", ]: assert key in annotation assert ( annotation["inchi"] == "InChI=1S/C3H8O2/c1-3(5)2-4/h3-5H,2H2,1H3/t3-/m0/s1" ) # noqa: E501 # reaction annotation # {'kegg.reaction': 'R00228', 'sbo': 'SBO:0000375', # 'ec-code': '1.2.1.10', 'rhea': ['23288', '23289', '23290', '23291'], # 'metanetx.reaction': 'MNXR95210', 'bigg.reaction': 'ACALD', # 'biocyc': 'META:ACETALD-DEHYDROG-RXN'} annotation = model.reactions.R1.annotation for key in [ "kegg.reaction", "sbo", "ec-code", "rhea", "metanetx.reaction", "bigg.reaction", "biocyc", ]: assert key in annotation assert annotation["biocyc"] == "META:ACETALD-DEHYDROG-RXN"
[docs]def test_read_sbml_annotations(data_directory): """Test reading and writing annotations.""" with open(join(data_directory, "annotation.xml"), "r") as f_in: model1 = read_sbml_model(f_in) _check_sbml_annotations(model1)
[docs]def test_read_write_sbml_annotations(data_directory, tmp_path): """Test reading and writing annotations.""" with open(join(data_directory, "annotation.xml"), "r") as f_in: model1 = read_sbml_model(f_in) sbml_path = join(str(tmp_path), "test.xml") with open(sbml_path, "w") as f_out: write_sbml_model(model1, f_out) with open(sbml_path, "r") as f_in: model2 = read_sbml_model(f_in) _check_sbml_annotations(model2)