Mercurial > repos > tduigou > get_sbml_model
view get_infos.py @ 2:fa893f77dc22 draft
planemo upload for repository https://github.com/brsynth/synbiocad-galaxy-wrappers commit 18fcec17fb6415ad5a59b9bcfa853e755c768e6f
author | tduigou |
---|---|
date | Mon, 24 Apr 2023 14:49:53 +0000 |
parents | ceffb29b60c9 |
children | 1482291aaa5c |
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"*** Error: unable to retrieve host name for id {params.hostid}") return -1 # 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()["parent"]["id"] except KeyError: print(f"Warning: unable to retrieve taxonomy ID for host organism {hostname}") with open(params.taxid, 'w') as f: f.write('#ID\n') f.write(f'{taxid}\n') if __name__ == "__main__": entry_point()