diff COBRAxy/custom_data_generator.py @ 393:52658ddcaa5d draft

Uploaded
author francesco_lapi
date Fri, 05 Sep 2025 13:02:22 +0000
parents cccbf259459e
children 64563ca68ace
line wrap: on
line diff
--- a/COBRAxy/custom_data_generator.py	Fri Sep 05 10:53:36 2025 +0000
+++ b/COBRAxy/custom_data_generator.py	Fri Sep 05 13:02:22 2025 +0000
@@ -31,9 +31,10 @@
                         help="Model name (default or custom)")
     
     parser.add_argument("--medium_selector", type=str, required=True,
-                        help="Medium selection option (default/custom)")
-    parser.add_argument("--medium", type=str,
-                        help="Custom medium file if medium_selector=Custom")
+                        help="Medium selection option")
+
+    parser.add_argument("--gene_format", type=str, default="Default",
+                        help="Gene nomenclature format: Default (original), ENSNG, HGNC_SYMBOL, HGNC_ID, ENTREZ")
     
     parser.add_argument("--out_tabular", type=str,
                         help="Output file for the merged dataset (CSV or XLSX)")
@@ -226,7 +227,27 @@
             raise utils.DataErr(ARGS.model, f"failed loading built-in model: {e}")
 
     # Determine final model name: explicit --name overrides, otherwise use the model id
+    
     model_name = ARGS.name if ARGS.name else ARGS.model
+    
+    
+    if ARGS.name == "ENGRO2" and ARGS.medium_selector != "Default":
+        df_mediums = pd.read_csv(ARGS.tool_dir + "/local/medium/medium.csv", index_col = 0)
+        ARGS.medium_selector = ARGS.medium_selector.replace("_", " ")
+        medium = df_mediums[[ARGS.medium_selector]]
+        medium = medium[ARGS.medium_selector].to_dict()
+
+        # Set all reactions to zero in the medium
+        for rxn_id, _ in model.medium.items():
+            model.reactions.get_by_id(rxn_id).lower_bound = float(0.0)
+        
+        # Set medium conditions
+        for reaction, value in medium.items():
+            if value is not None:
+                model.reactions.get_by_id(reaction).lower_bound = -float(value)
+
+    if ARGS.name == "ENGRO2" and ARGS.gene_format != "Default":
+        utils.convert_genes(model, ARGS.gene_format)
 
     # generate data
     rules = generate_rules(model, asParsed = False)