Mercurial > repos > bimib > marea_2_0
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__":