In [1]:
import pandas as pd
import os
import matplotlib.pyplot as plt
import escher
import webbrowser
import numpy as np

BASE_DIR = os.path.expanduser('~/git/small-molecule-regulation/')
DATA_DIR = os.path.join(BASE_DIR, 'data')
CACHE_DIR = os.path.join(BASE_DIR, 'cache')
RESULT_DIR = os.path.join(BASE_DIR, 'res')


ki = pd.DataFrame.from_csv(os.path.join(CACHE_DIR, 'ecoli_ki_bigg.csv'))
act = pd.DataFrame.from_csv(os.path.join(CACHE_DIR, 'ecoli_activating_bigg.csv'))
act['Value'] = np.nan

allo = pd.concat([ki, act])
allo = allo.loc[allo.groupby(['EC_number', 'bigg.metabolite'])['Value'].idxmin()]
bigg2ec = pd.DataFrame.from_csv(os.path.join(CACHE_DIR, 'bigg2ec.csv'))
allo = pd.merge(allo, bigg2ec, on='EC_number')


---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-1-3e660f151db5> in <module>()
      2 import os
      3 import matplotlib.pyplot as plt
----> 4 import escher
      5 import webbrowser
      6 import numpy as np

ImportError: No module named escher

In [4]:
mets = allo.groupby('bigg.metabolite').min()[['Value']]
rxns = allo.groupby('bigg.reaction').min()[['Value']]
rxns.index = map(str.upper, rxns.index)

mets[~mets['Value'].isnull()] = 1
mets[mets['Value'].isnull()] = 2
rxns[~rxns['Value'].isnull()] = 1
rxns[rxns['Value'].isnull()] = 2

In [5]:
my_builder = escher.Builder(map_json=os.path.join(DATA_DIR, 'iJO1366.CCM.json'),
                            metabolite_data=mets['Value'].to_dict(),
                            reaction_data=rxns['Value'].to_dict())
res_html = os.path.join(RESULT_DIR, 'allostery_ccm.html')
my_builder.save_html(res_html, js_source='web', overwrite=True, never_ask_before_quit=True)
webbrowser.open(url='file://' + res_html)


Out[5]:
True

In [65]:
rxns['Value'].to_dict()


Out[65]:
{'23PDE2PP': 1.0,
 '23PDE4PP': 1.0,
 '23PDE7PP': 1.0,
 '23PDE9PP': 1.0,
 'ABTA': 1.0,
 'ACALD': 1.0,
 'ACGAMK': 1.0,
 'ACGK': 1.0,
 'ACOATA': 1.0,
 'ACODA': -1.0,
 'ADMDC': -1.0,
 'ADPT': 1.0,
 'ADSK': 1.0,
 'ADSS': 1.0,
 'AHCYSNS': 1.0,
 'AMAOTR': 1.0,
 'ANS': 1.0,
 'ARGTRS': -1.0,
 'ASAD': 1.0,
 'ASPCT': 1.0,
 'ASPK': 1.0,
 'ASPT': -1.0,
 'BETALDHX': 1.0,
 'BETALDHY': 1.0,
 'BTS5': 1.0,
 'CBPS': 1.0,
 'CFAS160E': 1.0,
 'CFAS160G': 1.0,
 'CFAS180E': 1.0,
 'CFAS180G': 1.0,
 'CTPS2': 1.0,
 'DAGK120': -1.0,
 'DAGK140': -1.0,
 'DAGK141': -1.0,
 'DAGK160': -1.0,
 'DAGK161': -1.0,
 'DAGK180': -1.0,
 'DAGK181': -1.0,
 'DASYN120': 1.0,
 'DASYN140': 1.0,
 'DASYN141': 1.0,
 'DASYN160': 1.0,
 'DASYN161': 1.0,
 'DASYN180': 1.0,
 'DASYN181': 1.0,
 'DBTS': 1.0,
 'DPR': 1.0,
 'EAR100X': 1.0,
 'EAR120X': 1.0,
 'EAR121X': 1.0,
 'EAR140X': 1.0,
 'EAR141X': 1.0,
 'EAR160X': 1.0,
 'EAR161X': 1.0,
 'EAR180X': 1.0,
 'EAR181X': 1.0,
 'EAR40X': 1.0,
 'EAR60X': 1.0,
 'EAR80X': 1.0,
 'FBA': 1.0,
 'FBA3': 1.0,
 'FBP': 1.0,
 'FLVR': 1.0,
 'FLVRX': 1.0,
 'FRUK': 1.0,
 'G3PAT120': -1.0,
 'G3PAT140': -1.0,
 'G3PAT141': -1.0,
 'G3PAT160': -1.0,
 'G3PAT161': -1.0,
 'G3PAT180': -1.0,
 'G3PAT181': -1.0,
 'G3PD2': 1.0,
 'G5SD': 1.0,
 'G6PDA': -1.0,
 'G6PDH2R': 1.0,
 'GCALDD': 1.0,
 'GF6PTA': 1.0,
 'GLCP': 1.0,
 'GLCP2': 1.0,
 'GLCS1': -1.0,
 'GLGC': 1.0,
 'GLU5K': 1.0,
 'GLUCYS': 1.0,
 'GLUDC': -1.0,
 'GLUDY': -1.0,
 'GLUPRT': 1.0,
 'GLYCDX': -1.0,
 'GMPS2': 1.0,
 'GTPDPK': -1.0,
 'GUAPRT': -1.0,
 'HMPK1': 1.0,
 'HSK': -1.0,
 'HXPRT': -1.0,
 'ICDHYR': 1.0,
 'ICL': 1.0,
 'ILETRS': -1.0,
 'IMPD': 1.0,
 'KARA1': 1.0,
 'KARA2': 1.0,
 'LACZ': 1.0,
 'LCADI': 1.0,
 'LYSDC': 1.0,
 'METS': -1.0,
 'MGSA': 1.0,
 'MTHFR2': 1.0,
 'NO3R1BPP': 1.0,
 'NO3R1PP': 1.0,
 'NO3R2BPP': 1.0,
 'NTD1': 1.0,
 'NTD10': 1.0,
 'NTD10PP': 1.0,
 'NTD11': 1.0,
 'NTD11PP': 1.0,
 'NTD12': 1.0,
 'NTD12PP': 1.0,
 'NTD1PP': 1.0,
 'NTD2': 1.0,
 'NTD2PP': 1.0,
 'NTD3': 1.0,
 'NTD3PP': 1.0,
 'NTD4': 1.0,
 'NTD4PP': 1.0,
 'NTD5': 1.0,
 'NTD5PP': 1.0,
 'NTD6': 1.0,
 'NTD6PP': 1.0,
 'NTD7': 1.0,
 'NTD7PP': 1.0,
 'NTD8': 1.0,
 'NTD8PP': 1.0,
 'NTD9': 1.0,
 'NTD9PP': 1.0,
 'OCBT': 1.0,
 'OMPDC': 1.0,
 'OXCDC': 1.0,
 'PDX5POI': 1.0,
 'PFK': -1.0,
 'PFK_2': -1.0,
 'PFK_3': -1.0,
 'PGLYCP': -1.0,
 'PPA': -1.0,
 'PPA2': -1.0,
 'PPK2R': 1.0,
 'PPKR': 1.0,
 'PRASCSI': 1.0,
 'PRPPS': 1.0,
 'PSD120': -1.0,
 'PSD140': -1.0,
 'PSD141': -1.0,
 'PSD160': -1.0,
 'PSD161': -1.0,
 'PSD180': -1.0,
 'PSD181': -1.0,
 'PTAR': -1.0,
 'PTPATI': 1.0,
 'PYAM5PO': 1.0,
 'PYK': -1.0,
 'RBP4E': 1.0,
 'RMPA': 1.0,
 'RNDR1': 1.0,
 'RNDR2': 1.0,
 'RNDR3': 1.0,
 'RNDR4': 1.0,
 'RPI': 1.0,
 'SELNPS': 1.0,
 'SSALY': -1.0,
 'THD2PP': -1.0,
 'THRS': 1.0,
 'TKT1': -1.0,
 'TKT2': -1.0,
 'TMDK1': -1.0,
 'TMDPP': 1.0,
 'TMK': -1.0,
 'TPI': 1.0,
 'TYRTRS': 1.0,
 'UDPGALM': -1.0,
 'UPPRT': -1.0}