def create_modelFromReactionsAndMetabolitesTables(self,rxns_table_I,mets_table_I): '''generate a cobra model from isotopomer_modelReactions and isotopomer_modelMetabolites tables''' cobra_model = Model(rxns_table_I[0]['model_id']); for rxn_cnt,rxn_row in enumerate(rxns_table_I): #if rxn_row['rxn_id'] == 'HEX1': # print 'check' mets = {} print(rxn_row['rxn_id']) # parse the reactants for rxn_met_cnt,rxn_met in enumerate(rxn_row['reactants_ids']): for met_cnt,met_row in enumerate(mets_table_I): if met_row['met_id']==rxn_met:# and met_row['balanced']: compartment = met_row['compartment'] if not compartment: met_id_tmp = met_row['met_id'].split('.')[0] compartment = met_id_tmp.split('_')[-1]; met_tmp = Metabolite(met_row['met_id'],met_row['formula'],met_row['met_name'],compartment) met_tmp.charge = met_row['charge'] # check for duplicate metabolites met_keys = list(mets.keys()); met_keys_ids = {}; if met_keys: for cnt,met in enumerate(met_keys): met_keys_ids[met.id]=cnt; if met_tmp.id in list(met_keys_ids.keys()): mets[met_keys[met_keys_ids[met_tmp.id]]]-=1 else: mets[met_tmp] = rxn_row['reactants_stoichiometry'][rxn_met_cnt]; break; # parse the products for rxn_met_cnt,rxn_met in enumerate(rxn_row['products_ids']): for met_cnt,met_row in enumerate(mets_table_I): if met_row['met_id']==rxn_met:# and met_row['balanced']: compartment = met_row['compartment'] if not compartment: met_id_tmp = met_row['met_id'].split('.')[0] compartment = met_id_tmp.split('_')[-1]; met_tmp = Metabolite(met_row['met_id'],met_row['formula'],met_row['met_name'],compartment) met_tmp.charge = met_row['charge'] # check for duplicate metabolites met_keys = list(mets.keys()); met_keys_ids = {}; if met_keys: for cnt,met in enumerate(met_keys): met_keys_ids[met.id]=cnt; if met_tmp.id in list(met_keys_ids.keys()): mets[met_keys[met_keys_ids[met_tmp.id]]]+=1 else: mets[met_tmp] = rxn_row['products_stoichiometry'][rxn_met_cnt]; break; rxn = None; rxn = Reaction(rxn_row['rxn_id']); rxn.add_metabolites(mets); rxn.lower_bound=rxn_row['lower_bound']; rxn.upper_bound=rxn_row['upper_bound']; rxn.subsystem=rxn_row['subsystem']; rxn.gpr=rxn_row['gpr']; rxn.objective_coefficient=rxn_row['objective_coefficient']; cobra_model.add_reactions([rxn]); cobra_model.repair(); return cobra_model