Source code for padmet_utils.connection.extract_rxn_with_gene_assoc
# -*- coding: utf-8 -*-
"""
Description:
From a given sbml file, create a sbml with only the reactions associated to a gene.
Need for a reaction, in section 'note', 'GENE_ASSOCIATION': ....
::
usage:
extract_rxn_with_gene_assoc.py --sbml=FILE --output=FILE [-v]
options:
-h --help Show help.
--sbml=FILE path to the sbml file
--output=FILE path to the sbml output (with only rxn with genes assoc)
-v print info
"""
import libsbml
from padmet.utils.sbmlPlugin import parseNotes
import docopt
[docs]def main():
args = docopt.docopt(__doc__)
sbml_file = args["--sbml"]
output = args["--output"]
verbose = args["-v"]
reader = libsbml.SBMLReader()
sbml_document = reader.readSBML(sbml_file)
for i in range(sbml_document.getNumErrors()):
print(sbml_document.getError(i).getMessage())
extract_rxn_with_gene_assoc(sbml_document, output, verbose)
[docs]def extract_rxn_with_gene_assoc(sbml_document, output, verbose=False):
"""
From a given sbml document, create a sbml with only the reactions associated to a gene.
Need for a reaction, in section 'note', 'GENE_ASSOCIATION': ....
Parameters
----------
sbml_file: libsbml.document
sbml document
output: str
pathname of the output sbml
"""
sbml_model = sbml_document.getModel()
listOfReactions = sbml_model.getListOfReactions()
reactions_to_remove = []
for reaction in listOfReactions:
if "GENE_ASSOCIATION" not in list(parseNotes(reaction).keys()):
reactions_to_remove.append(reaction.getId())
for rId in reactions_to_remove:
listOfReactions.remove(rId)
libsbml.writeSBMLToFile(sbml_document, output)
if __name__ == "__main__":
main()