Mercurial > repos > iuc > gem_flux_distribution
annotate gem_extract_exchange.py @ 0:1c71660496fb draft default tip
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
| author | iuc | 
|---|---|
| date | Fri, 13 Dec 2024 21:33:11 +0000 | 
| parents | |
| children | 
| rev | line source | 
|---|---|
| 0 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 1 import argparse | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 2 | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 3 import cobra | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 4 | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 5 | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 6 def read_model(model_location): | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 7 model = cobra.io.read_sbml_model(model_location) | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 8 return model | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 9 | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 10 | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 11 def get_exchange_reactions_info(model): | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 12 exchange_reactions = model.exchanges | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 13 exchange_reactions_info = [] | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 14 for reaction in exchange_reactions: | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 15 exchange_reactions_info.append( | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 16 [ | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 17 reaction.id, | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 18 reaction.name, | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 19 reaction.reaction, | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 20 reaction.lower_bound, | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 21 reaction.upper_bound | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 22 ]) | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 23 txt_object = ( | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 24 "reaction_id;reaction_name;reaction_stoichiometry;" | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 25 "lower_bound;upper_bound\n" | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 26 ) | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 27 for reaction in exchange_reactions_info: | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 28 txt_object += ";".join([str(x) for x in reaction]) + "\n" | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 29 return txt_object | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 30 | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 31 | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 32 def __main__(): | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 33 | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 34 # Parsing arguments | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 35 parser = argparse.ArgumentParser( | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 36 prog="GEM ", | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 37 description="This program retrieves the exchange fluxes " | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 38 "of a GEM model to be used in Galaxy.", | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 39 epilog="Adding an epilog, but doubt it's needed.", | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 40 ) | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 41 parser.add_argument( | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 42 "-m", | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 43 "--cb_model_location", | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 44 dest="cb_model_location", | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 45 action="store", | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 46 type=str, | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 47 default=None, | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 48 required=True, | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 49 help="The model to use." | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 50 ) | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 51 parser.add_argument( | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 52 "-output", | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 53 "--output", | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 54 dest="out_file", | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 55 action="store", | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 56 type=str, | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 57 default=None, | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 58 required=True, | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 59 help="The output file." | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 60 ) | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 61 args = parser.parse_args() | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 62 | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 63 # Reading model from file | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 64 try: | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 65 cb_model = read_model(args.cb_model_location) | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 66 except Exception as e: | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 67 raise Exception( | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 68 "The model could not be read. Ensure it is in correct SBML format." | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 69 ) from e | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 70 | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 71 # Getting exchange reactions info | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 72 answer = get_exchange_reactions_info(cb_model) | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 73 | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 74 # Writing exchange reactions info to file | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 75 with open(args.out_file, "w") as outfile: | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 76 outfile.write(str(answer)) | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 77 | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 78 | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 79 if __name__ == "__main__": | 
| 
1c71660496fb
planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
 iuc parents: diff
changeset | 80 __main__() | 
