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/.ipynb_checkpoints/__init__-checkpoint.py +21 -4
- gsrap/__init__.py +21 -4
- gsrap/commons/.ipynb_checkpoints/__init__-checkpoint.py +1 -0
- gsrap/commons/.ipynb_checkpoints/downloads-checkpoint.py +34 -3
- gsrap/commons/.ipynb_checkpoints/excelhub-checkpoint.py +51 -3
- gsrap/commons/.ipynb_checkpoints/medium-checkpoint.py +36 -0
- gsrap/commons/.ipynb_checkpoints/memoteutils-checkpoint.py +132 -0
- gsrap/commons/__init__.py +1 -0
- gsrap/commons/downloads.py +34 -3
- gsrap/commons/excelhub.py +51 -3
- gsrap/commons/medium.py +36 -0
- gsrap/commons/memoteutils.py +132 -0
- gsrap/getmaps/.ipynb_checkpoints/getmaps-checkpoint.py +14 -5
- gsrap/getmaps/.ipynb_checkpoints/kdown-checkpoint.py +75 -4
- gsrap/getmaps/getmaps.py +14 -5
- gsrap/getmaps/kdown.py +75 -4
- gsrap/mkmodel/.ipynb_checkpoints/mkmodel-checkpoint.py +22 -8
- gsrap/mkmodel/mkmodel.py +22 -8
- gsrap/parsedb/.ipynb_checkpoints/completeness-checkpoint.py +32 -5
- gsrap/parsedb/.ipynb_checkpoints/parsedb-checkpoint.py +66 -37
- gsrap/parsedb/completeness.py +32 -5
- gsrap/parsedb/parsedb.py +66 -37
- {gsrap-0.8.1.dist-info → gsrap-0.8.3.dist-info}/METADATA +1 -1
- {gsrap-0.8.1.dist-info → gsrap-0.8.3.dist-info}/RECORD +27 -25
- {gsrap-0.8.1.dist-info → gsrap-0.8.3.dist-info}/LICENSE.txt +0 -0
- {gsrap-0.8.1.dist-info → gsrap-0.8.3.dist-info}/WHEEL +0 -0
- {gsrap-0.8.1.dist-info → gsrap-0.8.3.dist-info}/entry_points.txt +0 -0
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.
|
|
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.
|
|
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, '
|
|
122
|
-
remove_forced(logger, model, universe, args.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
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
|
-
|
|
191
|
-
|
|
192
|
-
|
|
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
|
-
|
|
197
|
-
|
|
198
|
-
|
|
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
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
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
|
|
215
|
-
# check if universal escher map
|
|
243
|
+
###### CHECKS 4
|
|
244
|
+
# check if universal escher map is updated:
|
|
216
245
|
count_undrawn_rids(logger, universe, lastmap)
|
|
217
246
|
|
|
218
247
|
|
gsrap/parsedb/completeness.py
CHANGED
|
@@ -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
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
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
|
-
|
|
191
|
-
|
|
192
|
-
|
|
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
|
-
|
|
197
|
-
|
|
198
|
-
|
|
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
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
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
|
|
215
|
-
# check if universal escher map
|
|
243
|
+
###### CHECKS 4
|
|
244
|
+
# check if universal escher map is updated:
|
|
216
245
|
count_undrawn_rids(logger, universe, lastmap)
|
|
217
246
|
|
|
218
247
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
gsrap/.ipynb_checkpoints/__init__-checkpoint.py,sha256=
|
|
2
|
-
gsrap/__init__.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
42
|
-
gsrap/getmaps/.ipynb_checkpoints/kdown-checkpoint.py,sha256=
|
|
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=
|
|
45
|
-
gsrap/getmaps/kdown.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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.
|
|
95
|
-
gsrap-0.8.
|
|
96
|
-
gsrap-0.8.
|
|
97
|
-
gsrap-0.8.
|
|
98
|
-
gsrap-0.8.
|
|
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
|
|
File without changes
|