annotate gem_flux_distribution.py @ 0:d9893d41dd6a 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:34 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
1 import argparse
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
2
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
3 import cobra
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
4 import pandas as pd
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
5
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
6
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
7 def __main__():
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
8 parser = argparse.ArgumentParser(
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
9 prog="FluxDistribution",
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
10 description="This program calculates the flux distribution of a GEM",
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
11 epilog="Adding an epilog, but doubt it's needed.",
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
12 )
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
13 parser.add_argument(
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
14 "-m",
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
15 "--cb_model_location",
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
16 dest="cb_model_location",
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
17 action="store",
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
18 type=str,
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
19 default=None,
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
20 required=True,
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
21 help="The model to use."
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
22 )
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
23 parser.add_argument(
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
24 "-output",
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
25 "--output",
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
26 dest="out_file",
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
27 action="store",
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
28 type=str,
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
29 default=None,
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
30 required=True,
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
31 help="The output file."
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
32 )
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
33 parser.add_argument(
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
34 "-u",
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
35 "--uptake_constraints_file",
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
36 dest="uptake_constraints_file",
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
37 action="store",
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
38 type=str,
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
39 default=None,
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
40 required=False,
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
41 help="File containing new uptake constraits."
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
42 )
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
43
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
44 args = parser.parse_args()
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
45
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
46 try:
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
47 cb_model = cobra.io.read_sbml_model(args.cb_model_location)
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
48 except Exception as e:
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
49 raise Exception(
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
50 "The model could not be read. Ensure "
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
51 "it is in correct SBML format."
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
52 ) from e
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
53
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
54 if args.uptake_constraints_file is not None\
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
55 and args.uptake_constraints_file != "None":
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
56 constraints_df = pd.read_csv(
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
57 args.uptake_constraints_file,
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
58 sep=";",
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
59 header=0,
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
60 index_col=False
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
61 )
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
62 for _, row in constraints_df.iterrows():
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
63 cb_model.reactions.get_by_id(
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
64 row["reaction_id"]
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
65 ).lower_bound = row["lower_bound"]
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
66 cb_model.reactions.get_by_id(
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
67 row["reaction_id"]
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
68 ).upper_bound = row["upper_bound"]
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
69
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
70 # do pFBA
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
71 solution = cobra.flux_analysis.pfba(cb_model)
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
72
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
73 # make a dataframe with the reaction names,
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
74 # reaction ids, and flux distribution
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
75 flux_distribution = pd.DataFrame(
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
76 columns=["reaction_name", "reaction_id", "flux"]
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
77 )
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
78
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
79 flux_distribution["reaction_name"] = \
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
80 [reaction.name for reaction in cb_model.reactions]
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
81 flux_distribution["reaction_id"] = \
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
82 [reaction.id for reaction in cb_model.reactions]
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
83 flux_distribution["flux"] = \
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
84 [solution.fluxes[reaction.id] for reaction in cb_model.reactions]
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
85
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
86 flux_distribution.to_csv(args.out_file, sep=";", index=False)
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
87
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
88
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
89 if __name__ == "__main__":
d9893d41dd6a planemo upload for repository https://github.com/AlmaasLab/elixir-galaxy-tools-systemsbiology commit 3f7bec1264a86e1488ee1315dbac0f44675f5171
iuc
parents:
diff changeset
90 __main__()