changeset 189:fdd08487066a draft

Uploaded
author luca_milaz
date Thu, 04 Jul 2024 21:45:07 +0000
parents 67d359a8213d
children 20c0e04b0c05
files marea_2_0/flux_sampling.py
diffstat 1 files changed, 61 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/marea_2_0/flux_sampling.py	Thu Jul 04 20:46:26 2024 +0000
+++ b/marea_2_0/flux_sampling.py	Thu Jul 04 21:45:07 2024 +0000
@@ -75,11 +75,6 @@
                         required = True,
                         help = 'output type')
     
-    parser.add_argument('-tm', '--toMerge', 
-                        type = bool,
-                        required = True,
-                        help = 'merge')
-    
     ARGS = parser.parse_args()
     return ARGS
 
@@ -169,10 +164,48 @@
 
     elif ARGS.algorithm == 'CBS':
         CBS_sampler(model,  name, ARGS.n_samples, ARGS.n_batches, ARGS.seed)
-    
+
+    fluxes_statistics(model_name, ARGS.output_types)
+
     pass
 
+def fluxes_statistics(model_name: str,  output_types:List):
 
+    df_samples = pd.read_csv(ARGS.output_folder  +  model_name + '.csv', sep = '\t')
+    for output_type in output_types:
+        if(output_type == "mean"):
+            df_temp = df_samples.mean()
+            df_temp = df_temp.reset_index(drop=True)
+            df_temp.index = [model_name]
+            DF_MEAN = pd.concat([DF_MEAN, df_temp])
+        elif(output_type == "median"):
+            df_temp = df_samples.median()
+            df_temp = df_temp.reset_index(drop=True)
+            df_temp.index = [model_name]
+            DF_MEDIAN = pd.concat([DF_MEDIAN, df_temp])
+        elif(output_type == "quantiles"):
+            df_quantile = df_samples.quantile([0.25, 0.5, 0.75])
+            newRow = []
+            cols = []
+            for rxn in df_quantile.columns:
+                newRow.append(df_quantile[rxn].loc[0.25])
+                cols.append(rxn + "_q1")
+                newRow.append(df_quantile[rxn].loc[0.5])
+                cols.append(rxn + "_q2")
+                newRow.append(df_quantile[rxn].loc[0.75])
+                cols.append(rxn + "_q3")
+            df_temp = pd.DataFrame(columns=cols)
+            df_temp.loc[0] = newRow
+            df_temp = df_temp.reset_index(drop=True)
+            df_temp.index = [model_name]
+            DF_QUANTILES = pd.concat([DF_QUANTILES, df_temp])
+
+
+    if("fluxes" not in output_types):
+        os.remove(ARGS.output_folder  +  model_name + '.csv')
+
+    pass
+    
 
 ################################- INPUT DATA LOADING -################################
 def load_custom_model(file_path :utils.FilePath, ext :Optional[utils.FileFormat] = None) -> cobra.Model:
@@ -225,8 +258,30 @@
     
     models_input = ARGS.input.split(",")
     models_name = ARGS.name.split(",")
+    ARGS.output_types = ARGS.output_type.split(",")
 
+    global DF_MEAN 
+    DF_MEAN = pd.DataFrame()
+
+    global DF_MEDIAN 
+    DF_MEDIAN= pd.DataFrame()
+
+    global DF_QUANTILES 
+    DF_QUANTILES= pd.DataFrame()
+ 
     Parallel(n_jobs=num_processors)(delayed(model_sampler)(model_input, model_name) for model_input, model_name in zip(models_input, models_name))
+
+    DF_MEAN = DF_MEAN.fillna(0.0)
+    DF_MEAN = DF_MEAN.sort_index()
+    write_to_file(DF_MEAN, "mean")
+
+    DF_MEDIAN = DF_MEDIAN.fillna(0.0)
+    DF_MEDIAN = DF_MEDIAN.sort_index()
+    write_to_file(DF_MEDIAN, "median")
+
+    DF_QUANTILES = DF_QUANTILES.fillna(0.0)
+    DF_QUANTILES = DF_QUANTILES.sort_index()
+    write_to_file(DF_QUANTILES, "quantiles")
         
 ##############################################################################
 if __name__ == "__main__":