Example #1
0
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
Example #2
0
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>')
Example #4
0
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)