changeset 404:08f1ff359397 draft

Uploaded
author francesco_lapi
date Mon, 08 Sep 2025 13:50:08 +0000
parents 05092b0cfca0
children 716b1a638fb5
files COBRAxy/custom_data_generator.py COBRAxy/custom_data_generator.xml
diffstat 2 files changed, 41 insertions(+), 33 deletions(-) [+]
line wrap: on
line diff
--- a/COBRAxy/custom_data_generator.py	Mon Sep 08 13:38:59 2025 +0000
+++ b/COBRAxy/custom_data_generator.py	Mon Sep 08 13:50:08 2025 +0000
@@ -159,39 +159,38 @@
     Returns:
         pd.DataFrame: DataFrame with ReactionID and compartment columns
     """
-    compartment_data = []
-    
-    # First pass: determine the maximum number of compartments any reaction has
-    max_compartments = 0
-    reaction_compartments = {}
-    
+    pathway_data = []
+
+    # First pass: determine the maximum number of pathways any reaction has
+    max_pathways = 0
+    reaction_pathways = {}
+
     for reaction in model.reactions:
-        # Get unique compartments from all metabolites in the reaction
+        # Get unique pathways from all metabolites in the reaction
         if type(reaction.annotation['pathways']) == list:
-            reaction_compartments[reaction.id] = reaction.annotation['pathways']
-            max_compartments = max(max_compartments, len(reaction.annotation['pathways']))
+            reaction_pathways[reaction.id] = reaction.annotation['pathways']
+            max_pathways = max(max_pathways, len(reaction.annotation['pathways']))
         else:
-            reaction_compartments[reaction.id] = [reaction.annotation['pathways']]
-    
-    # Create column names for compartments
-    compartment_columns = [f"Compartment_{i+1}" for i in range(max_compartments)]
+            reaction_pathways[reaction.id] = [reaction.annotation['pathways']]
+
+    # Create column names for pathways
+    pathway_columns = [f"Pathway_{i+1}" for i in range(max_pathways)]
 
     # Second pass: create the data
-    for reaction_id, compartments in reaction_compartments.items():
+    for reaction_id, pathways in reaction_pathways.items():
         row = {"ReactionID": reaction_id}
         
-        # Fill compartment columns
-        for i in range(max_compartments):
-            col_name = compartment_columns[i]
-            if i < len(compartments):
-                row[col_name] = compartments[i]
-                
+        # Fill pathway columns
+        for i in range(max_pathways):
+            col_name = pathway_columns[i]
+            if i < len(pathways):
+                row[col_name] = pathways[i]
             else:
                 row[col_name] = None  # or "" if you prefer empty strings
-                
-        compartment_data.append(row)
-    
-    return pd.DataFrame(compartment_data)
+
+        pathway_data.append(row)
+
+    return pd.DataFrame(pathway_data)
 
 
 ###############################- FILE SAVING -################################
@@ -301,7 +300,8 @@
     reactions = generate_reactions(model, asParsed = False)
     bounds = generate_bounds(model)
     medium = get_medium(model)
-    compartments = generate_compartments(model)
+    if ARGS.name == "ENGRO2":
+        compartments = generate_compartments(model)
 
     df_rules = pd.DataFrame(list(rules.items()), columns = ["ReactionID", "Rule"])
     df_reactions = pd.DataFrame(list(reactions.items()), columns = ["ReactionID", "Reaction"])
@@ -312,7 +312,8 @@
 
     merged = df_reactions.merge(df_rules, on = "ReactionID", how = "outer")
     merged = merged.merge(df_bounds, on = "ReactionID", how = "outer")
-    merged = merged.merge(compartments, 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")
 
     merged["InMedium"] = merged["InMedium"].fillna(False)
--- a/COBRAxy/custom_data_generator.xml	Mon Sep 08 13:38:59 2025 +0000
+++ b/COBRAxy/custom_data_generator.xml	Mon Sep 08 13:50:08 2025 +0000
@@ -40,6 +40,14 @@
                 <conditional name="cond_medium">
                     <expand macro="options_ras_to_bounds_medium"/>
                 </conditional>
+
+                <param name="gene_format" argument="--gene_format" type="select" label="Gene nomenclature format:">
+                    <option value="Default" selected="true">Keep original gene nomenclature</option>
+                    <option value="ENSG">ENSNG (Ensembl Gene ID)</option>
+                    <option value="HGNC_symbol">HGNC Symbol</option>
+                    <option value="HGNC_ID">HGNC ID</option>
+                    <option value="entrez_id">Entrez Gene ID</option>
+                </param>
             </when>
 
             <!-- Recon -->
@@ -53,6 +61,9 @@
                         <!-- Nessun parametro aggiuntivo necessario -->
                     </when>
                 </conditional>
+                <param name="gene_format" argument="--gene_format" type="select" label="Gene nomenclature format:">
+                    <option value="Default" selected="true">Keep original gene nomenclature</option>
+                </param>
             </when>
 
             <!-- Custom model -->
@@ -67,16 +78,12 @@
                         <!-- Nessun parametro aggiuntivo necessario -->
                     </when>
                 </conditional>
+                <param name="gene_format" argument="--gene_format" type="select" label="Gene nomenclature format:">
+                    <option value="Default" selected="true">Keep original gene nomenclature</option>
+                </param>
             </when>
         </conditional>
 
-        <param name="gene_format" argument="--gene_format" type="select" label="Gene nomenclature format:">
-            <option value="Default" selected="true">Keep original gene nomenclature</option>
-            <option value="ENSG">ENSNG (Ensembl Gene ID)</option>
-            <option value="HGNC_symbol">HGNC Symbol</option>
-            <option value="HGNC_ID">HGNC ID</option>
-            <option value="entrez_id">Entrez Gene ID</option>
-        </param>
     </inputs>
 
     <outputs>