comparison COBRAxy/ras_to_bounds.py @ 102:182c710c1660 draft

Uploaded
author luca_milaz
date Sun, 13 Oct 2024 13:23:12 +0000
parents 54ded7f28a60
children d1370b6bb4c5
comparison
equal deleted inserted replaced
101:6cb85065b38b 102:182c710c1660
126 for reaction in rxns_ids: 126 for reaction in rxns_ids:
127 if reaction in ras_row.index: 127 if reaction in ras_row.index:
128 scaling_factor = ras_row[reaction] 128 scaling_factor = ras_row[reaction]
129 lower_bound=model.reactions.get_by_id(reaction).lower_bound 129 lower_bound=model.reactions.get_by_id(reaction).lower_bound
130 upper_bound=model.reactions.get_by_id(reaction).upper_bound 130 upper_bound=model.reactions.get_by_id(reaction).upper_bound
131 #warning("Reaction: "+reaction+" Lower Bound: "+str(lower_bound)+" Upper Bound: "+str(upper_bound)+" Scaling Factor: "+str(scaling_factor))
132 valMax=float((upper_bound)*scaling_factor) 131 valMax=float((upper_bound)*scaling_factor)
133 valMin=float((lower_bound)*scaling_factor) 132 valMin=float((lower_bound)*scaling_factor)
134 if upper_bound!=0 and lower_bound==0: 133 if upper_bound!=0 and lower_bound==0:
135 model.reactions.get_by_id(reaction).upper_bound=valMax 134 model.reactions.get_by_id(reaction).upper_bound=valMax
136 if upper_bound==0 and lower_bound!=0: 135 if upper_bound==0 and lower_bound!=0:
174 pd.DataFrame: DataFrame containing the bounds of reactions in the model. 173 pd.DataFrame: DataFrame containing the bounds of reactions in the model.
175 """ 174 """
176 rxns_ids = [rxn.id for rxn in model.reactions] 175 rxns_ids = [rxn.id for rxn in model.reactions]
177 176
178 # Set medium conditions 177 # Set medium conditions
178 '''
179 reactions_medium=model2.medium.keys()
180 for reaction in reactions_medium:
181 if(reaction != "EX_thbpt_e" and reaction != "EX_lac__L_e"):
182 model2.reactions.get_by_id(reaction).lower_bound=-float(ras_meta.loc[cell,"countmatrix_"+reaction])
183 if(reaction == "EX_lac__L_e"):
184 model2.reactions.get_by_id(reaction).lower_bound=float(0.0)
185 '''
179 for reaction, value in medium.items(): 186 for reaction, value in medium.items():
180 if value is not None: 187 if value is not None:
181 model.reactions.get_by_id(reaction).lower_bound = -float(value) 188 model.reactions.get_by_id(reaction).lower_bound = -float(value)
182 189
183 # Perform Flux Variability Analysis (FVA) 190 # Perform Flux Variability Analysis (FVA)
184 df_FVA = cobra.flux_analysis.flux_variability_analysis(model, fraction_of_optimum=0, processes=1).round(8) 191 df_FVA = cobra.flux_analysis.flux_variability_analysis(model, fraction_of_optimum=0, processes=1).round(8)
185 192
186 # Set FVA bounds 193 # Set FVA bounds
187 for reaction in rxns_ids: 194 for reaction in rxns_ids:
188 rxn = model.reactions.get_by_id(reaction) 195 model.reactions.get_by_id(reaction).lower_bound = float(df_FVA.loc[reaction, "minimum"])
189 rxn.lower_bound = float(df_FVA.loc[reaction, "minimum"]) 196 model.reactions.get_by_id(reaction).upper_bound = float(df_FVA.loc[reaction, "maximum"])
190 rxn.upper_bound = float(df_FVA.loc[reaction, "maximum"])
191 197
192 if ras is not None: 198 if ras is not None:
193 Parallel(n_jobs=cpu_count())(delayed(process_ras_cell)(cellName, ras_row, model, rxns_ids, output_folder) for cellName, ras_row in ras.iterrows()) 199 Parallel(n_jobs=cpu_count())(delayed(process_ras_cell)(cellName, ras_row, model, rxns_ids, output_folder) for cellName, ras_row in ras.iterrows())
194 #for cellName, ras_row in ras.iterrows():
195 #process_ras_cell(cellName, ras_row, model, rxns_ids, output_folder)
196 else: 200 else:
197 model_new = model.copy() 201 model_new = model.copy()
198 apply_ras_bounds(model_new, pd.Series([1]*len(rxns_ids), index=rxns_ids), rxns_ids) 202 apply_ras_bounds(model_new, pd.Series([1]*len(rxns_ids), index=rxns_ids), rxns_ids)
199 bounds = pd.DataFrame([(rxn.lower_bound, rxn.upper_bound) for rxn in model_new.reactions], index=rxns_ids, columns=["lower_bound", "upper_bound"]) 203 bounds = pd.DataFrame([(rxn.lower_bound, rxn.upper_bound) for rxn in model_new.reactions], index=rxns_ids, columns=["lower_bound", "upper_bound"])
200 bounds.to_csv(output_folder + "bounds.csv", sep='\t', index=True) 204 bounds.to_csv(output_folder + "bounds.csv", sep='\t', index=True)