Mercurial > repos > bimib > cobraxy
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) |
