Advertisement
Guest User

Untitled

a guest
Nov 30th, 2015
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 85.93 KB | None | 0 0
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "markdown",
  5. "metadata": {},
  6. "source": [
  7. "## Maximum ENTropy Of the Stoichiometric matrix (MENTOS) ##\n",
  8. "\n",
  9. "If we know the standard chemical potentials $\\mu^0$ of the metabolites, the growth rate $v_0$, the external metabolite concentrations, $\\vec{c}_{ext}$, and we assume a maximum entropy principle, then we can solve for the internal metabolite concentrations $\\vec{c}$, the steady state fluxes, $\\vec{v}$ and the forward and reverse reaction rates $\\vec{r_{+}}$ and $\\vec{r_{-}}$.\n",
  10. "\n",
  11. "Reaction likelihoods, $L_j$, are based on the following ratio: \n",
  12. "\n",
  13. "$${L}_j = K_{j} /Q_j$$\n",
  14. "\t \n",
  15. "where $K_{j}$ is the equilibrium constant \n",
  16. "$$K_{j} = \\frac{\\prod^{products}_i (q_i)^{\\gamma_i}}{\\prod^{reactants}_i(q_i)^{\\gamma_i}} = \\frac{\\prod^{products}_i (e^{-\\frac{\\mu^0_i}{RT}})^{\\gamma_i}}{\\prod^{reactants}_i(e^{-\\frac{\\mu^0_i}{RT}})^{\\gamma_i}}$$ \n",
  17. "and $Q_j$ is the reaction quotient, $$ Q_j = \\frac{\\prod^{products}_i c_i^{\\gamma_i}}{\\prod^{reactants}_ic_i^{\\gamma_i}}$$\n",
  18. " where $\\gamma_i$ are the stoichiometric coefficients, $\\mu^0_i = -RT\\log q_i$ are the standard chemical potentials and $c_i$ are the chemical concentrations of the reactants and products of each reaction $j$. \n",
  19. "\n",
  20. "### Matrix form of the Equilibrium constant ###\n",
  21. "The log of the equilibrium constant is defined for each reaction $j$, as follows:\n",
  22. " $$\\begin{eqnarray}\n",
  23. " \\log K_{j} \n",
  24. " & = & -\\frac{1}{RT}(\\sum^{products}_i\\gamma_i\\mu_i^0 - \\sum^{reactants}_i\\gamma_i\\mu_i^0)\\\\\n",
  25. " \\end{eqnarray}$$\n",
  26. "\n",
  27. "In matrix form,\n",
  28. "$$ \\log\\vec{K} = -\\frac{1}{RT}S^T\\cdot \\vec{\\mu^0}$$\n",
  29. "$S$ is the $m\\times n$ matrix of stoichiometric coefficients, where\n",
  30. "\n",
  31. "$$\n",
  32. "s_{ij} =\n",
  33. "\\left\\{\n",
  34. " \\begin{array}{ll}\n",
  35. " \\gamma_{ij} & \\mbox{if metabolite $i$ is a product of reaction $j$ } \\\\\n",
  36. " -\\gamma_{ij} & \\mbox{if metabolite $i$ is a reactant of reaction $j$,} \\\\\n",
  37. " 0 & \\mbox{otherwise} \\\\\n",
  38. " \\end{array}\n",
  39. " \\right.\n",
  40. " $$\n",
  41. "\n",
  42. "### Matrix form of the Reaction Quotient ###\n",
  43. "\n",
  44. " The log of the reaction quotient is defined for each reaction, as follows:\n",
  45. " \n",
  46. " \n",
  47. " $$ \\log Q_j = \\sum^{products}_i\\gamma_i\\log c_i - \\sum^{reactants}_i\\gamma_i\\log c_i.$$\n",
  48. " \n",
  49. "In matrix form, \n",
  50. " \n",
  51. "$$\\log\\vec{Q} = S^T\\cdot\\log \\vec{c}$$\n",
  52. "\n",
  53. "### Matrix form of the reaction likelihood ratio ###\n",
  54. "The log of the likelihood ratio is defined for each reaction $r$ as follows:\n",
  55. "$$\\log {L}_j = \\log K_{j} - \\log Q_j$$\n",
  56. "\n",
  57. " Placing the likelihood ratio in matrix notation,\n",
  58. " $$\\begin{eqnarray}\n",
  59. " \\log \\vec{L} & = & \\log \\vec{K} - \\log \\vec{Q} \\\\\n",
  60. " & = & -\\frac{1}{RT}S^T\\cdot\\vec{\\mu^0} - S^T\\cdot\\log\\vec{c} \\\\\n",
  61. " \\end{eqnarray}$$\n",
  62. "\n"
  63. ]
  64. },
  65. {
  66. "cell_type": "markdown",
  67. "metadata": {},
  68. "source": [
  69. "\n",
  70. "### Consider the entropy maximization problem:###\n",
  71. "$$ \\begin{array}{ll}\n",
  72. " \\underset{\\vec{c}, \\vec{v}}{\\mbox{maximize}} & \\sum_j\\mbox{entropy}(L_j) \\\\\n",
  73. " \\mbox{subject to} & \\log \\vec{L} \\geq -\\frac{1}{RT}S^T\\cdot\\vec{\\mu^0} - S^T\\cdot\\log\\vec{c} \\\\\n",
  74. " & S\\cdot \\vec{L} = 0 \\\\\n",
  75. " & \\log \\vec{c} \\geq \\log c_L \\\\\n",
  76. " & \\log A_{ext} = \\log E_{ext} = \\log c_U \\\\\n",
  77. " & \\log E_{ext} = \\log D_{ext} = \\log c_L \\\\\n",
  78. " \\end{array}$$\n",
  79. " \n",
  80. "The likelihood $L_j$ is just the ratio of the reaction forward and reverse rates $r_{+j}$ and $r_{-j}$.\n",
  81. "$$\\begin{eqnarray}\n",
  82. "L_j &=& \\frac{r_{+j}}{r_{-j}} \\\\\n",
  83. "\\end{eqnarray}$$\n",
  84. "The net flux $v_j$ is the difference of the forward and reverse rates:\n",
  85. "$$\\begin{eqnarray}\n",
  86. "v_j &=& r_{+j} - r_{-j} \\\\\n",
  87. "\\end{eqnarray}$$\n",
  88. "\n",
  89. "Solving for the forward reaction rates $r_{+j}$ and $r_{-j}$:\n",
  90. "$$\\begin{eqnarray}\n",
  91. "r_{-j} & = & \\frac{r_{+j}}{L_j} \\\\\n",
  92. " r_{+j} - r_{-j} & = & v_j \\\\\n",
  93. " r_{+j} - \\frac{r_{+j}}{L_j} & = & v_j \\\\\n",
  94. "r_{+j}(1 -\\frac{1}{L_j}) & = & v_j \\\\\n",
  95. "r_{+j} & = & \\frac{v_j}{1-\\frac{1}{L_j}} \\\\\n",
  96. " & = & \\frac{L_jv_j}{L_j - 1} \\\\\n",
  97. "r_{-j} & = & \\frac{v_j}{L_j - 1} \\\\\n",
  98. "\\end{eqnarray}$$\n",
  99. "\n",
  100. "Finally, the net flux is equal to the product of a reference flux $v_0$ and the normalized likelihoods\n",
  101. "$$\\begin{eqnarray}\n",
  102. "v_j &=& v_0\\frac{L_j}{\\sum_i L_j} \\\\\n",
  103. "\\end{eqnarray}$$\n"
  104. ]
  105. },
  106. {
  107. "cell_type": "markdown",
  108. "metadata": {},
  109. "source": [
  110. "## Example: S. Cerevisae ##\n"
  111. ]
  112. },
  113. {
  114. "cell_type": "code",
  115. "execution_count": 66,
  116. "metadata": {
  117. "collapsed": false,
  118. "scrolled": false
  119. },
  120. "outputs": [
  121. {
  122. "name": "stdout",
  123. "output_type": "stream",
  124. "text": [
  125. "['GLCi', 'G6P', 'F6P', 'FBP', 'DHAP', 'GAP', 'BPG', '3PG', '2PG', 'PEP', 'PYR', 'AcALD', 'ETH', 'ATP', 'ADP', 'NAD+', 'NADH', 'Pi', 'CO2', 'H2O']\n"
  126. ]
  127. },
  128. {
  129. "data": {
  130. "text/html": [
  131. "<div>\n",
  132. "<table border=\"1\" class=\"dataframe\">\n",
  133. " <thead>\n",
  134. " <tr style=\"text-align: right;\">\n",
  135. " <th></th>\n",
  136. " <th>UGLY_1</th>\n",
  137. " <th>UGLY_2</th>\n",
  138. " <th>UGLY_3</th>\n",
  139. " <th>UGLY_4</th>\n",
  140. " <th>UGLY_5</th>\n",
  141. " <th>DGLY_1</th>\n",
  142. " <th>DGLY_2</th>\n",
  143. " <th>DGLY_3</th>\n",
  144. " <th>DGLY_4</th>\n",
  145. " <th>DGLY_5</th>\n",
  146. " <th>...</th>\n",
  147. " <th>DGLY_7</th>\n",
  148. " <th>EXTR_1</th>\n",
  149. " <th>EXTR_2</th>\n",
  150. " <th>EXTR_3</th>\n",
  151. " <th>EXTR_4</th>\n",
  152. " <th>EXTR_5</th>\n",
  153. " <th>EXTR_6</th>\n",
  154. " <th>EXTR_7</th>\n",
  155. " <th>EXTR_8</th>\n",
  156. " <th>EXTR_9</th>\n",
  157. " </tr>\n",
  158. " </thead>\n",
  159. " <tbody>\n",
  160. " <tr>\n",
  161. " <th>GLCi</th>\n",
  162. " <td>-1.000</td>\n",
  163. " <td>0.000</td>\n",
  164. " <td>0.000</td>\n",
  165. " <td>0.000</td>\n",
  166. " <td>0.000</td>\n",
  167. " <td>0.000</td>\n",
  168. " <td>0.000</td>\n",
  169. " <td>0.000</td>\n",
  170. " <td>0.000</td>\n",
  171. " <td>0.000</td>\n",
  172. " <td>...</td>\n",
  173. " <td>0.000</td>\n",
  174. " <td>1.000</td>\n",
  175. " <td>0.000</td>\n",
  176. " <td>0.000</td>\n",
  177. " <td>0.000</td>\n",
  178. " <td>0.000</td>\n",
  179. " <td>0.000</td>\n",
  180. " <td>0.000</td>\n",
  181. " <td>0.000</td>\n",
  182. " <td>0.000</td>\n",
  183. " </tr>\n",
  184. " <tr>\n",
  185. " <th>G6P</th>\n",
  186. " <td>1.000</td>\n",
  187. " <td>-1.000</td>\n",
  188. " <td>0.000</td>\n",
  189. " <td>0.000</td>\n",
  190. " <td>0.000</td>\n",
  191. " <td>0.000</td>\n",
  192. " <td>0.000</td>\n",
  193. " <td>0.000</td>\n",
  194. " <td>0.000</td>\n",
  195. " <td>0.000</td>\n",
  196. " <td>...</td>\n",
  197. " <td>0.000</td>\n",
  198. " <td>0.000</td>\n",
  199. " <td>0.000</td>\n",
  200. " <td>0.000</td>\n",
  201. " <td>0.000</td>\n",
  202. " <td>0.000</td>\n",
  203. " <td>0.000</td>\n",
  204. " <td>0.000</td>\n",
  205. " <td>0.000</td>\n",
  206. " <td>0.000</td>\n",
  207. " </tr>\n",
  208. " <tr>\n",
  209. " <th>F6P</th>\n",
  210. " <td>0.000</td>\n",
  211. " <td>1.000</td>\n",
  212. " <td>-1.000</td>\n",
  213. " <td>0.000</td>\n",
  214. " <td>0.000</td>\n",
  215. " <td>0.000</td>\n",
  216. " <td>0.000</td>\n",
  217. " <td>0.000</td>\n",
  218. " <td>0.000</td>\n",
  219. " <td>0.000</td>\n",
  220. " <td>...</td>\n",
  221. " <td>0.000</td>\n",
  222. " <td>0.000</td>\n",
  223. " <td>0.000</td>\n",
  224. " <td>0.000</td>\n",
  225. " <td>0.000</td>\n",
  226. " <td>0.000</td>\n",
  227. " <td>0.000</td>\n",
  228. " <td>0.000</td>\n",
  229. " <td>0.000</td>\n",
  230. " <td>0.000</td>\n",
  231. " </tr>\n",
  232. " <tr>\n",
  233. " <th>FBP</th>\n",
  234. " <td>0.000</td>\n",
  235. " <td>0.000</td>\n",
  236. " <td>1.000</td>\n",
  237. " <td>-1.000</td>\n",
  238. " <td>0.000</td>\n",
  239. " <td>0.000</td>\n",
  240. " <td>0.000</td>\n",
  241. " <td>0.000</td>\n",
  242. " <td>0.000</td>\n",
  243. " <td>0.000</td>\n",
  244. " <td>...</td>\n",
  245. " <td>0.000</td>\n",
  246. " <td>0.000</td>\n",
  247. " <td>0.000</td>\n",
  248. " <td>0.000</td>\n",
  249. " <td>0.000</td>\n",
  250. " <td>0.000</td>\n",
  251. " <td>0.000</td>\n",
  252. " <td>0.000</td>\n",
  253. " <td>0.000</td>\n",
  254. " <td>0.000</td>\n",
  255. " </tr>\n",
  256. " <tr>\n",
  257. " <th>DHAP</th>\n",
  258. " <td>0.000</td>\n",
  259. " <td>0.000</td>\n",
  260. " <td>0.000</td>\n",
  261. " <td>1.000</td>\n",
  262. " <td>-1.000</td>\n",
  263. " <td>0.000</td>\n",
  264. " <td>0.000</td>\n",
  265. " <td>0.000</td>\n",
  266. " <td>0.000</td>\n",
  267. " <td>0.000</td>\n",
  268. " <td>...</td>\n",
  269. " <td>0.000</td>\n",
  270. " <td>0.000</td>\n",
  271. " <td>0.000</td>\n",
  272. " <td>0.000</td>\n",
  273. " <td>0.000</td>\n",
  274. " <td>0.000</td>\n",
  275. " <td>0.000</td>\n",
  276. " <td>0.000</td>\n",
  277. " <td>0.000</td>\n",
  278. " <td>0.000</td>\n",
  279. " </tr>\n",
  280. " <tr>\n",
  281. " <th>GAP</th>\n",
  282. " <td>0.000</td>\n",
  283. " <td>0.000</td>\n",
  284. " <td>0.000</td>\n",
  285. " <td>1.000</td>\n",
  286. " <td>1.000</td>\n",
  287. " <td>-1.000</td>\n",
  288. " <td>0.000</td>\n",
  289. " <td>0.000</td>\n",
  290. " <td>0.000</td>\n",
  291. " <td>0.000</td>\n",
  292. " <td>...</td>\n",
  293. " <td>0.000</td>\n",
  294. " <td>0.000</td>\n",
  295. " <td>0.000</td>\n",
  296. " <td>0.000</td>\n",
  297. " <td>0.000</td>\n",
  298. " <td>0.000</td>\n",
  299. " <td>0.000</td>\n",
  300. " <td>0.000</td>\n",
  301. " <td>0.000</td>\n",
  302. " <td>0.000</td>\n",
  303. " </tr>\n",
  304. " <tr>\n",
  305. " <th>BPG</th>\n",
  306. " <td>0.000</td>\n",
  307. " <td>0.000</td>\n",
  308. " <td>0.000</td>\n",
  309. " <td>0.000</td>\n",
  310. " <td>0.000</td>\n",
  311. " <td>1.000</td>\n",
  312. " <td>-1.000</td>\n",
  313. " <td>0.000</td>\n",
  314. " <td>0.000</td>\n",
  315. " <td>0.000</td>\n",
  316. " <td>...</td>\n",
  317. " <td>0.000</td>\n",
  318. " <td>0.000</td>\n",
  319. " <td>0.000</td>\n",
  320. " <td>0.000</td>\n",
  321. " <td>0.000</td>\n",
  322. " <td>0.000</td>\n",
  323. " <td>0.000</td>\n",
  324. " <td>0.000</td>\n",
  325. " <td>0.000</td>\n",
  326. " <td>0.000</td>\n",
  327. " </tr>\n",
  328. " <tr>\n",
  329. " <th>3PG</th>\n",
  330. " <td>0.000</td>\n",
  331. " <td>0.000</td>\n",
  332. " <td>0.000</td>\n",
  333. " <td>0.000</td>\n",
  334. " <td>0.000</td>\n",
  335. " <td>0.000</td>\n",
  336. " <td>1.000</td>\n",
  337. " <td>-1.000</td>\n",
  338. " <td>0.000</td>\n",
  339. " <td>0.000</td>\n",
  340. " <td>...</td>\n",
  341. " <td>0.000</td>\n",
  342. " <td>0.000</td>\n",
  343. " <td>0.000</td>\n",
  344. " <td>0.000</td>\n",
  345. " <td>0.000</td>\n",
  346. " <td>0.000</td>\n",
  347. " <td>0.000</td>\n",
  348. " <td>0.000</td>\n",
  349. " <td>0.000</td>\n",
  350. " <td>0.000</td>\n",
  351. " </tr>\n",
  352. " <tr>\n",
  353. " <th>2PG</th>\n",
  354. " <td>0.000</td>\n",
  355. " <td>0.000</td>\n",
  356. " <td>0.000</td>\n",
  357. " <td>0.000</td>\n",
  358. " <td>0.000</td>\n",
  359. " <td>0.000</td>\n",
  360. " <td>0.000</td>\n",
  361. " <td>1.000</td>\n",
  362. " <td>-1.000</td>\n",
  363. " <td>0.000</td>\n",
  364. " <td>...</td>\n",
  365. " <td>0.000</td>\n",
  366. " <td>0.000</td>\n",
  367. " <td>0.000</td>\n",
  368. " <td>0.000</td>\n",
  369. " <td>0.000</td>\n",
  370. " <td>0.000</td>\n",
  371. " <td>0.000</td>\n",
  372. " <td>0.000</td>\n",
  373. " <td>0.000</td>\n",
  374. " <td>0.000</td>\n",
  375. " </tr>\n",
  376. " <tr>\n",
  377. " <th>PEP</th>\n",
  378. " <td>0.000</td>\n",
  379. " <td>0.000</td>\n",
  380. " <td>0.000</td>\n",
  381. " <td>0.000</td>\n",
  382. " <td>0.000</td>\n",
  383. " <td>0.000</td>\n",
  384. " <td>0.000</td>\n",
  385. " <td>0.000</td>\n",
  386. " <td>1.000</td>\n",
  387. " <td>-1.000</td>\n",
  388. " <td>...</td>\n",
  389. " <td>0.000</td>\n",
  390. " <td>0.000</td>\n",
  391. " <td>0.000</td>\n",
  392. " <td>0.000</td>\n",
  393. " <td>0.000</td>\n",
  394. " <td>0.000</td>\n",
  395. " <td>0.000</td>\n",
  396. " <td>0.000</td>\n",
  397. " <td>0.000</td>\n",
  398. " <td>0.000</td>\n",
  399. " </tr>\n",
  400. " <tr>\n",
  401. " <th>PYR</th>\n",
  402. " <td>0.000</td>\n",
  403. " <td>0.000</td>\n",
  404. " <td>0.000</td>\n",
  405. " <td>0.000</td>\n",
  406. " <td>0.000</td>\n",
  407. " <td>0.000</td>\n",
  408. " <td>0.000</td>\n",
  409. " <td>0.000</td>\n",
  410. " <td>0.000</td>\n",
  411. " <td>1.000</td>\n",
  412. " <td>...</td>\n",
  413. " <td>0.000</td>\n",
  414. " <td>0.000</td>\n",
  415. " <td>0.000</td>\n",
  416. " <td>0.000</td>\n",
  417. " <td>0.000</td>\n",
  418. " <td>0.000</td>\n",
  419. " <td>0.000</td>\n",
  420. " <td>0.000</td>\n",
  421. " <td>0.000</td>\n",
  422. " <td>0.000</td>\n",
  423. " </tr>\n",
  424. " <tr>\n",
  425. " <th>AcALD</th>\n",
  426. " <td>0.000</td>\n",
  427. " <td>0.000</td>\n",
  428. " <td>0.000</td>\n",
  429. " <td>0.000</td>\n",
  430. " <td>0.000</td>\n",
  431. " <td>0.000</td>\n",
  432. " <td>0.000</td>\n",
  433. " <td>0.000</td>\n",
  434. " <td>0.000</td>\n",
  435. " <td>0.000</td>\n",
  436. " <td>...</td>\n",
  437. " <td>-1.000</td>\n",
  438. " <td>0.000</td>\n",
  439. " <td>0.000</td>\n",
  440. " <td>0.000</td>\n",
  441. " <td>0.000</td>\n",
  442. " <td>0.000</td>\n",
  443. " <td>0.000</td>\n",
  444. " <td>0.000</td>\n",
  445. " <td>0.000</td>\n",
  446. " <td>0.000</td>\n",
  447. " </tr>\n",
  448. " <tr>\n",
  449. " <th>ETH</th>\n",
  450. " <td>0.000</td>\n",
  451. " <td>0.000</td>\n",
  452. " <td>0.000</td>\n",
  453. " <td>0.000</td>\n",
  454. " <td>0.000</td>\n",
  455. " <td>0.000</td>\n",
  456. " <td>0.000</td>\n",
  457. " <td>0.000</td>\n",
  458. " <td>0.000</td>\n",
  459. " <td>0.000</td>\n",
  460. " <td>...</td>\n",
  461. " <td>1.000</td>\n",
  462. " <td>0.000</td>\n",
  463. " <td>0.000</td>\n",
  464. " <td>0.000</td>\n",
  465. " <td>0.000</td>\n",
  466. " <td>0.000</td>\n",
  467. " <td>0.000</td>\n",
  468. " <td>0.000</td>\n",
  469. " <td>0.000</td>\n",
  470. " <td>-1.000</td>\n",
  471. " </tr>\n",
  472. " <tr>\n",
  473. " <th>ATP</th>\n",
  474. " <td>-1.000</td>\n",
  475. " <td>0.000</td>\n",
  476. " <td>-1.000</td>\n",
  477. " <td>0.000</td>\n",
  478. " <td>0.000</td>\n",
  479. " <td>0.000</td>\n",
  480. " <td>1.000</td>\n",
  481. " <td>0.000</td>\n",
  482. " <td>0.000</td>\n",
  483. " <td>1.000</td>\n",
  484. " <td>...</td>\n",
  485. " <td>0.000</td>\n",
  486. " <td>0.000</td>\n",
  487. " <td>1.000</td>\n",
  488. " <td>0.000</td>\n",
  489. " <td>0.000</td>\n",
  490. " <td>0.000</td>\n",
  491. " <td>0.000</td>\n",
  492. " <td>0.000</td>\n",
  493. " <td>0.000</td>\n",
  494. " <td>0.000</td>\n",
  495. " </tr>\n",
  496. " <tr>\n",
  497. " <th>ADP</th>\n",
  498. " <td>1.000</td>\n",
  499. " <td>0.000</td>\n",
  500. " <td>1.000</td>\n",
  501. " <td>0.000</td>\n",
  502. " <td>0.000</td>\n",
  503. " <td>0.000</td>\n",
  504. " <td>-1.000</td>\n",
  505. " <td>0.000</td>\n",
  506. " <td>0.000</td>\n",
  507. " <td>-1.000</td>\n",
  508. " <td>...</td>\n",
  509. " <td>0.000</td>\n",
  510. " <td>0.000</td>\n",
  511. " <td>0.000</td>\n",
  512. " <td>1.000</td>\n",
  513. " <td>0.000</td>\n",
  514. " <td>0.000</td>\n",
  515. " <td>0.000</td>\n",
  516. " <td>0.000</td>\n",
  517. " <td>0.000</td>\n",
  518. " <td>0.000</td>\n",
  519. " </tr>\n",
  520. " <tr>\n",
  521. " <th>NAD+</th>\n",
  522. " <td>0.000</td>\n",
  523. " <td>0.000</td>\n",
  524. " <td>0.000</td>\n",
  525. " <td>0.000</td>\n",
  526. " <td>0.000</td>\n",
  527. " <td>-1.000</td>\n",
  528. " <td>0.000</td>\n",
  529. " <td>0.000</td>\n",
  530. " <td>0.000</td>\n",
  531. " <td>0.000</td>\n",
  532. " <td>...</td>\n",
  533. " <td>1.000</td>\n",
  534. " <td>0.000</td>\n",
  535. " <td>0.000</td>\n",
  536. " <td>0.000</td>\n",
  537. " <td>1.000</td>\n",
  538. " <td>0.000</td>\n",
  539. " <td>0.000</td>\n",
  540. " <td>0.000</td>\n",
  541. " <td>0.000</td>\n",
  542. " <td>0.000</td>\n",
  543. " </tr>\n",
  544. " <tr>\n",
  545. " <th>NADH</th>\n",
  546. " <td>0.000</td>\n",
  547. " <td>0.000</td>\n",
  548. " <td>0.000</td>\n",
  549. " <td>0.000</td>\n",
  550. " <td>0.000</td>\n",
  551. " <td>1.000</td>\n",
  552. " <td>0.000</td>\n",
  553. " <td>0.000</td>\n",
  554. " <td>0.000</td>\n",
  555. " <td>0.000</td>\n",
  556. " <td>...</td>\n",
  557. " <td>-1.000</td>\n",
  558. " <td>0.000</td>\n",
  559. " <td>0.000</td>\n",
  560. " <td>0.000</td>\n",
  561. " <td>0.000</td>\n",
  562. " <td>1.000</td>\n",
  563. " <td>0.000</td>\n",
  564. " <td>0.000</td>\n",
  565. " <td>0.000</td>\n",
  566. " <td>0.000</td>\n",
  567. " </tr>\n",
  568. " <tr>\n",
  569. " <th>Pi</th>\n",
  570. " <td>0.000</td>\n",
  571. " <td>0.000</td>\n",
  572. " <td>0.000</td>\n",
  573. " <td>0.000</td>\n",
  574. " <td>0.000</td>\n",
  575. " <td>-1.000</td>\n",
  576. " <td>0.000</td>\n",
  577. " <td>0.000</td>\n",
  578. " <td>0.000</td>\n",
  579. " <td>0.000</td>\n",
  580. " <td>...</td>\n",
  581. " <td>0.000</td>\n",
  582. " <td>0.000</td>\n",
  583. " <td>0.000</td>\n",
  584. " <td>0.000</td>\n",
  585. " <td>0.000</td>\n",
  586. " <td>0.000</td>\n",
  587. " <td>1.000</td>\n",
  588. " <td>0.000</td>\n",
  589. " <td>0.000</td>\n",
  590. " <td>0.000</td>\n",
  591. " </tr>\n",
  592. " <tr>\n",
  593. " <th>CO2</th>\n",
  594. " <td>0.000</td>\n",
  595. " <td>0.000</td>\n",
  596. " <td>0.000</td>\n",
  597. " <td>0.000</td>\n",
  598. " <td>0.000</td>\n",
  599. " <td>0.000</td>\n",
  600. " <td>0.000</td>\n",
  601. " <td>0.000</td>\n",
  602. " <td>0.000</td>\n",
  603. " <td>0.000</td>\n",
  604. " <td>...</td>\n",
  605. " <td>0.000</td>\n",
  606. " <td>0.000</td>\n",
  607. " <td>0.000</td>\n",
  608. " <td>0.000</td>\n",
  609. " <td>0.000</td>\n",
  610. " <td>0.000</td>\n",
  611. " <td>0.000</td>\n",
  612. " <td>1.000</td>\n",
  613. " <td>0.000</td>\n",
  614. " <td>0.000</td>\n",
  615. " </tr>\n",
  616. " <tr>\n",
  617. " <th>H2O</th>\n",
  618. " <td>0.000</td>\n",
  619. " <td>0.000</td>\n",
  620. " <td>0.000</td>\n",
  621. " <td>0.000</td>\n",
  622. " <td>0.000</td>\n",
  623. " <td>0.000</td>\n",
  624. " <td>0.000</td>\n",
  625. " <td>0.000</td>\n",
  626. " <td>1.000</td>\n",
  627. " <td>0.000</td>\n",
  628. " <td>...</td>\n",
  629. " <td>0.000</td>\n",
  630. " <td>0.000</td>\n",
  631. " <td>0.000</td>\n",
  632. " <td>0.000</td>\n",
  633. " <td>0.000</td>\n",
  634. " <td>0.000</td>\n",
  635. " <td>0.000</td>\n",
  636. " <td>0.000</td>\n",
  637. " <td>1.000</td>\n",
  638. " <td>0.000</td>\n",
  639. " </tr>\n",
  640. " <tr>\n",
  641. " <th>GLCi_ext</th>\n",
  642. " <td>0.000</td>\n",
  643. " <td>0.000</td>\n",
  644. " <td>0.000</td>\n",
  645. " <td>0.000</td>\n",
  646. " <td>0.000</td>\n",
  647. " <td>0.000</td>\n",
  648. " <td>0.000</td>\n",
  649. " <td>0.000</td>\n",
  650. " <td>0.000</td>\n",
  651. " <td>0.000</td>\n",
  652. " <td>...</td>\n",
  653. " <td>0.000</td>\n",
  654. " <td>-1.000</td>\n",
  655. " <td>0.000</td>\n",
  656. " <td>0.000</td>\n",
  657. " <td>0.000</td>\n",
  658. " <td>0.000</td>\n",
  659. " <td>0.000</td>\n",
  660. " <td>0.000</td>\n",
  661. " <td>0.000</td>\n",
  662. " <td>0.000</td>\n",
  663. " </tr>\n",
  664. " <tr>\n",
  665. " <th>ATP_ext</th>\n",
  666. " <td>0.000</td>\n",
  667. " <td>0.000</td>\n",
  668. " <td>0.000</td>\n",
  669. " <td>0.000</td>\n",
  670. " <td>0.000</td>\n",
  671. " <td>0.000</td>\n",
  672. " <td>0.000</td>\n",
  673. " <td>0.000</td>\n",
  674. " <td>0.000</td>\n",
  675. " <td>0.000</td>\n",
  676. " <td>...</td>\n",
  677. " <td>0.000</td>\n",
  678. " <td>0.000</td>\n",
  679. " <td>-1.000</td>\n",
  680. " <td>0.000</td>\n",
  681. " <td>0.000</td>\n",
  682. " <td>0.000</td>\n",
  683. " <td>0.000</td>\n",
  684. " <td>0.000</td>\n",
  685. " <td>0.000</td>\n",
  686. " <td>0.000</td>\n",
  687. " </tr>\n",
  688. " <tr>\n",
  689. " <th>ADP_ext</th>\n",
  690. " <td>0.000</td>\n",
  691. " <td>0.000</td>\n",
  692. " <td>0.000</td>\n",
  693. " <td>0.000</td>\n",
  694. " <td>0.000</td>\n",
  695. " <td>0.000</td>\n",
  696. " <td>0.000</td>\n",
  697. " <td>0.000</td>\n",
  698. " <td>0.000</td>\n",
  699. " <td>0.000</td>\n",
  700. " <td>...</td>\n",
  701. " <td>0.000</td>\n",
  702. " <td>0.000</td>\n",
  703. " <td>0.000</td>\n",
  704. " <td>-1.000</td>\n",
  705. " <td>0.000</td>\n",
  706. " <td>0.000</td>\n",
  707. " <td>0.000</td>\n",
  708. " <td>0.000</td>\n",
  709. " <td>0.000</td>\n",
  710. " <td>0.000</td>\n",
  711. " </tr>\n",
  712. " <tr>\n",
  713. " <th>NAD+_ext</th>\n",
  714. " <td>0.000</td>\n",
  715. " <td>0.000</td>\n",
  716. " <td>0.000</td>\n",
  717. " <td>0.000</td>\n",
  718. " <td>0.000</td>\n",
  719. " <td>0.000</td>\n",
  720. " <td>0.000</td>\n",
  721. " <td>0.000</td>\n",
  722. " <td>0.000</td>\n",
  723. " <td>0.000</td>\n",
  724. " <td>...</td>\n",
  725. " <td>0.000</td>\n",
  726. " <td>0.000</td>\n",
  727. " <td>0.000</td>\n",
  728. " <td>0.000</td>\n",
  729. " <td>-1.000</td>\n",
  730. " <td>0.000</td>\n",
  731. " <td>0.000</td>\n",
  732. " <td>0.000</td>\n",
  733. " <td>0.000</td>\n",
  734. " <td>0.000</td>\n",
  735. " </tr>\n",
  736. " <tr>\n",
  737. " <th>NADH_ext</th>\n",
  738. " <td>0.000</td>\n",
  739. " <td>0.000</td>\n",
  740. " <td>0.000</td>\n",
  741. " <td>0.000</td>\n",
  742. " <td>0.000</td>\n",
  743. " <td>0.000</td>\n",
  744. " <td>0.000</td>\n",
  745. " <td>0.000</td>\n",
  746. " <td>0.000</td>\n",
  747. " <td>0.000</td>\n",
  748. " <td>...</td>\n",
  749. " <td>0.000</td>\n",
  750. " <td>0.000</td>\n",
  751. " <td>0.000</td>\n",
  752. " <td>0.000</td>\n",
  753. " <td>0.000</td>\n",
  754. " <td>-1.000</td>\n",
  755. " <td>0.000</td>\n",
  756. " <td>0.000</td>\n",
  757. " <td>0.000</td>\n",
  758. " <td>0.000</td>\n",
  759. " </tr>\n",
  760. " <tr>\n",
  761. " <th>Pi_ext</th>\n",
  762. " <td>0.000</td>\n",
  763. " <td>0.000</td>\n",
  764. " <td>0.000</td>\n",
  765. " <td>0.000</td>\n",
  766. " <td>0.000</td>\n",
  767. " <td>0.000</td>\n",
  768. " <td>0.000</td>\n",
  769. " <td>0.000</td>\n",
  770. " <td>0.000</td>\n",
  771. " <td>0.000</td>\n",
  772. " <td>...</td>\n",
  773. " <td>0.000</td>\n",
  774. " <td>0.000</td>\n",
  775. " <td>0.000</td>\n",
  776. " <td>0.000</td>\n",
  777. " <td>0.000</td>\n",
  778. " <td>0.000</td>\n",
  779. " <td>-1.000</td>\n",
  780. " <td>0.000</td>\n",
  781. " <td>0.000</td>\n",
  782. " <td>0.000</td>\n",
  783. " </tr>\n",
  784. " <tr>\n",
  785. " <th>CO2_ext</th>\n",
  786. " <td>0.000</td>\n",
  787. " <td>0.000</td>\n",
  788. " <td>0.000</td>\n",
  789. " <td>0.000</td>\n",
  790. " <td>0.000</td>\n",
  791. " <td>0.000</td>\n",
  792. " <td>0.000</td>\n",
  793. " <td>0.000</td>\n",
  794. " <td>0.000</td>\n",
  795. " <td>0.000</td>\n",
  796. " <td>...</td>\n",
  797. " <td>0.000</td>\n",
  798. " <td>0.000</td>\n",
  799. " <td>0.000</td>\n",
  800. " <td>0.000</td>\n",
  801. " <td>0.000</td>\n",
  802. " <td>0.000</td>\n",
  803. " <td>0.000</td>\n",
  804. " <td>-1.000</td>\n",
  805. " <td>0.000</td>\n",
  806. " <td>0.000</td>\n",
  807. " </tr>\n",
  808. " <tr>\n",
  809. " <th>H2O_ext</th>\n",
  810. " <td>0.000</td>\n",
  811. " <td>0.000</td>\n",
  812. " <td>0.000</td>\n",
  813. " <td>0.000</td>\n",
  814. " <td>0.000</td>\n",
  815. " <td>0.000</td>\n",
  816. " <td>0.000</td>\n",
  817. " <td>0.000</td>\n",
  818. " <td>0.000</td>\n",
  819. " <td>0.000</td>\n",
  820. " <td>...</td>\n",
  821. " <td>0.000</td>\n",
  822. " <td>0.000</td>\n",
  823. " <td>0.000</td>\n",
  824. " <td>0.000</td>\n",
  825. " <td>0.000</td>\n",
  826. " <td>0.000</td>\n",
  827. " <td>0.000</td>\n",
  828. " <td>0.000</td>\n",
  829. " <td>-1.000</td>\n",
  830. " <td>0.000</td>\n",
  831. " </tr>\n",
  832. " <tr>\n",
  833. " <th>ETH_ext</th>\n",
  834. " <td>0.000</td>\n",
  835. " <td>0.000</td>\n",
  836. " <td>0.000</td>\n",
  837. " <td>0.000</td>\n",
  838. " <td>0.000</td>\n",
  839. " <td>0.000</td>\n",
  840. " <td>0.000</td>\n",
  841. " <td>0.000</td>\n",
  842. " <td>0.000</td>\n",
  843. " <td>0.000</td>\n",
  844. " <td>...</td>\n",
  845. " <td>0.000</td>\n",
  846. " <td>0.000</td>\n",
  847. " <td>0.000</td>\n",
  848. " <td>0.000</td>\n",
  849. " <td>0.000</td>\n",
  850. " <td>0.000</td>\n",
  851. " <td>0.000</td>\n",
  852. " <td>0.000</td>\n",
  853. " <td>0.000</td>\n",
  854. " <td>1.000</td>\n",
  855. " </tr>\n",
  856. " </tbody>\n",
  857. "</table>\n",
  858. "<p>29 rows × 21 columns</p>\n",
  859. "</div>"
  860. ],
  861. "text/plain": [
  862. " UGLY_1 UGLY_2 UGLY_3 UGLY_4 UGLY_5 DGLY_1 DGLY_2 DGLY_3 \\\n",
  863. "GLCi -1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 \n",
  864. "G6P 1.000 -1.000 0.000 0.000 0.000 0.000 0.000 0.000 \n",
  865. "F6P 0.000 1.000 -1.000 0.000 0.000 0.000 0.000 0.000 \n",
  866. "FBP 0.000 0.000 1.000 -1.000 0.000 0.000 0.000 0.000 \n",
  867. "DHAP 0.000 0.000 0.000 1.000 -1.000 0.000 0.000 0.000 \n",
  868. "GAP 0.000 0.000 0.000 1.000 1.000 -1.000 0.000 0.000 \n",
  869. "BPG 0.000 0.000 0.000 0.000 0.000 1.000 -1.000 0.000 \n",
  870. "3PG 0.000 0.000 0.000 0.000 0.000 0.000 1.000 -1.000 \n",
  871. "2PG 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 \n",
  872. "PEP 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 \n",
  873. "PYR 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 \n",
  874. "AcALD 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 \n",
  875. "ETH 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 \n",
  876. "ATP -1.000 0.000 -1.000 0.000 0.000 0.000 1.000 0.000 \n",
  877. "ADP 1.000 0.000 1.000 0.000 0.000 0.000 -1.000 0.000 \n",
  878. "NAD+ 0.000 0.000 0.000 0.000 0.000 -1.000 0.000 0.000 \n",
  879. "NADH 0.000 0.000 0.000 0.000 0.000 1.000 0.000 0.000 \n",
  880. "Pi 0.000 0.000 0.000 0.000 0.000 -1.000 0.000 0.000 \n",
  881. "CO2 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 \n",
  882. "H2O 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 \n",
  883. "GLCi_ext 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 \n",
  884. "ATP_ext 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 \n",
  885. "ADP_ext 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 \n",
  886. "NAD+_ext 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 \n",
  887. "NADH_ext 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 \n",
  888. "Pi_ext 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 \n",
  889. "CO2_ext 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 \n",
  890. "H2O_ext 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 \n",
  891. "ETH_ext 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 \n",
  892. "\n",
  893. " DGLY_4 DGLY_5 ... DGLY_7 EXTR_1 EXTR_2 EXTR_3 EXTR_4 \\\n",
  894. "GLCi 0.000 0.000 ... 0.000 1.000 0.000 0.000 0.000 \n",
  895. "G6P 0.000 0.000 ... 0.000 0.000 0.000 0.000 0.000 \n",
  896. "F6P 0.000 0.000 ... 0.000 0.000 0.000 0.000 0.000 \n",
  897. "FBP 0.000 0.000 ... 0.000 0.000 0.000 0.000 0.000 \n",
  898. "DHAP 0.000 0.000 ... 0.000 0.000 0.000 0.000 0.000 \n",
  899. "GAP 0.000 0.000 ... 0.000 0.000 0.000 0.000 0.000 \n",
  900. "BPG 0.000 0.000 ... 0.000 0.000 0.000 0.000 0.000 \n",
  901. "3PG 0.000 0.000 ... 0.000 0.000 0.000 0.000 0.000 \n",
  902. "2PG -1.000 0.000 ... 0.000 0.000 0.000 0.000 0.000 \n",
  903. "PEP 1.000 -1.000 ... 0.000 0.000 0.000 0.000 0.000 \n",
  904. "PYR 0.000 1.000 ... 0.000 0.000 0.000 0.000 0.000 \n",
  905. "AcALD 0.000 0.000 ... -1.000 0.000 0.000 0.000 0.000 \n",
  906. "ETH 0.000 0.000 ... 1.000 0.000 0.000 0.000 0.000 \n",
  907. "ATP 0.000 1.000 ... 0.000 0.000 1.000 0.000 0.000 \n",
  908. "ADP 0.000 -1.000 ... 0.000 0.000 0.000 1.000 0.000 \n",
  909. "NAD+ 0.000 0.000 ... 1.000 0.000 0.000 0.000 1.000 \n",
  910. "NADH 0.000 0.000 ... -1.000 0.000 0.000 0.000 0.000 \n",
  911. "Pi 0.000 0.000 ... 0.000 0.000 0.000 0.000 0.000 \n",
  912. "CO2 0.000 0.000 ... 0.000 0.000 0.000 0.000 0.000 \n",
  913. "H2O 1.000 0.000 ... 0.000 0.000 0.000 0.000 0.000 \n",
  914. "GLCi_ext 0.000 0.000 ... 0.000 -1.000 0.000 0.000 0.000 \n",
  915. "ATP_ext 0.000 0.000 ... 0.000 0.000 -1.000 0.000 0.000 \n",
  916. "ADP_ext 0.000 0.000 ... 0.000 0.000 0.000 -1.000 0.000 \n",
  917. "NAD+_ext 0.000 0.000 ... 0.000 0.000 0.000 0.000 -1.000 \n",
  918. "NADH_ext 0.000 0.000 ... 0.000 0.000 0.000 0.000 0.000 \n",
  919. "Pi_ext 0.000 0.000 ... 0.000 0.000 0.000 0.000 0.000 \n",
  920. "CO2_ext 0.000 0.000 ... 0.000 0.000 0.000 0.000 0.000 \n",
  921. "H2O_ext 0.000 0.000 ... 0.000 0.000 0.000 0.000 0.000 \n",
  922. "ETH_ext 0.000 0.000 ... 0.000 0.000 0.000 0.000 0.000 \n",
  923. "\n",
  924. " EXTR_5 EXTR_6 EXTR_7 EXTR_8 EXTR_9 \n",
  925. "GLCi 0.000 0.000 0.000 0.000 0.000 \n",
  926. "G6P 0.000 0.000 0.000 0.000 0.000 \n",
  927. "F6P 0.000 0.000 0.000 0.000 0.000 \n",
  928. "FBP 0.000 0.000 0.000 0.000 0.000 \n",
  929. "DHAP 0.000 0.000 0.000 0.000 0.000 \n",
  930. "GAP 0.000 0.000 0.000 0.000 0.000 \n",
  931. "BPG 0.000 0.000 0.000 0.000 0.000 \n",
  932. "3PG 0.000 0.000 0.000 0.000 0.000 \n",
  933. "2PG 0.000 0.000 0.000 0.000 0.000 \n",
  934. "PEP 0.000 0.000 0.000 0.000 0.000 \n",
  935. "PYR 0.000 0.000 0.000 0.000 0.000 \n",
  936. "AcALD 0.000 0.000 0.000 0.000 0.000 \n",
  937. "ETH 0.000 0.000 0.000 0.000 -1.000 \n",
  938. "ATP 0.000 0.000 0.000 0.000 0.000 \n",
  939. "ADP 0.000 0.000 0.000 0.000 0.000 \n",
  940. "NAD+ 0.000 0.000 0.000 0.000 0.000 \n",
  941. "NADH 1.000 0.000 0.000 0.000 0.000 \n",
  942. "Pi 0.000 1.000 0.000 0.000 0.000 \n",
  943. "CO2 0.000 0.000 1.000 0.000 0.000 \n",
  944. "H2O 0.000 0.000 0.000 1.000 0.000 \n",
  945. "GLCi_ext 0.000 0.000 0.000 0.000 0.000 \n",
  946. "ATP_ext 0.000 0.000 0.000 0.000 0.000 \n",
  947. "ADP_ext 0.000 0.000 0.000 0.000 0.000 \n",
  948. "NAD+_ext 0.000 0.000 0.000 0.000 0.000 \n",
  949. "NADH_ext -1.000 0.000 0.000 0.000 0.000 \n",
  950. "Pi_ext 0.000 -1.000 0.000 0.000 0.000 \n",
  951. "CO2_ext 0.000 0.000 -1.000 0.000 0.000 \n",
  952. "H2O_ext 0.000 0.000 0.000 -1.000 0.000 \n",
  953. "ETH_ext 0.000 0.000 0.000 0.000 1.000 \n",
  954. "\n",
  955. "[29 rows x 21 columns]"
  956. ]
  957. },
  958. "execution_count": 66,
  959. "metadata": {},
  960. "output_type": "execute_result"
  961. }
  962. ],
  963. "source": [
  964. "import pandas as pd\n",
  965. "import numpy as np\n",
  966. "import sys\n",
  967. "from IPython.display import display, HTML\n",
  968. "sys.path.append('')\n",
  969. "metabolites = ['GLCi','G6P','F6P','FBP','DHAP','GAP','BPG','3PG','2PG','PEP','PYR','AcALD','ETH',\n",
  970. " 'ATP','ADP','NAD+','NADH','Pi','CO2','H2O',\n",
  971. " 'GLCi_ext','ATP_ext','ADP_ext','NAD+_ext','NADH_ext','Pi_ext','CO2_ext','H2O_ext','ETH_ext']\n",
  972. "internal_mets = [m for m in metabolites if 'ext' not in m]\n",
  973. "print(internal_mets)\n",
  974. "\n",
  975. "rxns1 = ['UGLY_{}'.format(i) for i in range(1,6)]\n",
  976. "rxns2 = ['DGLY_{}'.format(i) for i in range(1,8)]\n",
  977. "rxns3 = ['EXTR_{}'.format(i) for i in range(1,10)]\n",
  978. "rxns = rxns1 + rxns2 + rxns3\n",
  979. "\n",
  980. "data = {'UGLY_1': pd.Series({'GLCi':-1,'ATP':-1,'G6P':+1,'ADP':+1}),\n",
  981. " 'UGLY_2': pd.Series({'G6P':-1,'F6P':+1}),\n",
  982. " 'UGLY_3': pd.Series({'F6P':-1,'ATP':-1,'FBP':+1,'ADP':+1}),\n",
  983. " 'UGLY_4': pd.Series({'FBP':-1,'DHAP':+1,'GAP':+1}),\n",
  984. " 'UGLY_5': pd.Series({'DHAP':-1,'GAP':+1}),\n",
  985. " 'DGLY_1': pd.Series({'GAP':-1,'NAD+':-1,'Pi':-1,'BPG':+1,'NADH':+1}),\n",
  986. " 'DGLY_2': pd.Series({'BPG':-1,'ADP':-1,'3PG':+1,'ATP':+1}),\n",
  987. " 'DGLY_3': pd.Series({'3PG':-1,'2PG':+1}),\n",
  988. " 'DGLY_4': pd.Series({'2PG':-1,'PEP':+1,'H2O':+1}),\n",
  989. " 'DGLY_5': pd.Series({'PEP':-1,'ADP':-1,'PYR':+1,'ATP':+1}),\n",
  990. " 'DGLY_6': pd.Series({'PYR':-1,'AcALD':+1,'CO2':+1}),\n",
  991. " 'DGLY_7': pd.Series({'AcALD':-1,'NADH':-1,'ETH':+1,'NAD+':+1}),\n",
  992. " 'EXTR_1': pd.Series({'GLCi_ext':-1,'GLCi':+1}), \n",
  993. " 'EXTR_2': pd.Series({'ATP_ext':-1,'ATP':+1}),\n",
  994. " 'EXTR_3': pd.Series({'ADP_ext':-1,'ADP':+1}),\n",
  995. " 'EXTR_4': pd.Series({'NAD+_ext':-1,'NAD+':+1}),\n",
  996. " 'EXTR_5': pd.Series({'NADH_ext':-1,'NADH':+1}),\n",
  997. " 'EXTR_6': pd.Series({'Pi_ext':-1,'Pi':+1}),\n",
  998. " 'EXTR_7': pd.Series({'CO2_ext':-1,'CO2':+1}),\n",
  999. " 'EXTR_8': pd.Series({'H2O_ext':-1,'H2O':+1}),\n",
  1000. " 'EXTR_9': pd.Series({'ETH_ext':+1,'ETH':-1})}\n",
  1001. "\n",
  1002. "fullS = pd.DataFrame(data, columns=rxns, index=metabolites).fillna(0)\n",
  1003. "fullS"
  1004. ]
  1005. },
  1006. {
  1007. "cell_type": "markdown",
  1008. "metadata": {},
  1009. "source": [
  1010. "When the network is in steady state, the concentrations of the internal metabolites do not change. Therefore\n",
  1011. "$$ \\frac{d\\vec{c}}{dt} = S\\cdot\\vec{v} = 0$$\n",
  1012. "where $\\vec{c}$ are the concentrations of the internal metabolites, and $\\vec{v}$ are the steady state fluxes, and $S$ is the stoichiometric matrix that only includes internal metabolites.\n",
  1013. "\n",
  1014. "\n",
  1015. "$$\n",
  1016. "S\\cdot\\vec{v} = \\left[ {\\begin{array}{cccccccccc}\n",
  1017. " & R_1 & R_2 & R_3 & R_4 & R_5 & R_6 & R_7 & R_8 & R_9 \\\\\n",
  1018. "A & 1 & -1 & -1 & 0 & 0 & 0 & 0 & 0 & 0 \\\\\n",
  1019. "B & 0 & 1 & 0 & -1 & 0 & -2 & 0 & 0 & 0 \\\\\n",
  1020. "C & 0 & 0 & 1 & 0 & 0 & 1 & -1 & 0 & 0 \\\\\n",
  1021. "D & 0 & 0 & 0 & 2 & 0 & 0 & 1 & -1 & 0 \\\\\n",
  1022. "E & 0 & 0 & 0 & -1 & 1 & 0 & 0 & 0 & 0 \\\\\n",
  1023. "F & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & -1 \\\\\n",
  1024. "\\end{array}}\\right]\\cdot\\left[ {\\begin{array}{c}\n",
  1025. "v_1 \\\\ v_2 \\\\ v_3 \\\\ v_4 \\\\ v_5 \\\\ v_6 \\\\ v_7 \\\\ v_8 \\\\ v_9 \\\\\n",
  1026. "\\end{array}}\\right] = 0\n",
  1027. "$$\n",
  1028. "\n",
  1029. "Given a set of initial conditions, we can find the optimal growth rate by solving the following optimization problem:\n",
  1030. "$$\\max_v( v_{growth} )$$\n",
  1031. "$$\\mbox{Subject to:}$$\n",
  1032. "$$\\begin{eqnarray}\n",
  1033. "& S\\cdot v & = 0 \\\\\n",
  1034. "0 \\leq & v & \\leq 10 \\\\\n",
  1035. "\\end{eqnarray}$$"
  1036. ]
  1037. },
  1038. {
  1039. "cell_type": "code",
  1040. "execution_count": 108,
  1041. "metadata": {
  1042. "collapsed": false
  1043. },
  1044. "outputs": [
  1045. {
  1046. "name": "stdout",
  1047. "output_type": "stream",
  1048. "text": [
  1049. "status: optimal\n",
  1050. "Optimal value: -7.285052249904632e-12\n",
  1051. "Optimal var: \n",
  1052. "\n",
  1053. "Metabolite number: 20\n",
  1054. "Reaction number: 21\n"
  1055. ]
  1056. },
  1057. {
  1058. "data": {
  1059. "text/html": [
  1060. "<div>\n",
  1061. "<table border=\"1\" class=\"dataframe\">\n",
  1062. " <thead>\n",
  1063. " <tr style=\"text-align: right;\">\n",
  1064. " <th></th>\n",
  1065. " <th>Flux</th>\n",
  1066. " </tr>\n",
  1067. " </thead>\n",
  1068. " <tbody>\n",
  1069. " <tr>\n",
  1070. " <th>UGLY_1</th>\n",
  1071. " <td>-0.000</td>\n",
  1072. " </tr>\n",
  1073. " <tr>\n",
  1074. " <th>UGLY_2</th>\n",
  1075. " <td>-0.000</td>\n",
  1076. " </tr>\n",
  1077. " <tr>\n",
  1078. " <th>UGLY_3</th>\n",
  1079. " <td>-0.000</td>\n",
  1080. " </tr>\n",
  1081. " <tr>\n",
  1082. " <th>UGLY_4</th>\n",
  1083. " <td>-0.000</td>\n",
  1084. " </tr>\n",
  1085. " <tr>\n",
  1086. " <th>UGLY_5</th>\n",
  1087. " <td>-0.000</td>\n",
  1088. " </tr>\n",
  1089. " <tr>\n",
  1090. " <th>DGLY_1</th>\n",
  1091. " <td>-0.000</td>\n",
  1092. " </tr>\n",
  1093. " <tr>\n",
  1094. " <th>DGLY_2</th>\n",
  1095. " <td>-0.000</td>\n",
  1096. " </tr>\n",
  1097. " <tr>\n",
  1098. " <th>DGLY_3</th>\n",
  1099. " <td>-0.000</td>\n",
  1100. " </tr>\n",
  1101. " <tr>\n",
  1102. " <th>DGLY_4</th>\n",
  1103. " <td>-0.000</td>\n",
  1104. " </tr>\n",
  1105. " <tr>\n",
  1106. " <th>DGLY_5</th>\n",
  1107. " <td>-0.000</td>\n",
  1108. " </tr>\n",
  1109. " <tr>\n",
  1110. " <th>DGLY_6</th>\n",
  1111. " <td>-0.000</td>\n",
  1112. " </tr>\n",
  1113. " <tr>\n",
  1114. " <th>DGLY_7</th>\n",
  1115. " <td>-0.000</td>\n",
  1116. " </tr>\n",
  1117. " <tr>\n",
  1118. " <th>EXTR_1</th>\n",
  1119. " <td>-0.000</td>\n",
  1120. " </tr>\n",
  1121. " <tr>\n",
  1122. " <th>EXTR_2</th>\n",
  1123. " <td>0.000</td>\n",
  1124. " </tr>\n",
  1125. " <tr>\n",
  1126. " <th>EXTR_3</th>\n",
  1127. " <td>-0.000</td>\n",
  1128. " </tr>\n",
  1129. " <tr>\n",
  1130. " <th>EXTR_4</th>\n",
  1131. " <td>0.000</td>\n",
  1132. " </tr>\n",
  1133. " <tr>\n",
  1134. " <th>EXTR_5</th>\n",
  1135. " <td>-0.000</td>\n",
  1136. " </tr>\n",
  1137. " <tr>\n",
  1138. " <th>EXTR_6</th>\n",
  1139. " <td>-0.000</td>\n",
  1140. " </tr>\n",
  1141. " <tr>\n",
  1142. " <th>EXTR_7</th>\n",
  1143. " <td>0.000</td>\n",
  1144. " </tr>\n",
  1145. " <tr>\n",
  1146. " <th>EXTR_8</th>\n",
  1147. " <td>0.000</td>\n",
  1148. " </tr>\n",
  1149. " <tr>\n",
  1150. " <th>EXTR_9</th>\n",
  1151. " <td>-0.000</td>\n",
  1152. " </tr>\n",
  1153. " </tbody>\n",
  1154. "</table>\n",
  1155. "</div>"
  1156. ],
  1157. "text/plain": [
  1158. " Flux\n",
  1159. "UGLY_1 -0.000\n",
  1160. "UGLY_2 -0.000\n",
  1161. "UGLY_3 -0.000\n",
  1162. "UGLY_4 -0.000\n",
  1163. "UGLY_5 -0.000\n",
  1164. "DGLY_1 -0.000\n",
  1165. "DGLY_2 -0.000\n",
  1166. "DGLY_3 -0.000\n",
  1167. "DGLY_4 -0.000\n",
  1168. "DGLY_5 -0.000\n",
  1169. "DGLY_6 -0.000\n",
  1170. "DGLY_7 -0.000\n",
  1171. "EXTR_1 -0.000\n",
  1172. "EXTR_2 0.000\n",
  1173. "EXTR_3 -0.000\n",
  1174. "EXTR_4 0.000\n",
  1175. "EXTR_5 -0.000\n",
  1176. "EXTR_6 -0.000\n",
  1177. "EXTR_7 0.000\n",
  1178. "EXTR_8 0.000\n",
  1179. "EXTR_9 -0.000"
  1180. ]
  1181. },
  1182. "metadata": {},
  1183. "output_type": "display_data"
  1184. }
  1185. ],
  1186. "source": [
  1187. "from cvxpy import *\n",
  1188. "S = fullS.loc[internal_mets].as_matrix()\n",
  1189. "m,n = S.shape\n",
  1190. "v = Variable(n)\n",
  1191. "growth = v[11]\n",
  1192. "prob = Problem( \n",
  1193. " Maximize( growth ), \n",
  1194. " [ S*v == 0,\n",
  1195. " 0 <= v,v <= 10,])\n",
  1196. "prob.solve()\n",
  1197. "print(\"status: {}\".format( prob.status))\n",
  1198. "print(\"Optimal value: {}\".format( prob.value))\n",
  1199. "print(\"Optimal var: \\n\", )\n",
  1200. "print(\"Metabolite number:\", m)\n",
  1201. "print(\"Reaction number:\", n)\n",
  1202. "display(pd.DataFrame( v.value, index=rxns, columns=['Flux']))"
  1203. ]
  1204. },
  1205. {
  1206. "cell_type": "markdown",
  1207. "metadata": {},
  1208. "source": [
  1209. "## Maximum entropy of the reaction likelihoods ##\n",
  1210. "\n",
  1211. "\n",
  1212. "Chemical potential $\\vec{\\mu^0}$ is the Gibbs energy of formation $\\Delta G^0_f$ for each metabolite:\n",
  1213. "$$\n",
  1214. "\\vec{\\mu^0} = \\Delta \\vec{G^0_f} = \\left[ {\\begin{array}{cc}\n",
  1215. "A & 4 \\\\\n",
  1216. "B & 2 \\\\\n",
  1217. "C & 2 \\\\\n",
  1218. "D & 0 \\\\\n",
  1219. "E & 2 \\\\\n",
  1220. "F & 1 \\\\\n",
  1221. "\\end{array}}\\right]\n",
  1222. "$$\n",
  1223. "\n",
  1224. "Which implies a Change in Gibbs free energy $S^T\\vec{\\mu^0} = \\Delta G^0$ for each reaction:\n",
  1225. "$$\n",
  1226. "\\Delta \\vec{G^0} = \\left[ {\\begin{array}{cc}\n",
  1227. "R_1 & 0 \\\\\n",
  1228. "R_2 & -2 \\\\\n",
  1229. "R_3 & -2 \\\\\n",
  1230. "R_4 & -4 \\\\\n",
  1231. "R_5 & 0 \\\\\n",
  1232. "R_6 & -1 \\\\\n",
  1233. "R_7 & -2 \\\\\n",
  1234. "R_8 & 0 \\\\\n",
  1235. "R_9 & 0 \\\\\n",
  1236. "\\end{array}}\\right]\n",
  1237. "$$\n",
  1238. "\n"
  1239. ]
  1240. },
  1241. {
  1242. "cell_type": "code",
  1243. "execution_count": 109,
  1244. "metadata": {
  1245. "collapsed": false
  1246. },
  1247. "outputs": [
  1248. {
  1249. "data": {
  1250. "text/html": [
  1251. "<div>\n",
  1252. "<table border=\"1\" class=\"dataframe\">\n",
  1253. " <thead>\n",
  1254. " <tr style=\"text-align: right;\">\n",
  1255. " <th></th>\n",
  1256. " <th>Delta G0</th>\n",
  1257. " </tr>\n",
  1258. " </thead>\n",
  1259. " <tbody>\n",
  1260. " <tr>\n",
  1261. " <th>UGLY_1</th>\n",
  1262. " <td>-24.574</td>\n",
  1263. " </tr>\n",
  1264. " <tr>\n",
  1265. " <th>UGLY_2</th>\n",
  1266. " <td>3.197</td>\n",
  1267. " </tr>\n",
  1268. " <tr>\n",
  1269. " <th>UGLY_3</th>\n",
  1270. " <td>-22.476</td>\n",
  1271. " </tr>\n",
  1272. " <tr>\n",
  1273. " <th>UGLY_4</th>\n",
  1274. " <td>22.152</td>\n",
  1275. " </tr>\n",
  1276. " <tr>\n",
  1277. " <th>UGLY_5</th>\n",
  1278. " <td>7.660</td>\n",
  1279. " </tr>\n",
  1280. " <tr>\n",
  1281. " <th>DGLY_1</th>\n",
  1282. " <td>2.300</td>\n",
  1283. " </tr>\n",
  1284. " <tr>\n",
  1285. " <th>DGLY_2</th>\n",
  1286. " <td>-8.139</td>\n",
  1287. " </tr>\n",
  1288. " <tr>\n",
  1289. " <th>DGLY_3</th>\n",
  1290. " <td>5.898</td>\n",
  1291. " </tr>\n",
  1292. " <tr>\n",
  1293. " <th>DGLY_4</th>\n",
  1294. " <td>-3.413</td>\n",
  1295. " </tr>\n",
  1296. " <tr>\n",
  1297. " <th>DGLY_5</th>\n",
  1298. " <td>-29.080</td>\n",
  1299. " </tr>\n",
  1300. " <tr>\n",
  1301. " <th>DGLY_6</th>\n",
  1302. " <td>-11.382</td>\n",
  1303. " </tr>\n",
  1304. " <tr>\n",
  1305. " <th>DGLY_7</th>\n",
  1306. " <td>-22.548</td>\n",
  1307. " </tr>\n",
  1308. " <tr>\n",
  1309. " <th>EXTR_1</th>\n",
  1310. " <td>0.000</td>\n",
  1311. " </tr>\n",
  1312. " <tr>\n",
  1313. " <th>EXTR_2</th>\n",
  1314. " <td>0.000</td>\n",
  1315. " </tr>\n",
  1316. " <tr>\n",
  1317. " <th>EXTR_3</th>\n",
  1318. " <td>0.000</td>\n",
  1319. " </tr>\n",
  1320. " <tr>\n",
  1321. " <th>EXTR_4</th>\n",
  1322. " <td>0.000</td>\n",
  1323. " </tr>\n",
  1324. " <tr>\n",
  1325. " <th>EXTR_5</th>\n",
  1326. " <td>0.000</td>\n",
  1327. " </tr>\n",
  1328. " <tr>\n",
  1329. " <th>EXTR_6</th>\n",
  1330. " <td>0.000</td>\n",
  1331. " </tr>\n",
  1332. " <tr>\n",
  1333. " <th>EXTR_7</th>\n",
  1334. " <td>0.000</td>\n",
  1335. " </tr>\n",
  1336. " <tr>\n",
  1337. " <th>EXTR_8</th>\n",
  1338. " <td>0.000</td>\n",
  1339. " </tr>\n",
  1340. " <tr>\n",
  1341. " <th>EXTR_9</th>\n",
  1342. " <td>0.000</td>\n",
  1343. " </tr>\n",
  1344. " </tbody>\n",
  1345. "</table>\n",
  1346. "</div>"
  1347. ],
  1348. "text/plain": [
  1349. " Delta G0\n",
  1350. "UGLY_1 -24.574\n",
  1351. "UGLY_2 3.197\n",
  1352. "UGLY_3 -22.476\n",
  1353. "UGLY_4 22.152\n",
  1354. "UGLY_5 7.660\n",
  1355. "DGLY_1 2.300\n",
  1356. "DGLY_2 -8.139\n",
  1357. "DGLY_3 5.898\n",
  1358. "DGLY_4 -3.413\n",
  1359. "DGLY_5 -29.080\n",
  1360. "DGLY_6 -11.382\n",
  1361. "DGLY_7 -22.548\n",
  1362. "EXTR_1 0.000\n",
  1363. "EXTR_2 0.000\n",
  1364. "EXTR_3 0.000\n",
  1365. "EXTR_4 0.000\n",
  1366. "EXTR_5 0.000\n",
  1367. "EXTR_6 0.000\n",
  1368. "EXTR_7 0.000\n",
  1369. "EXTR_8 0.000\n",
  1370. "EXTR_9 0.000"
  1371. ]
  1372. },
  1373. "metadata": {},
  1374. "output_type": "display_data"
  1375. }
  1376. ],
  1377. "source": [
  1378. "mu = pd.Series([-428.089955,-1319.772461,-1316.575034,-2206.160120,-1095.833908,\n",
  1379. " -1088.173908,-2206.386288,-1347.416642,-1341.518794,-1189.043118,\n",
  1380. " -351.014518,23.603348,62.265022,-2292.311889,-1425.202960,\n",
  1381. " 1056.224770,1117.434626,-1059.302414,-386.000000,-155.888326,\n",
  1382. " -428.089955,-2292.311889,-1425.202960,1056.224770,1117.434626,-1059.302414,\n",
  1383. " -386.000000,-155.888326,62.265022], index=metabolites)\n",
  1384. "deltaG0 = fullS.transpose().dot(mu)\n",
  1385. "display(pd.DataFrame(deltaG0,columns=['Delta G0']))"
  1386. ]
  1387. },
  1388. {
  1389. "cell_type": "code",
  1390. "execution_count": 110,
  1391. "metadata": {
  1392. "collapsed": true
  1393. },
  1394. "outputs": [],
  1395. "source": [
  1396. "def generate_metabolite_report( log_c, fullS, likelihood, constraints, metabolites, internal_metabolites ):\n",
  1397. " R = 8.3144598/1000.0 # ideal gas constant\n",
  1398. " T = 298.15 # standard temperature in Kelvin\n",
  1399. " n_A = 6.022e23 # Avogadros number\n",
  1400. " V = 1e-15 # Volume of cell in Liters\n",
  1401. " mets = pd.DataFrame(n_A*V*np.exp(log_c.value), index=metabolites, columns=['Counts'], dtype=int)\n",
  1402. " mets['Concentrations'] = pd.DataFrame(np.exp(log_c.value), index=metabolites)\n",
  1403. " mets['Log Concentrations'] = pd.DataFrame(log_c.value, index=metabolites)\n",
  1404. " mets['Metabolite production rate'] = pd.DataFrame(fullS.as_matrix()*likelihood.value, index=metabolites)\n",
  1405. " mets['Chemical potential'] = mu\n",
  1406. " mets['Steady state constraints'] = pd.DataFrame(constraints[-1].dual_value, index=internal_metabolites)\n",
  1407. " return mets\n",
  1408. "\n",
  1409. "def generate_rxn_report(likelihood, rxns, deltaG0, reference_flux, reference_flux_value, constraints):\n",
  1410. " df = pd.DataFrame(likelihood.value,index=rxns, columns=['Rxn likelihoods'])\n",
  1411. " df['Delta G'] = pd.DataFrame(cvx.log(likelihood).value*(-R*T), index=rxns)\n",
  1412. " #df['Q_r'] = pd.DataFrame(np.exp(log_Q.value),index=rxns)\n",
  1413. " #df['K_eq'] = pd.DataFrame(np.exp(log_K.value),index=rxns)\n",
  1414. " #df['log Q_r'] = pd.DataFrame(log_Q.value, index=rxns)\n",
  1415. " #df['log K_eq'] = pd.DataFrame(log_K.value, index=rxns)\n",
  1416. " df['Delta G0'] = pd.DataFrame(deltaG0, index=rxns)\n",
  1417. " df['Normalized Log Likelihoods'] = np.log(df['Rxn likelihoods'])/np.log(df['Rxn likelihoods']).sum()\n",
  1418. " df['Fluxes'] = df['Rxn likelihoods']/df['Rxn likelihoods'][reference_flux]*reference_flux_value\n",
  1419. " df['Forward rate'] = df['Rxn likelihoods']* df['Fluxes']/(df['Rxn likelihoods'] - 1)\n",
  1420. " df['Reverse rate'] = df['Fluxes']/(df['Rxn likelihoods'] - 1)\n",
  1421. " df['Likelihood constraints'] = pd.DataFrame(constraints[0].dual_value, index=rxns)\n",
  1422. " df['Entropy'] = pd.DataFrame(cvx.entr(likelihood).value,index=rxns)\n",
  1423. " return df"
  1424. ]
  1425. },
  1426. {
  1427. "cell_type": "code",
  1428. "execution_count": 111,
  1429. "metadata": {
  1430. "collapsed": false
  1431. },
  1432. "outputs": [
  1433. {
  1434. "name": "stdout",
  1435. "output_type": "stream",
  1436. "text": [
  1437. "\n",
  1438. "ECOS 2.0.4 - (C) embotech GmbH, Zurich Switzerland, 2012-15. Web: www.embotech.com/ECOS\n",
  1439. "\n",
  1440. "It pcost dcost gap pres dres k/t mu step sigma IR | BT\n",
  1441. " 0 +0.000e+00 -6.555e+02 +2e+02 1e+00 5e-01 1e+00 1e+00 --- --- 0 0 - | - - \n",
  1442. " 1 +6.048e+01 -5.516e+02 +8e+01 8e-01 4e-01 2e+00 4e-01 0.6410 1e-01 1 1 1 | 0 1\n",
  1443. " 2 +8.545e+01 -4.528e+02 +5e+01 7e-01 3e-01 2e+00 3e-01 0.6266 4e-01 1 1 1 | 3 2\n",
  1444. " 3 +6.376e+01 -3.663e+02 +4e+01 5e-01 2e-01 2e+00 2e-01 0.9791 7e-01 1 1 1 | 7 0\n",
  1445. " 4 +4.750e+01 -2.200e+02 +2e+01 3e-01 1e-01 1e+00 1e-01 0.5561 8e-02 1 1 1 | 1 2\n",
  1446. " 5 +1.060e+01 -7.818e+01 +6e+00 9e-02 4e-02 5e-01 3e-02 0.7548 5e-02 1 1 1 | 1 1\n",
  1447. " 6 +7.914e+00 -3.177e+01 +2e+00 4e-02 1e-02 4e-01 1e-02 0.9791 3e-01 1 1 1 | 5 0\n",
  1448. " 7 +2.155e+00 -9.671e+00 +5e-01 1e-02 4e-03 1e-01 3e-03 0.7499 2e-02 1 1 1 | 1 1\n",
  1449. " 8 +6.776e-01 -2.693e+00 +1e-01 4e-03 1e-03 5e-02 6e-04 0.7724 1e-02 1 1 1 | 1 1\n",
  1450. " 9 +1.927e-01 -8.431e-01 +3e-02 1e-03 3e-04 2e-02 2e-04 0.7407 3e-02 1 1 1 | 1 1\n",
  1451. "10 +5.136e-02 -2.407e-01 +7e-03 3e-04 9e-05 5e-03 4e-05 0.7674 1e-02 1 1 1 | 1 1\n",
  1452. "11 +1.442e-02 -7.780e-02 +2e-03 1e-04 3e-05 2e-03 1e-05 0.7341 3e-02 1 1 1 | 1 1\n",
  1453. "12 +3.064e-03 -2.226e-02 +5e-04 3e-05 8e-06 5e-04 3e-06 0.7696 1e-02 1 1 1 | 1 1\n",
  1454. "13 +8.066e-04 -6.742e-03 +1e-04 8e-06 2e-06 2e-04 8e-07 0.7464 2e-02 1 1 1 | 1 1\n",
  1455. "14 +1.635e-04 -1.866e-03 +3e-05 2e-06 7e-07 5e-05 2e-07 0.7742 1e-02 1 0 0 | 1 1\n",
  1456. "15 +8.973e-05 -8.213e-04 +1e-05 1e-06 3e-07 2e-05 7e-08 0.6266 8e-02 1 0 0 | 2 2\n",
  1457. "16 -2.807e-05 -2.465e-04 +3e-06 2e-07 7e-08 6e-06 2e-08 0.7833 1e-02 1 0 0 | 1 1\n",
  1458. "17 -1.434e-05 -1.281e-04 +1e-06 1e-07 4e-08 3e-06 7e-09 0.7833 3e-01 1 0 0 | 5 1\n",
  1459. "18 -9.082e-06 -3.773e-05 +3e-07 3e-08 1e-08 9e-07 2e-09 0.7741 1e-02 1 0 0 | 1 1\n",
  1460. "19 -6.035e-06 -1.986e-05 +1e-07 2e-08 6e-09 4e-07 7e-10 0.6266 1e-01 1 0 0 | 3 2\n",
  1461. "20 -4.139e-06 -7.923e-06 +3e-08 4e-09 3e-09 1e-07 2e-10 0.7833 6e-02 1 0 0 | 2 1\n",
  1462. "21 -2.596e-06 -3.840e-06 +9e-09 1e-09 2e-09 4e-08 5e-11 0.7833 1e-01 1 0 0 | 3 1\n",
  1463. "\n",
  1464. "OPTIMAL (within feastol=2.3e-09, reltol=3.6e-03, abstol=9.4e-09).\n",
  1465. "Runtime: 0.002306 seconds.\n",
  1466. "\n",
  1467. "status: optimal\n",
  1468. "Optimal value: 2.5964494520781914e-06\n",
  1469. "Optimal Concentrations are:\n",
  1470. "\n"
  1471. ]
  1472. },
  1473. {
  1474. "data": {
  1475. "text/html": [
  1476. "<div>\n",
  1477. "<table border=\"1\" class=\"dataframe\">\n",
  1478. " <thead>\n",
  1479. " <tr style=\"text-align: right;\">\n",
  1480. " <th></th>\n",
  1481. " <th>Counts</th>\n",
  1482. " <th>Concentrations</th>\n",
  1483. " <th>Log Concentrations</th>\n",
  1484. " <th>Metabolite production rate</th>\n",
  1485. " <th>Chemical potential</th>\n",
  1486. " <th>Steady state constraints</th>\n",
  1487. " </tr>\n",
  1488. " </thead>\n",
  1489. " <tbody>\n",
  1490. " <tr>\n",
  1491. " <th>GLCi</th>\n",
  1492. " <td>487542087648814336</td>\n",
  1493. " <td>809601606.856</td>\n",
  1494. " <td>20.512</td>\n",
  1495. " <td>-0.000</td>\n",
  1496. " <td>-428.090</td>\n",
  1497. " <td>31.657</td>\n",
  1498. " </tr>\n",
  1499. " <tr>\n",
  1500. " <th>G6P</th>\n",
  1501. " <td>278807642794</td>\n",
  1502. " <td>462.982</td>\n",
  1503. " <td>6.138</td>\n",
  1504. " <td>0.000</td>\n",
  1505. " <td>-1319.772</td>\n",
  1506. " <td>159.867</td>\n",
  1507. " </tr>\n",
  1508. " <tr>\n",
  1509. " <th>F6P</th>\n",
  1510. " <td>-9223372036854775808</td>\n",
  1511. " <td>89937920356619536.000</td>\n",
  1512. " <td>39.038</td>\n",
  1513. " <td>-0.000</td>\n",
  1514. " <td>-1316.575</td>\n",
  1515. " <td>192.486</td>\n",
  1516. " </tr>\n",
  1517. " <tr>\n",
  1518. " <th>FBP</th>\n",
  1519. " <td>-9223372036854775808</td>\n",
  1520. " <td>1494625034495.931</td>\n",
  1521. " <td>28.033</td>\n",
  1522. " <td>0.000</td>\n",
  1523. " <td>-2206.160</td>\n",
  1524. " <td>321.371</td>\n",
  1525. " </tr>\n",
  1526. " <tr>\n",
  1527. " <th>DHAP</th>\n",
  1528. " <td>6266702749882</td>\n",
  1529. " <td>10406.348</td>\n",
  1530. " <td>9.250</td>\n",
  1531. " <td>0.000</td>\n",
  1532. " <td>-1095.834</td>\n",
  1533. " <td>160.708</td>\n",
  1534. " </tr>\n",
  1535. " <tr>\n",
  1536. " <th>GAP</th>\n",
  1537. " <td>-9223372036854775808</td>\n",
  1538. " <td>1393018036859844427776.000</td>\n",
  1539. " <td>48.686</td>\n",
  1540. " <td>-0.000</td>\n",
  1541. " <td>-1088.174</td>\n",
  1542. " <td>193.681</td>\n",
  1543. " </tr>\n",
  1544. " <tr>\n",
  1545. " <th>BPG</th>\n",
  1546. " <td>1934355</td>\n",
  1547. " <td>0.003</td>\n",
  1548. " <td>-5.741</td>\n",
  1549. " <td>0.000</td>\n",
  1550. " <td>-2206.386</td>\n",
  1551. " <td>246.384</td>\n",
  1552. " </tr>\n",
  1553. " <tr>\n",
  1554. " <th>3PG</th>\n",
  1555. " <td>-9223372036854775808</td>\n",
  1556. " <td>4878692923812172589863070388297884762112.000</td>\n",
  1557. " <td>91.386</td>\n",
  1558. " <td>-0.000</td>\n",
  1559. " <td>-1347.417</td>\n",
  1560. " <td>176.529</td>\n",
  1561. " </tr>\n",
  1562. " <tr>\n",
  1563. " <th>2PG</th>\n",
  1564. " <td>-9223372036854775808</td>\n",
  1565. " <td>40677313678470625660146975318769326201346982649...</td>\n",
  1566. " <td>128.045</td>\n",
  1567. " <td>0.000</td>\n",
  1568. " <td>-1341.519</td>\n",
  1569. " <td>202.877</td>\n",
  1570. " </tr>\n",
  1571. " <tr>\n",
  1572. " <th>PEP</th>\n",
  1573. " <td>317</td>\n",
  1574. " <td>0.000</td>\n",
  1575. " <td>-14.456</td>\n",
  1576. " <td>0.000</td>\n",
  1577. " <td>-1189.043</td>\n",
  1578. " <td>110.070</td>\n",
  1579. " </tr>\n",
  1580. " <tr>\n",
  1581. " <th>PYR</th>\n",
  1582. " <td>-9223372036854775808</td>\n",
  1583. " <td>13111105173369700041974457004066422434824192.000</td>\n",
  1584. " <td>99.282</td>\n",
  1585. " <td>-0.000</td>\n",
  1586. " <td>-351.015</td>\n",
  1587. " <td>40.483</td>\n",
  1588. " </tr>\n",
  1589. " <tr>\n",
  1590. " <th>AcALD</th>\n",
  1591. " <td>357</td>\n",
  1592. " <td>0.000</td>\n",
  1593. " <td>-14.338</td>\n",
  1594. " <td>-0.000</td>\n",
  1595. " <td>23.603</td>\n",
  1596. " <td>-52.644</td>\n",
  1597. " </tr>\n",
  1598. " <tr>\n",
  1599. " <th>ETH</th>\n",
  1600. " <td>-9223372036854775808</td>\n",
  1601. " <td>39041318105917975595407598335667289448032859406...</td>\n",
  1602. " <td>148.727</td>\n",
  1603. " <td>-0.000</td>\n",
  1604. " <td>62.265</td>\n",
  1605. " <td>-26.539</td>\n",
  1606. " </tr>\n",
  1607. " <tr>\n",
  1608. " <th>ATP</th>\n",
  1609. " <td>-9223372036854775808</td>\n",
  1610. " <td>60246279459142416.000</td>\n",
  1611. " <td>38.637</td>\n",
  1612. " <td>0.000</td>\n",
  1613. " <td>-2292.312</td>\n",
  1614. " <td>122.560</td>\n",
  1615. " </tr>\n",
  1616. " <tr>\n",
  1617. " <th>ADP</th>\n",
  1618. " <td>-9223372036854775808</td>\n",
  1619. " <td>1922033603447802687692281780317672137818112.000</td>\n",
  1620. " <td>97.362</td>\n",
  1621. " <td>0.000</td>\n",
  1622. " <td>-1425.203</td>\n",
  1623. " <td>26.607</td>\n",
  1624. " </tr>\n",
  1625. " <tr>\n",
  1626. " <th>NAD+</th>\n",
  1627. " <td>-9223372036854775808</td>\n",
  1628. " <td>669880823205123.500</td>\n",
  1629. " <td>34.138</td>\n",
  1630. " <td>-0.000</td>\n",
  1631. " <td>1056.225</td>\n",
  1632. " <td>43.173</td>\n",
  1633. " </tr>\n",
  1634. " <tr>\n",
  1635. " <th>NADH</th>\n",
  1636. " <td>-9223372036854775808</td>\n",
  1637. " <td>53966573195750759180711684404550966443970705867...</td>\n",
  1638. " <td>144.446</td>\n",
  1639. " <td>-0.000</td>\n",
  1640. " <td>1117.435</td>\n",
  1641. " <td>42.820</td>\n",
  1642. " </tr>\n",
  1643. " <tr>\n",
  1644. " <th>Pi</th>\n",
  1645. " <td>3998170324985369600</td>\n",
  1646. " <td>6639273206.552</td>\n",
  1647. " <td>22.616</td>\n",
  1648. " <td>0.000</td>\n",
  1649. " <td>-1059.302</td>\n",
  1650. " <td>25.997</td>\n",
  1651. " </tr>\n",
  1652. " <tr>\n",
  1653. " <th>CO2</th>\n",
  1654. " <td>-9223372036854775808</td>\n",
  1655. " <td>16349881919983659317283948865226036435923705851...</td>\n",
  1656. " <td>170.883</td>\n",
  1657. " <td>0.000</td>\n",
  1658. " <td>-386.000</td>\n",
  1659. " <td>119.594</td>\n",
  1660. " </tr>\n",
  1661. " <tr>\n",
  1662. " <th>H2O</th>\n",
  1663. " <td>-9223372036854775808</td>\n",
  1664. " <td>18739469334030543441896149584586521855118177000...</td>\n",
  1665. " <td>194.045</td>\n",
  1666. " <td>0.000</td>\n",
  1667. " <td>-155.888</td>\n",
  1668. " <td>119.234</td>\n",
  1669. " </tr>\n",
  1670. " <tr>\n",
  1671. " <th>GLCi_ext</th>\n",
  1672. " <td>60220</td>\n",
  1673. " <td>0.000</td>\n",
  1674. " <td>-9.210</td>\n",
  1675. " <td>-0.000</td>\n",
  1676. " <td>-428.090</td>\n",
  1677. " <td>nan</td>\n",
  1678. " </tr>\n",
  1679. " <tr>\n",
  1680. " <th>ATP_ext</th>\n",
  1681. " <td>5781120</td>\n",
  1682. " <td>0.010</td>\n",
  1683. " <td>-4.646</td>\n",
  1684. " <td>0.000</td>\n",
  1685. " <td>-2292.312</td>\n",
  1686. " <td>nan</td>\n",
  1687. " </tr>\n",
  1688. " <tr>\n",
  1689. " <th>ADP_ext</th>\n",
  1690. " <td>337232</td>\n",
  1691. " <td>0.001</td>\n",
  1692. " <td>-7.488</td>\n",
  1693. " <td>-0.000</td>\n",
  1694. " <td>-1425.203</td>\n",
  1695. " <td>nan</td>\n",
  1696. " </tr>\n",
  1697. " <tr>\n",
  1698. " <th>NAD+_ext</th>\n",
  1699. " <td>1565720</td>\n",
  1700. " <td>0.003</td>\n",
  1701. " <td>-5.952</td>\n",
  1702. " <td>0.000</td>\n",
  1703. " <td>1056.225</td>\n",
  1704. " <td>nan</td>\n",
  1705. " </tr>\n",
  1706. " <tr>\n",
  1707. " <th>NADH_ext</th>\n",
  1708. " <td>49982</td>\n",
  1709. " <td>0.000</td>\n",
  1710. " <td>-9.397</td>\n",
  1711. " <td>-0.000</td>\n",
  1712. " <td>1117.435</td>\n",
  1713. " <td>nan</td>\n",
  1714. " </tr>\n",
  1715. " <tr>\n",
  1716. " <th>Pi_ext</th>\n",
  1717. " <td>204748</td>\n",
  1718. " <td>0.000</td>\n",
  1719. " <td>-7.987</td>\n",
  1720. " <td>-0.000</td>\n",
  1721. " <td>-1059.302</td>\n",
  1722. " <td>nan</td>\n",
  1723. " </tr>\n",
  1724. " <tr>\n",
  1725. " <th>CO2_ext</th>\n",
  1726. " <td>6022</td>\n",
  1727. " <td>0.000</td>\n",
  1728. " <td>-11.513</td>\n",
  1729. " <td>0.000</td>\n",
  1730. " <td>-386.000</td>\n",
  1731. " <td>nan</td>\n",
  1732. " </tr>\n",
  1733. " <tr>\n",
  1734. " <th>H2O_ext</th>\n",
  1735. " <td>1</td>\n",
  1736. " <td>0.000</td>\n",
  1737. " <td>-20.210</td>\n",
  1738. " <td>0.000</td>\n",
  1739. " <td>-155.888</td>\n",
  1740. " <td>nan</td>\n",
  1741. " </tr>\n",
  1742. " <tr>\n",
  1743. " <th>ETH_ext</th>\n",
  1744. " <td>-9223372036854775808</td>\n",
  1745. " <td>20050953274589531887069525414495425974415097627...</td>\n",
  1746. " <td>203.323</td>\n",
  1747. " <td>0.000</td>\n",
  1748. " <td>62.265</td>\n",
  1749. " <td>nan</td>\n",
  1750. " </tr>\n",
  1751. " </tbody>\n",
  1752. "</table>\n",
  1753. "</div>"
  1754. ],
  1755. "text/plain": [
  1756. " Counts \\\n",
  1757. "GLCi 487542087648814336 \n",
  1758. "G6P 278807642794 \n",
  1759. "F6P -9223372036854775808 \n",
  1760. "FBP -9223372036854775808 \n",
  1761. "DHAP 6266702749882 \n",
  1762. "GAP -9223372036854775808 \n",
  1763. "BPG 1934355 \n",
  1764. "3PG -9223372036854775808 \n",
  1765. "2PG -9223372036854775808 \n",
  1766. "PEP 317 \n",
  1767. "PYR -9223372036854775808 \n",
  1768. "AcALD 357 \n",
  1769. "ETH -9223372036854775808 \n",
  1770. "ATP -9223372036854775808 \n",
  1771. "ADP -9223372036854775808 \n",
  1772. "NAD+ -9223372036854775808 \n",
  1773. "NADH -9223372036854775808 \n",
  1774. "Pi 3998170324985369600 \n",
  1775. "CO2 -9223372036854775808 \n",
  1776. "H2O -9223372036854775808 \n",
  1777. "GLCi_ext 60220 \n",
  1778. "ATP_ext 5781120 \n",
  1779. "ADP_ext 337232 \n",
  1780. "NAD+_ext 1565720 \n",
  1781. "NADH_ext 49982 \n",
  1782. "Pi_ext 204748 \n",
  1783. "CO2_ext 6022 \n",
  1784. "H2O_ext 1 \n",
  1785. "ETH_ext -9223372036854775808 \n",
  1786. "\n",
  1787. " Concentrations \\\n",
  1788. "GLCi 809601606.856 \n",
  1789. "G6P 462.982 \n",
  1790. "F6P 89937920356619536.000 \n",
  1791. "FBP 1494625034495.931 \n",
  1792. "DHAP 10406.348 \n",
  1793. "GAP 1393018036859844427776.000 \n",
  1794. "BPG 0.003 \n",
  1795. "3PG 4878692923812172589863070388297884762112.000 \n",
  1796. "2PG 40677313678470625660146975318769326201346982649... \n",
  1797. "PEP 0.000 \n",
  1798. "PYR 13111105173369700041974457004066422434824192.000 \n",
  1799. "AcALD 0.000 \n",
  1800. "ETH 39041318105917975595407598335667289448032859406... \n",
  1801. "ATP 60246279459142416.000 \n",
  1802. "ADP 1922033603447802687692281780317672137818112.000 \n",
  1803. "NAD+ 669880823205123.500 \n",
  1804. "NADH 53966573195750759180711684404550966443970705867... \n",
  1805. "Pi 6639273206.552 \n",
  1806. "CO2 16349881919983659317283948865226036435923705851... \n",
  1807. "H2O 18739469334030543441896149584586521855118177000... \n",
  1808. "GLCi_ext 0.000 \n",
  1809. "ATP_ext 0.010 \n",
  1810. "ADP_ext 0.001 \n",
  1811. "NAD+_ext 0.003 \n",
  1812. "NADH_ext 0.000 \n",
  1813. "Pi_ext 0.000 \n",
  1814. "CO2_ext 0.000 \n",
  1815. "H2O_ext 0.000 \n",
  1816. "ETH_ext 20050953274589531887069525414495425974415097627... \n",
  1817. "\n",
  1818. " Log Concentrations Metabolite production rate Chemical potential \\\n",
  1819. "GLCi 20.512 -0.000 -428.090 \n",
  1820. "G6P 6.138 0.000 -1319.772 \n",
  1821. "F6P 39.038 -0.000 -1316.575 \n",
  1822. "FBP 28.033 0.000 -2206.160 \n",
  1823. "DHAP 9.250 0.000 -1095.834 \n",
  1824. "GAP 48.686 -0.000 -1088.174 \n",
  1825. "BPG -5.741 0.000 -2206.386 \n",
  1826. "3PG 91.386 -0.000 -1347.417 \n",
  1827. "2PG 128.045 0.000 -1341.519 \n",
  1828. "PEP -14.456 0.000 -1189.043 \n",
  1829. "PYR 99.282 -0.000 -351.015 \n",
  1830. "AcALD -14.338 -0.000 23.603 \n",
  1831. "ETH 148.727 -0.000 62.265 \n",
  1832. "ATP 38.637 0.000 -2292.312 \n",
  1833. "ADP 97.362 0.000 -1425.203 \n",
  1834. "NAD+ 34.138 -0.000 1056.225 \n",
  1835. "NADH 144.446 -0.000 1117.435 \n",
  1836. "Pi 22.616 0.000 -1059.302 \n",
  1837. "CO2 170.883 0.000 -386.000 \n",
  1838. "H2O 194.045 0.000 -155.888 \n",
  1839. "GLCi_ext -9.210 -0.000 -428.090 \n",
  1840. "ATP_ext -4.646 0.000 -2292.312 \n",
  1841. "ADP_ext -7.488 -0.000 -1425.203 \n",
  1842. "NAD+_ext -5.952 0.000 1056.225 \n",
  1843. "NADH_ext -9.397 -0.000 1117.435 \n",
  1844. "Pi_ext -7.987 -0.000 -1059.302 \n",
  1845. "CO2_ext -11.513 0.000 -386.000 \n",
  1846. "H2O_ext -20.210 0.000 -155.888 \n",
  1847. "ETH_ext 203.323 0.000 62.265 \n",
  1848. "\n",
  1849. " Steady state constraints \n",
  1850. "GLCi 31.657 \n",
  1851. "G6P 159.867 \n",
  1852. "F6P 192.486 \n",
  1853. "FBP 321.371 \n",
  1854. "DHAP 160.708 \n",
  1855. "GAP 193.681 \n",
  1856. "BPG 246.384 \n",
  1857. "3PG 176.529 \n",
  1858. "2PG 202.877 \n",
  1859. "PEP 110.070 \n",
  1860. "PYR 40.483 \n",
  1861. "AcALD -52.644 \n",
  1862. "ETH -26.539 \n",
  1863. "ATP 122.560 \n",
  1864. "ADP 26.607 \n",
  1865. "NAD+ 43.173 \n",
  1866. "NADH 42.820 \n",
  1867. "Pi 25.997 \n",
  1868. "CO2 119.594 \n",
  1869. "H2O 119.234 \n",
  1870. "GLCi_ext nan \n",
  1871. "ATP_ext nan \n",
  1872. "ADP_ext nan \n",
  1873. "NAD+_ext nan \n",
  1874. "NADH_ext nan \n",
  1875. "Pi_ext nan \n",
  1876. "CO2_ext nan \n",
  1877. "H2O_ext nan \n",
  1878. "ETH_ext nan "
  1879. ]
  1880. },
  1881. "metadata": {},
  1882. "output_type": "display_data"
  1883. },
  1884. {
  1885. "data": {
  1886. "text/html": [
  1887. "<div>\n",
  1888. "<table border=\"1\" class=\"dataframe\">\n",
  1889. " <thead>\n",
  1890. " <tr style=\"text-align: right;\">\n",
  1891. " <th></th>\n",
  1892. " <th>Rxn likelihoods</th>\n",
  1893. " <th>Delta G</th>\n",
  1894. " <th>Delta G0</th>\n",
  1895. " <th>Normalized Log Likelihoods</th>\n",
  1896. " <th>Fluxes</th>\n",
  1897. " <th>Forward rate</th>\n",
  1898. " <th>Reverse rate</th>\n",
  1899. " <th>Likelihood constraints</th>\n",
  1900. " <th>Entropy</th>\n",
  1901. " </tr>\n",
  1902. " </thead>\n",
  1903. " <tbody>\n",
  1904. " <tr>\n",
  1905. " <th>UGLY_1</th>\n",
  1906. " <td>0.000</td>\n",
  1907. " <td>49.076</td>\n",
  1908. " <td>-24.574</td>\n",
  1909. " <td>0.059</td>\n",
  1910. " <td>4.134</td>\n",
  1911. " <td>-0.000</td>\n",
  1912. " <td>-4.134</td>\n",
  1913. " <td>0.000</td>\n",
  1914. " <td>0.000</td>\n",
  1915. " </tr>\n",
  1916. " <tr>\n",
  1917. " <th>UGLY_2</th>\n",
  1918. " <td>0.000</td>\n",
  1919. " <td>49.245</td>\n",
  1920. " <td>3.197</td>\n",
  1921. " <td>0.060</td>\n",
  1922. " <td>3.862</td>\n",
  1923. " <td>-0.000</td>\n",
  1924. " <td>-3.862</td>\n",
  1925. " <td>0.000</td>\n",
  1926. " <td>0.000</td>\n",
  1927. " </tr>\n",
  1928. " <tr>\n",
  1929. " <th>UGLY_3</th>\n",
  1930. " <td>0.000</td>\n",
  1931. " <td>48.928</td>\n",
  1932. " <td>-22.476</td>\n",
  1933. " <td>0.059</td>\n",
  1934. " <td>4.390</td>\n",
  1935. " <td>-0.000</td>\n",
  1936. " <td>-4.390</td>\n",
  1937. " <td>0.000</td>\n",
  1938. " <td>0.000</td>\n",
  1939. " </tr>\n",
  1940. " <tr>\n",
  1941. " <th>UGLY_4</th>\n",
  1942. " <td>0.000</td>\n",
  1943. " <td>48.948</td>\n",
  1944. " <td>22.152</td>\n",
  1945. " <td>0.059</td>\n",
  1946. " <td>4.353</td>\n",
  1947. " <td>-0.000</td>\n",
  1948. " <td>-4.353</td>\n",
  1949. " <td>0.000</td>\n",
  1950. " <td>0.000</td>\n",
  1951. " </tr>\n",
  1952. " <tr>\n",
  1953. " <th>UGLY_5</th>\n",
  1954. " <td>0.000</td>\n",
  1955. " <td>48.955</td>\n",
  1956. " <td>7.660</td>\n",
  1957. " <td>0.059</td>\n",
  1958. " <td>4.342</td>\n",
  1959. " <td>-0.000</td>\n",
  1960. " <td>-4.342</td>\n",
  1961. " <td>0.000</td>\n",
  1962. " <td>0.000</td>\n",
  1963. " </tr>\n",
  1964. " <tr>\n",
  1965. " <th>DGLY_1</th>\n",
  1966. " <td>0.000</td>\n",
  1967. " <td>46.937</td>\n",
  1968. " <td>2.300</td>\n",
  1969. " <td>0.057</td>\n",
  1970. " <td>9.799</td>\n",
  1971. " <td>-0.000</td>\n",
  1972. " <td>-9.799</td>\n",
  1973. " <td>0.000</td>\n",
  1974. " <td>0.000</td>\n",
  1975. " </tr>\n",
  1976. " <tr>\n",
  1977. " <th>DGLY_2</th>\n",
  1978. " <td>0.000</td>\n",
  1979. " <td>47.041</td>\n",
  1980. " <td>-8.139</td>\n",
  1981. " <td>0.057</td>\n",
  1982. " <td>9.397</td>\n",
  1983. " <td>-0.000</td>\n",
  1984. " <td>-9.397</td>\n",
  1985. " <td>0.000</td>\n",
  1986. " <td>0.000</td>\n",
  1987. " </tr>\n",
  1988. " <tr>\n",
  1989. " <th>DGLY_3</th>\n",
  1990. " <td>0.000</td>\n",
  1991. " <td>46.990</td>\n",
  1992. " <td>5.898</td>\n",
  1993. " <td>0.057</td>\n",
  1994. " <td>9.593</td>\n",
  1995. " <td>-0.000</td>\n",
  1996. " <td>-9.593</td>\n",
  1997. " <td>0.000</td>\n",
  1998. " <td>0.000</td>\n",
  1999. " </tr>\n",
  2000. " <tr>\n",
  2001. " <th>DGLY_4</th>\n",
  2002. " <td>0.000</td>\n",
  2003. " <td>47.195</td>\n",
  2004. " <td>-3.413</td>\n",
  2005. " <td>0.057</td>\n",
  2006. " <td>8.830</td>\n",
  2007. " <td>-0.000</td>\n",
  2008. " <td>-8.830</td>\n",
  2009. " <td>0.000</td>\n",
  2010. " <td>0.000</td>\n",
  2011. " </tr>\n",
  2012. " <tr>\n",
  2013. " <th>DGLY_5</th>\n",
  2014. " <td>0.000</td>\n",
  2015. " <td>47.213</td>\n",
  2016. " <td>-29.080</td>\n",
  2017. " <td>0.057</td>\n",
  2018. " <td>8.765</td>\n",
  2019. " <td>-0.000</td>\n",
  2020. " <td>-8.765</td>\n",
  2021. " <td>0.000</td>\n",
  2022. " <td>0.000</td>\n",
  2023. " </tr>\n",
  2024. " <tr>\n",
  2025. " <th>DGLY_6</th>\n",
  2026. " <td>0.000</td>\n",
  2027. " <td>47.156</td>\n",
  2028. " <td>-11.382</td>\n",
  2029. " <td>0.057</td>\n",
  2030. " <td>8.971</td>\n",
  2031. " <td>-0.000</td>\n",
  2032. " <td>-8.971</td>\n",
  2033. " <td>0.000</td>\n",
  2034. " <td>0.000</td>\n",
  2035. " </tr>\n",
  2036. " <tr>\n",
  2037. " <th>DGLY_7</th>\n",
  2038. " <td>0.000</td>\n",
  2039. " <td>46.887</td>\n",
  2040. " <td>-22.548</td>\n",
  2041. " <td>0.057</td>\n",
  2042. " <td>10.000</td>\n",
  2043. " <td>-0.000</td>\n",
  2044. " <td>-10.000</td>\n",
  2045. " <td>0.000</td>\n",
  2046. " <td>0.000</td>\n",
  2047. " </tr>\n",
  2048. " <tr>\n",
  2049. " <th>EXTR_1</th>\n",
  2050. " <td>0.000</td>\n",
  2051. " <td>49.414</td>\n",
  2052. " <td>0.000</td>\n",
  2053. " <td>0.060</td>\n",
  2054. " <td>3.608</td>\n",
  2055. " <td>-0.000</td>\n",
  2056. " <td>-3.608</td>\n",
  2057. " <td>0.000</td>\n",
  2058. " <td>0.000</td>\n",
  2059. " </tr>\n",
  2060. " <tr>\n",
  2061. " <th>EXTR_2</th>\n",
  2062. " <td>-0.000</td>\n",
  2063. " <td>nan</td>\n",
  2064. " <td>0.000</td>\n",
  2065. " <td>nan</td>\n",
  2066. " <td>-7.300</td>\n",
  2067. " <td>-0.000</td>\n",
  2068. " <td>7.300</td>\n",
  2069. " <td>0.000</td>\n",
  2070. " <td>-inf</td>\n",
  2071. " </tr>\n",
  2072. " <tr>\n",
  2073. " <th>EXTR_3</th>\n",
  2074. " <td>0.000</td>\n",
  2075. " <td>46.821</td>\n",
  2076. " <td>0.000</td>\n",
  2077. " <td>0.057</td>\n",
  2078. " <td>10.269</td>\n",
  2079. " <td>-0.000</td>\n",
  2080. " <td>-10.269</td>\n",
  2081. " <td>0.000</td>\n",
  2082. " <td>0.000</td>\n",
  2083. " </tr>\n",
  2084. " <tr>\n",
  2085. " <th>EXTR_4</th>\n",
  2086. " <td>-0.000</td>\n",
  2087. " <td>nan</td>\n",
  2088. " <td>0.000</td>\n",
  2089. " <td>nan</td>\n",
  2090. " <td>-0.226</td>\n",
  2091. " <td>-0.000</td>\n",
  2092. " <td>0.226</td>\n",
  2093. " <td>0.000</td>\n",
  2094. " <td>-inf</td>\n",
  2095. " </tr>\n",
  2096. " <tr>\n",
  2097. " <th>EXTR_5</th>\n",
  2098. " <td>0.000</td>\n",
  2099. " <td>60.929</td>\n",
  2100. " <td>0.000</td>\n",
  2101. " <td>0.074</td>\n",
  2102. " <td>0.035</td>\n",
  2103. " <td>-0.000</td>\n",
  2104. " <td>-0.035</td>\n",
  2105. " <td>0.000</td>\n",
  2106. " <td>0.000</td>\n",
  2107. " </tr>\n",
  2108. " <tr>\n",
  2109. " <th>EXTR_6</th>\n",
  2110. " <td>0.000</td>\n",
  2111. " <td>46.800</td>\n",
  2112. " <td>0.000</td>\n",
  2113. " <td>0.057</td>\n",
  2114. " <td>10.357</td>\n",
  2115. " <td>-0.000</td>\n",
  2116. " <td>-10.357</td>\n",
  2117. " <td>0.000</td>\n",
  2118. " <td>0.000</td>\n",
  2119. " </tr>\n",
  2120. " <tr>\n",
  2121. " <th>EXTR_7</th>\n",
  2122. " <td>-0.000</td>\n",
  2123. " <td>nan</td>\n",
  2124. " <td>0.000</td>\n",
  2125. " <td>nan</td>\n",
  2126. " <td>-6.853</td>\n",
  2127. " <td>-0.000</td>\n",
  2128. " <td>6.853</td>\n",
  2129. " <td>0.000</td>\n",
  2130. " <td>-inf</td>\n",
  2131. " </tr>\n",
  2132. " <tr>\n",
  2133. " <th>EXTR_8</th>\n",
  2134. " <td>-0.000</td>\n",
  2135. " <td>nan</td>\n",
  2136. " <td>0.000</td>\n",
  2137. " <td>nan</td>\n",
  2138. " <td>-6.756</td>\n",
  2139. " <td>-0.000</td>\n",
  2140. " <td>6.756</td>\n",
  2141. " <td>0.000</td>\n",
  2142. " <td>-inf</td>\n",
  2143. " </tr>\n",
  2144. " <tr>\n",
  2145. " <th>EXTR_9</th>\n",
  2146. " <td>0.000</td>\n",
  2147. " <td>46.779</td>\n",
  2148. " <td>0.000</td>\n",
  2149. " <td>0.057</td>\n",
  2150. " <td>10.445</td>\n",
  2151. " <td>-0.000</td>\n",
  2152. " <td>-10.445</td>\n",
  2153. " <td>0.000</td>\n",
  2154. " <td>0.000</td>\n",
  2155. " </tr>\n",
  2156. " </tbody>\n",
  2157. "</table>\n",
  2158. "</div>"
  2159. ],
  2160. "text/plain": [
  2161. " Rxn likelihoods Delta G Delta G0 Normalized Log Likelihoods \\\n",
  2162. "UGLY_1 0.000 49.076 -24.574 0.059 \n",
  2163. "UGLY_2 0.000 49.245 3.197 0.060 \n",
  2164. "UGLY_3 0.000 48.928 -22.476 0.059 \n",
  2165. "UGLY_4 0.000 48.948 22.152 0.059 \n",
  2166. "UGLY_5 0.000 48.955 7.660 0.059 \n",
  2167. "DGLY_1 0.000 46.937 2.300 0.057 \n",
  2168. "DGLY_2 0.000 47.041 -8.139 0.057 \n",
  2169. "DGLY_3 0.000 46.990 5.898 0.057 \n",
  2170. "DGLY_4 0.000 47.195 -3.413 0.057 \n",
  2171. "DGLY_5 0.000 47.213 -29.080 0.057 \n",
  2172. "DGLY_6 0.000 47.156 -11.382 0.057 \n",
  2173. "DGLY_7 0.000 46.887 -22.548 0.057 \n",
  2174. "EXTR_1 0.000 49.414 0.000 0.060 \n",
  2175. "EXTR_2 -0.000 nan 0.000 nan \n",
  2176. "EXTR_3 0.000 46.821 0.000 0.057 \n",
  2177. "EXTR_4 -0.000 nan 0.000 nan \n",
  2178. "EXTR_5 0.000 60.929 0.000 0.074 \n",
  2179. "EXTR_6 0.000 46.800 0.000 0.057 \n",
  2180. "EXTR_7 -0.000 nan 0.000 nan \n",
  2181. "EXTR_8 -0.000 nan 0.000 nan \n",
  2182. "EXTR_9 0.000 46.779 0.000 0.057 \n",
  2183. "\n",
  2184. " Fluxes Forward rate Reverse rate Likelihood constraints Entropy \n",
  2185. "UGLY_1 4.134 -0.000 -4.134 0.000 0.000 \n",
  2186. "UGLY_2 3.862 -0.000 -3.862 0.000 0.000 \n",
  2187. "UGLY_3 4.390 -0.000 -4.390 0.000 0.000 \n",
  2188. "UGLY_4 4.353 -0.000 -4.353 0.000 0.000 \n",
  2189. "UGLY_5 4.342 -0.000 -4.342 0.000 0.000 \n",
  2190. "DGLY_1 9.799 -0.000 -9.799 0.000 0.000 \n",
  2191. "DGLY_2 9.397 -0.000 -9.397 0.000 0.000 \n",
  2192. "DGLY_3 9.593 -0.000 -9.593 0.000 0.000 \n",
  2193. "DGLY_4 8.830 -0.000 -8.830 0.000 0.000 \n",
  2194. "DGLY_5 8.765 -0.000 -8.765 0.000 0.000 \n",
  2195. "DGLY_6 8.971 -0.000 -8.971 0.000 0.000 \n",
  2196. "DGLY_7 10.000 -0.000 -10.000 0.000 0.000 \n",
  2197. "EXTR_1 3.608 -0.000 -3.608 0.000 0.000 \n",
  2198. "EXTR_2 -7.300 -0.000 7.300 0.000 -inf \n",
  2199. "EXTR_3 10.269 -0.000 -10.269 0.000 0.000 \n",
  2200. "EXTR_4 -0.226 -0.000 0.226 0.000 -inf \n",
  2201. "EXTR_5 0.035 -0.000 -0.035 0.000 0.000 \n",
  2202. "EXTR_6 10.357 -0.000 -10.357 0.000 0.000 \n",
  2203. "EXTR_7 -6.853 -0.000 6.853 0.000 -inf \n",
  2204. "EXTR_8 -6.756 -0.000 6.756 0.000 -inf \n",
  2205. "EXTR_9 10.445 -0.000 -10.445 0.000 0.000 "
  2206. ]
  2207. },
  2208. "metadata": {},
  2209. "output_type": "display_data"
  2210. }
  2211. ],
  2212. "source": [
  2213. "from IPython.display import display, HTML\n",
  2214. "import cvxpy as cvx\n",
  2215. "pd.options.display.float_format = '{:.3f}'.format\n",
  2216. "internal_metabolites = internal_mets\n",
  2217. "R = 8.3144598/1000.0 # ideal gas constant\n",
  2218. "T = 298.15 # standard temperature\n",
  2219. "n_A = 6.022e23 # Avogadro's number\n",
  2220. "V = 1e-15 # volume of cell in Liters\n",
  2221. "c_L = 1e-10 # lower bound of metabolite concentrations\n",
  2222. "c_U = 1e-1 # upper bound of metabolite concentrations\n",
  2223. "reference_flux= 'DGLY_7'\n",
  2224. "reference_flux_value = 10.0 \n",
  2225. "log_c = cvx.Variable(29) # log of the concentrations\n",
  2226. "likelihood = cvx.Variable(21) # Likelihoods of the reactions\n",
  2227. "obj = Maximize(cvx.sum_entries( cvx.entr( likelihood ) ) ) # maximizing entropy\n",
  2228. "log_Q = fullS.as_matrix().T*log_c # log of the Reaction quotient\n",
  2229. "S = fullS.loc[internal_mets].as_matrix() # Only internal metabolites are in steady state\n",
  2230. "log_K = cvx.Constant(-1.0/(R*T)*deltaG0.as_matrix()) # log of the Equilibrium constnat\n",
  2231. "constraints = [cvx.log(likelihood) >= log_K - log_Q,\n",
  2232. "# cvx.log(c_U) >= log_c,\n",
  2233. " log_c >= cvx.log(c_L),\n",
  2234. " log_c[20] == cvx.log(1.00e-4),\n",
  2235. " log_c[21] == cvx.log(9.60e-3),\n",
  2236. " log_c[22] == cvx.log(5.60e-4),\n",
  2237. " log_c[23] == cvx.log(2.60e-3),\n",
  2238. " log_c[24] == cvx.log(8.30e-5),\n",
  2239. " log_c[25] == cvx.log(3.40e-4),\n",
  2240. " log_c[26] == cvx.log(1.00e-5),\n",
  2241. " log_c[27] == cvx.log(1.67e-9), \n",
  2242. " S*likelihood == 0]\n",
  2243. "prob = cvx.Problem(obj, constraints)\n",
  2244. "prob.solve( verbose=True)\n",
  2245. "print(\"status: {}\".format( prob.status))\n",
  2246. "print(\"Optimal value: {}\".format( prob.value))\n",
  2247. "print(\"Optimal Concentrations are:\\n\")\n",
  2248. "\n",
  2249. "mets = generate_metabolite_report( log_c, fullS, likelihood, constraints, metabolites, internal_metabolites )\n",
  2250. "display(mets)\n",
  2251. "reactions = generate_rxn_report(likelihood, rxns, deltaG0, reference_flux, reference_flux_value, constraints)\n",
  2252. "display(reactions)\n"
  2253. ]
  2254. }
  2255. ],
  2256. "metadata": {
  2257. "kernelspec": {
  2258. "display_name": "Python 3",
  2259. "language": "python",
  2260. "name": "python3"
  2261. },
  2262. "language_info": {
  2263. "codemirror_mode": {
  2264. "name": "ipython",
  2265. "version": 3
  2266. },
  2267. "file_extension": ".py",
  2268. "mimetype": "text/x-python",
  2269. "name": "python",
  2270. "nbconvert_exporter": "python",
  2271. "pygments_lexer": "ipython3",
  2272. "version": "3.5.0"
  2273. }
  2274. },
  2275. "nbformat": 4,
  2276. "nbformat_minor": 0
  2277. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement