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