comparison COBRAxy/flux_simulation.py @ 161:9159e12b03fa draft

Uploaded
author francesco_lapi
date Tue, 12 Nov 2024 17:11:17 +0000
parents e1b0ddc770a9
children b5a26d1c4fdc
comparison
equal deleted inserted replaced
160:e1b0ddc770a9 161:9159e12b03fa
112 print(s) 112 print(s)
113 113
114 114
115 def write_to_file(dataset: pd.DataFrame, name: str, keep_index:bool=False)->None: 115 def write_to_file(dataset: pd.DataFrame, name: str, keep_index:bool=False)->None:
116 dataset.index.name = 'Reactions' 116 dataset.index.name = 'Reactions'
117 print(ARGS.output_path + name + ".csv") 117 print(ARGS.output_path + "/" + name + ".csv")
118 dataset.to_csv(ARGS.output_path + name + ".csv", sep = '\t', index = keep_index) 118 dataset.to_csv(ARGS.output_path + "/" + name + ".csv", sep = '\t', index = keep_index)
119 119
120 ############################ dataset input #################################### 120 ############################ dataset input ####################################
121 def read_dataset(data :str, name :str) -> pd.DataFrame: 121 def read_dataset(data :str, name :str) -> pd.DataFrame:
122 """ 122 """
123 Read a dataset from a CSV file and return it as a pandas DataFrame. 123 Read a dataset from a CSV file and return it as a pandas DataFrame.
160 """ 160 """
161 161
162 for i in range(0, n_batches): 162 for i in range(0, n_batches):
163 optgp = OptGPSampler(model, thinning, seed) 163 optgp = OptGPSampler(model, thinning, seed)
164 samples = optgp.sample(n_samples) 164 samples = optgp.sample(n_samples)
165 samples.to_csv(ARGS.output_path + model_name + '_'+ str(i)+'_OPTGP.csv', index=False) 165 samples.to_csv(ARGS.output_path + "/" + model_name + '_'+ str(i)+'_OPTGP.csv', index=False)
166 seed+=1 166 seed+=1
167 samplesTotal = pd.DataFrame() 167 samplesTotal = pd.DataFrame()
168 for i in range(0, n_batches): 168 for i in range(0, n_batches):
169 samples_batch = pd.read_csv(ARGS.output_path + model_name + '_'+ str(i)+'_OPTGP.csv') 169 samples_batch = pd.read_csv(ARGS.output_path + "/" + model_name + '_'+ str(i)+'_OPTGP.csv')
170 samplesTotal = pd.concat([samplesTotal, samples_batch], ignore_index = True) 170 samplesTotal = pd.concat([samplesTotal, samples_batch], ignore_index = True)
171 171
172 write_to_file(samplesTotal.T, model_name, True) 172 write_to_file(samplesTotal.T, model_name, True)
173 173
174 for i in range(0, n_batches): 174 for i in range(0, n_batches):
175 os.remove(ARGS.output_path + model_name + '_'+ str(i)+'_OPTGP.csv') 175 os.remove(ARGS.output_path + "/" + model_name + '_'+ str(i)+'_OPTGP.csv')
176 pass 176 pass
177 177
178 178
179 def CBS_sampler(model:cobra.Model, model_name:str, n_samples:int=1000, n_batches:int=1, seed:int=0)-> None: 179 def CBS_sampler(model:cobra.Model, model_name:str, n_samples:int=1000, n_batches:int=1, seed:int=0)-> None:
180 """ 180 """
203 utils.logWarning( 203 utils.logWarning(
204 "Warning: GLPK solver has failed for " + model_name + ". Trying with COBRA interface. Error:" + str(e), 204 "Warning: GLPK solver has failed for " + model_name + ". Trying with COBRA interface. Error:" + str(e),
205 ARGS.out_log) 205 ARGS.out_log)
206 CBS_backend.randomObjectiveFunctionSampling_cobrapy(model, n_samples, df_coefficients.iloc[:,i*n_samples:(i+1)*n_samples], 206 CBS_backend.randomObjectiveFunctionSampling_cobrapy(model, n_samples, df_coefficients.iloc[:,i*n_samples:(i+1)*n_samples],
207 samples) 207 samples)
208 utils.logWarning(ARGS.output_path + model_name + '_'+ str(i)+'_CBS.csv', ARGS.out_log) 208 utils.logWarning(ARGS.output_path + "/" + model_name + '_'+ str(i)+'_CBS.csv', ARGS.out_log)
209 samples.to_csv(ARGS.output_path + model_name + '_'+ str(i)+'_CBS.csv', index=False) 209 samples.to_csv(ARGS.output_path + "/" + model_name + '_'+ str(i)+'_CBS.csv', index=False)
210 210
211 samplesTotal = pd.DataFrame() 211 samplesTotal = pd.DataFrame()
212 for i in range(0, n_batches): 212 for i in range(0, n_batches):
213 samples_batch = pd.read_csv(ARGS.output_path + model_name + '_'+ str(i)+'_CBS.csv') 213 samples_batch = pd.read_csv(ARGS.output_path + "/" + model_name + '_'+ str(i)+'_CBS.csv')
214 samplesTotal = pd.concat([samplesTotal, samples_batch], ignore_index = True) 214 samplesTotal = pd.concat([samplesTotal, samples_batch], ignore_index = True)
215 215
216 write_to_file(samplesTotal.T, model_name, True) 216 write_to_file(samplesTotal.T, model_name, True)
217 217
218 for i in range(0, n_batches): 218 for i in range(0, n_batches):
219 os.remove(ARGS.output_path + model_name + '_'+ str(i)+'_CBS.csv') 219 os.remove(ARGS.output_path + "/" + model_name + '_'+ str(i)+'_CBS.csv')
220 pass 220 pass
221 221
222 222
223 def model_sampler(model_input_original:cobra.Model, bounds_path:str, cell_name:str)-> List[pd.DataFrame]: 223 def model_sampler(model_input_original:cobra.Model, bounds_path:str, cell_name:str)-> List[pd.DataFrame]:
224 """ 224 """
248 CBS_sampler(model_input, name, ARGS.n_samples, ARGS.n_batches, ARGS.seed) 248 CBS_sampler(model_input, name, ARGS.n_samples, ARGS.n_batches, ARGS.seed)
249 249
250 df_mean, df_median, df_quantiles = fluxes_statistics(name, ARGS.output_types) 250 df_mean, df_median, df_quantiles = fluxes_statistics(name, ARGS.output_types)
251 251
252 if("fluxes" not in ARGS.output_types): 252 if("fluxes" not in ARGS.output_types):
253 os.remove(ARGS.output_path + name + '.csv') 253 os.remove(ARGS.output_path + "/" + name + '.csv')
254 254
255 returnList = [] 255 returnList = []
256 returnList.append(df_mean) 256 returnList.append(df_mean)
257 returnList.append(df_median) 257 returnList.append(df_median)
258 returnList.append(df_quantiles) 258 returnList.append(df_quantiles)
282 282
283 df_mean = pd.DataFrame() 283 df_mean = pd.DataFrame()
284 df_median= pd.DataFrame() 284 df_median= pd.DataFrame()
285 df_quantiles= pd.DataFrame() 285 df_quantiles= pd.DataFrame()
286 286
287 df_samples = pd.read_csv(ARGS.output_path + model_name + '.csv', sep = '\t', index_col = 0).T 287 df_samples = pd.read_csv(ARGS.output_path + "/" + model_name + '.csv', sep = '\t', index_col = 0).T
288 df_samples = df_samples.round(8) 288 df_samples = df_samples.round(8)
289 289
290 for output_type in output_types: 290 for output_type in output_types:
291 if(output_type == "mean"): 291 if(output_type == "mean"):
292 df_mean = df_samples.mean() 292 df_mean = df_samples.mean()