gsrap 0.8.1__py3-none-any.whl → 0.8.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
gsrap/mkmodel/mkmodel.py CHANGED
@@ -41,8 +41,12 @@ from ..commons import log_unbalances
41
41
  from ..commons import format_expansion
42
42
  from ..commons import comparative_table
43
43
  from ..commons import download_keggorg
44
+ from ..commons import initialize_model
45
+ from ..commons import get_memote_results_dict
46
+
44
47
 
45
48
  from ..runsims.biosynth import biosynthesis_on_media
49
+ from ..runsims.simplegrowth import grow_on_media
46
50
 
47
51
  from ..parsedb.cycles import verify_egc_all
48
52
 
@@ -103,7 +107,7 @@ def create_model_incore(params):
103
107
 
104
108
  ###### GAPFILLING
105
109
  # force inclusion of reactions:
106
- include_forced(logger, model, universe, args.force_inclusion)
110
+ include_forced(logger, model, universe, args.include)
107
111
 
108
112
  # remove missing conditional precursors + get the 'cond_col_dict' dict.
109
113
  # 'cond_col_dict' is str-to-str: {'pheme_c': 'M00868: 1/8; M00121: 2/12;', 'hemeO_c': 'gr_HemeO: 0/1'}
@@ -114,15 +118,15 @@ def create_model_incore(params):
114
118
  if response == 1: return 1
115
119
 
116
120
  # gap-fill based on media:
117
- df_B = gapfill_on_media(logger, model, universe, dbexp, args.gap_fill, cond_col_dict, args.exclude_orphans)
121
+ df_B = gapfill_on_media(logger, model, universe, dbexp, args.gapfill, cond_col_dict, args.excludeorp)
118
122
  if type(df_B)==int: return 1
119
123
 
120
124
  # force removal of reactions
121
- setattr(args, 'force_removal', '-') # experimental feature, not public. It's main purpose was to test gap-filling in biolog_on_media().
122
- remove_forced(logger, model, universe, args.force_removal)
125
+ setattr(args, 'remove', '-') # experimental feature, not public. It's main purpose was to test gap-filling in biolog_on_media().
126
+ remove_forced(logger, model, universe, args.remove)
123
127
 
124
128
  # perform Biolog(R) curation based on media
125
- df_P = biolog_on_media(logger, model, universe, dbexp, args.gap_fill, args.biolog, args.exclude_orphans, args.cnps)
129
+ df_P = biolog_on_media(logger, model, universe, dbexp, args.gapfill, args.biolog, args.excludeorp, args.cnps)
126
130
  if type(df_P)==int: return 1
127
131
 
128
132
 
@@ -142,12 +146,12 @@ def create_model_incore(params):
142
146
 
143
147
 
144
148
 
145
- ###### CHECKS
149
+ ###### CHECKS 1
146
150
  # check erroneous EGCs
147
151
  verify_egc_all(logger, model, args.outdir)
148
152
 
149
153
  # check blocked metabolites / dead-ends
150
- df_S = biosynthesis_on_media(logger, model, dbexp, args.gap_fill, args.biosynth)
154
+ df_S = biosynthesis_on_media(logger, model, dbexp, args.gapfill, args.biosynth)
151
155
  if type(df_S)==int: return 1
152
156
 
153
157
 
@@ -155,6 +159,16 @@ def create_model_incore(params):
155
159
  ###### POLISHING 3
156
160
  # reset growth environment befor saving the model
157
161
  gempipe.reset_growth_env(model)
162
+
163
+ # initialize model
164
+ response = initialize_model(logger, model, dbexp, args.initialize, args.gapfill)
165
+ if response==1: return 1
166
+
167
+
168
+
169
+ ###### CHECKS 2
170
+ # compute Memote metrics
171
+ memote_results_dict = get_memote_results_dict(logger, model)
158
172
 
159
173
 
160
174
 
@@ -165,7 +179,7 @@ def create_model_incore(params):
165
179
  cobra.io.write_sbml_model(model, f'{args.outdir}/{model.id}.xml') # SBML # groups are saved only to SBML
166
180
  logger.info(f"'{args.outdir}/{model.id}.xml' created!")
167
181
  force_id_on_sbml(f'{args.outdir}/{model.id}.xml', model.id) # force introduction of the 'id=""' field
168
- sheets_dict = write_excel_model(model, f'{args.outdir}/{model.id}.mkmodel.xlsx', args.nofigs, None, df_B, df_P, df_S)
182
+ sheets_dict = write_excel_model(model, f'{args.outdir}/{model.id}.mkmodel.xlsx', args.nofigs, memote_results_dict, None, df_B, df_P, df_S)
169
183
  logger.info(f"'{args.outdir}/{model.id}.mkmodel.xlsx' created!")
170
184
 
171
185
 
@@ -27,9 +27,8 @@ def parse_eggnog(model, eggnog, idcollection_dict):
27
27
 
28
28
 
29
29
  # PART 2. get reactions in the organism (even the GPR is not complete)
30
- kr_to_kos = idcollection_dict['kr_to_kos']
31
30
  krs_org = set()
32
- for kr, kos in kr_to_kos.items():
31
+ for kr, kos in idcollection_dict['kr_to_kos'].items():
33
32
  if any([ko in kos_org for ko in kos]):
34
33
  krs_org.add(kr)
35
34
 
@@ -49,9 +48,34 @@ def parse_keggorg(keggorg, outdir, idcollection_dict):
49
48
 
50
49
 
51
50
  # PART 2. get reactions in the organism (even the GPR is not complete)
52
- kr_to_kos = idcollection_dict['kr_to_kos']
53
51
  krs_org = set()
54
- for kr, kos in kr_to_kos.items():
52
+ for kr, kos in idcollection_dict['kr_to_kos'].items():
53
+ if any([ko in kos_org for ko in kos]):
54
+ krs_org.add(kr)
55
+
56
+
57
+ return krs_org
58
+
59
+
60
+
61
+ def parse_taxon(taxon, idcollection_dict):
62
+
63
+
64
+ # formatting of --taxon was already verified at startup.
65
+ # also the presence of 'ko_to_taxa' in idcollection_dict was veryfied at startup.
66
+ level, name = taxon.split(':')
67
+
68
+
69
+ # PART 1. get KO codes available
70
+ kos_org = set()
71
+ for ko in idcollection_dict['ko_to_taxa'].keys():
72
+ if name in idcollection_dict['ko_to_taxa'][ko][level]:
73
+ kos_org.add(ko)
74
+
75
+
76
+ # PART 2. get reactions in the organism (even the GPR is not complete)
77
+ krs_org = set()
78
+ for kr, kos in idcollection_dict['kr_to_kos'].items():
55
79
  if any([ko in kos_org for ko in kos]):
56
80
  krs_org.add(kr)
57
81
 
@@ -60,7 +84,7 @@ def parse_keggorg(keggorg, outdir, idcollection_dict):
60
84
 
61
85
 
62
86
 
63
- def check_completeness(logger, model, progress, module, focus, eggnog, keggorg, idcollection_dict, summary_dict, outdir):
87
+ def check_completeness(logger, model, progress, module, focus, taxon, eggnog, keggorg, idcollection_dict, summary_dict, outdir):
64
88
  # check KEGG annotations in the universe model to get '%' of completeness per pathway/module.
65
89
 
66
90
 
@@ -69,6 +93,9 @@ def check_completeness(logger, model, progress, module, focus, eggnog, keggorg,
69
93
  if keggorg != '-': # keggorg has precedence
70
94
  kr_uni = parse_keggorg(keggorg, outdir, idcollection_dict)
71
95
  kr_uni_label = f"organism code '{keggorg}'"
96
+ elif taxon != '-':
97
+ kr_uni = parse_taxon(taxon, idcollection_dict)
98
+ kr_uni_label = f"taxon '{taxon}'"
72
99
  elif eggnog != '-':
73
100
  for eggfile in eggnog:
74
101
  eggset = parse_eggnog(model, eggfile, idcollection_dict)
@@ -17,7 +17,11 @@ from ..commons import show_contributions
17
17
  from ..commons import adjust_biomass_precursors
18
18
  from ..commons import count_undrawn_rids
19
19
  from ..commons import format_expansion
20
+ from ..commons import check_taxon
20
21
  from ..commons import download_keggorg
22
+ from ..commons import initialize_model
23
+ from ..commons import get_memote_results_dict
24
+
21
25
 
22
26
  from .introduce import introduce_metabolites
23
27
  from .introduce import introduce_reactions
@@ -43,6 +47,7 @@ from .cycles import verify_egc_all
43
47
  def main(args, logger):
44
48
 
45
49
 
50
+ ###### FORMAT ARGS NOT REQUIRING RESOURCES
46
51
  # adjust out folder path
47
52
  while args.outdir.endswith('/'):
48
53
  args.outdir = args.outdir[:-1]
@@ -74,17 +79,8 @@ def main(args, logger):
74
79
  if args.onlyauthor == '-': args.onlyauthor = None
75
80
 
76
81
 
77
- # format the --eggnog param
78
- args.eggnog = format_expansion(logger, args.eggnog) # now 'args.eggnog' could still be '-'
79
-
80
- # get the kegg organism if requested
81
- if args.keggorg != '-':
82
- response = download_keggorg(logger, args.keggorg, args.outdir)
83
- if response == 1: return 1
84
-
85
-
86
-
87
82
 
83
+ ###### LOAD LOCAL RESOURCES
88
84
  # check and extract the required 'gsrap.maps' file
89
85
  if os.path.exists(f'{args.inmaps}') == False:
90
86
  logger.error(f"File 'gsrap.maps' not found at {args.inmaps}.")
@@ -105,9 +101,27 @@ def main(args, logger):
105
101
  kegg_compound_to_others = pickle.load(handle)
106
102
  with resources.path("gsrap.assets", f"kegg_reaction_to_others.pickle") as asset_path:
107
103
  with open(asset_path, 'rb') as handle:
108
- kegg_reaction_to_others = pickle.load(handle)
104
+ kegg_reaction_to_others = pickle.load(handle)
105
+
106
+
107
+
108
+ ###### FORMAT/CHECK FOCUSING ARGS
109
+ # format the --eggnog param
110
+ args.eggnog = format_expansion(logger, args.eggnog) # now 'args.eggnog' could still be '-'
111
+
112
+ # check the --taxon param
113
+ if args.taxon != '-':
114
+ response = check_taxon(logger, args.taxon, idcollection_dict)
115
+ if response == 1: return 1
109
116
 
117
+ # get the kegg organism if requested
118
+ if args.keggorg != '-':
119
+ response = download_keggorg(logger, args.keggorg, args.outdir)
120
+ if response == 1: return 1
110
121
 
122
+
123
+
124
+ # DOWNLOAD ONLINE RESOURCES
111
125
  # get dbuni and dbexp:
112
126
  logger.info("Downloading gsrap database...")
113
127
  response = get_databases(logger)
@@ -163,7 +177,7 @@ def main(args, logger):
163
177
 
164
178
  ###### CHECKS 1
165
179
  # check universe completness
166
- df_C = check_completeness(logger, universe, args.progress, args.module, args.focus, args.eggnog, args.keggorg, idcollection_dict, summary_dict, args.outdir)
180
+ df_C = check_completeness(logger, universe, args.progress, args.module, args.focus, args.taxon, args.eggnog, args.keggorg, idcollection_dict, summary_dict, args.outdir)
167
181
  if type(df_C)==int: return 1
168
182
 
169
183
 
@@ -178,41 +192,56 @@ def main(args, logger):
178
192
  # check erroneous EGCs
179
193
  verify_egc_all(logger, universe, args.outdir)
180
194
 
181
- # check growth on minmal media
182
- df_G = grow_on_media(logger, universe, dbexp, args.media, '-', True)
183
- if type(df_G)==int: return 1
184
195
 
185
- # check blocked biomass precursors
186
- cond_col_dict = adjust_biomass_precursors(logger, universe, universe, 1.0)
187
- df_E = precursors_on_media(logger, universe, universe, dbexp, args.media, cond_col_dict, args.precursors)
188
- if type(df_E)==int: return 1
196
+ if not args.justparse:
197
+
198
+
199
+ ###### CHECKS 3
200
+ # check growth on minmal media
201
+ df_G = grow_on_media(logger, universe, dbexp, args.media, '-', True)
202
+ if type(df_G)==int: return 1
189
203
 
190
- # check blocked metabolites / dead-ends
191
- df_S = biosynthesis_on_media(logger, universe, dbexp, args.media, args.biosynth)
192
- if type(df_S)==int: return 1
204
+ # check blocked biomass precursors
205
+ cond_col_dict = adjust_biomass_precursors(logger, universe, universe, 1.0)
206
+ df_E = precursors_on_media(logger, universe, universe, dbexp, args.media, cond_col_dict, args.precursors)
207
+ if type(df_E)==int: return 1
208
+
209
+ # check blocked metabolites / dead-ends
210
+ df_S = biosynthesis_on_media(logger, universe, dbexp, args.media, args.biosynth)
211
+ if type(df_S)==int: return 1
193
212
 
194
213
 
195
214
 
196
- ###### POLISHING 2
197
- # reset growth environment befor saving the model
198
- gempipe.reset_growth_env(universe)
199
-
215
+ ###### POLISHING 2
216
+ # reset growth environment befor saving the model
217
+ gempipe.reset_growth_env(universe)
218
+
219
+ # initialize model
220
+ response = initialize_model(logger, universe, dbexp, args.initialize, args.media)
221
+ if response==1: return 1
222
+
223
+
224
+
225
+ ###### CHECKS 4
226
+ # compute Memote metrics
227
+ memote_results_dict = get_memote_results_dict(logger, universe)
228
+
200
229
 
201
230
 
202
- # output the universe
203
- logger.info("Writing universal model...")
204
- cobra.io.save_json_model(universe, f'{args.outdir}/universe.json')
205
- logger.info(f"'{args.outdir}/universe.json' created!")
206
- cobra.io.write_sbml_model(universe, f'{args.outdir}/universe.xml') # groups are saved only to SBML
207
- logger.info(f"'{args.outdir}/universe.xml' created!")
208
- force_id_on_sbml(f'{args.outdir}/universe.xml', 'universe') # force introduction of the 'id=""' field
209
- sheets_dict = write_excel_model(universe, f'{args.outdir}/universe.parsedb.xlsx', args.nofigs, df_E, None, None, df_S, df_C)
210
- logger.info(f"'{args.outdir}/universe.parsedb.xlsx' created!")
231
+ # output the universe
232
+ logger.info("Writing universal model...")
233
+ cobra.io.save_json_model(universe, f'{args.outdir}/universe.json')
234
+ logger.info(f"'{args.outdir}/universe.json' created!")
235
+ cobra.io.write_sbml_model(universe, f'{args.outdir}/universe.xml') # groups are saved only to SBML
236
+ logger.info(f"'{args.outdir}/universe.xml' created!")
237
+ force_id_on_sbml(f'{args.outdir}/universe.xml', 'universe') # force introduction of the 'id=""' field
238
+ sheets_dict = write_excel_model(universe, f'{args.outdir}/universe.parsedb.xlsx', args.nofigs, memote_results_dict, df_E, None, None, df_S, df_C)
239
+ logger.info(f"'{args.outdir}/universe.parsedb.xlsx' created!")
211
240
 
212
241
 
213
242
 
214
- ###### CHECKS 3
215
- # check if universal escher map os updated:
243
+ ###### CHECKS 4
244
+ # check if universal escher map is updated:
216
245
  count_undrawn_rids(logger, universe, lastmap)
217
246
 
218
247
 
@@ -27,9 +27,8 @@ def parse_eggnog(model, eggnog, idcollection_dict):
27
27
 
28
28
 
29
29
  # PART 2. get reactions in the organism (even the GPR is not complete)
30
- kr_to_kos = idcollection_dict['kr_to_kos']
31
30
  krs_org = set()
32
- for kr, kos in kr_to_kos.items():
31
+ for kr, kos in idcollection_dict['kr_to_kos'].items():
33
32
  if any([ko in kos_org for ko in kos]):
34
33
  krs_org.add(kr)
35
34
 
@@ -49,9 +48,34 @@ def parse_keggorg(keggorg, outdir, idcollection_dict):
49
48
 
50
49
 
51
50
  # PART 2. get reactions in the organism (even the GPR is not complete)
52
- kr_to_kos = idcollection_dict['kr_to_kos']
53
51
  krs_org = set()
54
- for kr, kos in kr_to_kos.items():
52
+ for kr, kos in idcollection_dict['kr_to_kos'].items():
53
+ if any([ko in kos_org for ko in kos]):
54
+ krs_org.add(kr)
55
+
56
+
57
+ return krs_org
58
+
59
+
60
+
61
+ def parse_taxon(taxon, idcollection_dict):
62
+
63
+
64
+ # formatting of --taxon was already verified at startup.
65
+ # also the presence of 'ko_to_taxa' in idcollection_dict was veryfied at startup.
66
+ level, name = taxon.split(':')
67
+
68
+
69
+ # PART 1. get KO codes available
70
+ kos_org = set()
71
+ for ko in idcollection_dict['ko_to_taxa'].keys():
72
+ if name in idcollection_dict['ko_to_taxa'][ko][level]:
73
+ kos_org.add(ko)
74
+
75
+
76
+ # PART 2. get reactions in the organism (even the GPR is not complete)
77
+ krs_org = set()
78
+ for kr, kos in idcollection_dict['kr_to_kos'].items():
55
79
  if any([ko in kos_org for ko in kos]):
56
80
  krs_org.add(kr)
57
81
 
@@ -60,7 +84,7 @@ def parse_keggorg(keggorg, outdir, idcollection_dict):
60
84
 
61
85
 
62
86
 
63
- def check_completeness(logger, model, progress, module, focus, eggnog, keggorg, idcollection_dict, summary_dict, outdir):
87
+ def check_completeness(logger, model, progress, module, focus, taxon, eggnog, keggorg, idcollection_dict, summary_dict, outdir):
64
88
  # check KEGG annotations in the universe model to get '%' of completeness per pathway/module.
65
89
 
66
90
 
@@ -69,6 +93,9 @@ def check_completeness(logger, model, progress, module, focus, eggnog, keggorg,
69
93
  if keggorg != '-': # keggorg has precedence
70
94
  kr_uni = parse_keggorg(keggorg, outdir, idcollection_dict)
71
95
  kr_uni_label = f"organism code '{keggorg}'"
96
+ elif taxon != '-':
97
+ kr_uni = parse_taxon(taxon, idcollection_dict)
98
+ kr_uni_label = f"taxon '{taxon}'"
72
99
  elif eggnog != '-':
73
100
  for eggfile in eggnog:
74
101
  eggset = parse_eggnog(model, eggfile, idcollection_dict)
gsrap/parsedb/parsedb.py CHANGED
@@ -17,7 +17,11 @@ from ..commons import show_contributions
17
17
  from ..commons import adjust_biomass_precursors
18
18
  from ..commons import count_undrawn_rids
19
19
  from ..commons import format_expansion
20
+ from ..commons import check_taxon
20
21
  from ..commons import download_keggorg
22
+ from ..commons import initialize_model
23
+ from ..commons import get_memote_results_dict
24
+
21
25
 
22
26
  from .introduce import introduce_metabolites
23
27
  from .introduce import introduce_reactions
@@ -43,6 +47,7 @@ from .cycles import verify_egc_all
43
47
  def main(args, logger):
44
48
 
45
49
 
50
+ ###### FORMAT ARGS NOT REQUIRING RESOURCES
46
51
  # adjust out folder path
47
52
  while args.outdir.endswith('/'):
48
53
  args.outdir = args.outdir[:-1]
@@ -74,17 +79,8 @@ def main(args, logger):
74
79
  if args.onlyauthor == '-': args.onlyauthor = None
75
80
 
76
81
 
77
- # format the --eggnog param
78
- args.eggnog = format_expansion(logger, args.eggnog) # now 'args.eggnog' could still be '-'
79
-
80
- # get the kegg organism if requested
81
- if args.keggorg != '-':
82
- response = download_keggorg(logger, args.keggorg, args.outdir)
83
- if response == 1: return 1
84
-
85
-
86
-
87
82
 
83
+ ###### LOAD LOCAL RESOURCES
88
84
  # check and extract the required 'gsrap.maps' file
89
85
  if os.path.exists(f'{args.inmaps}') == False:
90
86
  logger.error(f"File 'gsrap.maps' not found at {args.inmaps}.")
@@ -105,9 +101,27 @@ def main(args, logger):
105
101
  kegg_compound_to_others = pickle.load(handle)
106
102
  with resources.path("gsrap.assets", f"kegg_reaction_to_others.pickle") as asset_path:
107
103
  with open(asset_path, 'rb') as handle:
108
- kegg_reaction_to_others = pickle.load(handle)
104
+ kegg_reaction_to_others = pickle.load(handle)
105
+
106
+
107
+
108
+ ###### FORMAT/CHECK FOCUSING ARGS
109
+ # format the --eggnog param
110
+ args.eggnog = format_expansion(logger, args.eggnog) # now 'args.eggnog' could still be '-'
111
+
112
+ # check the --taxon param
113
+ if args.taxon != '-':
114
+ response = check_taxon(logger, args.taxon, idcollection_dict)
115
+ if response == 1: return 1
109
116
 
117
+ # get the kegg organism if requested
118
+ if args.keggorg != '-':
119
+ response = download_keggorg(logger, args.keggorg, args.outdir)
120
+ if response == 1: return 1
110
121
 
122
+
123
+
124
+ # DOWNLOAD ONLINE RESOURCES
111
125
  # get dbuni and dbexp:
112
126
  logger.info("Downloading gsrap database...")
113
127
  response = get_databases(logger)
@@ -163,7 +177,7 @@ def main(args, logger):
163
177
 
164
178
  ###### CHECKS 1
165
179
  # check universe completness
166
- df_C = check_completeness(logger, universe, args.progress, args.module, args.focus, args.eggnog, args.keggorg, idcollection_dict, summary_dict, args.outdir)
180
+ df_C = check_completeness(logger, universe, args.progress, args.module, args.focus, args.taxon, args.eggnog, args.keggorg, idcollection_dict, summary_dict, args.outdir)
167
181
  if type(df_C)==int: return 1
168
182
 
169
183
 
@@ -178,41 +192,56 @@ def main(args, logger):
178
192
  # check erroneous EGCs
179
193
  verify_egc_all(logger, universe, args.outdir)
180
194
 
181
- # check growth on minmal media
182
- df_G = grow_on_media(logger, universe, dbexp, args.media, '-', True)
183
- if type(df_G)==int: return 1
184
195
 
185
- # check blocked biomass precursors
186
- cond_col_dict = adjust_biomass_precursors(logger, universe, universe, 1.0)
187
- df_E = precursors_on_media(logger, universe, universe, dbexp, args.media, cond_col_dict, args.precursors)
188
- if type(df_E)==int: return 1
196
+ if not args.justparse:
197
+
198
+
199
+ ###### CHECKS 3
200
+ # check growth on minmal media
201
+ df_G = grow_on_media(logger, universe, dbexp, args.media, '-', True)
202
+ if type(df_G)==int: return 1
189
203
 
190
- # check blocked metabolites / dead-ends
191
- df_S = biosynthesis_on_media(logger, universe, dbexp, args.media, args.biosynth)
192
- if type(df_S)==int: return 1
204
+ # check blocked biomass precursors
205
+ cond_col_dict = adjust_biomass_precursors(logger, universe, universe, 1.0)
206
+ df_E = precursors_on_media(logger, universe, universe, dbexp, args.media, cond_col_dict, args.precursors)
207
+ if type(df_E)==int: return 1
208
+
209
+ # check blocked metabolites / dead-ends
210
+ df_S = biosynthesis_on_media(logger, universe, dbexp, args.media, args.biosynth)
211
+ if type(df_S)==int: return 1
193
212
 
194
213
 
195
214
 
196
- ###### POLISHING 2
197
- # reset growth environment befor saving the model
198
- gempipe.reset_growth_env(universe)
199
-
215
+ ###### POLISHING 2
216
+ # reset growth environment befor saving the model
217
+ gempipe.reset_growth_env(universe)
218
+
219
+ # initialize model
220
+ response = initialize_model(logger, universe, dbexp, args.initialize, args.media)
221
+ if response==1: return 1
222
+
223
+
224
+
225
+ ###### CHECKS 4
226
+ # compute Memote metrics
227
+ memote_results_dict = get_memote_results_dict(logger, universe)
228
+
200
229
 
201
230
 
202
- # output the universe
203
- logger.info("Writing universal model...")
204
- cobra.io.save_json_model(universe, f'{args.outdir}/universe.json')
205
- logger.info(f"'{args.outdir}/universe.json' created!")
206
- cobra.io.write_sbml_model(universe, f'{args.outdir}/universe.xml') # groups are saved only to SBML
207
- logger.info(f"'{args.outdir}/universe.xml' created!")
208
- force_id_on_sbml(f'{args.outdir}/universe.xml', 'universe') # force introduction of the 'id=""' field
209
- sheets_dict = write_excel_model(universe, f'{args.outdir}/universe.parsedb.xlsx', args.nofigs, df_E, None, None, df_S, df_C)
210
- logger.info(f"'{args.outdir}/universe.parsedb.xlsx' created!")
231
+ # output the universe
232
+ logger.info("Writing universal model...")
233
+ cobra.io.save_json_model(universe, f'{args.outdir}/universe.json')
234
+ logger.info(f"'{args.outdir}/universe.json' created!")
235
+ cobra.io.write_sbml_model(universe, f'{args.outdir}/universe.xml') # groups are saved only to SBML
236
+ logger.info(f"'{args.outdir}/universe.xml' created!")
237
+ force_id_on_sbml(f'{args.outdir}/universe.xml', 'universe') # force introduction of the 'id=""' field
238
+ sheets_dict = write_excel_model(universe, f'{args.outdir}/universe.parsedb.xlsx', args.nofigs, memote_results_dict, df_E, None, None, df_S, df_C)
239
+ logger.info(f"'{args.outdir}/universe.parsedb.xlsx' created!")
211
240
 
212
241
 
213
242
 
214
- ###### CHECKS 3
215
- # check if universal escher map os updated:
243
+ ###### CHECKS 4
244
+ # check if universal escher map is updated:
216
245
  count_undrawn_rids(logger, universe, lastmap)
217
246
 
218
247
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: gsrap
3
- Version: 0.8.1
3
+ Version: 0.8.3
4
4
  Summary:
5
5
  License: GNU General Public License v3.0
6
6
  Author: Gioele Lazzari
@@ -1,5 +1,5 @@
1
- gsrap/.ipynb_checkpoints/__init__-checkpoint.py,sha256=lOurIE_Gn0jYS3ks3UmX11uuMrMScHADH9ivFoLpg5k,14160
2
- gsrap/__init__.py,sha256=lOurIE_Gn0jYS3ks3UmX11uuMrMScHADH9ivFoLpg5k,14160
1
+ gsrap/.ipynb_checkpoints/__init__-checkpoint.py,sha256=Epw4X8B1O9kWnfC9v-X4jvDXE4X-G0XlRfkMdtNvMq0,15459
2
+ gsrap/__init__.py,sha256=Epw4X8B1O9kWnfC9v-X4jvDXE4X-G0XlRfkMdtNvMq0,15459
3
3
  gsrap/assets/.ipynb_checkpoints/PM1-checkpoint.csv,sha256=0qjaMVG_t9aFxbHbxON6ecmEUnWPwN9nhmxc61QFeCU,8761
4
4
  gsrap/assets/.ipynb_checkpoints/PM2A-checkpoint.csv,sha256=rjYTdwe8lpRS552BYiUP3J71juG2ywVdR5Sux6fjZTY,8816
5
5
  gsrap/assets/.ipynb_checkpoints/PM3B-checkpoint.csv,sha256=42IGX_2O5bRYSiHoMuVKT-T-bzVj0cSRZBvGOrbnQMA,8130
@@ -11,67 +11,69 @@ gsrap/assets/PM4A.csv,sha256=f_5__0Ap_T0KYje5h9veW29I2qB4yU0h7Hr7WpaHjSc,9081
11
11
  gsrap/assets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
12
  gsrap/assets/kegg_compound_to_others.pickle,sha256=pz1897cfQ7PLsYZiBVcoMQPzvRzT-nHUdgphBe0g5ZQ,8233860
13
13
  gsrap/assets/kegg_reaction_to_others.pickle,sha256=AGW8CGN5hKeXZoYn3JRF4Xu832WyNrTlMcLw7luttlc,1703146
14
- gsrap/commons/.ipynb_checkpoints/__init__-checkpoint.py,sha256=QuHINLSWNb0XKagHRWXzU5UVxw3ECTncvR7llRKblso,241
14
+ gsrap/commons/.ipynb_checkpoints/__init__-checkpoint.py,sha256=9lrb0sBFSWEgV_e5FYzSgjTbam8b959rW_8VuxQHt1M,268
15
15
  gsrap/commons/.ipynb_checkpoints/biomass-checkpoint.py,sha256=4u7WBaUgo42tBoXDU1D0VUjICatb44e0jfswZrBeHYs,17987
16
16
  gsrap/commons/.ipynb_checkpoints/coeffs-checkpoint.py,sha256=qI3_GuqHkeA2KbK9pYdkqJaFwYemAVZJGLRR4QtHt6w,19182
17
- gsrap/commons/.ipynb_checkpoints/downloads-checkpoint.py,sha256=e-7ffMD4R07MWEgXyGcwjhScbWnG7A3L100YWbpNMk0,8461
17
+ gsrap/commons/.ipynb_checkpoints/downloads-checkpoint.py,sha256=VnIFC6Y8QZ4oPyi04J_rtC2imzk5yOe0i5SpTP3MA6M,9713
18
18
  gsrap/commons/.ipynb_checkpoints/escherutils-checkpoint.py,sha256=_y0TgM0-Im0RT8W8z5rr4vlnGK55iRFds6DlDsjGD-8,1151
19
- gsrap/commons/.ipynb_checkpoints/excelhub-checkpoint.py,sha256=zFTR6H7I3XeAt9_ORL0dfrwMRvshU3JPRmGif7fSY7w,7971
19
+ gsrap/commons/.ipynb_checkpoints/excelhub-checkpoint.py,sha256=_LtaWripY_D99f14Yk-3v9VIov2cUGzJ53AXgmNFpUk,11457
20
20
  gsrap/commons/.ipynb_checkpoints/figures-checkpoint.py,sha256=IRHSQXrCi4SQoISEfNB0rDhvUzbjcgsPi9zUSefsRto,4316
21
21
  gsrap/commons/.ipynb_checkpoints/fluxbal-checkpoint.py,sha256=jgC3-vI9Tbjvqohh2mJwFra4rl_pbUzHWrSa_QAxVO4,1262
22
22
  gsrap/commons/.ipynb_checkpoints/keggutils-checkpoint.py,sha256=M2nhHRiNH_xObHSxOIdt7ix59MrPdl9q3HNICC8X36M,4514
23
23
  gsrap/commons/.ipynb_checkpoints/logutils-checkpoint.py,sha256=VsnrkIsUftS3MOOwAd0n0peQ7a2X5ZEx930eCtzmW7g,1317
24
- gsrap/commons/.ipynb_checkpoints/medium-checkpoint.py,sha256=wcWiuZ-mqryoYBrsIHkIen6fBssR_1FGVoXUTApylNc,2901
24
+ gsrap/commons/.ipynb_checkpoints/medium-checkpoint.py,sha256=AMj95IvyWpbqKAYW5QdG_pyFXHDllUZ-b8dAsPR7tvU,3859
25
+ gsrap/commons/.ipynb_checkpoints/memoteutils-checkpoint.py,sha256=rulJFSVX4I-XGi4uHXloL0eGIkC5zhpuJYWJn9zCDbY,4981
25
26
  gsrap/commons/.ipynb_checkpoints/metrics-checkpoint.py,sha256=gvqF2c0e31m5qQWQ11JF4-eMqxtuONy_7lUiC7uaXX4,3291
26
27
  gsrap/commons/.ipynb_checkpoints/sbmlutils-checkpoint.py,sha256=gkY02qbGXrbYStn2F8J0KM0fmqati2Nbvi128EF7coI,365
27
- gsrap/commons/__init__.py,sha256=QuHINLSWNb0XKagHRWXzU5UVxw3ECTncvR7llRKblso,241
28
+ gsrap/commons/__init__.py,sha256=9lrb0sBFSWEgV_e5FYzSgjTbam8b959rW_8VuxQHt1M,268
28
29
  gsrap/commons/biomass.py,sha256=4u7WBaUgo42tBoXDU1D0VUjICatb44e0jfswZrBeHYs,17987
29
30
  gsrap/commons/coeffs.py,sha256=qI3_GuqHkeA2KbK9pYdkqJaFwYemAVZJGLRR4QtHt6w,19182
30
- gsrap/commons/downloads.py,sha256=e-7ffMD4R07MWEgXyGcwjhScbWnG7A3L100YWbpNMk0,8461
31
+ gsrap/commons/downloads.py,sha256=VnIFC6Y8QZ4oPyi04J_rtC2imzk5yOe0i5SpTP3MA6M,9713
31
32
  gsrap/commons/escherutils.py,sha256=_y0TgM0-Im0RT8W8z5rr4vlnGK55iRFds6DlDsjGD-8,1151
32
- gsrap/commons/excelhub.py,sha256=zFTR6H7I3XeAt9_ORL0dfrwMRvshU3JPRmGif7fSY7w,7971
33
+ gsrap/commons/excelhub.py,sha256=_LtaWripY_D99f14Yk-3v9VIov2cUGzJ53AXgmNFpUk,11457
33
34
  gsrap/commons/figures.py,sha256=IRHSQXrCi4SQoISEfNB0rDhvUzbjcgsPi9zUSefsRto,4316
34
35
  gsrap/commons/fluxbal.py,sha256=jgC3-vI9Tbjvqohh2mJwFra4rl_pbUzHWrSa_QAxVO4,1262
35
36
  gsrap/commons/keggutils.py,sha256=M2nhHRiNH_xObHSxOIdt7ix59MrPdl9q3HNICC8X36M,4514
36
37
  gsrap/commons/logutils.py,sha256=VsnrkIsUftS3MOOwAd0n0peQ7a2X5ZEx930eCtzmW7g,1317
37
- gsrap/commons/medium.py,sha256=wcWiuZ-mqryoYBrsIHkIen6fBssR_1FGVoXUTApylNc,2901
38
+ gsrap/commons/medium.py,sha256=AMj95IvyWpbqKAYW5QdG_pyFXHDllUZ-b8dAsPR7tvU,3859
39
+ gsrap/commons/memoteutils.py,sha256=rulJFSVX4I-XGi4uHXloL0eGIkC5zhpuJYWJn9zCDbY,4981
38
40
  gsrap/commons/metrics.py,sha256=gvqF2c0e31m5qQWQ11JF4-eMqxtuONy_7lUiC7uaXX4,3291
39
41
  gsrap/commons/sbmlutils.py,sha256=gkY02qbGXrbYStn2F8J0KM0fmqati2Nbvi128EF7coI,365
40
42
  gsrap/getmaps/.ipynb_checkpoints/__init__-checkpoint.py,sha256=L4gLwk1vgnPlQuIP-FPnvy9uXnmGVQ4Rvjv3uyciDfk,92
41
- gsrap/getmaps/.ipynb_checkpoints/getmaps-checkpoint.py,sha256=BFAbBZFp-yaT35XO38YFHRqQr4mSAfRH6unOrPenQus,2703
42
- gsrap/getmaps/.ipynb_checkpoints/kdown-checkpoint.py,sha256=mv5wqP4DX9KhB1IIWx6cLrc-MjQdF5Nz-Gii8QSO_6I,24498
43
+ gsrap/getmaps/.ipynb_checkpoints/getmaps-checkpoint.py,sha256=5Odf2PS1PmPZqQyKoLPYHYgNvYsp6IxrTy5HEQ5LNEM,2943
44
+ gsrap/getmaps/.ipynb_checkpoints/kdown-checkpoint.py,sha256=OZGeGdnXMLzxvitwMTWKYZyL4dq3T8ZqbT4HVC3F3lI,27452
43
45
  gsrap/getmaps/__init__.py,sha256=L4gLwk1vgnPlQuIP-FPnvy9uXnmGVQ4Rvjv3uyciDfk,92
44
- gsrap/getmaps/getmaps.py,sha256=BFAbBZFp-yaT35XO38YFHRqQr4mSAfRH6unOrPenQus,2703
45
- gsrap/getmaps/kdown.py,sha256=mv5wqP4DX9KhB1IIWx6cLrc-MjQdF5Nz-Gii8QSO_6I,24498
46
+ gsrap/getmaps/getmaps.py,sha256=5Odf2PS1PmPZqQyKoLPYHYgNvYsp6IxrTy5HEQ5LNEM,2943
47
+ gsrap/getmaps/kdown.py,sha256=OZGeGdnXMLzxvitwMTWKYZyL4dq3T8ZqbT4HVC3F3lI,27452
46
48
  gsrap/mkmodel/.ipynb_checkpoints/__init__-checkpoint.py,sha256=PNze-26HMOwfdJ92KiXpr--VV1ftVfo3CAxBZgeokp8,92
47
49
  gsrap/mkmodel/.ipynb_checkpoints/biologcuration-checkpoint.py,sha256=Nn7z-js-mzzeO23kVM2L7sJ5PNle7AkCUeBcEAYjlFU,15378
48
50
  gsrap/mkmodel/.ipynb_checkpoints/gapfill-checkpoint.py,sha256=BPZw4sszlBhAYfHnV0pA7EpG0b2ePwS6kUfFt0Ww-ss,5159
49
51
  gsrap/mkmodel/.ipynb_checkpoints/gapfillutils-checkpoint.py,sha256=S6nFUZ1Bbdf13nVJhGK2S5C_V3hd5zwTg2o5nzejngg,3123
50
- gsrap/mkmodel/.ipynb_checkpoints/mkmodel-checkpoint.py,sha256=3o4_B3ALcq6GYLAZ7zteNOcLTfE3KVJO6s9L4uMmw8E,10448
52
+ gsrap/mkmodel/.ipynb_checkpoints/mkmodel-checkpoint.py,sha256=zm-JA2sXwqTLalCc0L5POw2iRI56QK0UJMUgorHQrLw,10830
51
53
  gsrap/mkmodel/.ipynb_checkpoints/polishing-checkpoint.py,sha256=R1UdFPxN8N27Iu0jsYW2N_1BkWEbBHaMYW6NkCYZK_k,3256
52
54
  gsrap/mkmodel/.ipynb_checkpoints/pruner-checkpoint.py,sha256=FAZid-0H6j66wR2dVKRAaMaDREVt1edflmZXbX7blXg,9836
53
55
  gsrap/mkmodel/__init__.py,sha256=PNze-26HMOwfdJ92KiXpr--VV1ftVfo3CAxBZgeokp8,92
54
56
  gsrap/mkmodel/biologcuration.py,sha256=Nn7z-js-mzzeO23kVM2L7sJ5PNle7AkCUeBcEAYjlFU,15378
55
57
  gsrap/mkmodel/gapfill.py,sha256=BPZw4sszlBhAYfHnV0pA7EpG0b2ePwS6kUfFt0Ww-ss,5159
56
58
  gsrap/mkmodel/gapfillutils.py,sha256=S6nFUZ1Bbdf13nVJhGK2S5C_V3hd5zwTg2o5nzejngg,3123
57
- gsrap/mkmodel/mkmodel.py,sha256=3o4_B3ALcq6GYLAZ7zteNOcLTfE3KVJO6s9L4uMmw8E,10448
59
+ gsrap/mkmodel/mkmodel.py,sha256=zm-JA2sXwqTLalCc0L5POw2iRI56QK0UJMUgorHQrLw,10830
58
60
  gsrap/mkmodel/polishing.py,sha256=R1UdFPxN8N27Iu0jsYW2N_1BkWEbBHaMYW6NkCYZK_k,3256
59
61
  gsrap/mkmodel/pruner.py,sha256=FAZid-0H6j66wR2dVKRAaMaDREVt1edflmZXbX7blXg,9836
60
62
  gsrap/parsedb/.ipynb_checkpoints/__init__-checkpoint.py,sha256=1k2K1gz4lIdXAwHEdJ0OhdkPu83woGv0Z4TpT1kGrTk,97
61
63
  gsrap/parsedb/.ipynb_checkpoints/annotation-checkpoint.py,sha256=Y02_zXJj_tS1GyBdfuLBy9YJjMgx3mjX6tqr1KhQ-9Q,4810
62
- gsrap/parsedb/.ipynb_checkpoints/completeness-checkpoint.py,sha256=yhFiEslK1qmMCk_GWZ7UZtX02FUqLU39UafG5886WsY,12016
64
+ gsrap/parsedb/.ipynb_checkpoints/completeness-checkpoint.py,sha256=Op7VwmmwHmt1nhcl_0ISAejtLz-F9IkmnTrcJvO0BGc,12829
63
65
  gsrap/parsedb/.ipynb_checkpoints/cycles-checkpoint.py,sha256=HJ58LcHQseQ1eploysfXd5Y8Rip8n62qhje4pmL22VM,4761
64
66
  gsrap/parsedb/.ipynb_checkpoints/introduce-checkpoint.py,sha256=UuwGWGB2saG9VDMoboumeRBWhHOO68bs5_1r2RSkyVo,17145
65
67
  gsrap/parsedb/.ipynb_checkpoints/manual-checkpoint.py,sha256=qMKYshVftSGCRAjHC87E6n9-6kAiffFFCgHOUbqlyC0,3625
66
- gsrap/parsedb/.ipynb_checkpoints/parsedb-checkpoint.py,sha256=M44zFmaYu50LYDjFH3IdiezjPbzuDIzZ9ukzwU4ZBBM,7583
68
+ gsrap/parsedb/.ipynb_checkpoints/parsedb-checkpoint.py,sha256=8mQgUTMOLpoeHK_X28s5jaW8adltKZ40nn_0uxmIXz8,8515
67
69
  gsrap/parsedb/.ipynb_checkpoints/repeating-checkpoint.py,sha256=WwPOzlZgsZWmJ-rvhFg21iOJ6gajgKFc2vCIHh6weBg,6103
68
70
  gsrap/parsedb/__init__.py,sha256=1k2K1gz4lIdXAwHEdJ0OhdkPu83woGv0Z4TpT1kGrTk,97
69
71
  gsrap/parsedb/annotation.py,sha256=Y02_zXJj_tS1GyBdfuLBy9YJjMgx3mjX6tqr1KhQ-9Q,4810
70
- gsrap/parsedb/completeness.py,sha256=yhFiEslK1qmMCk_GWZ7UZtX02FUqLU39UafG5886WsY,12016
72
+ gsrap/parsedb/completeness.py,sha256=Op7VwmmwHmt1nhcl_0ISAejtLz-F9IkmnTrcJvO0BGc,12829
71
73
  gsrap/parsedb/cycles.py,sha256=HJ58LcHQseQ1eploysfXd5Y8Rip8n62qhje4pmL22VM,4761
72
74
  gsrap/parsedb/introduce.py,sha256=UuwGWGB2saG9VDMoboumeRBWhHOO68bs5_1r2RSkyVo,17145
73
75
  gsrap/parsedb/manual.py,sha256=qMKYshVftSGCRAjHC87E6n9-6kAiffFFCgHOUbqlyC0,3625
74
- gsrap/parsedb/parsedb.py,sha256=M44zFmaYu50LYDjFH3IdiezjPbzuDIzZ9ukzwU4ZBBM,7583
76
+ gsrap/parsedb/parsedb.py,sha256=8mQgUTMOLpoeHK_X28s5jaW8adltKZ40nn_0uxmIXz8,8515
75
77
  gsrap/parsedb/repeating.py,sha256=WwPOzlZgsZWmJ-rvhFg21iOJ6gajgKFc2vCIHh6weBg,6103
76
78
  gsrap/runsims/.ipynb_checkpoints/__init__-checkpoint.py,sha256=6E6E1gWgH0V7ls4Omx4mxxC85gMJ_27YqhjugJzlZtY,97
77
79
  gsrap/runsims/.ipynb_checkpoints/biosynth-checkpoint.py,sha256=fUlHUo4CfB4rGX9Dth87B1p5E5sz7i6spR7ZoqDDGaI,2836
@@ -91,8 +93,8 @@ gsrap/runsims/precursors.py,sha256=1RNt_Rxs0L1lolDmYh4_CiZgiwHfU5B_AcomJO6vJ28,2
91
93
  gsrap/runsims/runsims.py,sha256=2FC5Gs8oSYyZTjHF3A7aXB_O6myVfcn3bCxQfLJlZTk,2842
92
94
  gsrap/runsims/simplegrowth.py,sha256=tCQHTMUqum1YwlBKRTNaQoag2co_yQlCaKmISOARAlE,2353
93
95
  gsrap/runsims/singleomission.py,sha256=jMuKAi0pINP8Jlrm-yI-tX7D110VzttR3YfTSnDRe4I,2847
94
- gsrap-0.8.1.dist-info/LICENSE.txt,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
95
- gsrap-0.8.1.dist-info/METADATA,sha256=TvK87lEyotFJA3LRgzVFROv7mHMya-p0xPv5EUQNUJE,898
96
- gsrap-0.8.1.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
97
- gsrap-0.8.1.dist-info/entry_points.txt,sha256=S9MY0DjfnbKGlZbp5bV7W6dNFy3APoEV84u9x6MV1eI,36
98
- gsrap-0.8.1.dist-info/RECORD,,
96
+ gsrap-0.8.3.dist-info/LICENSE.txt,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
97
+ gsrap-0.8.3.dist-info/METADATA,sha256=JADff6H-Y_SWY5PtR9qzEhmabesB6A5dLa-V0GTKqgc,898
98
+ gsrap-0.8.3.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
99
+ gsrap-0.8.3.dist-info/entry_points.txt,sha256=S9MY0DjfnbKGlZbp5bV7W6dNFy3APoEV84u9x6MV1eI,36
100
+ gsrap-0.8.3.dist-info/RECORD,,
File without changes