Source code for fluxpyt.draw_flux_map
# -*- coding: utf-8 -*-
"""
Created on Thu Sep 21 11:07:25 2017
@author: Trunil
"""
[docs]def draw_flux_map(filename):
'''
Input: filename of flux diagram in svg format.
'''
import pickle
#read pickle file
f = open('optimization_data.pckl', 'rb')
obj = pickle.load(f)
global best_params,null_mat,stoich_matrix,model_metabolite,rxnId_networks,rxn_networks
global measured_mids,substrate_mids,rates,bounds,userInput,y1,name,optimal_flux_dist
global initial_sol,chi2_optimal
best_params = obj[0].params
null_mat = obj[1]
stoich_matrix = obj[2]
model_metabolite = obj[3]
rxnId_networks = obj[4]
rxn_networks = obj[5]
measured_mids = obj[6]
substrate_mids = obj[7]
rates = obj[8]
bounds = obj[9]
userInput = obj[10]
optimal_flux_dist = obj[12]
rxnIds = optimal_flux_dist[0]
initial_sol = obj[13]
chi2_optimal = obj[0].chisqr
f.close()
# find net fluxes for reversible reactions
rev_rxn_tuple = []
comp = [] #rows added in rev_rxn_tuple
ST = stoich_matrix.transpose()
num_row = ST.shape[0]
for i in range(num_row):
rw_i = ST[i]
num_non_neg = len([x for x in rw_i if x != 0])
if i not in comp and num_non_neg > 1:
comp.append(i)
for j in range(num_row):
rw_j = ST[j]
sum_row = rw_i+rw_j
check_non_neg = [x for x in sum_row if x != 0]
if len(check_non_neg) == 0:
rev_rxn_tuple.append((model_metabolite[0][i],model_metabolite[0][j]))
comp.append(j)
#calculate net fluxes for forward reaction:
net_flux = [[],[]]
for tpl in rev_rxn_tuple:
sel_rxn1 = tpl[0]
sel_rxn2 = tpl[1]
ind1 = rxnIds.index(sel_rxn1)
ind2 = rxnIds.index(sel_rxn2)
net_flux[0].append(sel_rxn1)
v1 = optimal_flux_dist[1][ind1]
v2 = optimal_flux_dist[1][ind2]
vv = v1-v2
net_flux[1].append(vv)
filepath = filename + '.svg'
f = open(filepath,'r')
lines = f.readlines()
f.close()
filepath2 = filename + '_fluxMap' + '.svg'
f1 = open(filepath2,'w')
for l in lines:
l = str(l)
for rxn in rxnIds:
found = 0
if rxn in l:
found = 1
ind = optimal_flux_dist[0].index(rxn)
p = l.split(rxn)
if rxn in net_flux[0]:
ind_rxn = net_flux[0].index(rxn)
flux1 = net_flux[1][ind_rxn]
flux = '{:0.3f}'.format(flux1)
else:
flux = optimal_flux_dist[1][ind]
flux = '{:0.3f}'.format(flux)
val = str(flux)
q = val.join(p)
f1.write(q)
break
if found == 0:
f1.write(l)
f1.close()
print('\nFlux map drawn.\n')