comparison COBRAxy/custom_data_generator_beta.py @ 426:00a78da611ba draft

Uploaded
author francesco_lapi
date Wed, 10 Sep 2025 09:25:32 +0000
parents ed2c1f9e20ba
children 06564187fba3
comparison
equal deleted inserted replaced
425:233d5d1e6bb2 426:00a78da611ba
7 import utils.general_utils as utils 7 import utils.general_utils as utils
8 import utils.rule_parsing as rulesUtils 8 import utils.rule_parsing as rulesUtils
9 from typing import Optional, Tuple, Union, List, Dict 9 from typing import Optional, Tuple, Union, List, Dict
10 import utils.reaction_parsing as reactionUtils 10 import utils.reaction_parsing as reactionUtils
11 import utils.model_utils as modelUtils 11 import utils.model_utils as modelUtils
12 import logging
12 13
13 ARGS : argparse.Namespace 14 ARGS : argparse.Namespace
14 def process_args(args: List[str] = None) -> argparse.Namespace: 15 def process_args(args: List[str] = None) -> argparse.Namespace:
15 """ 16 """
16 Parse command-line arguments for CustomDataGenerator. 17 Parse command-line arguments for CustomDataGenerator.
171 for reaction, value in medium.items(): 172 for reaction, value in medium.items():
172 if value is not None: 173 if value is not None:
173 model.reactions.get_by_id(reaction).lower_bound = -float(value) 174 model.reactions.get_by_id(reaction).lower_bound = -float(value)
174 175
175 if ARGS.name == "ENGRO2" and ARGS.gene_format != "Default": 176 if ARGS.name == "ENGRO2" and ARGS.gene_format != "Default":
176 177 logging.basicConfig(level=logging.INFO)
177 model = modelUtils.convert_genes(model, ARGS.gene_format.replace("HGNC_", "HGNC ")) 178 logger = logging.getLogger(__name__)
179
180 model = modelUtils.translate_model_genes(
181 model=model,
182 mapping_df= pd.read_csv(ARGS.tool_dir + "/local/mappings/genes_human.csv"),
183 target_nomenclature=ARGS.gene_format.replace("HGNC_", "HGNC "),
184 source_nomenclature='HGNC_ID',
185 logger=logger
186 )
187 #model = modelUtils.convert_genes(model, ARGS.gene_format.replace("HGNC_", "HGNC "))
188
189 if ARGS.name == "Recon" and ARGS.gene_format != "Default":
190 logging.basicConfig(level=logging.INFO)
191 logger = logging.getLogger(__name__)
192
193 model = modelUtils.translate_model_genes(
194 model=model,
195 mapping_df= pd.read_csv(ARGS.tool_dir + "/local/mappings/genes_human.csv"),
196 target_nomenclature=ARGS.gene_format.replace("HGNC_", "HGNC "),
197 source_nomenclature='HGNC_symbol',
198 logger=logger
199 )
178 200
179 # generate data 201 # generate data
180 rules = modelUtils.generate_rules(model, asParsed = False) 202 rules = modelUtils.generate_rules(model, asParsed = False)
181 reactions = modelUtils.generate_reactions(model, asParsed = False) 203 reactions = modelUtils.generate_reactions(model, asParsed = False)
182 bounds = modelUtils.generate_bounds(model) 204 bounds = modelUtils.generate_bounds(model)
183 medium = modelUtils.get_medium(model) 205 medium = modelUtils.get_medium(model)
206 objective_function = modelUtils.extract_objective_coefficients(model)
207
184 if ARGS.name == "ENGRO2": 208 if ARGS.name == "ENGRO2":
185 compartments = modelUtils.generate_compartments(model) 209 compartments = modelUtils.generate_compartments(model)
186 210
187 df_rules = pd.DataFrame(list(rules.items()), columns = ["ReactionID", "Rule"]) 211 df_rules = pd.DataFrame(list(rules.items()), columns = ["ReactionID", "GPR"])
188 df_reactions = pd.DataFrame(list(reactions.items()), columns = ["ReactionID", "Reaction"]) 212 df_reactions = pd.DataFrame(list(reactions.items()), columns = ["ReactionID", "Formula"])
189 213
190 df_bounds = bounds.reset_index().rename(columns = {"index": "ReactionID"}) 214 df_bounds = bounds.reset_index().rename(columns = {"index": "ReactionID"})
191 df_medium = medium.rename(columns = {"reaction": "ReactionID"}) 215 df_medium = medium.rename(columns = {"reaction": "ReactionID"})
192 df_medium["InMedium"] = True # flag per indicare la presenza nel medium 216 df_medium["InMedium"] = True # flag per indicare la presenza nel medium
193 217
194 merged = df_reactions.merge(df_rules, on = "ReactionID", how = "outer") 218 merged = df_reactions.merge(df_rules, on = "ReactionID", how = "outer")
195 merged = merged.merge(df_bounds, on = "ReactionID", how = "outer") 219 merged = merged.merge(df_bounds, on = "ReactionID", how = "outer")
220 merged = merged.merge(objective_function, on = "ReactionID", how = "outer")
196 if ARGS.name == "ENGRO2": 221 if ARGS.name == "ENGRO2":
197 merged = merged.merge(compartments, on = "ReactionID", how = "outer") 222 merged = merged.merge(compartments, on = "ReactionID", how = "outer")
198 merged = merged.merge(df_medium, on = "ReactionID", how = "left") 223 merged = merged.merge(df_medium, on = "ReactionID", how = "left")
199 224
200 merged["InMedium"] = merged["InMedium"].fillna(False) 225 merged["InMedium"] = merged["InMedium"].fillna(False)