Mercurial > repos > bimib > marea_2_0
changeset 198:ecd1b2ae80c6 draft
Uploaded
author | luca_milaz |
---|---|
date | Fri, 05 Jul 2024 07:16:07 +0000 |
parents | 6450c450253e |
children | c298efdfe431 |
files | marea_2_0/flux_sampling.py |
diffstat | 1 files changed, 32 insertions(+), 30 deletions(-) [+] |
line wrap: on
line diff
--- a/marea_2_0/flux_sampling.py Fri Jul 05 07:05:25 2024 +0000 +++ b/marea_2_0/flux_sampling.py Fri Jul 05 07:16:07 2024 +0000 @@ -130,7 +130,7 @@ CBS_backend.randomObjectiveFunctionSampling(model, n_samples, df_coefficients.iloc[:,i*n_samples:(i+1)*n_samples], samples) except Exception as e: utils.logWarning( - "Warning: GLPK solver has failed for " + model_name + ". Trying with COBRA interface.", + "Warning: GLPK solver has failed for " + model_name + ". Trying with COBRA interface. Error:" + e, ARGS.out_log) CBS_backend.randomObjectiveFunctionSampling_cobrapy(model, n_samples, df_coefficients.iloc[:,i*n_samples:(i+1)*n_samples], samples) @@ -148,7 +148,11 @@ pass -def model_sampler(model_input:str, model_name:str, df_mean:pd.DataFrame, df_median:pd.DataFrame, df_quantiles:pd.DataFrame)->None: +def model_sampler(model_input:str, model_name:str)-> List[pd.DataFrame]: + + df_mean = pd.DataFrame() + df_median= pd.DataFrame() + df_quantiles= pd.DataFrame() model = load_custom_model( utils.FilePath.fromStrPath(model_input), utils.FilePath.fromStrPath(model_name).ext) @@ -165,11 +169,14 @@ elif ARGS.algorithm == 'CBS': CBS_sampler(model, name, ARGS.n_samples, ARGS.n_batches, ARGS.seed) - fluxes_statistics(name, ARGS.output_types, df_mean, df_median, df_quantiles) + df_mean, df_median, df_quantiles = fluxes_statistics(name, ARGS.output_types, df_mean, df_median, df_quantiles) - pass + if("fluxes" not in ARGS.output_types): + os.remove(ARGS.output_folder + model_name + '.csv') -def fluxes_statistics(model_name: str, output_types:List, df_mean:pd.DataFrame, df_median:pd.DataFrame, df_quantiles:pd.DataFrame)->None: + return df_mean, df_median, df_quantiles + +def fluxes_statistics(model_name: str, output_types:List, df_mean:pd.DataFrame, df_median:pd.DataFrame, df_quantiles:pd.DataFrame)-> List[pd.DataFrame]: df_samples = pd.read_csv(ARGS.output_folder + model_name + '.csv', sep = '\t') for output_type in output_types: @@ -202,15 +209,7 @@ df_temp.index = [model_name] df_quantiles = pd.concat([df_quantiles, df_temp]) - - utils.logWarning( - str(df_mean.shape), - ARGS.out_log) - - if("fluxes" not in output_types): - os.remove(ARGS.output_folder + model_name + '.csv') - - pass + return df_mean, df_median, df_quantiles ################################- INPUT DATA LOADING -################################ @@ -266,25 +265,28 @@ models_name = ARGS.name.split(",") ARGS.output_types = ARGS.output_type.split(",") - - df_mean = pd.DataFrame() - df_median= pd.DataFrame() - df_quantiles= pd.DataFrame() - Parallel(n_jobs=num_processors)(delayed(model_sampler)(model_input, model_name, - df_mean, df_median, df_quantiles) for model_input, model_name in zip(models_input, models_name)) + results = Parallel(n_jobs=num_processors)(delayed(model_sampler)(model_input, model_name) for model_input, model_name in zip(models_input, models_name)) + + all_mean = pd.concat([result[0] for result in results], ignore_index=True) + all_median = pd.concat([result[1] for result in results], ignore_index=True) + all_quantiles = pd.concat([result[2] for result in results], ignore_index=True) - df_mean = df_mean.fillna(0.0) - df_mean = df_mean.sort_index() - write_to_file(df_mean, "mean") + if("mean" in ARGS.output_types): + all_mean = all_mean.fillna(0.0) + all_mean = all_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("median" in ARGS.output_types): + all_median = all_median.fillna(0.0) + all_median = all_median.sort_index() + write_to_file(all_median, "median") + + if("quantiles" in ARGS.output_types): + all_quantiles = all_quantiles.fillna(0.0) + all_quantiles = all_quantiles.sort_index() + write_to_file(all_quantiles, "quantiles") + pass ############################################################################## if __name__ == "__main__":