def test_flux_map_knockout(simple_model): simple_model.objective = simple_model.reactions.R4 simple_model.reactions.R8.knock_out() simple_model.optimize() svg = flux_map(simple_model, figsize=(300, 250)) assert svg is not None
def test_flux_map(simple_model): svg = flux_map(simple_model, display_name_format=lambda x: str(x.id), figsize=(300, 250), flux_dict={rxn.id: None for rxn in simple_model.reactions}) assert svg is not None
from cobra.io import load_json_model from d3flux import flux_map new_model = load_json_model('simple_model.json') new_model.objective = new_model.reactions.R4 # new_model.reactions.R8.knock_out() new_model.reactions.R6.knock_out() new_model.optimize() new_model.metabolites.B.notes['map_info']['align'] = 'left' new_model.metabolites.P.notes['map_info']['align'] = 'lower center' new_model.metabolites.C.notes['map_info']['align'] = 'upper right' new_model.reactions.R5.bounds = (-1000, 1000) html = flux_map(new_model, figsize=(300, 250), inactive_alpha=0.5) with open('test.html', 'w') as f: f.write( '<!DOCTYPE html> <html> <head> <title>Test d3flux page</title> <script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.2/require.min.js" integrity="sha256-Vjusm6Kh2U7/tb6jBh+MOfxnaf2TWsTph34bMKhC1Qc=" crossorigin="anonymous"></script> <script src="https://code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> </head> <body>' ) f.write(html.data) f.write('</body> </html>')
def print_summary(scope, tar_met, pathways, cut_len, cyclic, namemap, src_met, seed_met, G, all_tar2src, diff_tar2src): # global pathway1 # pathway1 = create_pathway(seed_met, cut_len, src_met, tar_met, 0, most_diff, namemap, G) # global pathway2 # pathway2 = create_pathway(seed_met, cut_len, src_met, tar_met, 1, most_diff, namemap, G) global pathsHTML global pathsUnion pathsHTML = [] labels = [] pathsUnion = [] labelsUnion = [] labelsSummary = [] len_scopes = [] cut_branched_pathss = [] all_cnts = [] cut_cnts = [] cut_cyclics = [] minstepss = [] for i in range(len(tar_met)): for j in range(len(src_met)): labelSummary = "%s %s to %s summary"%("_".join(modids), src_met[j], tar_met[i]) labelsSummary.append(labelSummary) if len(diff_tar2src[tar_met[i]][src_met[j]]) == 0: if len(all_tar2src[tar_met[i]][src_met[j]]) == 0: print('No pathway found for %s to %s'%(src_met[j],tar_met[i])) pathsHTML.append(None) label = "%s %s to %s no pathway"%("_".join(modids), src_met[j], tar_met[i]) labels.append(label) pathsUnion.append(None) labelsUnion.append(label) len_scopes.append(len(scope)) cut_branched_paths = len(all_tar2src[tar_met[i]][src_met[j]]) cut_branched_pathss.append(cut_branched_paths) all_cnts.append(None) cut_cnts.append(None) cut_cyclics.append(None) minstepss.append(None) else: print('just one pathway found for %s to %s'%(src_met[j],tar_met[i])) k = 0 r = all_tar2src[tar_met[i]][src_met[j]][k] d = create_pathway(namemap, G, r) jsonFileName = '%s_%s to %s_just one pathway.json'%("_".join(modids), src_met[j], tar_met[i]) with open(os.path.join(app.config['UPLOAD_PATH'], jsonFileName), 'w') as fp: json.dump(d, fp, separators=(',',':')) mod = cobra.io.json.load_json_model(os.path.join(app.config['UPLOAD_PATH'], jsonFileName)) page = flux_map(mod, display_name_format=lambda x: str(x.id), figsize=(1024,500),flux_dict={rxn.id: None for rxn in mod.reactions}) pathsHTML.append(page) label = jsonFileName labels.append(label) pathsUnion.append(page) labelsUnion.append(label) pred = G.predecessors succ = G.successors all_pathways_count = [] path_count = [] cyclic_pathway_count = [] all_reactions_involved = [] len_scope = len(scope) len_scopes.append(len_scope) cut_branched_paths = len(all_tar2src[tar_met[i]][src_met[j]]) cut_branched_pathss.append(cut_branched_paths) for plen in pathways[tar_met[i]]: all_pathways_count.append(len(pathways[tar_met[i]][plen])) if plen <= int(cut_len): path_count.append(len(pathways[tar_met[i]][plen])) for p in pathways[tar_met[i]][plen]: for reactions in p: all_reactions_involved.append(reactions) if tar_met[i] in cyclic: for plen in cyclic[tar_met[i]]: if plen <= int(cut_len): cyclic_pathway_count.append(len(cyclic[tar_met[i]][plen])) all_cnt = sum(all_pathways_count) all_cnts.append(all_cnt) cut_cnt = sum(path_count) cut_cnts.append(cut_cnt) cut_cyclic = sum(cyclic_pathway_count) cut_cyclics.append(cut_cyclic) minsteps = min(pathways[tar_met[i]]) minstepss.append(minsteps) else: wt = {} for a in range(len(all_tar2src[tar_met[i]][src_met[j]])): for b in range(len(all_tar2src[tar_met[i]][src_met[j]][a])): wt[all_tar2src[tar_met[i]][src_met[j]][a][b].replace(" ","")] = 0 for a in range(len(all_tar2src[tar_met[i]][src_met[j]])): for b in range(len(all_tar2src[tar_met[i]][src_met[j]][a])): wt[all_tar2src[tar_met[i]][src_met[j]][a][b].replace(" ","")] += 1 rUnion = set() for a in range(len(all_tar2src[tar_met[i]][src_met[j]])): rUnion.update(all_tar2src[tar_met[i]][src_met[j]][a]) rUnion = list(rUnion) dUnion = create_pathway(namemap, G, rUnion) jsonFileName = '%s_%s to %s_UNION.json'%("_".join(modids), src_met[j], tar_met[i]) with open(os.path.join(app.config['UPLOAD_PATH'], jsonFileName), 'w') as fp: json.dump(dUnion, fp, separators=(',',':')) modUnion = cobra.io.json.load_json_model(os.path.join(app.config['UPLOAD_PATH'], jsonFileName)) solution = modUnion.optimize() a = 0 for reacts in modUnion.reactions: rs = str(reacts.id) solution.fluxes[a] = wt[rs] a = a+1 pageUnion = flux_map(modUnion, display_name_format=lambda x: str(x.id), figsize=(1024,500),flux_dict= solution) pathsUnion.append(pageUnion) labelUnion = jsonFileName labelsUnion.append(labelUnion) pred = G.predecessors succ = G.successors all_pathways_count = [] path_count = [] cyclic_pathway_count = [] all_reactions_involved = [] len_scope = len(scope) len_scopes.append(len_scope) cut_branched_paths = len(all_tar2src[tar_met[i]][src_met[j]]) cut_branched_pathss.append(cut_branched_paths) for plen in pathways[tar_met[i]]: all_pathways_count.append(len(pathways[tar_met[i]][plen])) if plen <= int(cut_len): path_count.append(len(pathways[tar_met[i]][plen])) for p in pathways[tar_met[i]][plen]: for reactions in p: all_reactions_involved.append(reactions) if tar_met[i] in cyclic: for plen in cyclic[tar_met[i]]: if plen <= int(cut_len): cyclic_pathway_count.append(len(cyclic[tar_met[i]][plen])) all_cnt = sum(all_pathways_count) all_cnts.append(all_cnt) cut_cnt = sum(path_count) cut_cnts.append(cut_cnt) cut_cyclic = sum(cyclic_pathway_count) cut_cyclics.append(cut_cyclic) minsteps = min(pathways[tar_met[i]]) minstepss.append(minsteps) for k in range(2): print('Most different pathway combination found for %s to %s'%(src_met[j],tar_met[i])) r = diff_tar2src[tar_met[i]][src_met[j]][k] d = create_pathway(namemap, G, r) jsonFileName = '%s_%s to %s_%i.json'%("_".join(modids), src_met[j], tar_met[i], k) with open(os.path.join(app.config['UPLOAD_PATH'], jsonFileName), 'w') as fp: json.dump(d, fp, separators=(',',':')) mod = cobra.io.json.load_json_model(os.path.join(app.config['UPLOAD_PATH'], jsonFileName)) page = flux_map(mod, display_name_format=lambda x: str(x.id), figsize=(1024,500),flux_dict={rxn.id: None for rxn in mod.reactions}) pathsHTML.append(page) label = jsonFileName labels.append(label) return render_template('combi.html', pathsHTML = pathsHTML, labels = labels, pathsUnion = pathsUnion, labelsUnion = labelsUnion, labelsSummary = labelsSummary, len_scopes = len_scopes, cut_branched_pathss = cut_branched_pathss, all_cnts = all_cnts, cut_cnts = cut_cnts, cut_cyclics = cut_cyclics, minstepss = minstepss, cut_len = cut_len, tar_met = tar_met)