diff 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
line wrap: on
line diff
--- a/COBRAxy/custom_data_generator_beta.py	Tue Sep 09 15:05:02 2025 +0000
+++ b/COBRAxy/custom_data_generator_beta.py	Wed Sep 10 09:25:32 2025 +0000
@@ -9,6 +9,7 @@
 from typing import Optional, Tuple, Union, List, Dict
 import utils.reaction_parsing as reactionUtils
 import utils.model_utils as modelUtils
+import logging
 
 ARGS : argparse.Namespace
 def process_args(args: List[str] = None) -> argparse.Namespace:
@@ -173,19 +174,42 @@
                 model.reactions.get_by_id(reaction).lower_bound = -float(value)
 
     if ARGS.name == "ENGRO2" and ARGS.gene_format != "Default":
+        logging.basicConfig(level=logging.INFO)
+        logger = logging.getLogger(__name__)
 
-        model = modelUtils.convert_genes(model, ARGS.gene_format.replace("HGNC_", "HGNC "))
+        model = modelUtils.translate_model_genes(
+            model=model,
+            mapping_df= pd.read_csv(ARGS.tool_dir + "/local/mappings/genes_human.csv"),
+            target_nomenclature=ARGS.gene_format.replace("HGNC_", "HGNC "),
+            source_nomenclature='HGNC_ID',
+            logger=logger
+        )
+        #model = modelUtils.convert_genes(model, ARGS.gene_format.replace("HGNC_", "HGNC "))
+    
+    if ARGS.name == "Recon" and ARGS.gene_format != "Default":
+        logging.basicConfig(level=logging.INFO)
+        logger = logging.getLogger(__name__)
+
+        model = modelUtils.translate_model_genes(
+            model=model,
+            mapping_df= pd.read_csv(ARGS.tool_dir + "/local/mappings/genes_human.csv"),
+            target_nomenclature=ARGS.gene_format.replace("HGNC_", "HGNC "),
+            source_nomenclature='HGNC_symbol',
+            logger=logger
+        )
 
     # generate data
     rules = modelUtils.generate_rules(model, asParsed = False)
     reactions = modelUtils.generate_reactions(model, asParsed = False)
     bounds = modelUtils.generate_bounds(model)
     medium = modelUtils.get_medium(model)
+    objective_function = modelUtils.extract_objective_coefficients(model)
+    
     if ARGS.name == "ENGRO2":
         compartments = modelUtils.generate_compartments(model)
 
-    df_rules = pd.DataFrame(list(rules.items()), columns = ["ReactionID", "Rule"])
-    df_reactions = pd.DataFrame(list(reactions.items()), columns = ["ReactionID", "Reaction"])
+    df_rules = pd.DataFrame(list(rules.items()), columns = ["ReactionID", "GPR"])
+    df_reactions = pd.DataFrame(list(reactions.items()), columns = ["ReactionID", "Formula"])
 
     df_bounds = bounds.reset_index().rename(columns = {"index": "ReactionID"})
     df_medium = medium.rename(columns = {"reaction": "ReactionID"})
@@ -193,6 +217,7 @@
 
     merged = df_reactions.merge(df_rules, on = "ReactionID", how = "outer")
     merged = merged.merge(df_bounds, on = "ReactionID", how = "outer")
+    merged = merged.merge(objective_function, on = "ReactionID", how = "outer")
     if ARGS.name == "ENGRO2": 
         merged = merged.merge(compartments, on = "ReactionID", how = "outer")
     merged = merged.merge(df_medium, on = "ReactionID", how = "left")