Mercurial > repos > tduigou > get_sbml_model
view get_infos.py @ 5:80c32f0cb716 draft
planemo upload for repository https://github.com/brsynth/synbiocad-galaxy-wrappers commit 1e01b679611d980f87089184e7d8a538b96d68c7
author | tduigou |
---|---|
date | Tue, 30 May 2023 21:03:04 +0000 |
parents | 1482291aaa5c |
children | 8dc4d3964ab5 |
line wrap: on
line source
from argparse import ArgumentParser from libsbml import ( readSBMLFromFile ) from requests import get as r_get def entry_point(): parser = ArgumentParser('Returns cell informations') parser.add_argument( 'infile', type=str, help='SBML input file (xml)' ) parser.add_argument( '--comp', type=str, help='Path to store cell compartments' ) parser.add_argument( '--biomass', type=str, help='Path to store biomass reaction ID' ) parser.add_argument( '--hostid', type=str, help='Extended name of the host organism' ) parser.add_argument( '--taxid', type=str, help='Path to store host taxonomy ID' ) params = parser.parse_args() sbml_doc = readSBMLFromFile(params.infile) if params.comp: compartments = sbml_doc.getModel().getListOfCompartments() with open(params.comp, 'w') as f: f.write('#ID\tNAME\n') for comp in compartments: f.write(f'{comp.getId()}\t{comp.getName()}\n') if params.biomass: reactions = sbml_doc.getModel().getListOfReactions() with open(params.biomass, 'w') as f: f.write('#ID\n') for rxn in reactions: if 'biomass' in rxn.getId().lower(): f.write(f'{rxn.getId()}\n') if params.taxid: # Extended Name server = 'http://bigg.ucsd.edu/api/v2/models/' ext = params.hostid r = r_get(server+ext, headers={ "Content-Type" : "application/json"}) if not r.ok: print(f"Warning: unable to retrieve host name for id {params.hostid}") else: try: hostname = r.json()["organism"] except KeyError: print(f"Warning: unable to retrieve host name for id {params.hostid}") hostname = '' if not hostname: taxid = '' else: # TAXON ID server = 'https://rest.ensembl.org' ext = f'/taxonomy/id/{hostname}?' r = r_get(server+ext, headers={ "Content-Type" : "application/json"}) if not r.ok: print(f"Warning: unable to retrieve taxonomy ID for host organism {hostname}") else: try: taxid = r.json()["id"] except KeyError: print(f"Warning: unable to retrieve taxonomy ID for host organism {hostname}") taxid = '' with open(params.taxid, 'w') as f: f.write('#ID\n') f.write(f'{taxid}\n') if __name__ == "__main__": entry_point()