├── d3flux
├── core
│ ├── __init__.py
│ ├── display_tools.py
│ └── flux_layouts.py
├── templates
│ ├── __init__.py
│ ├── output_template.html
│ └── network_style.css
├── __init__.py
├── test
│ ├── create_test_html.py
│ ├── test_flux_map.py
│ ├── simple_model_no_layout.json
│ └── simple_model.json
└── examples
│ └── asuc
│ ├── asuc_v1.json
│ └── full-map-render.svg
├── setup.cfg
├── MANIFEST.in
├── requirements.txt
├── .gitignore
├── setup.py
├── README.md
├── .travis.yml
└── LICENSE
/d3flux/core/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/d3flux/templates/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/setup.cfg:
--------------------------------------------------------------------------------
1 | [metadata]
2 | description-file = README.md
3 |
--------------------------------------------------------------------------------
/MANIFEST.in:
--------------------------------------------------------------------------------
1 | include LICENSE
2 |
3 | recursive-include d3flux/templates *
4 |
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | pandas
2 | cobra>=0.6.0
3 | jinja2
4 | ipython
5 | csscompressor
6 | pytest
7 |
--------------------------------------------------------------------------------
/d3flux/__init__.py:
--------------------------------------------------------------------------------
1 | from d3flux.core.flux_layouts import flux_map
2 | from d3flux.core.display_tools import *
3 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.DS_Store
2 | *.sw[op]
3 | .ipynb_checkpoints
4 | build
5 |
6 | *.py[co]
7 | __pycache__
8 | ~$*
9 | .cache
10 |
11 | # Setuptools distribution folder.
12 | /dist/
13 |
14 | # Python egg metadata, regenerated from source files by setuptools.
15 | /*.egg-info
16 |
--------------------------------------------------------------------------------
/d3flux/templates/output_template.html:
--------------------------------------------------------------------------------
1 |
2 | {{ background_svg }}
3 |
4 |
5 |
6 |
7 |
8 |
9 |
12 |
--------------------------------------------------------------------------------
/setup.py:
--------------------------------------------------------------------------------
1 | from setuptools import setup, find_packages
2 |
3 | setup(name='d3flux',
4 | version='0.2.7',
5 | description='A d3.js-based metabolic visualization tool for cobrapy',
6 | url='https://github.com/pstjohn/d3flux',
7 | download_url='https://github.com/pstjohn/d3flux',
8 | author='Peter St. John',
9 | author_email='peter.stjohn@nrel.gov',
10 | license='MIT',
11 | packages=find_packages(),
12 | install_requires=['pandas', 'cobra', 'jinja2', 'ipython', 'csscompressor'],
13 | package_data={'d3flux': ['templates/*']},
14 | )
15 |
--------------------------------------------------------------------------------
/d3flux/templates/network_style.css:
--------------------------------------------------------------------------------
1 | .node.rxn {
2 | fill: #FFA319;
3 | }
4 |
5 | .node.rxn.hidden {
6 | fill: none;
7 | stroke: none;
8 | stroke-width: 0;
9 | }
10 |
11 | .link {
12 | fill: none;
13 | stroke-linecap: round;
14 | }
15 |
16 | text.nodelabel {
17 | font-size: {{ fontsize }}pt;
18 | fill: #555;
19 | font-family: Arial;
20 | }
21 |
22 | text.nodelabel.cofactor {
23 | font-size: {{ cf_fontsize }}pt;
24 | fill: #778899;
25 | }
26 |
27 | text.nodelabel.rxn {
28 | fill: #A9A9A9;
29 | font-size: {{ cf_fontsize }}pt;
30 | font-style: italic;
31 | }
32 |
33 | marker.inactive, .node.inactive, text.inactive {
34 | fill-opacity: {{ inactive_alpha }};
35 | }
36 |
37 | .link.inactive {
38 | stroke-opacity: {{ inactive_alpha }};
39 | }
40 |
41 |
42 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # D3flux
2 |
3 | [](https://travis-ci.org/pstjohn/d3flux)
4 | [](https://badge.fury.io/py/d3flux)
5 |
6 | This package implements a d3.js based visualization tool for cobrapy models.
7 |
8 | 
9 |
10 | *Note*: This is still very much alpha software. Many things won't work :)
11 |
12 |
13 | ## Install
14 | Install via pip:
15 | ```
16 | pip install d3flux
17 | ```
18 |
19 | Or, setup a development version by cloning the repo
20 |
21 | ```
22 | git clone git@github.com:pstjohn/d3flux.git
23 | cd d3flux
24 | python setup.py develop
25 | ```
26 |
27 | ## Documentation
28 | [https://pstjohn.github.io/d3flux/](https://pstjohn.github.io/d3flux/)
29 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: python
2 | cache: pip
3 | python:
4 | - '2.7'
5 | - '3.6'
6 | install:
7 | - pip install -r requirements.txt
8 | - pip install -e .
9 | script:
10 | - pytest
11 | deploy:
12 | provider: pypi
13 | user: pstjohn
14 | password:
15 | secure: Lh352v9p09v4B2mANvcOnIrjO/lFZby4AleLzo8XTcI/LRX2qkZwAx1qXfYKzrSFWJGw8jJB2wtnWDWZpLKqWN8rCWm/teqCNjFEcFzppbpRKELrYU60GCg+8m9Hibf5CErsID3yFqpgtMGls0c1zK/v7W4p4LetO9ae6zfjE9vcWcO/7ux7TposK/8A9n5vcRhJdiIlQgzrBr9Ll1bQD4ng37LR7MSFzjMdmif0UwpcTt7AEojAY9n+jN9noX24TSsBrR5gcPp2mHXQMZ9flcJu9wFxFOsRRbhag73Fn0Y3RPEGdCBpleZRfeEUP5BkCn9vFjrQ1jjkMg1fxfDPhGabV1/PjKSqdXQ7tbb+km1UeV6DnnL4WgH9h/dY2+31saJsIWUkcrqkVERkP0v4/dC28soBWG0TIIEGahNTpua5gz4F9zlVWXa/gDbo4Wtcv0M8PJmUPkp978tOgMcoIuko65UcL9BKBDSMIuTp9x0/6/O2BRtMg7r6MYwxkdXKwkKot+ISMaC2f6JPwUnamUh4ipCKVuCx94xpoUbxz2x5i3cpBoFapmWkWoA0QYBx1WUHApa3YQkPpfXzWAgZUHzVzw0eE0RxeNJiygLQKeK9rN+hm3pmoCk7eyOeRJOcElcHQfn1w5wxHzgovOftLsijfv1cTO0UEksHFdmJDrY=
16 | on:
17 | tags: true
18 | condition: $TRAVIS_PYTHON_VERSION = 3*
19 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2016 Peter St. John
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/d3flux/test/create_test_html.py:
--------------------------------------------------------------------------------
1 | from cobra.io import load_json_model
2 | from d3flux import flux_map
3 |
4 | new_model = load_json_model('simple_model_no_layout.json')
5 |
6 | new_model.objective = new_model.reactions.R4
7 | # new_model.reactions.R8.knock_out()
8 | new_model.reactions.R6.knock_out()
9 | new_model.optimize()
10 |
11 | new_model.metabolites.B.notes['map_info']['align'] = 'left'
12 | new_model.metabolites.P.notes['map_info']['align'] = 'lower center'
13 | new_model.metabolites.C.notes['map_info']['align'] = 'upper right'
14 |
15 | new_model.reactions.R5.bounds = (-1000, 1000)
16 |
17 | html = flux_map(new_model, figsize=(900,250), inactive_alpha=0.5)
18 | with open('test.html', 'w') as f:
19 | f.write(' Test d3flux page ')
20 | f.write(html.data)
21 | f.write(' ')
22 |
--------------------------------------------------------------------------------
/d3flux/test/test_flux_map.py:
--------------------------------------------------------------------------------
1 | import pytest
2 | from cobra.core import Metabolite, Reaction, Model
3 | from d3flux import flux_map
4 |
5 | @pytest.fixture()
6 | def simple_model():
7 |
8 | model = Model('simple_model')
9 |
10 | A = Metabolite('A')
11 | B = Metabolite('B')
12 | C = Metabolite('C')
13 | D = Metabolite('D')
14 | E = Metabolite('E')
15 | P = Metabolite('P')
16 |
17 | R1 = Reaction('R1')
18 | R2 = Reaction('R2')
19 | R3 = Reaction('R3')
20 | R4 = Reaction('R4')
21 | R5 = Reaction('R5')
22 | R6 = Reaction('R6')
23 | R7 = Reaction('R7')
24 | R8 = Reaction('R8')
25 | R9 = Reaction('R9')
26 | R10 = Reaction('R10')
27 |
28 | model.add_metabolites([A, B, C, D, E, P])
29 | model.add_reactions([R1, R2, R3, R4, R5, R6, R7, R8, R9, R10])
30 |
31 | model.reactions.R1.build_reaction_from_string('--> A')
32 | model.reactions.R2.build_reaction_from_string('<--> B')
33 | model.reactions.R3.build_reaction_from_string('P -->')
34 | model.reactions.R4.build_reaction_from_string('E -->')
35 | model.reactions.R5.build_reaction_from_string('A --> B')
36 | model.reactions.R6.build_reaction_from_string('A --> C')
37 | model.reactions.R7.build_reaction_from_string('A --> D')
38 | model.reactions.R8.build_reaction_from_string('B <--> C')
39 | model.reactions.R9.build_reaction_from_string('B --> P')
40 | model.reactions.R10.build_reaction_from_string('C + D --> E + P')
41 |
42 | return model
43 |
44 |
45 | def test_flux_map(simple_model):
46 | svg = flux_map(simple_model, display_name_format=lambda x: str(x.id),
47 | figsize=(300,250), flux_dict={rxn.id: None for rxn in
48 | simple_model.reactions})
49 |
50 | assert svg is not None
51 |
52 |
53 | def test_flux_map_optimize(simple_model):
54 | simple_model.objective = simple_model.reactions.R4
55 | simple_model.optimize()
56 | svg = flux_map(simple_model, figsize=(300,250))
57 |
58 | assert svg is not None
59 |
60 | def test_flux_map_knockout(simple_model):
61 | simple_model.objective = simple_model.reactions.R4
62 | simple_model.reactions.R8.knock_out()
63 | simple_model.optimize()
64 | svg = flux_map(simple_model, figsize=(300,250))
65 |
66 | assert svg is not None
67 |
68 |
--------------------------------------------------------------------------------
/d3flux/core/display_tools.py:
--------------------------------------------------------------------------------
1 | import pandas as pd
2 | from functools import reduce
3 | # TODO: write docstrings
4 |
5 | def metabolite_summary(met):
6 | return pd.Series({r.id : (r.x * r.metabolites[met])
7 | for r in met.reactions}, name='flux')
8 |
9 | common_ox_cofactors = ['nad_c', 'nadp_c', 'q8_c']
10 |
11 | def redox_summary(cobra_model, tol=1E-8, ox_cofactors=None):
12 |
13 | if ox_cofactors == None: ox_cofactors = common_ox_cofactors
14 | elif not ox_cofactors: return pd.Series(), pd.Series()
15 |
16 | redox_series = reduce(lambda x, y: x.add(y, fill_value=0), (
17 | metabolite_summary(cobra_model.metabolites.get_by_id(cofactor))
18 | for cofactor in ox_cofactors))
19 | oxidizing = redox_series[redox_series > tol]
20 | reducing = redox_series[redox_series < -tol]
21 | return oxidizing, reducing
22 |
23 | def color_redox_rxns(cobra_model, reset_groups=True, color_knockouts=True,
24 | starting_group=1, **kwargs):
25 | """Add group info to the cobra_model according to the results of
26 | `redox_summary`.
27 |
28 | cobra_model: a cobra.Model object
29 |
30 | reset_groups: bool
31 | whether or not to delete group info from model reactions prior to
32 | assigning new groups.
33 |
34 | color_knockouts: bool
35 | whether or not to conditionally format reactions which are currently
36 | knocked out. (i.e., rxn.bounds = (0,0))
37 |
38 | starting_group: int
39 | To use different colors, start from a group other than 1. (Highest
40 | color is 8)
41 |
42 | Additional kwargs are passed directly to the `redox_summary` function call:
43 |
44 | tol: int, default 1E-8
45 | flux tolerance above which to include the reaction
46 |
47 | ox_cofactors: list, default is common_ox_cofactors
48 | Cofactors which are produced or consumed in several reactions to use as
49 | the basis for coloring the flux model.
50 |
51 | """
52 | # Pop existing group info
53 | if reset_groups:
54 | for rxn in cobra_model.reactions:
55 | try: del rxn.notes['map_info']['group']
56 | except KeyError: pass
57 |
58 | # Assign group for knocked out reactions
59 | if color_knockouts:
60 | for rxn in cobra_model.reactions.query(
61 | lambda r: r.bounds == (0, 0), None):
62 | rxn.notes['map_info']['group'] = 'ko'
63 |
64 | # Assign new group info based on redox balance
65 | oxidizing, reducing = redox_summary(cobra_model, **kwargs)
66 | for rxn, flux in oxidizing.items():
67 | cobra_model.reactions.get_by_id(
68 | rxn).notes['map_info']['group'] = starting_group
69 | for rxn, flux in reducing.items():
70 | cobra_model.reactions.get_by_id(
71 | rxn).notes['map_info']['group'] = starting_group + 1
72 |
73 | return cobra_model
74 |
75 |
76 | def update_cofactors(cobra_model, cofactor_list):
77 | """ Given a model and list of cofactors to display, update the map_info
78 | field of each reaction containing the given cofactors. Updates the model
79 | inplace.
80 |
81 | cobra_model : a cobra.Model object
82 | cofactor_list : a list of strings indicating the desired cofactor IDs to show.
83 |
84 | """
85 |
86 | def rxn_cofactor_update(rxn, cofactor):
87 |
88 | if 'map_info' not in rxn.notes:
89 | rxn.notes['map_info'] = {}
90 |
91 | try:
92 | if cofactor in rxn.notes['map_info']['cofactors']: return
93 | rxn.notes['map_info']['cofactors'].update({cofactor: {}})
94 | except KeyError:
95 | rxn.notes['map_info']['cofactors'] = {cofactor: {}}
96 |
97 | for met_id in cofactor_list:
98 | this_met = cobra_model.metabolites.get_by_id(met_id)
99 | for rxn in this_met.reactions: rxn_cofactor_update(rxn, met_id)
100 |
101 | common_cofactors = ['coa', 'nadh', 'nad', 'nadph', 'nadp', 'atp', 'adp', 'amp',
102 | 'q8', 'q8h2', 'pi', 'co2', 'h2o', 'h', 'o2', 'h2', 'nh4']
103 |
104 |
--------------------------------------------------------------------------------
/d3flux/test/simple_model_no_layout.json:
--------------------------------------------------------------------------------
1 | {
2 | "genes": [],
3 | "id": "simple_model",
4 | "metabolites": [
5 | {
6 | "compartment": "",
7 | "formula": "",
8 | "id": "A",
9 | "name": "",
10 | "notes": {
11 | "map_info": {
12 | "display_name": "A"
13 | }
14 | }
15 | },
16 | {
17 | "compartment": "",
18 | "formula": "",
19 | "id": "B",
20 | "name": "",
21 | "notes": {
22 | "map_info": {
23 | "display_name": "B"
24 | }
25 | }
26 | },
27 | {
28 | "compartment": "",
29 | "formula": "",
30 | "id": "C",
31 | "name": "",
32 | "notes": {
33 | "map_info": {
34 | "display_name": "C"
35 | }
36 | }
37 | },
38 | {
39 | "compartment": "",
40 | "formula": "",
41 | "id": "D",
42 | "name": "",
43 | "notes": {
44 | "map_info": {
45 | "display_name": "D"
46 | }
47 | }
48 | },
49 | {
50 | "compartment": "",
51 | "formula": "",
52 | "id": "E",
53 | "name": "",
54 | "notes": {
55 | "map_info": {
56 | "display_name": "E"
57 | }
58 | }
59 | },
60 | {
61 | "compartment": "",
62 | "formula": "",
63 | "id": "P",
64 | "name": "",
65 | "notes": {
66 | "map_info": {
67 | "display_name": "P"
68 | }
69 | }
70 | }
71 | ],
72 | "notes": {
73 | "map_info": {}
74 | },
75 | "pathways": [],
76 | "reactions": [
77 | {
78 | "gene_reaction_rule": "",
79 | "id": "R1",
80 | "lower_bound": 0,
81 | "metabolites": {
82 | "A": 1
83 | },
84 | "name": "",
85 | "notes": {
86 | "map_info": {
87 | "hidden": true,
88 | "reversibility": false
89 | }
90 | },
91 | "upper_bound": 1000
92 | },
93 | {
94 | "gene_reaction_rule": "",
95 | "id": "R2",
96 | "lower_bound": -1000,
97 | "metabolites": {
98 | "B": 1
99 | },
100 | "name": "",
101 | "notes": {
102 | "map_info": {
103 | "hidden": true,
104 | "reversibility": true
105 | }
106 | },
107 | "upper_bound": 1000
108 | },
109 | {
110 | "gene_reaction_rule": "",
111 | "id": "R3",
112 | "lower_bound": 0,
113 | "metabolites": {
114 | "P": -1
115 | },
116 | "name": "",
117 | "notes": {
118 | "map_info": {
119 | "hidden": true,
120 | "reversibility": false
121 | }
122 | },
123 | "upper_bound": 1000
124 | },
125 | {
126 | "gene_reaction_rule": "",
127 | "id": "R4",
128 | "lower_bound": 0,
129 | "metabolites": {
130 | "E": -1
131 | },
132 | "name": "",
133 | "notes": {
134 | "map_info": {
135 | "hidden": true,
136 | "reversibility": false
137 | }
138 | },
139 | "upper_bound": 1000
140 | },
141 | {
142 | "gene_reaction_rule": "",
143 | "id": "R5",
144 | "lower_bound": 0,
145 | "metabolites": {
146 | "A": -1,
147 | "B": 1
148 | },
149 | "name": "",
150 | "notes": {
151 | "map_info": {
152 | "reversibility": false,
153 | "display_name": "R5\ntest"
154 | }
155 | },
156 | "upper_bound": 1000
157 | },
158 | {
159 | "gene_reaction_rule": "",
160 | "id": "R6",
161 | "lower_bound": 0,
162 | "metabolites": {
163 | "A": -1,
164 | "C": 1
165 | },
166 | "name": "",
167 | "notes": {
168 | "map_info": {
169 | "reversibility": false
170 | }
171 | },
172 | "upper_bound": 1000
173 | },
174 | {
175 | "gene_reaction_rule": "",
176 | "id": "R7",
177 | "lower_bound": 0,
178 | "metabolites": {
179 | "A": -1,
180 | "D": 1
181 | },
182 | "name": "",
183 | "notes": {
184 | "map_info": {
185 | "reversibility": false
186 | }
187 | },
188 | "upper_bound": 1000
189 | },
190 | {
191 | "gene_reaction_rule": "",
192 | "id": "R8",
193 | "lower_bound": -1000,
194 | "metabolites": {
195 | "B": -1,
196 | "C": 1
197 | },
198 | "name": "",
199 | "notes": {
200 | "map_info": {
201 | "reversibility": true
202 | }
203 | },
204 | "upper_bound": 1000
205 | },
206 | {
207 | "gene_reaction_rule": "",
208 | "id": "R9",
209 | "lower_bound": 0,
210 | "metabolites": {
211 | "B": -1,
212 | "P": 1
213 | },
214 | "name": "",
215 | "notes": {
216 | "map_info": {
217 | "reversibility": false
218 | }
219 | },
220 | "upper_bound": 1000
221 | },
222 | {
223 | "gene_reaction_rule": "",
224 | "id": "R10",
225 | "lower_bound": 0,
226 | "metabolites": {
227 | "C": -1,
228 | "D": -1,
229 | "E": 1,
230 | "P": 1
231 | },
232 | "name": "",
233 | "notes": {
234 | "map_info": {
235 | "reversibility": false
236 | }
237 | },
238 | "upper_bound": 1000
239 | }
240 | ],
241 | "version": 1
242 | }
243 |
--------------------------------------------------------------------------------
/d3flux/test/simple_model.json:
--------------------------------------------------------------------------------
1 | {
2 | "genes": [],
3 | "id": "simple_model",
4 | "metabolites": [
5 | {
6 | "compartment": "",
7 | "formula": "",
8 | "id": "A",
9 | "name": "",
10 | "notes": {
11 | "map_info": {
12 | "display_name": "A",
13 | "x": 150,
14 | "y": 50
15 | }
16 | }
17 | },
18 | {
19 | "compartment": "",
20 | "formula": "",
21 | "id": "B",
22 | "name": "",
23 | "notes": {
24 | "map_info": {
25 | "display_name": "B",
26 | "x": 80,
27 | "y": 130
28 | }
29 | }
30 | },
31 | {
32 | "compartment": "",
33 | "formula": "",
34 | "id": "C",
35 | "name": "",
36 | "notes": {
37 | "map_info": {
38 | "display_name": "C",
39 | "x": 150,
40 | "y": 130
41 | }
42 | }
43 | },
44 | {
45 | "compartment": "",
46 | "formula": "",
47 | "id": "D",
48 | "name": "",
49 | "notes": {
50 | "map_info": {
51 | "display_name": "D",
52 | "x": 220,
53 | "y": 130
54 | }
55 | }
56 | },
57 | {
58 | "compartment": "",
59 | "formula": "",
60 | "id": "E",
61 | "name": "",
62 | "notes": {
63 | "map_info": {
64 | "display_name": "E",
65 | "x": 220,
66 | "y": 200
67 | }
68 | }
69 | },
70 | {
71 | "compartment": "",
72 | "formula": "",
73 | "id": "P",
74 | "name": "",
75 | "notes": {
76 | "map_info": {
77 | "display_name": "P",
78 | "x": 150,
79 | "y": 200
80 | }
81 | }
82 | }
83 | ],
84 | "notes": {
85 | "map_info": {}
86 | },
87 | "pathways": [],
88 | "reactions": [
89 | {
90 | "gene_reaction_rule": "",
91 | "id": "R1",
92 | "lower_bound": 0,
93 | "metabolites": {
94 | "A": 1
95 | },
96 | "name": "",
97 | "notes": {
98 | "map_info": {
99 | "hidden": true,
100 | "reversibility": false
101 | }
102 | },
103 | "upper_bound": 1000
104 | },
105 | {
106 | "gene_reaction_rule": "",
107 | "id": "R2",
108 | "lower_bound": -1000,
109 | "metabolites": {
110 | "B": 1
111 | },
112 | "name": "",
113 | "notes": {
114 | "map_info": {
115 | "hidden": true,
116 | "reversibility": true
117 | }
118 | },
119 | "upper_bound": 1000
120 | },
121 | {
122 | "gene_reaction_rule": "",
123 | "id": "R3",
124 | "lower_bound": 0,
125 | "metabolites": {
126 | "P": -1
127 | },
128 | "name": "",
129 | "notes": {
130 | "map_info": {
131 | "hidden": true,
132 | "reversibility": false
133 | }
134 | },
135 | "upper_bound": 1000
136 | },
137 | {
138 | "gene_reaction_rule": "",
139 | "id": "R4",
140 | "lower_bound": 0,
141 | "metabolites": {
142 | "E": -1
143 | },
144 | "name": "",
145 | "notes": {
146 | "map_info": {
147 | "hidden": true,
148 | "reversibility": false
149 | }
150 | },
151 | "upper_bound": 1000
152 | },
153 | {
154 | "gene_reaction_rule": "",
155 | "id": "R5",
156 | "lower_bound": 0,
157 | "metabolites": {
158 | "A": -1,
159 | "B": 1
160 | },
161 | "name": "",
162 | "notes": {
163 | "map_info": {
164 | "reversibility": false
165 | }
166 | },
167 | "upper_bound": 1000
168 | },
169 | {
170 | "gene_reaction_rule": "",
171 | "id": "R6",
172 | "lower_bound": 0,
173 | "metabolites": {
174 | "A": -1,
175 | "C": 1
176 | },
177 | "name": "",
178 | "notes": {
179 | "map_info": {
180 | "reversibility": false
181 | }
182 | },
183 | "upper_bound": 1000
184 | },
185 | {
186 | "gene_reaction_rule": "",
187 | "id": "R7",
188 | "lower_bound": 0,
189 | "metabolites": {
190 | "A": -1,
191 | "D": 1
192 | },
193 | "name": "",
194 | "notes": {
195 | "map_info": {
196 | "reversibility": false
197 | }
198 | },
199 | "upper_bound": 1000
200 | },
201 | {
202 | "gene_reaction_rule": "",
203 | "id": "R8",
204 | "lower_bound": -1000,
205 | "metabolites": {
206 | "B": -1,
207 | "C": 1
208 | },
209 | "name": "",
210 | "notes": {
211 | "map_info": {
212 | "reversibility": true
213 | }
214 | },
215 | "upper_bound": 1000
216 | },
217 | {
218 | "gene_reaction_rule": "",
219 | "id": "R9",
220 | "lower_bound": 0,
221 | "metabolites": {
222 | "B": -1,
223 | "P": 1
224 | },
225 | "name": "",
226 | "notes": {
227 | "map_info": {
228 | "reversibility": false
229 | }
230 | },
231 | "upper_bound": 1000
232 | },
233 | {
234 | "gene_reaction_rule": "",
235 | "id": "R10",
236 | "lower_bound": 0,
237 | "metabolites": {
238 | "C": -1,
239 | "D": -1,
240 | "E": 1,
241 | "P": 1
242 | },
243 | "name": "",
244 | "notes": {
245 | "map_info": {
246 | "reversibility": false
247 | }
248 | },
249 | "upper_bound": 1000
250 | }
251 | ],
252 | "version": 1
253 | }
254 |
--------------------------------------------------------------------------------
/d3flux/core/flux_layouts.py:
--------------------------------------------------------------------------------
1 | """
2 | A D3-based network layout engine for plotting model solutions in the jupyter
3 | window
4 | """
5 |
6 | import os
7 | import json
8 | import itertools
9 | import re
10 |
11 | from jinja2 import Environment, FileSystemLoader
12 | from IPython.display import HTML
13 | from csscompressor import compress
14 |
15 | from cobra.io.json import model_to_dict
16 | from cobra.exceptions import OptimizationError
17 |
18 | import d3flux
19 |
20 | def flux_map(cobra_model,
21 | excluded_metabolites=None, excluded_reactions=None,
22 | excluded_compartments=None, display_name_format=True,
23 | overwrite_reversibility=True, **kwargs):
24 | """Create a flux map representation of the cobra.Model, including or
25 | excluding the given metabolites, reactions, and/or compartments.
26 |
27 | excluded_metabolites:
28 | A list of metabolites to not include. Probably better to simply set
29 | met.notes['map_info']['hidden'] = True
30 |
31 | excluded_reactions:
32 | A list of reactions not to display.
33 |
34 | excluded_compartment:
35 | Hide metabolites not in a compartment
36 |
37 | diplay_name_format: Bool or function
38 | How to format the metabolite names in map.display_name.
39 |
40 | Additional kwargs are passed directly to `render_model`:
41 |
42 | background_template:
43 | filename for an SVG to render behind the flux figure. Useful for
44 | compartments or layout guides.
45 |
46 | custom_css:
47 | Additional CSS to embed in the figure. Use HTML inspector to show
48 | labels and classes applied to reactions and metabolites.
49 |
50 | figure_id:
51 | Each figure in the page requires a unique ID, which can be passed or
52 | generated automatically.
53 |
54 | hide_unused:
55 | whether or not to show metabolites and reactions with zero flux.
56 |
57 | hide_unused_cofactors:
58 | similar to hide_unused, but only hide cofactor nodes for reactions with
59 | 0 flux.
60 |
61 | overwrite_reversibility:
62 | whether or not to overwrite the `reversibility` attribute in map_info.
63 | Useful in ensuring reversible, knocked-out reactions are rendered
64 | appropriately. Defaults to True.
65 |
66 | figsize:
67 | size, in pixels, of the generated SVG window. Defaults to 1024x768.
68 |
69 | fontsize:
70 | text size, in pt. Defaults to 12
71 |
72 | default_flux_width:
73 | If reaction fluxes are missing, the default thickness to use for
74 | connecting arrows.
75 |
76 | flux_dict:
77 | A dictionary-like object containing the desired fluxes for each
78 | reaction in the model
79 |
80 | metabolite_dict:
81 | A dictionary-like object containing the desired carried fluxes for each
82 | metabolite in the model
83 |
84 | flowLayout:
85 | whether or not to use the webcola's flow layout to force a heirarchical
86 | diagram
87 |
88 | """
89 |
90 | # Initialize empty map_info field in object notes
91 | for obj in itertools.chain([cobra_model], cobra_model.metabolites,
92 | cobra_model.reactions):
93 | if 'map_info' not in obj.notes:
94 | obj.notes['map_info'] = {}
95 |
96 | # build cofactor metabolites from strings
97 | cobra_metabolites = []
98 | if excluded_metabolites:
99 | compartments = set((m.compartment for m in cobra_model.metabolites))
100 | metabolite_list = [
101 | cf + '_' + co for cf, co in itertools.product(
102 | excluded_metabolites, compartments)] + excluded_metabolites
103 | for cofactor in metabolite_list:
104 | try:
105 | cobra_metabolites += [
106 | cobra_model.metabolites.get_by_id(cofactor)]
107 | except KeyError:
108 | pass
109 | # what if its already a cobra metabolite?
110 |
111 | cobra_rxns = []
112 | if excluded_reactions:
113 | for rxnid in excluded_reactions:
114 | try:
115 | cobra_rxns += [
116 | cobra_model.reactions.get_by_id(rxnid)]
117 | except KeyError:
118 | pass
119 |
120 | # Exclude metabolites and reactions in the given comparment
121 | excluded_metabolites = set(cobra_metabolites)
122 | excluded_reactions = set(cobra_rxns)
123 |
124 | if excluded_compartments:
125 | met_compartments = set((m for m in cobra_model.metabolites.query(
126 | lambda x: set(x.compartment).intersection(
127 | set(excluded_compartments)), None)))
128 | excluded_metabolites |= met_compartments
129 |
130 | # Do I want to redo this not to include excluded metabolites?
131 | # rxn_compartments = set((r for r in cobra_model.reactions.query(
132 | # lambda x: set(x.compartments).intersection(
133 | # set(excluded_compartments)), None)))
134 | # excluded_reactions |= rxn_compartments
135 |
136 | # for reaction in excluded_reactions:
137 | # reaction.notes['map_info'] = {'hidden': True}
138 |
139 | for metabolite in excluded_metabolites:
140 | metabolite.notes['map_info'] = {'hidden': True}
141 |
142 | def is_hidden(obj):
143 | try:
144 | return bool(obj.notes['map_info']['hidden'])
145 | except KeyError:
146 | return False
147 |
148 | for reaction in cobra_model.reactions:
149 |
150 | if overwrite_reversibility:
151 | reaction.notes['map_info']['reversibility'] = \
152 | bool(reaction.reversibility)
153 |
154 | # Unless 'hidden' specifically set to False, hide the reaction if all
155 | # the reactants or products are hidden (excluding cofactors)
156 | if ('hidden' not in reaction.notes['map_info']) & ~is_hidden(reaction):
157 |
158 | # Hide reactions if all of their products or reactants are hidden.
159 | # Don't include cofactor metabolites in this calculation.
160 | if 'cofactors' in reaction.notes['map_info']:
161 | cofactors = reaction.notes['map_info']['cofactors'].keys()
162 | else:
163 | cofactors = {}
164 |
165 | if (all([is_hidden(met) for met in reaction.reactants
166 | if met.id not in cofactors]) or
167 | all([is_hidden(met) for met in reaction.products
168 | if met.id not in cofactors])):
169 |
170 | reaction.notes['map_info']['hidden'] = True
171 |
172 | # Add diplay names to the cobra metabolites accoring to the
173 | # display_name_format function
174 | if display_name_format:
175 |
176 | # Handle the case for a default display name formatter. This is
177 | # optimized for models using the typical bigg_id naming convention,
178 | # ending with 'ID_c' compartment identifier.
179 | if display_name_format is True:
180 | display_name_format = (
181 | lambda met: re.sub('__[D,L]', '', met.id[:-2].upper()))
182 |
183 | for met in cobra_model.metabolites:
184 |
185 | # Don't overwrite existing display names
186 | if 'display_name' not in met.notes['map_info']:
187 | met.notes['map_info']['display_name'] = (
188 | display_name_format(met))
189 |
190 | # Append model's map_info kwargs
191 | render_kwargs = dict(cobra_model.notes['map_info'])
192 | render_kwargs.update(kwargs)
193 |
194 | return render_model(cobra_model, **render_kwargs)
195 |
196 |
197 | def create_model_json(cobra_model, flux_dict=None, metabolite_dict=None):
198 | """ Convert a cobra.Model object to a json string for d3. Adds flux
199 | information if the model has been solved
200 |
201 | flux_dict: dict-like
202 | Contains an external setting of the flux solution that should be
203 | plotted.
204 |
205 | metabolite_dict:
206 | A dictionary-like object containing the desired carried fluxes for each
207 | metabolite in the model
208 |
209 | """
210 | def get_flux(reaction):
211 | if flux_dict is not None:
212 | return flux_dict[reaction.id]
213 | else:
214 |
215 | try:
216 | return reaction.flux
217 |
218 | except OptimizationError:
219 | # The model hasn't been solved, so we just throw in a None
220 | return None
221 |
222 |
223 | # Add flux info
224 | for reaction in cobra_model.reactions:
225 |
226 | # If I'm styling reaction knockouts, don't set the flux for a
227 | # knocked out reaction
228 | if reaction.lower_bound == reaction.upper_bound == 0:
229 | reaction.notes['map_info']['group'] = 'ko'
230 |
231 | # Delete the flux key, if it exists
232 | try:
233 | del reaction.notes['map_info']['flux']
234 | except KeyError:
235 | pass
236 |
237 | else:
238 | try:
239 | if abs(get_flux(reaction)) < 1E-8:
240 | reaction.notes['map_info']['flux'] = 0.
241 | else:
242 | reaction.notes['map_info']['flux'] = get_flux(reaction)
243 | except (KeyError, TypeError):
244 | if 'flux' in reaction.notes['map_info']:
245 | del reaction.notes['map_info']['flux']
246 |
247 | # cobrapy doesn't track contexted changes to the notes field. So if
248 | # a reaction is set to the 'ko' group, reset it if it doens't match
249 | # the bounds requirements
250 | if 'group' in reaction.notes['map_info']:
251 | if reaction.notes['map_info']['group'] == 'ko':
252 | del reaction.notes['map_info']['group']
253 |
254 | def get_met_flux(metabolite):
255 | if metabolite_dict is not None:
256 | return metabolite_dict[metabolite.id]
257 | else:
258 | return sum([abs(get_flux(r) * r.metabolites[metabolite]) for r in
259 | metabolite.reactions]) / 2
260 |
261 | for metabolite in cobra_model.metabolites:
262 |
263 | try:
264 | del metabolite.notes['map_info']['flux']
265 |
266 | except KeyError:
267 | pass
268 |
269 | try:
270 | carried_flux = get_met_flux(metabolite)
271 | if carried_flux > 1E-8:
272 | metabolite.notes['map_info']['flux'] = carried_flux
273 | else:
274 | metabolite.notes['map_info']['flux'] = 0.
275 |
276 | except Exception:
277 | pass
278 |
279 | return json.dumps(model_to_dict(cobra_model), allow_nan=False)
280 |
281 |
282 | def render_model(cobra_model, background_template=None, custom_css=None,
283 | figure_id=None, hide_unused=None, hide_unused_cofactors=None,
284 | inactive_alpha=1., figsize=None, label=None, fontsize=None,
285 | default_flux_width=2.5, flux_dict=None, metabolite_dict=None,
286 | svg_scale=100, flowLayout=False):
287 | """ Render a cobra.Model object in the current window
288 |
289 | Parameters:
290 |
291 | background_template:
292 | filename for an SVG to render behind the flux figure. Useful for
293 | compartments or layout guides.
294 |
295 | custom_css:
296 | Additional CSS to embed in the figure. Use HTML inspector to show
297 | labels and classes applied to reactions and metabolites.
298 |
299 | figure_id:
300 | Each figure in the page requires a unique ID, which can be passed or
301 | generated automatically.
302 |
303 | hide_unused:
304 | whether or not to show metabolites and reactions with zero flux.
305 |
306 | hide_unused_cofactors:
307 | similar to hide_unused, but only hide cofactor nodes for reactions with
308 | 0 flux.
309 |
310 | inactive_alpha:
311 | Alpha value with which to color reactions and nodes without any carried
312 | flux. Defaults to 1.
313 |
314 | figsize:
315 | size, in pixels, of the generated SVG window. Defaults to 1024x768.
316 |
317 | fontsize:
318 | text size, in pt. Defaults to 12
319 |
320 | default_flux_width:
321 | If reaction fluxes are missing, the default thickness to use for
322 | connecting arrows.
323 |
324 | flux_dict:
325 | A dictionary-like object containing the desired fluxes for each
326 | reaction in the model
327 |
328 | metabolite_dict:
329 | A dictionary-like object containing the desired carried fluxes for each
330 | metabolite in the model
331 |
332 | """
333 |
334 | # Increment figure counter
335 |
336 | # Get figure name and JSON string for the cobra model
337 | if not figure_id:
338 | render_model._fignum += 1
339 | figure_id = 'd3flux{:0>3d}'.format(render_model._fignum)
340 |
341 | if not figsize:
342 | figsize = (1028, 768)
343 |
344 | modeljson = create_model_json(cobra_model, flux_dict, metabolite_dict)
345 |
346 | if not hide_unused:
347 | hide_unused = "false"
348 | else:
349 | hide_unused = "true"
350 |
351 | if not hide_unused_cofactors:
352 | hide_unused_cofactors = "false"
353 | else:
354 | hide_unused_cofactors = "true"
355 |
356 | # Handle custom CSS
357 | if not custom_css:
358 | custom_css = ''
359 |
360 | if not fontsize:
361 | fontsize = 12
362 |
363 | # Handle background template
364 | if not background_template:
365 | background_svg = ''
366 | no_background = "true"
367 | else:
368 | from IPython.display import SVG
369 | background_svg = SVG(background_template).data
370 | no_background = "false"
371 |
372 | # Initialize the jinja templates
373 | env = Environment(loader=FileSystemLoader(
374 | os.path.join(os.path.dirname(d3flux.__file__), 'templates')))
375 |
376 | template_css = env.get_template('network_style.css')
377 | template_html = env.get_template('output_template.html')
378 | template_js = env.get_template('d3flux.js')
379 |
380 | # Render the jinja templates with the given variables
381 | css = template_css.render(inactive_alpha=inactive_alpha,
382 | fontsize=fontsize, cf_fontsize=0.8 * fontsize)
383 |
384 | js = template_js.render(figure_id=figure_id, modeljson=modeljson,
385 | no_background=no_background,
386 | hide_unused=hide_unused,
387 | hide_unused_cofactors=hide_unused_cofactors,
388 | figwidth=figsize[0], figheight=figsize[1],
389 | css=compress(css + custom_css),
390 | default_flux_width=default_flux_width,
391 | svg_scale=svg_scale, flowLayout=flowLayout)
392 |
393 | html = template_html.render(figure_id=figure_id,
394 | background_svg=background_svg,
395 | javascript_source=js)
396 |
397 | # compile and return HTML
398 | return HTML(html)
399 |
400 |
401 | # Initialize figure counter
402 | render_model._fignum = 0
403 |
--------------------------------------------------------------------------------
/d3flux/examples/asuc/asuc_v1.json:
--------------------------------------------------------------------------------
1 | {"reactions":[{"lower_bound":-1000,"gene_reaction_rule":"Asuc_0591","name":"acetaldehyde dehydrogenase (acetylating)","id":"ACALD","upper_bound":1000,"notes":{"MetaCyc":"ACETALD-DEHYDROG-RXN","Enzymes":["1.2.1.10"],"original_bigg_id":"ACALD","map_info":{"x":382.64525895293133,"reversibility":true,"y":560.8483113179269,"cofactors":{"nadh_c":{"x":393.63231629605326,"y":535.5403540860555}}},"KEGG":"R00228"},"metabolites":{"acald_c":-1,"h_c":1,"nad_c":-1,"nadh_c":1,"accoa_c":1,"coa_c":-1}},{"lower_bound":-1000,"gene_reaction_rule":"","name":"R_acetaldehyde_reversible_transport","id":"ACALDt","upper_bound":1000,"notes":{"map_info":{"reversibility":true,"hidden":true},"original_bigg_id":"ACALDt"},"metabolites":{"acald_c":1,"acald_e":-1}},{"lower_bound":-1000,"gene_reaction_rule":"Asuc_1661","name":"acetate kinase","id":"ACKr","upper_bound":1000,"notes":{"MetaCyc":"ACETATEKIN-RXN","Enzymes":["2.7.2.1","2.7.2.15"],"original_bigg_id":"ACKr","map_info":{"x":303.0931379450599,"reversibility":true,"y":610.9159748329513,"cofactors":{"atp_c":{"x":266.7300153137178,"y":610.8281666525227}},"group":"ko"},"KEGG":"R00315"},"metabolites":{"ac_c":-1,"atp_c":-1,"actp_c":1,"adp_c":1}},{"lower_bound":-1000,"gene_reaction_rule":"","name":"R_acetate_reversible_transport_via_proton_symport","id":"ACt2r","upper_bound":1000,"notes":{"map_info":{"reversibility":true,"hidden":true},"original_bigg_id":"ACt2r"},"metabolites":{"ac_e":-1,"ac_c":1,"h_c":1,"h_e":-1}},{"lower_bound":-1000,"gene_reaction_rule":"Asuc_0403","name":"alcohol dehydrogenase (ethanol)","id":"ALCD2x","upper_bound":1000,"notes":{"MetaCyc":"ALCOHOL-DEHYDROG-RXN","Enzymes":["1.1.1.1","1.1.1.71"],"original_bigg_id":"ALCD2x","map_info":{"x":419.00015582585576,"reversibility":true,"y":624.4703227914397,"cofactors":{"nadh_c":{"x":433.1132679242588,"y":602.7038041865424}}},"KEGG":"R00754"},"metabolites":{"acald_c":1,"etoh_c":-1,"nadh_c":1,"h_c":1,"nad_c":-1}},{"lower_bound":4.701484070350633,"gene_reaction_rule":"","name":"ATP maintenance requirement","id":"ATPM","upper_bound":1000,"notes":{"Enzymes":["3.6.1.3","3.6.1.15","3.6.4.6"],"original_bigg_id":"ATPM","map_info":{"hidden":true,"reversibility":false,"cofactors":{"atp_c":{}}}},"metabolites":{"atpm":1,"atp_c":-1,"h_c":1,"pi_c":1,"h2o_c":-1,"adp_c":1}},{"lower_bound":-1000,"gene_reaction_rule":"Asuc_0326 or Asuc_0328","name":"ATP synthase (four protons for one ATP)","id":"ATPS4r","upper_bound":1000,"notes":{"Enzymes":["3.6.3.14"],"original_bigg_id":"ATPS4r","map_info":{"hidden":true,"reversibility":true,"cofactors":{"atp_c":{}}}},"metabolites":{"atp_c":1,"h_e":-4,"h_c":3,"pi_c":-1,"h2o_c":1,"adp_c":-1}},{"lower_bound":-1000,"gene_reaction_rule":"","name":"R_CO2_transporter_via_diffusion","id":"CO2t","upper_bound":1000,"notes":{"map_info":{"hidden":true,"reversibility":true,"cofactors":{"co2_c":{}}},"original_bigg_id":"CO2t"},"metabolites":{"co2_c":1,"co2_e":-1}},{"lower_bound":0,"gene_reaction_rule":"","name":"cytochrome oxidase bd (ubiquinol-8: 2 protons)","id":"CYTBD","upper_bound":1000,"notes":{"map_info":{"hidden":true,"reversibility":false,"cofactors":{"q8_c":{},"q8h2_c":{}}},"original_bigg_id":"CYTBD"},"metabolites":{"h2o_c":1,"h_e":2,"h_c":-2,"q8_c":1,"o2_c":-0.5,"q8h2_c":-1}},{"lower_bound":-1000,"gene_reaction_rule":"Asuc_2051","name":"enolase","id":"ENO","upper_bound":1000,"notes":{"MetaCyc":"2PGADEHYDRAT-RXN","Enzymes":["4.2.1.11"],"original_bigg_id":"ENO","map_info":{"x":291.7908162239458,"reversibility":true,"y":359.025665205511},"KEGG":"R00658"},"metabolites":{"h2o_c":1,"pep_c":1,"2pg_c":-1}},{"lower_bound":-1000,"gene_reaction_rule":"","name":"ETOHt2r","id":"ETOHt2r","upper_bound":1000,"notes":{"map_info":{"reversibility":true,"hidden":true},"original_bigg_id":"ETOHt2r"},"metabolites":{"etoh_c":1,"etoh_e":-1,"h_e":-1,"h_c":1}},{"lower_bound":0,"gene_reaction_rule":"","name":"Acetate exchange","id":"EX_ac_e","upper_bound":1000,"notes":{"map_info":{"reversibility":false,"hidden":true},"original_bigg_id":"EX_ac_e"},"metabolites":{"ac_e":-1}},{"lower_bound":0,"gene_reaction_rule":"","name":"Acetaldehyde exchange","id":"EX_acald_e","upper_bound":1000,"notes":{"map_info":{"reversibility":false,"hidden":true},"original_bigg_id":"EX_acald_e"},"metabolites":{"acald_e":-1}},{"lower_bound":-1000,"gene_reaction_rule":"","name":"CO2 exchange","id":"EX_co2_e","upper_bound":1000,"notes":{"map_info":{"reversibility":true,"hidden":true},"original_bigg_id":"EX_co2_e"},"metabolites":{"co2_e":-1}},{"lower_bound":0,"gene_reaction_rule":"","name":"Ethanol exchange","id":"EX_etoh_e","upper_bound":0,"notes":{"map_info":{"group":"ko","reversibility":false,"hidden":true},"original_bigg_id":"EX_etoh_e"},"metabolites":{"etoh_e":-1}},{"lower_bound":0,"gene_reaction_rule":"","name":"Formate exchange","id":"EX_for_e","upper_bound":1000,"notes":{"map_info":{"reversibility":false,"hidden":true},"original_bigg_id":"EX_for_e"},"metabolites":{"for_e":-1}},{"lower_bound":0,"gene_reaction_rule":"","name":"D-Fructose exchange","id":"EX_fru_e","upper_bound":1000,"notes":{"map_info":{"reversibility":false,"hidden":true},"original_bigg_id":"EX_fru_e"},"metabolites":{"fru_e":-1}},{"lower_bound":0,"gene_reaction_rule":"","name":"Fumarate exchange","id":"EX_fum_e","upper_bound":0,"notes":{"map_info":{"group":"ko","reversibility":false,"hidden":true},"original_bigg_id":"EX_fum_e"},"metabolites":{"fum_e":-1}},{"lower_bound":-1,"gene_reaction_rule":"","name":"D-Glucose exchange","id":"EX_glc_e","upper_bound":1000,"notes":{"map_info":{"reversibility":true,"hidden":true},"original_bigg_id":"EX_glc_e"},"metabolites":{"glc__D_e":-1}},{"lower_bound":-1000,"gene_reaction_rule":"","name":"H+ exchange","id":"EX_h_e","upper_bound":1000,"notes":{"map_info":{"reversibility":true,"hidden":true},"original_bigg_id":"EX_h_e"},"metabolites":{"h_e":-1}},{"lower_bound":-1000,"gene_reaction_rule":"","name":"H2O exchange","id":"EX_h2o_e","upper_bound":1000,"notes":{"map_info":{"reversibility":true,"hidden":true},"original_bigg_id":"EX_h2o_e"},"metabolites":{"h2o_e":-1}},{"lower_bound":0,"gene_reaction_rule":"","name":"L-Malate exchange","id":"EX_mal__L_e","upper_bound":1000,"notes":{"map_info":{"reversibility":false,"hidden":true},"original_bigg_id":"EX_mal_L_e"},"metabolites":{"mal__L_e":-1}},{"lower_bound":0,"gene_reaction_rule":"","name":"O2 exchange","id":"EX_o2_e","upper_bound":1000,"notes":{"map_info":{"reversibility":false,"hidden":true},"original_bigg_id":"EX_o2_e"},"metabolites":{"o2_e":-1}},{"lower_bound":-1000,"gene_reaction_rule":"","name":"Phosphate exchange","id":"EX_pi_e","upper_bound":1000,"notes":{"map_info":{"reversibility":true,"hidden":true},"original_bigg_id":"EX_pi_e"},"metabolites":{"pi_e":-1}},{"lower_bound":0,"gene_reaction_rule":"","name":"Pyruvate exchange","id":"EX_pyr_e","upper_bound":1000,"notes":{"map_info":{"reversibility":false,"hidden":true},"original_bigg_id":"EX_pyr_e"},"metabolites":{"pyr_e":-1}},{"lower_bound":0,"gene_reaction_rule":"","name":"Succinate exchange","id":"EX_succ_e","upper_bound":1000,"notes":{"map_info":{"reversibility":false,"hidden":true},"original_bigg_id":"EX_succ_e"},"metabolites":{"succ_e":-1}},{"lower_bound":-1000,"gene_reaction_rule":"Asuc_0536","name":"fructose-bisphosphate aldolase","id":"FBA","upper_bound":1000,"notes":{"MetaCyc":"F16ALDOLASE-RXN","Enzymes":["4.1.2.13"],"original_bigg_id":"FBA","map_info":{"x":224.1583165935302,"reversibility":true,"y":244.87862920130573},"KEGG":"R01068"},"metabolites":{"dhap_c":1,"fdp_c":-1,"g3p_c":1}},{"lower_bound":0,"gene_reaction_rule":"Asuc_0394 or Asuc_1073","name":"fructose-bisphosphatase","id":"FBP","upper_bound":1000,"notes":{"MetaCyc":"F16BDEPHOS-RXN","Enzymes":["3.1.3.11"],"original_bigg_id":"FBP","map_info":{"x":142.3640880339957,"reversibility":false,"y":205.18000736770938},"KEGG":"R00762"},"metabolites":{"h2o_c":-1,"f6p_c":1,"fdp_c":-1,"pi_c":1}},{"lower_bound":0,"gene_reaction_rule":"","name":"formate transport in via proton symport","id":"FORt2","upper_bound":1000,"notes":{"map_info":{"reversibility":false,"hidden":true},"original_bigg_id":"FORt2"},"metabolites":{"for_c":1,"for_e":-1,"h_e":-1,"h_c":1}},{"lower_bound":0,"gene_reaction_rule":"","name":"formate transport via diffusion","id":"FORti","upper_bound":1000,"notes":{"map_info":{"reversibility":false,"hidden":true},"original_bigg_id":"FORti"},"metabolites":{"for_c":-1,"for_e":1}},{"lower_bound":-1000,"gene_reaction_rule":"Asuc_1813 or Asuc_1814","name":"fumarate reductase","id":"FRD7","upper_bound":1000,"notes":{"MetaCyc":"SUCCINATE-DEHYDROGENASE-UBIQUINONE-RXN","Enzymes":["1.3.5.1","1.3.5.4"],"original_bigg_id":"FRD7","map_info":{"x":91.85808723484153,"reversibility":true,"y":617.1681673337579,"cofactors":{"q8_c":{"x":118.69275404506878,"y":624.3914968332098},"q8h2_c":{"x":119.2533052823336,"y":608.0773561013383}}},"KEGG":"R02164"},"metabolites":{"q8_c":1,"fum_c":-1,"succ_c":1,"q8h2_c":-1}},{"lower_bound":0,"gene_reaction_rule":"","name":"R_Fructose_transport_via_PEPPyr_PTS__f6p_generating","id":"FRUpts2","upper_bound":1000,"notes":{"map_info":{"reversibility":false,"hidden":true},"original_bigg_id":"FRUpts2"},"metabolites":{"pyr_c":1,"f6p_c":1,"fru_e":-1,"pep_c":-1}},{"lower_bound":-1000,"gene_reaction_rule":"Asuc_0956","name":"fumarase","id":"FUM","upper_bound":1000,"notes":{"MetaCyc":"FUMHYDR-RXN","Enzymes":["4.2.1.2"],"original_bigg_id":"FUM","map_info":{"x":128.7879223563044,"reversibility":true,"y":552.1226480673281,"group":2},"KEGG":"R01082"},"metabolites":{"h2o_c":-1,"fum_c":-1,"mal__L_c":1}},{"lower_bound":0,"gene_reaction_rule":"","name":"R_Fumarate_transport_via_proton_symport__2_H","id":"FUMt2_2","upper_bound":1000,"notes":{"map_info":{"reversibility":false,"hidden":true},"original_bigg_id":"FUMt2_2"},"metabolites":{"fum_c":1,"h_e":-2,"h_c":2,"fum_e":-1}},{"lower_bound":-1000,"gene_reaction_rule":"Asuc_1027","name":"glyceraldehyde-3-phosphate dehydrogenase","id":"GAPD","upper_bound":1000,"notes":{"MetaCyc":"GAPOXNPHOSPHN-RXN","Enzymes":["1.2.1.12","1.2.1.59"],"original_bigg_id":"GAPD","map_info":{"x":347.3582370890107,"reversibility":true,"y":211.28467493652442,"cofactors":{"nadh_c":{"x":380.0553232949826,"y":196.7216203331348}}},"KEGG":"R01061"},"metabolites":{"h_c":1,"pi_c":-1,"13dpg_c":1,"nadh_c":1,"g3p_c":-1,"nad_c":-1}},{"lower_bound":0,"gene_reaction_rule":"","name":"D-glucose transport via PEP:Pyr PTS","id":"GLCpts","upper_bound":1000,"notes":{"map_info":{"x":74.07382680101327,"reversibility":false,"y":47.09257932828508,"cofactors":{"pyr_c":{"x":58.002541538494754,"y":78.79946293784405},"pep_c":{"x":31.480504681410935,"y":60.264936292496046}}},"original_bigg_id":"GLCpts"},"metabolites":{"pyr_c":1,"glc__D_e":-1,"pep_c":-1,"g6p_c":1}},{"lower_bound":0,"gene_reaction_rule":"Asuc_0232","name":"phosphogluconate dehydrogenase","id":"GND","upper_bound":1000,"notes":{"MetaCyc":"RXN-9952","Enzymes":["1.1.1.44","1.1.1.351"],"original_bigg_id":"GND","map_info":{"x":264.4839278394269,"reversibility":false,"y":19.07008358081694,"cofactors":{"nadph_c":{"x":321.66670403486387,"y":30.554305302939596},"co2_c":{"x":316.74655609093656,"y":15.396386542933953}}},"KEGG":"R01528"},"metabolites":{"nadph_c":1,"co2_c":1,"6pgc_c":-1,"nadp_c":-1,"ru5p__D_c":1}},{"lower_bound":-1000,"gene_reaction_rule":"","name":"R_H2O_transport_via_diffusion","id":"H2Ot","upper_bound":1000,"notes":{"map_info":{"reversibility":true,"hidden":true},"original_bigg_id":"H2Ot"},"metabolites":{"h2o_c":1,"h2o_e":-1}},{"lower_bound":0,"gene_reaction_rule":"","name":"R_Malate_transport_via_proton_symport__2_H","id":"MALt2_2","upper_bound":1000,"notes":{"map_info":{"reversibility":false,"hidden":true},"original_bigg_id":"MALt2_2"},"metabolites":{"mal__L_e":-1,"h_e":-2,"mal__L_c":1,"h_c":2}},{"lower_bound":-1000,"gene_reaction_rule":"Asuc_1612","name":"malate dehydrogenase","id":"MDH","upper_bound":1000,"notes":{"MetaCyc":"MALATE-DEH-RXN","Enzymes":["1.1.1.37","1.1.1.299"],"original_bigg_id":"MDH","map_info":{"x":168.8757596691594,"reversibility":true,"y":483.36967508245345,"cofactors":{"nadh_c":{"x":137.77353012291036,"y":432.74976774451216}},"group":2},"KEGG":"R00342"},"metabolites":{"oaa_c":1,"nadh_c":1,"mal__L_c":-1,"h_c":1,"nad_c":-1}},{"lower_bound":0,"gene_reaction_rule":"Asuc_0669","name":"malic enzyme (NADP)","id":"ME2","upper_bound":1000,"notes":{"MetaCyc":"MALIC-NADP-RXN","Enzymes":["1.1.1.40"],"original_bigg_id":"ME2","map_info":{"x":205.61003807650025,"reversibility":false,"y":491.3126487628525,"cofactors":{"nadph_c":{"x":218.02399667262947,"y":536.0931373872677},"co2_c":{"x":235.94197276702695,"y":520.8345509714555}}},"KEGG":"R00216"},"metabolites":{"nadph_c":1,"co2_c":1,"pyr_c":1,"mal__L_c":-1,"nadp_c":-1}},{"lower_bound":0,"gene_reaction_rule":"","name":"NADH dehydrogenase (ubiquinone-8 & 3 protons)","id":"NADH16","upper_bound":1000,"notes":{"map_info":{"hidden":true,"reversibility":false,"cofactors":{"q8_c":{},"nadh_c":{},"q8h2_c":{}}},"original_bigg_id":"NADH16"},"metabolites":{"h_e":3,"h_c":-4,"q8_c":-1,"nadh_c":-1,"q8h2_c":1,"nad_c":1}},{"lower_bound":0,"gene_reaction_rule":"Asuc_1021 or Asuc_1022","name":"NAD transhydrogenase","id":"NADTRHD","upper_bound":1000,"notes":{"MetaCyc":"PYRNUTRANSHYDROGEN-RXN","Enzymes":["1.6.1.1","1.6.1.2","1.6.1.3"],"original_bigg_id":"NADTRHD","map_info":{"hidden":true,"reversibility":false,"cofactors":{"nadph_c":{},"nadh_c":{}}},"KEGG":"R00112"},"metabolites":{"nadph_c":-1,"nadh_c":1,"nadp_c":1,"nad_c":-1}},{"lower_bound":-1000,"gene_reaction_rule":"","name":"R_o2_transport__diffusion","id":"O2t","upper_bound":1000,"notes":{"map_info":{"reversibility":true,"hidden":true},"original_bigg_id":"O2t"},"metabolites":{"o2_e":-1,"o2_c":1}},{"lower_bound":0,"gene_reaction_rule":"Asuc_0942 or Asuc_0944 or Asuc_0943","name":"pyruvate dehydrogenase","id":"PDH","upper_bound":1000,"notes":{"MetaCyc":"PYRUVDEH-RXN","Enzymes":["1.2.4.1","1.8.1.4","2.3.1.12"],"original_bigg_id":"PDH","map_info":{"x":316.9307329456555,"reversibility":false,"y":466.0116167359042,"cofactors":{"co2_c":{"x":300.80184508575394,"y":520.1979178366431},"nadh_c":{"x":280.4304995293506,"y":502.42259256641546}}},"KEGG":"R00209"},"metabolites":{"co2_c":1,"coa_c":-1,"pyr_c":-1,"nadh_c":1,"accoa_c":1,"nad_c":-1}},{"lower_bound":0,"gene_reaction_rule":"Asuc_0687","name":"phosphofructokinase","id":"PFK","upper_bound":1000,"notes":{"MetaCyc":"6PFRUCTPHOS-RXN","Enzymes":["2.7.1.11"],"original_bigg_id":"PFK","map_info":{"x":133.80538618985943,"reversibility":false,"y":216.73428030936736,"cofactors":{"atp_c":{"x":79.98019294099704,"y":218.81350203548726}}},"KEGG":"R00756"},"metabolites":{"f6p_c":-1,"atp_c":-1,"fdp_c":1,"h_c":1,"adp_c":1}},{"lower_bound":0,"gene_reaction_rule":"Asuc_0207","name":"pyruvate formate lyase","id":"PFL","upper_bound":1000,"notes":{"MetaCyc":"PYRUVFORMLY-RXN","Enzymes":["2.3.1.54"],"original_bigg_id":"PFL","map_info":{"x":345.3829389128512,"reversibility":false,"y":467.39393224318394,"group":"ko"},"KEGG":"R00212"},"metabolites":{"pyr_c":-1,"for_c":1,"coa_c":-1,"accoa_c":1}},{"lower_bound":-1000,"gene_reaction_rule":"Asuc_1425","name":"glucose-6-phosphate isomerase","id":"PGI","upper_bound":1000,"notes":{"MetaCyc":"PGLUCISOM-RXN","Enzymes":["5.3.1.9"],"original_bigg_id":"PGI","map_info":{"x":91.98307808744356,"reversibility":true,"y":115.95617458755262},"KEGG":"R00771"},"metabolites":{"f6p_c":1,"g6p_c":-1}},{"lower_bound":-1000,"gene_reaction_rule":"Asuc_0535","name":"phosphoglycerate kinase","id":"PGK","upper_bound":1000,"notes":{"MetaCyc":"PHOSGLYPHOS-RXN","Enzymes":["2.7.2.3"],"original_bigg_id":"PGK","map_info":{"x":389.9618138227907,"reversibility":true,"y":258.5231106462878,"cofactors":{"atp_c":{"x":420.31493574154047,"y":278.9922657220668}}},"KEGG":"R01512"},"metabolites":{"atp_c":-1,"3pg_c":-1,"adp_c":1,"13dpg_c":1}},{"lower_bound":-1000,"gene_reaction_rule":"Asuc_0572 or Asuc_1383","name":"phosphoglycerate mutase","id":"PGM","upper_bound":1000,"notes":{"MetaCyc":"3PGAREARR-RXN","Enzymes":["5.4.2.11","5.4.2.12"],"original_bigg_id":"PGM","map_info":{"x":367.8069554754235,"reversibility":true,"y":341.2765723756918},"KEGG":"R01518"},"metabolites":{"3pg_c":1,"2pg_c":-1}},{"lower_bound":-1000,"gene_reaction_rule":"","name":"R_phosphate_reversible_transport_via_symport","id":"PIt2r","upper_bound":1000,"notes":{"map_info":{"reversibility":true,"hidden":true},"original_bigg_id":"PIt2r"},"metabolites":{"h_e":-1,"pi_e":-1,"pi_c":1,"h_c":1}},{"lower_bound":-1000,"gene_reaction_rule":"Asuc_0221","name":"phosphoenolpyruvate carboxykinase","id":"PPCK","upper_bound":1000,"notes":{"MetaCyc":"PEPCARBOXYKIN-RXN","Enzymes":["4.1.1.49"],"original_bigg_id":"PPCK","map_info":{"x":225.14157388231007,"reversibility":true,"y":384.6537560731797,"cofactors":{"co2_c":{"x":195.29336942169803,"y":342.9377798390681},"atp_c":{"x":172.8741869016683,"y":380.0570124689461}},"group":2},"KEGG":"R00341"},"metabolites":{"co2_c":1,"atp_c":-1,"pep_c":1,"adp_c":1,"oaa_c":-1}},{"lower_bound":-1000,"gene_reaction_rule":"Asuc_1662","name":"phosphotransacetylase","id":"PTAr","upper_bound":1000,"notes":{"MetaCyc":"PHOSACETYLTRANS-RXN","Enzymes":["2.3.1.8"],"original_bigg_id":"PTAr","map_info":{"x":337.56678237297814,"reversibility":true,"y":551.3180861798992},"KEGG":"R00230"},"metabolites":{"pi_c":-1,"actp_c":1,"coa_c":1,"accoa_c":-1}},{"lower_bound":0,"gene_reaction_rule":"Asuc_1171","name":"pyruvate kinase","id":"PYK","upper_bound":1000,"notes":{"MetaCyc":"PEPDEPHOS-RXN","Enzymes":["2.7.1.40"],"original_bigg_id":"PYK","map_info":{"x":275.7553622814589,"reversibility":false,"y":374.0973638547674,"cofactors":{"atp_c":{"x":310.9807956946766,"y":386.16479587096}}},"KEGG":"R00200"},"metabolites":{"pyr_c":1,"atp_c":1,"pep_c":-1,"adp_c":-1,"h_c":-1}},{"lower_bound":-1000,"gene_reaction_rule":"","name":"R_pyruvate_transport_in_via_proton_symport","id":"PYRt2","upper_bound":1000,"notes":{"map_info":{"reversibility":true,"hidden":true},"original_bigg_id":"PYRt2r"},"metabolites":{"pyr_c":1,"h_e":-1,"h_c":1,"pyr_e":-1}},{"lower_bound":-1000,"gene_reaction_rule":"Asuc_0218","name":"ribulose 5-phosphate 3-epimerase","id":"RPE","upper_bound":1000,"notes":{"MetaCyc":"RIBULP3EPIM-RXN","Enzymes":["5.1.3.1"],"original_bigg_id":"RPE","map_info":{"x":325.8088418501407,"reversibility":true,"y":97.32403922907261},"KEGG":"R01529"},"metabolites":{"xu5p__D_c":1,"ru5p__D_c":-1}},{"lower_bound":-1000,"gene_reaction_rule":"Asuc_1580 or Asuc_1597 or Asuc_1870","name":"ribose-5-phosphate isomerase","id":"RPI","upper_bound":1000,"notes":{"MetaCyc":"RIB5PISOM-RXN","Enzymes":["5.3.1.6"],"original_bigg_id":"RPI","map_info":{"x":283.881107839456,"reversibility":true,"y":67.29564196697308},"KEGG":"R01056"},"metabolites":{"ru5p__D_c":1,"r5p_c":-1}},{"lower_bound":0,"gene_reaction_rule":"","name":"R_succinate_transport_via_proton_symport__2_H","id":"SUCCt2_2","upper_bound":1000,"notes":{"map_info":{"reversibility":false,"hidden":true},"original_bigg_id":"SUCCt2_2"},"metabolites":{"h_e":-2,"h_c":2,"succ_e":-1,"succ_c":1}},{"lower_bound":0,"gene_reaction_rule":"","name":"succinate transport out via proton antiport","id":"SUCCt3","upper_bound":1000,"notes":{"map_info":{"reversibility":false,"hidden":true},"original_bigg_id":"SUCCt3"},"metabolites":{"h_e":-1,"h_c":1,"succ_e":1,"succ_c":-1}},{"lower_bound":-1000,"gene_reaction_rule":"Asuc_0582","name":"transaldolase","id":"TALA","upper_bound":1000,"notes":{"MetaCyc":"TRANSALDOL-RXN","Enzymes":["2.2.1.2"],"original_bigg_id":"TALA","map_info":{"x":180.55593569906966,"reversibility":true,"y":166.4198058730998},"KEGG":"R08575"},"metabolites":{"f6p_c":1,"e4p_c":1,"s7p_c":-1,"g3p_c":-1}},{"lower_bound":0,"gene_reaction_rule":"Asuc_1021 or Asuc_1022","name":"R_NAD_P__transhydrogenase","id":"THD2","upper_bound":1000,"notes":{"Enzymes":["1.6.1.2"],"original_bigg_id":"THD2","map_info":{"hidden":true,"reversibility":false,"cofactors":{"nadph_c":{},"nadh_c":{}}}},"metabolites":{"nadph_c":1,"h_e":-2,"h_c":2,"nad_c":1,"nadh_c":-1,"nadp_c":-1}},{"lower_bound":-1000,"gene_reaction_rule":"Asuc_0170 or Asuc_0171 or Asuc_0265","name":"transketolase","id":"TKT1","upper_bound":1000,"notes":{"MetaCyc":"1TRANSKETO-RXN","Enzymes":["2.2.1.1"],"original_bigg_id":"TKT1","map_info":{"x":274.51468969512905,"reversibility":true,"y":156.8092631665833},"KEGG":"R01641"},"metabolites":{"xu5p__D_c":-1,"s7p_c":1,"r5p_c":-1,"g3p_c":1}},{"lower_bound":-1000,"gene_reaction_rule":"Asuc_0170 or Asuc_0171 or Asuc_0265","name":"transketolase","id":"TKT2","upper_bound":1000,"notes":{"MetaCyc":"2TRANSKETO-RXN","Enzymes":["2.2.1.1"],"original_bigg_id":"TKT2","map_info":{"x":231.48068334636415,"reversibility":true,"y":136.77351849450065},"KEGG":"R01067"},"metabolites":{"xu5p__D_c":-1,"e4p_c":-1,"g3p_c":1,"f6p_c":1}},{"lower_bound":-1000,"gene_reaction_rule":"Asuc_0677 or Asuc_1575 or Asuc_1601","name":"triose-phosphate isomerase","id":"TPI","upper_bound":1000,"notes":{"MetaCyc":"TRIOSEPISOMERIZATION-RXN","Enzymes":["5.3.1.1"],"original_bigg_id":"TPI","map_info":{"x":297.1596302668127,"reversibility":true,"y":237.50395472210562},"KEGG":"R01015"},"metabolites":{"dhap_c":-1,"g3p_c":1}},{"lower_bound":0,"gene_reaction_rule":"Asuc_0301 or Asuc_0302 or Asuc_0303","name":"OXALODECARB-RXN","id":"OAADC","upper_bound":1000,"subsystem":"PWY-6339, METHYLGALLATE-DEGRADATION-PWY, P184-PWY","notes":{"RHEA":["15641"],"Enzymes":["1.1.1.38","4.1.1.3"],"map_info":{"x":248.3832451334038,"reversibility":false,"y":438.2336301142614,"cofactors":{"co2_c":{"x":253.12970865514836,"y":411.3388431800438}}},"orig_id":"OXALODECARB-RXN","BIOCYC":["OXALODECARB-RXN"],"CONFIDENCE LEVEL":["4"],"KEGG":["R00217"]},"metabolites":{"pyr_c":1,"co2_c":1,"h_c":-1,"oaa_c":-1}},{"lower_bound":0,"gene_reaction_rule":"Asuc_1264 or Asuc_1265 or Asuc_1704","name":"1.2.1.2-RXN","id":"FDH","upper_bound":1000,"subsystem":"PWY-1881, PWY-5497, P164-PWY, PWY-6696","notes":{"RHEA":["15985"],"Enzymes":["1.2.1.2"],"map_info":{"x":423.4407901556308,"reversibility":false,"hidden":false,"cofactors":{"nadh_c":{"x":463.5330220895758,"y":493.4239508909179}},"y":496.2018904466845},"orig_id":"_1.2.1.2-RXN","BIOCYC":["1.2.1.2-RXN"],"CONFIDENCE LEVEL":["2"],"KEGG":["R00519"]},"metabolites":{"for_c":-1,"nadh_c":1,"nad_c":-1,"co2_c":1}},{"lower_bound":0,"gene_reaction_rule":"","name":"H2RED","id":"H2RED","upper_bound":1000,"notes":{"map_info":{"hidden":true,"reversibility":false,"cofactors":{"q8_c":{},"q8h2_c":{}}}},"metabolites":{"q8_c":-1,"h2_e":-1,"h_e":2,"h_c":-2,"q8h2_c":1}},{"lower_bound":0,"gene_reaction_rule":"","name":"EX_h2_e","id":"EX_h2_e","upper_bound":1000,"notes":{"map_info":{"reversibility":false,"hidden":true}},"metabolites":{"h2_e":-1}},{"lower_bound":0,"gene_reaction_rule":"","name":"GLCabc","id":"GLCabc","upper_bound":1000,"notes":{"map_info":{"hidden":true,"reversibility":false,"cofactors":{"atp_c":{}}}},"metabolites":{"glc__D_c":1,"atp_c":-1,"h_c":1,"pi_c":1,"h2o_c":-1,"glc__D_e":-1,"adp_c":1}},{"lower_bound":0,"gene_reaction_rule":"","name":"Glucokinase","id":"GLK","upper_bound":1000,"notes":{"map_info":{"hidden":true,"reversibility":false,"cofactors":{"atp_c":{}}}},"metabolites":{"glc__D_c":-1,"atp_c":-1,"h_c":1,"adp_c":1,"g6p_c":1}},{"lower_bound":-6,"gene_reaction_rule":"","name":"EX_xyl_e","id":"EX_xyl_e","upper_bound":1000,"notes":{"map_info":{"reversibility":true,"hidden":true}},"metabolites":{"xyl__D_e":-1}},{"lower_bound":0,"gene_reaction_rule":"","name":"XYLT","id":"XYLT","upper_bound":1000,"notes":{"map_info":{"reversibility":false,"hidden":true}},"metabolites":{"xyl__D_e":-1,"h_e":-1,"h_c":1,"xyl__D_c":1}},{"lower_bound":-1000,"gene_reaction_rule":"","name":"xylose isomerase","id":"XYLI","upper_bound":1000,"notes":{"map_info":{"x":409.74618702609604,"reversibility":true,"y":101.00702504959148}},"metabolites":{"xyl__D_c":-1,"xylu__D_c":1}},{"lower_bound":-1000,"gene_reaction_rule":"","name":"xylulokinase","id":"XYLK","upper_bound":1000,"notes":{"map_info":{"x":355.274637558575,"reversibility":true,"y":134.06484742133145,"cofactors":{"atp_c":{"x":391.9735184439857,"y":141.7113484973318}}}},"metabolites":{"xu5p__D_c":1,"atp_c":-1,"h_c":1,"adp_c":1,"xylu__D_c":-1}},{"lower_bound":0,"gene_reaction_rule":"","name":"EX_arab_e","id":"EX_arab_e","upper_bound":1000,"notes":{"map_info":{"reversibility":false,"hidden":true}},"metabolites":{"arab__D_e":-1}},{"lower_bound":0,"gene_reaction_rule":"","name":"ARABT","id":"ARABT","upper_bound":1000,"notes":{"map_info":{"hidden":true,"reversibility":false,"cofactors":{"atp_c":{}}}},"metabolites":{"atp_c":-1,"arab__D_c":1,"h_c":1,"pi_c":1,"h2o_c":-1,"arab__D_e":-1,"adp_c":1}},{"lower_bound":0,"gene_reaction_rule":"","name":"AKI","id":"AKI","upper_bound":1000,"notes":{"map_info":{"x":412.8530223543729,"reversibility":false,"y":-12.086736195040189,"hidden":true}},"metabolites":{"rbl__D_c":1,"arab__D_c":-1}},{"lower_bound":-1000,"gene_reaction_rule":"","name":"arab_ptrans","id":"arab_ptrans","upper_bound":1000,"notes":{"map_info":{"x":367.9683175146411,"reversibility":true,"hidden":true,"cofactors":{"atp_c":{}},"y":11.104788301272038}},"metabolites":{"rbl__D_c":-1,"atp_c":-1,"h_c":1,"adp_c":1,"ru5p__D_c":1}},{"lower_bound":0,"gene_reaction_rule":"","name":"EX_galac_e","id":"EX_galac_e","upper_bound":1000,"notes":{"map_info":{"reversibility":false,"hidden":true}},"metabolites":{"gal_e":-1}},{"lower_bound":0,"gene_reaction_rule":"","name":"GALACT","id":"GALACT","upper_bound":1000,"notes":{"map_info":{"hidden":true,"reversibility":false,"cofactors":{"atp_c":{}}}},"metabolites":{"atp_c":-1,"gal_e":-1,"h_c":1,"pi_c":1,"h2o_c":-1,"gal_c":1,"adp_c":1}},{"lower_bound":0,"gene_reaction_rule":"","name":"GALACP","id":"GALACP","upper_bound":1000,"notes":{"map_info":{"x":4.867197102182892,"reversibility":false,"hidden":true,"cofactors":{"atp_c":{}},"y":64.34888023257503}},"metabolites":{"gal1p_c":1,"gal_c":-1,"atp_c":-1,"h_c":1,"adp_c":1}},{"lower_bound":0,"gene_reaction_rule":"","name":"GALUTRANS","id":"GALUTRANS","upper_bound":1000,"notes":{"map_info":{"x":22.99337196476698,"reversibility":false,"y":24.975832474358228,"hidden":true}},"metabolites":{"gal1p_c":-1,"udpg_c":-1,"g1p_c":1,"udpgal_c":1}},{"lower_bound":-1000,"gene_reaction_rule":"","name":"UDP_RECYC","id":"UDP_RECYC","upper_bound":1000,"notes":{"map_info":{"reversibility":true,"hidden":true}},"metabolites":{"udpg_c":-1,"udpgal_c":1}},{"lower_bound":0,"gene_reaction_rule":"","name":"G1PPI","id":"G1PPI","upper_bound":1000,"notes":{"map_info":{"x":68.14513967049888,"reversibility":false,"y":6.471010071849321,"hidden":true}},"metabolites":{"g1p_c":-1,"g6p_c":1}},{"lower_bound":0,"gene_reaction_rule":"","name":"","id":"EX_biomass","upper_bound":1000,"objective_coefficient":1,"notes":{"map_info":{"reversibility":false,"hidden":true}},"metabolites":{"biomass":-1}},{"lower_bound":0,"gene_reaction_rule":"","name":"A. succinogenes 130z biomass formation","id":"biomass","upper_bound":1000,"notes":{"map_info":{"hidden":true,"reversibility":false,"cofactors":{"nadph_c":{},"co2_c":{},"atp_c":{},"nadh_c":{}}}},"metabolites":{"atp_c":-26,"nadp_c":13.0279,"f6p_c":-0.07387568057546033,"3pg_c":-1.5587872798432814,"nadh_c":3.547,"adp_c":26,"nadph_c":-13.0279,"co2_c":13.753651140545564,"g6p_c":-0.2136038719036582,"h2o_c":-31.587866869298622,"g3p_c":-0.1344141437832776,"accoa_c":-3.9050955664416107,"coa_c":3.9050955664416107,"r5p_c":-0.9353765649166534,"pi_c":29.833095432058474,"h_c":35.4809,"pep_c":-0.5408866824643365,"nad_c":-3.547,"oaa_c":-1.8616879899037369,"pyr_c":-2.9516929186765024,"biomass":1,"e4p_c":-0.37615120857180784}},{"lower_bound":0,"gene_reaction_rule":"","name":"","id":"EX_atpm","upper_bound":1000,"notes":{"map_info":{"reversibility":false,"hidden":true}},"metabolites":{"atpm":-1}},{"lower_bound":-1000,"gene_reaction_rule":"(b2133 or b1380)","name":"D-lactate dehydrogenase","id":"LDH_D","upper_bound":1000,"notes":{"MetaCyc":"DLACTDEHYDROGNAD-RXN","Enzymes":["1.1.1.28"],"original_bigg_id":"LDH_D","map_info":{"x":394.36957371174753,"reversibility":true,"y":396.6707449188173,"cofactors":{"nadh_c":{"x":375.7087967758144,"y":430.8530168183352}}},"KEGG":"R00704"},"metabolites":{"pyr_c":1,"nadh_c":1,"lac__D_c":-1,"h_c":1,"nad_c":-1}},{"lower_bound":-1000,"gene_reaction_rule":"( b2975 or b3603 )","name":"R_D_lactate_transport_via_proton_symport","id":"D_LACt2","upper_bound":1000,"notes":{"map_info":{"reversibility":true,"hidden":true},"original_bigg_id":"D_LACt2"},"metabolites":{"lac__D_c":1,"h_e":-1,"h_c":1,"lac__D_e":-1}},{"lower_bound":0,"gene_reaction_rule":"","name":"D-lactate exchange","id":"EX_lac__D_e","upper_bound":1000,"notes":{"map_info":{"reversibility":false,"hidden":true},"original_bigg_id":"EX_lac_D_e"},"metabolites":{"lac__D_e":-1}},{"lower_bound":-1000,"gene_reaction_rule":"(Asuc_0227) and (Asuc_0228)","name":"glucose 6-phosphate dehydrogenase","id":"G6PDH2r","upper_bound":1000,"notes":{"MetaCyc":"GLU6PDEHYDROG-RXN","Enzymes":["1.1.1.49","1.1.1.363"],"original_bigg_id":"G6PDH2r","map_info":{"x":147.73235676719128,"reversibility":true,"y":24.99947127525205,"cofactors":{"nadph_c":{"x":180.3723335905413,"y":34.60991459649382}}},"KEGG":"R00835"},"metabolites":{"nadph_c":1,"6pgc_c":1,"h_c":2,"g6p_c":-1,"h2o_c":-1,"nadp_c":-1}},{"lower_bound":0,"gene_reaction_rule":"b1300","name":"aldehyde dehydrogenase (acetaldehyde, NAD)","id":"ALDD2x","upper_bound":1000,"notes":{"map_info":{"reversibility":false,"cofactors":{"nadh_c":{"x":349.85825961700823,"y":640.8539741979195}},"x":351.1322090979263,"y":609.5077876523435}},"metabolites":{"h2o_c":-1,"nad_c":-1,"acald_c":-1,"ac_c":1,"h_c":2,"nadh_c":1}}],"metabolites":[{"name":"3-Phospho-D-glyceroyl phosphate","id":"13dpg_c","compartment":"c","charge":-4,"formula":"C3H4O10P2","notes":{"SEED":["cpd00203"],"MetaCyc":"DPG","PUBCHEM ID":["3535"],"ChEBI":["16001","1658","20189","57604","11881"],"Reactome":["29800"],"UPA":["UPC00236"],"BRENDA":["BG18032","BG87317"],"map_info":{"x":373.043223866228,"display_name":"13DPG","y":237.3584107009283},"BioPath":["1,3-Diphospho-D-glycerate"],"HMDB":["HMDB01270"],"KEGG":"C00236"}},{"name":"D-Glycerate 2-phosphate","id":"2pg_c","compartment":"c","charge":-3,"formula":"C3H4O7P","notes":{"SEED":["cpd00482"],"MetaCyc":"2-PG","PUBCHEM ID":["3904"],"ChEBI":["1267","58289","17835","21028","11651","12986","24344","39868"],"Reactome":["30485"],"UPA":["UPC00631"],"BRENDA":["BG17976","BG17975"],"map_info":{"x":324.1399811479195,"display_name":"2PG","y":361.40399959209265},"BioPath":["2-Phospho-D-glycerate"],"HMDB":["HMDB03391","HMDB00362"],"KEGG":"C00631"}},{"name":"3-Phospho-D-glycerate","id":"3pg_c","compartment":"c","charge":-3,"formula":"C3H4O7P","notes":{"SEED":["cpd00169"],"MetaCyc":"G3P","PUBCHEM ID":["3497"],"ChEBI":["40016","58272","57998","11879","1657","1659","17050","21029","11882","11880","12987","17794","24345"],"Reactome":["29728"],"UPA":["UPC00597","UPC00197"],"BRENDA":["BG17981","BG17979"],"map_info":{"x":386.81349679838365,"display_name":"3PG","y":307.835730848789},"BioPath":["3-Phospho-D-glycerate"],"HMDB":["HMDB00807"],"KEGG":"C00197"}},{"name":"6-Phospho-D-gluconate","id":"6pgc_c","compartment":"c","charge":-3,"formula":"C6H10O10P","notes":{"SEED":["cpd00284"],"MetaCyc":"CPD-2961","PUBCHEM ID":["3638"],"ChEBI":["2231","12232","48928","16863","58759","40282","33851"],"Reactome":["29996"],"UPA":["UPC00345"],"BRENDA":["BG22563"],"map_info":{"x":198.1801574871815,"display_name":"6PGC","y":8.920309065114125},"BioPath":["6-Phospho-D-gluconate"],"HMDB":["HMDB01316"],"KEGG":"C00345"}},{"name":"Acetate","id":"ac_c","compartment":"c","charge":-1,"formula":"C2H3O2","notes":{"MetaCyc":"ACET","ChEBI":["62947","62964","32029","22165","3310","2387","62984","63879","32138","15366","13704","63078","30089","40480","22169","40486","59199","63045","32954"],"Reactome":["113539","2022890","29416","1524044","390305"],"CASID":["71-50-1"],"HMDB":["HMDB00042"],"SEED":["cpd00029"],"CAS":["71-50-1"],"PUBCHEM ID":["3335"],"UPA":["UPC00033"],"BRENDA":["BG15447"],"map_info":{"x":282.34262460899663,"display_name":"AC","y":648.5447410537606},"BioPath":["Acetate"],"LIPIDMAPS":["LMFA01010000","LMFA01010002"],"KEGG":"C00033"}},{"name":"Acetate","id":"ac_e","compartment":"e","charge":-1,"formula":"C2H3O2","notes":{"MetaCyc":"ACET","ChEBI":["62947","62964","32029","22165","3310","2387","62984","63879","32138","15366","13704","63078","30089","40480","22169","40486","59199","63045","32954"],"Reactome":["113539","2022890","29416","1524044","390305"],"CASID":["71-50-1"],"HMDB":["HMDB00042"],"SEED":["cpd00029"],"CAS":["71-50-1"],"PUBCHEM ID":["3335"],"UPA":["UPC00033"],"BRENDA":["BG15447"],"map_info":{"display_name":"AC","hidden":true},"BioPath":["Acetate"],"LIPIDMAPS":["LMFA01010000","LMFA01010002"],"KEGG":"C00033"}},{"name":"Acetaldehyde","id":"acald_c","compartment":"c","charge":0,"formula":"C2H4O","notes":{"MetaCyc":"ACETALD","ChEBI":["13703","2383","15343","22158","40533"],"Reactome":["113532","29510","113681","113745"],"CASID":["75-07-0"],"HMDB":["HMDB00990"],"SEED":["cpd00071"],"CAS":["75-07-0"],"PUBCHEM ID":["3384"],"UPA":["UPC00084"],"BRENDA":["BG89392","BG15435"],"map_info":{"x":396.5187869869987,"display_name":"ACALD","y":583.8260177198886},"BioPath":["Acetaldehyde"],"KEGG":"C00084"}},{"name":"Acetaldehyde","id":"acald_e","compartment":"e","charge":0,"formula":"C2H4O","notes":{"MetaCyc":"ACETALD","ChEBI":["13703","2383","15343","22158","40533"],"Reactome":["113532","29510","113681","113745"],"CASID":["75-07-0"],"HMDB":["HMDB00990"],"SEED":["cpd00071"],"CAS":["75-07-0"],"PUBCHEM ID":["3384"],"UPA":["UPC00084"],"BRENDA":["BG89392","BG15435"],"map_info":{"display_name":"ACALD","hidden":true},"BioPath":["Acetaldehyde"],"KEGG":"C00084"}},{"name":"Acetyl-CoA","id":"accoa_c","compartment":"c","charge":-4,"formula":"C23H34N7O17P3S","notes":{"MetaCyc":"ACETYL-COA","ChEBI":["13712","22192","40470","2408","57288","15351"],"Reactome":["113559","727753","113560","353123","76183"],"CASID":["72-89-9"],"HMDB":["HMDB01206"],"SEED":["cpd00022"],"CAS":["72-89-9"],"PUBCHEM ID":["3326"],"UPA":["UPC00024"],"BRENDA":["BG36329"],"map_info":{"x":356.5408460563843,"display_name":"ACCOA","y":517.5604880189204},"BioPath":["Acetyl-CoA"],"LIPIDMAPS":["LMFA07050029","LMFA07050000"],"KEGG":"C00024"}},{"name":"Acetyl phosphate","id":"actp_c","compartment":"c","charge":-2,"formula":"C2H3O5P","notes":{"MetaCyc":"ACETYL-P","ChEBI":["13711","2407","22191","46262","15350"],"CAS":["19926-71-7"],"CASID":["19926-71-7"],"HMDB":["HMDB01494"],"SEED":["cpd00196"],"PUBCHEM ID":["3527"],"UPA":["UPC00227"],"BRENDA":["BG15501"],"map_info":{"x":319.1394521829853,"display_name":"ACTP","y":582.8240702520674},"BioPath":["Acetyl_phosphate"],"KEGG":"C00227"}},{"name":"ADP","id":"adp_c","compartment":"c","charge":-3,"formula":"C10H12N5O10P2","notes":{"MetaCyc":"ADP","ChEBI":["13222","16761","2342","22244","40553","456216"],"Reactome":["190072","481002","211606","429160","29370","196180","113581","113582","114564","114565","429153"],"CASID":["58-64-0"],"HMDB":["HMDB01341"],"SEED":["cpd00008"],"CAS":["58-64-0"],"PUBCHEM ID":["3310"],"UPA":["UPC00008"],"BRENDA":["BG1228"],"map_info":{"display_name":"ADP","hidden":true},"BioPath":["Adenosine-5-prime-diphosphate"],"KEGG":"C00008"}},{"name":"ATP","id":"atp_c","compartment":"c","charge":-4,"formula":"C10H12N5O13P3","notes":{"MetaCyc":"ATP","ChEBI":["40938","15422","57299","13236","10789","30616","22249","10841","2359"],"Reactome":["190078","113592","113593","114570","29358","389573","139836","211579"],"CASID":["56-65-5"],"HMDB":["HMDB00538"],"SEED":["cpd00002"],"CAS":["56-65-5"],"PUBCHEM ID":["3304"],"UPA":["UPC00002"],"BRENDA":["BG1395"],"map_info":{"color":"#ffbb78","display_name":"ATP","hidden":true},"BioPath":["Adenosine-5-prime-triphosphate"],"KEGG":"C00002"}},{"name":"CO2","id":"co2_c","compartment":"c","charge":0,"formula":"CO2","notes":{"MetaCyc":"CARBON-DIOXIDE","ChEBI":["48829","16526","13284","13285","13282","13283","23011","3283"],"Reactome":["159751","159942","1237009","29376","113528","389536","189480"],"CASID":["124-38-9"],"HMDB":["HMDB01967"],"SEED":["cpd00011"],"CAS":["124-38-9"],"PUBCHEM ID":["3313"],"UPA":["UPC00011"],"BRENDA":["BG28651"],"map_info":{"x":457.4357200364724,"color":"#aec7e8","display_name":"CO2","y":516.2417657229903,"hidden":false},"BioPath":["Carbon_dioxide"],"KEGG":"C00011"}},{"name":"CO2","id":"co2_e","compartment":"e","charge":0,"formula":"CO2","notes":{"MetaCyc":"CARBON-DIOXIDE","ChEBI":["48829","16526","13284","13285","13282","13283","23011","3283"],"Reactome":["159751","159942","1237009","29376","113528","389536","189480"],"CASID":["124-38-9"],"HMDB":["HMDB01967"],"SEED":["cpd00011"],"CAS":["124-38-9"],"PUBCHEM ID":["3313"],"UPA":["UPC00011"],"BRENDA":["BG28651"],"map_info":{"display_name":"CO2","hidden":true},"BioPath":["Carbon_dioxide"],"KEGG":"C00011"}},{"name":"Coenzyme A","id":"coa_c","compartment":"c","charge":-4,"formula":"C21H32N7O16P3S","notes":{"MetaCyc":"CO-A","ChEBI":["57287","13295","13294","13298","41631","41597","741566","15346","23355","3771"],"Reactome":["76194","193514","29374","2485002","162743"],"CASID":["85-61-0"],"HMDB":["HMDB01423"],"SEED":["cpd00010"],"CAS":["85-61-0"],"PUBCHEM ID":["3312"],"UPA":["UPC00010"],"BRENDA":["BG11741"],"map_info":{"display_name":"COA","hidden":true},"BioPath":["CoA-SH"],"KEGG":"C00010"}},{"name":"Dihydroxyacetone phosphate","id":"dhap_c","compartment":"c","charge":-2,"formula":"C3H5O6P","notes":{"MetaCyc":"DIHYDROXY-ACETONE-PHOSPHATE","ChEBI":["14341","57642","14342","16108","5454","24355","39571"],"Reactome":["188451","75970","390404"],"CASID":["57-04-5"],"HMDB":["HMDB01473","HMDB11735"],"SEED":["cpd00095"],"CAS":["57-04-5"],"PUBCHEM ID":["3411"],"UPA":["UPC00111"],"BRENDA":["BG89172"],"map_info":{"x":288.1821461789964,"display_name":"DHAP","y":259.62935854085896},"BioPath":["2-Glycerone_phosphate"],"KEGG":"C00111"}},{"name":"D-Erythrose 4-phosphate","id":"e4p_c","compartment":"c","charge":-2,"formula":"C4H7O7P","notes":{"MetaCyc":"ERYTHROSE-4P","ChEBI":["42349","48153","4256","20927","12921","21109","27508","4114","16897"],"Reactome":["29878"],"CASID":["585-18-2"],"HMDB":["HMDB01321"],"SEED":["cpd01994","cpd00236"],"CAS":["585-18-2"],"PUBCHEM ID":["3574"],"UPA":["UPC00279"],"BRENDA":["BG59851","BG91980"],"map_info":{"x":177.79008346463644,"display_name":"E4P","y":62.84947822464068},"BioPath":["D-Erythrose_4-phosphate"],"KEGG":"C00279"}},{"name":"Ethanol","id":"etoh_c","compartment":"c","charge":0,"formula":"C2H6O","notes":{"MetaCyc":"ETOH","ChEBI":["4879","30880","16236","30878","52092","14222","52096","23978","44594","42377"],"Reactome":["30203","113748"],"CASID":["64-17-5"],"HMDB":["HMDB00108"],"SEED":["cpd00363"],"CAS":["64-17-5"],"PUBCHEM ID":["3752"],"UPA":["UPC00469"],"BRENDA":["BG15529"],"map_info":{"x":428.49577610988814,"display_name":"ETOH","y":642.6537303483125},"BioPath":["Ethanol"],"KEGG":"C00469"}},{"name":"Ethanol","id":"etoh_e","compartment":"e","charge":0,"formula":"C2H6O","notes":{"MetaCyc":"ETOH","ChEBI":["4879","30880","16236","30878","52092","14222","52096","23978","44594","42377"],"Reactome":["30203","113748"],"CASID":["64-17-5"],"HMDB":["HMDB00108"],"SEED":["cpd00363"],"CAS":["64-17-5"],"PUBCHEM ID":["3752"],"UPA":["UPC00469"],"BRENDA":["BG15529"],"map_info":{"display_name":"ETOH","hidden":true},"BioPath":["Ethanol"],"KEGG":"C00469"}},{"name":"D-Fructose 6-phosphate","id":"f6p_c","compartment":"c","charge":-2,"formula":"C6H11O9P","notes":{"MetaCyc":"FRUCTOSE-6P","ChEBI":["57634","12352","45804","61527","61553","10375","16084","42378","22768"],"CAS":["643-13-0"],"CASID":["643-13-0"],"HMDB":["HMDB03971"],"SEED":["cpd00072"],"PUBCHEM ID":["3385"],"UPA":["UPC05345","UPC00085"],"BRENDA":["BG56501","BG22637"],"map_info":{"x":101.26331523486641,"display_name":"F6P","y":177.34727315441216},"BioPath":["beta-D-Fructose_6-phosphate"],"KEGG":"C00085"}},{"name":"D-Fructose 1,6-bisphosphate","id":"fdp_c","compartment":"c","charge":-4,"formula":"C6H10O12P2","notes":{"SEED":["cpd00290"],"MetaCyc":"FRUCTOSE-16-DIPHOSPHATE","PUBCHEM ID":["3647"],"map_info":{"x":180.377220566232,"display_name":"FDP","y":240.75502501147935},"ChEBI":["32968","49299","42553","32966","37736","28013","32967","41014","22767","10374","40595","40591"],"CAS":["488-69-7"],"UPA":["UPC00354"],"BRENDA":["BG22767"],"KEGG":"C00354","BioPath":["beta-D-Fructose_1,6-bisphosphate"],"CASID":["488-69-7"]}},{"name":"Formate","id":"for_c","compartment":"c","charge":-1,"formula":"CH1O2","notes":{"MetaCyc":"FORMATE","ChEBI":["42460","14276","63050","5145","24082","24081","30751","63880","15740","52343"],"Reactome":["389585","29460"],"CASID":["64-18-6"],"HMDB":["HMDB00142"],"SEED":["cpd00047"],"CAS":["64-18-6"],"PUBCHEM ID":["3358"],"UPA":["UPC00058"],"BRENDA":["BG28488"],"map_info":{"x":397.42101960996047,"display_name":"FOR","y":484.62092175127543},"BioPath":["Formate"],"LIPIDMAPS":["LMFA01010040"],"KEGG":"C00058"}},{"name":"Formate","id":"for_e","compartment":"e","charge":-1,"formula":"CH1O2","notes":{"MetaCyc":"FORMATE","ChEBI":["42460","14276","63050","5145","24082","24081","30751","63880","15740","52343"],"Reactome":["389585","29460"],"CASID":["64-18-6"],"HMDB":["HMDB00142"],"SEED":["cpd00047"],"CAS":["64-18-6"],"PUBCHEM ID":["3358"],"UPA":["UPC00058"],"BRENDA":["BG28488"],"map_info":{"display_name":"FOR","hidden":true},"BioPath":["Formate"],"LIPIDMAPS":["LMFA01010040"],"KEGG":"C00058"}},{"name":"D-Fructose","id":"fru_e","compartment":"e","charge":0,"formula":"C6H12O6","notes":{"MetaCyc":"CPD-10723","ChEBI":["5172","10373","37721","37720","28757","48673","24104","49089","22766","42560","24110","28645"],"CAS":["57-48-7"],"CASID":["57-48-7"],"HMDB":["HMDB00660"],"SEED":["cpd00082"],"PUBCHEM ID":["3395"],"UPA":["UPC00095"],"BRENDA":["BG22357","BG22370"],"map_info":{"display_name":"FRU","hidden":true},"BioPath":["beta-D-Fructofuranose"],"KEGG":"C00095"}},{"name":"Fumarate","id":"fum_c","compartment":"c","charge":-2,"formula":"C4H2O4","notes":{"MetaCyc":"FUM","ChEBI":["42743","18012","5190","22958","24122","24124","22956","22957","37154","37155","42511","29806","36180","14284"],"Reactome":["29586","113588"],"CASID":["110-17-8"],"HMDB":["HMDB00134"],"SEED":["cpd00106"],"CAS":["110-17-8"],"PUBCHEM ID":["3422"],"UPA":["UPC00122"],"BRENDA":["BG19266"],"map_info":{"x":110.73854035372122,"display_name":"FUM","y":585.6323318434088},"BioPath":["Fumarate"],"KEGG":"C00122"}},{"name":"Fumarate","id":"fum_e","compartment":"e","charge":-2,"formula":"C4H2O4","notes":{"MetaCyc":"FUM","ChEBI":["42743","18012","5190","22958","24122","24124","22956","22957","37154","37155","42511","29806","36180","14284"],"Reactome":["29586","113588"],"CASID":["110-17-8"],"HMDB":["HMDB00134"],"SEED":["cpd00106"],"CAS":["110-17-8"],"PUBCHEM ID":["3422"],"UPA":["UPC00122"],"BRENDA":["BG19266"],"map_info":{"display_name":"FUM","hidden":true},"BioPath":["Fumarate"],"KEGG":"C00122"}},{"name":"Glyceraldehyde 3-phosphate","id":"g3p_c","compartment":"c","charge":-2,"formula":"C3H5O6P","notes":{"SEED":["cpd00102"],"MetaCyc":"GAP","PUBCHEM ID":["3930"],"ChEBI":["17138","14333","5446","58027"],"CAS":["142-10-9"],"UPA":["UPC00661","UPC00118"],"BRENDA":["BG17970"],"map_info":{"x":306.2673827992605,"display_name":"G3P","y":207.3921752993234},"CASID":["142-10-9"],"HMDB":["HMDB01112"],"KEGG":"C00118"}},{"name":"D-Glucose 6-phosphate","id":"g6p_c","compartment":"c","charge":-2,"formula":"C6H11O9P","notes":{"MetaCyc":"GLC-6-P","ChEBI":["10399","22797","41041","17719","4170","61548","58247","12375"],"Reactome":["1629756"],"HMDB":["HMDB03498","HMDB06793","HMDB01401","HMDB01549"],"SEED":["cpd00079"],"CAS":["56-73-5"],"PUBCHEM ID":["3392"],"UPA":["UPC00092"],"BRENDA":["BG22626","BG22646"],"map_info":{"x":112.52666232322949,"display_name":"G6P","y":60.75748557678827},"CASID":["56-73-5"],"KEGG":"C00092"}},{"name":"D-Glucose","id":"glc__D_e","compartment":"e","charge":0,"formula":"C6H12O6","notes":{"MetaCyc":"ALPHA-GLUCOSE","PUBCHEM ID":["3333"],"CAS":["50-99-7"],"CASID":["50-99-7"],"map_info":{"x":34.37107051776515,"display_name":"GLC","y":32.477984768907746},"KEGG":"C00031"}},{"name":"H2O","id":"h2o_c","compartment":"c","charge":0,"formula":"H2O","notes":{"MetaCyc":"WATER","ChEBI":["15377","13365","41979","16234","36385","42857","27313","44819","29373","10743","5594","29356","53442","29375","29374","13419","43228","44292","13352","41981","29412","42043","33811","33813","35511","5585","44641","44701"],"Reactome":["947593","189422","141343","113518","1605715","109276","113521","113519","2022884","351603","29356"],"CASID":["7732-18-5"],"HMDB":["HMDB01039","HMDB02111"],"SEED":["cpd15275","cpd00001"],"CAS":["7732-18-5"],"PUBCHEM ID":["3303"],"UPA":["UPC00001","UPC01328"],"BRENDA":["BG92137","BG89181","BG92081","BG92002"],"map_info":{"display_name":"H2O","hidden":true},"BioPath":["OH-","Water","Oxygen_atom"],"KEGG":"C00001"}},{"name":"H2O","id":"h2o_e","compartment":"e","charge":0,"formula":"H2O","notes":{"MetaCyc":"WATER","ChEBI":["15377","13365","41979","16234","36385","42857","27313","44819","29373","10743","5594","29356","53442","29375","29374","13419","43228","44292","13352","41981","29412","42043","33811","33813","35511","5585","44641","44701"],"Reactome":["947593","189422","141343","113518","1605715","109276","113521","113519","2022884","351603","29356"],"CASID":["7732-18-5"],"HMDB":["HMDB01039","HMDB02111"],"SEED":["cpd15275","cpd00001"],"CAS":["7732-18-5"],"PUBCHEM ID":["3303"],"UPA":["UPC00001","UPC01328"],"BRENDA":["BG92137","BG89181","BG92081","BG92002"],"map_info":{"display_name":"H2O","hidden":true},"BioPath":["OH-","Water","Oxygen_atom"],"KEGG":"C00001"}},{"name":"H+","id":"h_c","compartment":"c","charge":1,"formula":"H","notes":{"MetaCyc":"PROTON","ChEBI":["24636","15378","10744","13357","5584"],"Reactome":["194688","425978","193465","374900","74722","425999","428040","163953","372511","2000349","70106","1470067","113529","425969","428548","156540","1614597","351626","427899"],"CASID":["12408-02-5"],"SEED":["cpd00067"],"CAS":["12408-02-5"],"PUBCHEM ID":["3380"],"UPA":["UPC00080"],"BRENDA":["BG79440"],"map_info":{"display_name":"H","hidden":true},"BioPath":["Proton"],"KEGG":"C00080"}},{"name":"H+","id":"h_e","compartment":"e","charge":1,"formula":"H","notes":{"MetaCyc":"PROTON","ChEBI":["24636","15378","10744","13357","5584"],"Reactome":["194688","425978","193465","374900","74722","425999","428040","163953","372511","2000349","70106","1470067","113529","425969","428548","156540","1614597","351626","427899"],"CASID":["12408-02-5"],"SEED":["cpd00067"],"CAS":["12408-02-5"],"PUBCHEM ID":["3380"],"UPA":["UPC00080"],"BRENDA":["BG79440"],"map_info":{"display_name":"H","hidden":true},"BioPath":["Proton"],"KEGG":"C00080"}},{"name":"L-Malate","id":"mal__L_c","compartment":"c","charge":-2,"formula":"C4H4O5","notes":{"MetaCyc":"MAL","PUBCHEM ID":["3449"],"CAS":["97-67-6"],"CASID":["97-67-6"],"map_info":{"x":147.25266608917624,"display_name":"MAL","y":521.7750406278898},"KEGG":"C00149"}},{"name":"L-Malate","id":"mal__L_e","compartment":"e","charge":-2,"formula":"C4H4O5","notes":{"MetaCyc":"MAL","PUBCHEM ID":["3449"],"CAS":["97-67-6"],"CASID":["97-67-6"],"map_info":{"display_name":"MAL","hidden":true},"KEGG":"C00149"}},{"name":"Nicotinamide adenine dinucleotide","id":"nad_c","compartment":"c","charge":-1,"formula":"C21H26N7O14P2","notes":{"MetaCyc":"NAD","ChEBI":["21901","7422","44214","15846","13394","13393","44215","13389","57540","44281"],"Reactome":["192307","29360","427523","194653","113526"],"CASID":["53-84-9"],"HMDB":["HMDB00902"],"SEED":["cpd00003"],"CAS":["53-84-9"],"PUBCHEM ID":["3305"],"UPA":["UPC00003"],"BRENDA":["BG11259"],"map_info":{"display_name":"NAD","hidden":true},"BioPath":["NAD"],"KEGG":"C00003"}},{"name":"Nicotinamide adenine dinucleotide - reduced","id":"nadh_c","compartment":"c","charge":-2,"formula":"C21H27N7O14P2","notes":{"MetaCyc":"NADH","ChEBI":["13395","21902","16908","7423","44216","57945","13396"],"Reactome":["192305","73473","194697","29362"],"CASID":["58-68-4"],"HMDB":["HMDB01487"],"SEED":["cpd00004"],"CAS":["58-68-4"],"PUBCHEM ID":["3306"],"UPA":["UPC00004"],"BRENDA":["BG11384"],"map_info":{"color":"#b5cf6b","display_name":"NADH","hidden":true},"BioPath":["NADH"],"KEGG":"C00004"}},{"name":"Nicotinamide adenine dinucleotide phosphate","id":"nadp_c","compartment":"c","charge":-3,"formula":"C21H25N7O17P3","notes":{"MetaCyc":"NADP","ChEBI":["7424","13398","13397","13390","25524","25523","44405","44409","18009","58349","21903"],"Reactome":["29366","2000348","113563","113564","389556","428218","351628","194668","517495"],"CASID":["53-59-8"],"HMDB":["HMDB00217"],"SEED":["cpd00006"],"CAS":["53-59-8"],"PUBCHEM ID":["3308"],"UPA":["UPC00006"],"BRENDA":["BG48210"],"map_info":{"display_name":"NADP","hidden":true},"BioPath":["NADP"],"KEGG":"C00006"}},{"name":"Nicotinamide adenine dinucleotide phosphate - reduced","id":"nadph_c","compartment":"c","charge":-4,"formula":"C21H26N7O17P3","notes":{"MetaCyc":"NADPH","ChEBI":["13400","16474","7425","13399","13392","57783","21904","44286"],"Reactome":["2000347","29364","428206","113602","113600","113601","194725","517496","351627"],"CASID":["2646-71-1"],"HMDB":["HMDB00799","HMDB06341","HMDB00221"],"SEED":["cpd00005"],"CAS":["2646-71-1"],"PUBCHEM ID":["3307"],"UPA":["UPC00005"],"BRENDA":["BG48213"],"map_info":{"color":"#8ca252","display_name":"NADPH","hidden":true},"BioPath":["NADPH"],"KEGG":"C00005"}},{"name":"O2","id":"o2_c","compartment":"c","charge":0,"formula":"O2","notes":{"MetaCyc":"OXYGEN-MOLECULE","ChEBI":["44742","27140","15379","25366","26689","30491","13416","29793","23833","7860","10745"],"Reactome":["113534","29368","113535","1236709","113533","189461","113685","352327","351593"],"CASID":["7782-44-7"],"HMDB":["HMDB01377"],"SEED":["cpd00532"],"CAS":["7782-44-7"],"PUBCHEM ID":["3309"],"UPA":["UPC00007"],"BRENDA":["BG36249"],"map_info":{"display_name":"O2","hidden":true},"BioPath":["Oxygen"],"KEGG":"C00007"}},{"name":"O2","id":"o2_e","compartment":"e","charge":0,"formula":"O2","notes":{"MetaCyc":"OXYGEN-MOLECULE","ChEBI":["44742","27140","15379","25366","26689","30491","13416","29793","23833","7860","10745"],"Reactome":["113534","29368","113535","1236709","113533","189461","113685","352327","351593"],"CASID":["7782-44-7"],"HMDB":["HMDB01377"],"SEED":["cpd00532"],"CAS":["7782-44-7"],"PUBCHEM ID":["3309"],"UPA":["UPC00007"],"BRENDA":["BG36249"],"map_info":{"display_name":"O2","hidden":true},"BioPath":["Oxygen"],"KEGG":"C00007"}},{"name":"Oxaloacetate","id":"oaa_c","compartment":"c","charge":-2,"formula":"C4H2O5","notes":{"MetaCyc":"OXALACETIC_ACID","ChEBI":["23911","23910","12810","10547","16452","17479","30744","7812","19638","25734","25731","12820","1158","14703","28394","24958","24959"],"Reactome":["76213","113587"],"CASID":["328-42-7"],"HMDB":["HMDB00223"],"SEED":["cpd00032"],"CAS":["328-42-7"],"PUBCHEM ID":["3338"],"UPA":["UPC00036"],"BRENDA":["BG19269","BG19271"],"map_info":{"x":194.71811459453318,"display_name":"OAA","y":440.88467502945394},"BioPath":["Oxaloacetate"],"LIPIDMAPS":["LMFA01170061","LMFA01170120"],"KEGG":"C00036"}},{"name":"Phosphoenolpyruvate","id":"pep_c","compartment":"c","charge":-3,"formula":"C3H2O6P","notes":{"MetaCyc":"PHOSPHO-ENOL-PYRUVATE","ChEBI":["44897","44894","14812","8147","26055","26054","58702","18021"],"Reactome":["29492","372364"],"CASID":["138-08-9"],"HMDB":["HMDB00263"],"SEED":["cpd00061"],"CAS":["138-08-9"],"PUBCHEM ID":["3374"],"UPA":["UPC00074"],"BRENDA":["BG17779"],"map_info":{"x":251.87819507727542,"display_name":"PEP","y":338.4645607084292},"BioPath":["Phosphoenolpyruvate"],"KEGG":"PHOSPHO-ENOL-PYRUVATE"}},{"name":"Phosphate","id":"pi_c","compartment":"c","charge":-2,"formula":"HO4P","notes":{"MetaCyc":"Pi","ChEBI":["37583","7793","37585","34683","14791","34855","29137","29139","63036","26020","39739","32597","32596","43474","63051","43470","9679","35433","4496","45024","18367","26078","39745","24838"],"Reactome":["947590","109277","113548","2255331","29372","113550","113551"],"CASID":["14265-44-2"],"HMDB":["HMDB02142"],"SEED":["cpd09464","cpd09463","cpd00009"],"CAS":["14265-44-2"],"PUBCHEM ID":["3311"],"UPA":["UPC00009"],"BRENDA":["BG92038"],"map_info":{"display_name":"PI","hidden":true},"BioPath":["Phosphate","Phosphate_(protonated)"],"KEGG":"C00009"}},{"name":"Phosphate","id":"pi_e","compartment":"e","charge":-2,"formula":"HO4P","notes":{"MetaCyc":"Pi","ChEBI":["37583","7793","37585","34683","14791","34855","29137","29139","63036","26020","39739","32597","32596","43474","63051","43470","9679","35433","4496","45024","18367","26078","39745","24838"],"Reactome":["947590","109277","113548","2255331","29372","113550","113551"],"CASID":["14265-44-2"],"HMDB":["HMDB02142"],"SEED":["cpd09464","cpd09463","cpd00009"],"CAS":["14265-44-2"],"PUBCHEM ID":["3311"],"UPA":["UPC00009"],"BRENDA":["BG92038"],"map_info":{"display_name":"PI","hidden":true},"BioPath":["Phosphate","Phosphate_(protonated)"],"KEGG":"C00009"}},{"name":"Pyruvate","id":"pyr_c","compartment":"c","charge":-1,"formula":"C3H3O3","notes":{"MetaCyc":"PYRUVATE","ChEBI":["15361","14987","8685","32816","45253","26466","26462"],"Reactome":["113557","389680","29398"],"CASID":["127-17-3"],"HMDB":["HMDB00243"],"SEED":["cpd00020"],"CAS":["127-17-3"],"PUBCHEM ID":["3324"],"UPA":["UPC00022"],"BRENDA":["BG17694"],"map_info":{"x":312.26594527039765,"display_name":"PYR","y":436.20477823325166},"BioPath":["Pyruvate"],"LIPIDMAPS":["LMFA01060077"],"KEGG":"C00022"}},{"name":"Pyruvate","id":"pyr_e","compartment":"e","charge":-1,"formula":"C3H3O3","notes":{"MetaCyc":"PYRUVATE","ChEBI":["15361","14987","8685","32816","45253","26466","26462"],"Reactome":["113557","389680","29398"],"CASID":["127-17-3"],"HMDB":["HMDB00243"],"SEED":["cpd00020"],"CAS":["127-17-3"],"PUBCHEM ID":["3324"],"UPA":["UPC00022"],"BRENDA":["BG17694"],"map_info":{"display_name":"PYR","hidden":true},"BioPath":["Pyruvate"],"LIPIDMAPS":["LMFA01060077"],"KEGG":"C00022"}},{"name":"Ubiquinone-8","id":"q8_c","compartment":"c","charge":0,"formula":"C49H74O4","notes":{"SEED":["cpd15560"],"MetaCyc":"UBIQUINONE-8","PUBCHEM ID":["3689"],"ChEBI":["61683"],"CAS":["1339-63-5"],"BRENDA":["BG18990"],"map_info":{"color":"#b5cf6b","display_name":"Q8","hidden":true},"CASID":["1339-63-5"],"LIPIDMAPS":["LMPR02010005"],"KEGG":"C00399"}},{"name":"Ubiquinol-8","id":"q8h2_c","compartment":"c","charge":0,"formula":"C49H76O4","notes":{"SEED":["cpd15561"],"MetaCyc":"CPD-9956","PUBCHEM ID":["3680"],"ChEBI":["61682"],"BRENDA":["BG79801"],"map_info":{"color":"#b5cf6b","display_name":"Q8H2","hidden":true},"KEGG":"C00390"}},{"name":"Alpha-D-Ribose 5-phosphate","id":"r5p_c","compartment":"c","charge":-2,"formula":"C5H9O8P","notes":{"MetaCyc":"RIBOSE-5P","ChEBI":["12331","52742","10270","22413","18189"],"CAS":["4300-28-1"],"CASID":["4300-28-1"],"HMDB":["HMDB00618","HMDB01548","HMDB02033","HMDB02694"],"SEED":["cpd00101"],"PUBCHEM ID":["3417"],"UPA":["UPC00117"],"BRENDA":["BG81798","BG34575"],"map_info":{"x":252.27219055767722,"display_name":"R5P","y":84.61556835464663},"BioPath":["alpha-D-Ribose_5-phosphate"],"KEGG":"C00117"}},{"name":"D-Ribulose 5-phosphate","id":"ru5p__D_c","compartment":"c","charge":-2,"formula":"C5H9O8P","notes":{"MetaCyc":"RIBULOSE-5P","PUBCHEM ID":["3499"],"CAS":["4151-19-3"],"CASID":["4151-19-3"],"map_info":{"x":306.9904123614967,"display_name":"RU5P","y":53.89042223441865},"KEGG":"C00199"}},{"name":"Sedoheptulose 7-phosphate","id":"s7p_c","compartment":"c","charge":-2,"formula":"C7H13O10P","notes":{"SEED":["cpd00238"],"Reactome":["29882"],"MetaCyc":"D-SEDOHEPTULOSE-7-P","PUBCHEM ID":["3576"],"ChEBI":["26621","57483","9083","15721","4244","15074","15073"],"BioPath":["D-Sedoheptulose_7-phosphate"],"UPA":["UPC05382"],"CASID":["583-08-4"],"map_info":{"x":197.90319841866625,"display_name":"S7P","y":216.66892207293898},"BRENDA":["BG24563"],"KEGG":"C05382"}},{"name":"Succinate","id":"succ_c","compartment":"c","charge":-2,"formula":"C4H4O4","notes":{"MetaCyc":"SUC","ChEBI":["22941","22943","26807","26803","30031","9304","15125","45639","15741","30779"],"Reactome":["113536","433123","29434","389583","1650769","159939"],"CASID":["110-15-6"],"HMDB":["HMDB00254"],"SEED":["cpd00036"],"CAS":["110-15-6"],"PUBCHEM ID":["3344"],"UPA":["UPC00042"],"BRENDA":["BG19270"],"map_info":{"x":76.0034965285222,"display_name":"SUCC","y":646.9972070225022},"BioPath":["Succinate"],"LIPIDMAPS":["LMFA01170043"],"KEGG":"C00042"}},{"name":"Succinate","id":"succ_e","compartment":"e","charge":-2,"formula":"C4H4O4","notes":{"MetaCyc":"SUC","ChEBI":["22941","22943","26807","26803","30031","9304","15125","45639","15741","30779"],"Reactome":["113536","433123","29434","389583","1650769","159939"],"CASID":["110-15-6"],"HMDB":["HMDB00254"],"SEED":["cpd00036"],"CAS":["110-15-6"],"PUBCHEM ID":["3344"],"UPA":["UPC00042"],"BRENDA":["BG19270"],"map_info":{"display_name":"SUCC","hidden":true},"BioPath":["Succinate"],"LIPIDMAPS":["LMFA01170043"],"KEGG":"C00042"}},{"name":"D-Xylulose 5-phosphate","id":"xu5p__D_c","compartment":"c","charge":-2,"formula":"C5H9O8P","notes":{"MetaCyc":"XYLULOSE-5-PHOSPHATE","PUBCHEM ID":["3530"],"map_info":{"x":328.8045419120096,"display_name":"XU5P","y":149.42807376203066},"KEGG":"C00231"}},{"name":"H2","id":"h2_e","compartment":"e","charge":0,"formula":"H2","notes":{"map_info":{"display_name":"H2","hidden":true}}},{"name":"D-Glucose","id":"glc__D_c","compartment":"c","charge":0,"formula":"C6H12O6","notes":{"map_info":{"display_name":"GLC","hidden":true}}},{"name":"D-Xylose","id":"xyl__D_e","compartment":"e","charge":0,"formula":"C5H10O5","notes":{"map_info":{"display_name":"XYL","hidden":true}}},{"name":"D-Xylose","id":"xyl__D_c","compartment":"c","charge":0,"formula":"C5H10O5","notes":{"map_info":{"x":430.8162518021068,"display_name":"XYL","y":86.69573824181867}}},{"name":"D-Xylulose","id":"xylu__D_c","compartment":"c","charge":0,"formula":"C5H10O5","notes":{"map_info":{"x":385.69889867167296,"display_name":"XU","y":115.60941469730261}}},{"name":"D Arabinose C5H10O5","id":"arab__D_e","compartment":"e","charge":0,"formula":"C5H10O5","notes":{"map_info":{"display_name":"ARAB","hidden":true}}},{"name":"D Arabinose C5H10O5","id":"arab__D_c","compartment":"c","charge":0,"formula":"C5H10O5","notes":{"map_info":{"x":431.41646996280593,"display_name":"ARAB","y":-23.905634013546177,"hidden":true}}},{"name":"D-Ribulose","id":"rbl__D_c","compartment":"c","charge":0,"formula":"C5H10O5","notes":{"map_info":{"x":387.07235689544444,"display_name":"RIB","y":-1.7130130677534225,"hidden":true}}},{"name":"D-Galactose","id":"gal_e","compartment":"e","charge":0,"formula":"C6H12O6","notes":{"map_info":{"display_name":"GAL","hidden":true}}},{"name":"D-Galactose","id":"gal_c","compartment":"c","charge":0,"formula":"C6H12O6","notes":{"map_info":{"x":5.135350485571223,"display_name":"GAL","y":79.88406774077112,"hidden":true}}},{"name":"Alpha-D-Galactose 1-phosphate","id":"gal1p_c","compartment":"c","charge":-2,"formula":"C6H11O9P","notes":{"map_info":{"x":10.916224067944043,"display_name":"GAL1P","y":41.453644652449725,"hidden":true}}},{"name":"UDPglucose","id":"udpg_c","compartment":"c","charge":-2,"formula":"C15H22N2O17P2","notes":{"map_info":{"display_name":"UDP_GLUCOSE","hidden":true}}},{"name":"UDPgalactose","id":"udpgal_c","compartment":"c","charge":-2,"formula":"C15H22N2O17P2","notes":{"map_info":{"display_name":"UDP_GALACTOSE","hidden":true}}},{"name":"D-Glucose 1-phosphate","id":"g1p_c","compartment":"c","charge":-2,"formula":"C6H11O9P","notes":{"map_info":{"x":44.48121996313575,"display_name":"G1P","y":11.753846178531717,"hidden":true}}},{"name":"","id":"biomass","compartment":"e","formula":"C24.967H49.934O12.4835","notes":{"map_info":{"display_name":"BIOMA","hidden":true}}},{"name":"atp maintenance","id":"atpm","compartment":"","formula":"","notes":{"map_info":{"display_name":"AT","hidden":true}}},{"name":"D-Lactate","id":"lac__D_c","compartment":"c","charge":-1,"formula":"C3H5O3","notes":{"MetaCyc":"D-LACTATE","PUBCHEM ID":["3555"],"CAS":["10326-41-7"],"CASID":["10326-41-7"],"map_info":{"x":424.23354197668004,"display_name":"LAC","y":381.0789779306125},"KEGG":"C00256"}},{"name":"D-Lactate","id":"lac__D_e","compartment":"e","charge":-1,"formula":"C3H5O3","notes":{"MetaCyc":"D-LACTATE","PUBCHEM ID":["3555"],"CAS":["10326-41-7"],"CASID":["10326-41-7"],"map_info":{"display_name":"LAC","hidden":true},"KEGG":"C00256"}}],"genes":[{"name":"Asuc_0591","id":"Asuc_0591","notes":{"map_info":{}}},{"name":"Asuc_1661","id":"Asuc_1661","notes":{"map_info":{}}},{"name":"Asuc_0185","id":"Asuc_0185","notes":{"map_info":{}}},{"name":"fabG","id":"Asuc_1819","notes":{"map_info":{}}},{"name":"Asuc_0403","id":"Asuc_0403","notes":{"map_info":{}}},{"name":"Asuc_0326","id":"Asuc_0326","notes":{"map_info":{}}},{"name":"Asuc_0328","id":"Asuc_0328","notes":{"map_info":{}}},{"name":"fabG","id":"Asuc_2051","notes":{"map_info":{}}},{"name":"Asuc_0536","id":"Asuc_0536","notes":{"map_info":{}}},{"name":"fabG","id":"Asuc_0394","notes":{"map_info":{}}},{"name":"Asuc_1073","id":"Asuc_1073","notes":{"map_info":{}}},{"name":"Asuc_1813","id":"Asuc_1813","notes":{"map_info":{}}},{"name":"Asuc_1814","id":"Asuc_1814","notes":{"map_info":{}}},{"name":"fabG","id":"Asuc_0956","notes":{"map_info":{}}},{"name":"Asuc_0227","id":"Asuc_0227","notes":{"map_info":{}}},{"name":"Asuc_1027","id":"Asuc_1027","notes":{"map_info":{}}},{"name":"Asuc_0232","id":"Asuc_0232","notes":{"map_info":{}}},{"name":"Asuc_1612","id":"Asuc_1612","notes":{"map_info":{}}},{"name":"Asuc_0669","id":"Asuc_0669","notes":{"map_info":{}}},{"name":"fabG","id":"Asuc_1021","notes":{"map_info":{}}},{"name":"fabG","id":"Asuc_1022","notes":{"map_info":{}}},{"name":"fabG","id":"Asuc_0942","notes":{"map_info":{}}},{"name":"Asuc_0944","id":"Asuc_0944","notes":{"map_info":{}}},{"name":"fabG","id":"Asuc_0943","notes":{"map_info":{}}},{"name":"Asuc_0687","id":"Asuc_0687","notes":{"map_info":{}}},{"name":"Asuc_0207","id":"Asuc_0207","notes":{"map_info":{}}},{"name":"fabG","id":"Asuc_1425","notes":{"map_info":{}}},{"name":"fabG","id":"Asuc_0535","notes":{"map_info":{}}},{"name":"Asuc_0228","id":"Asuc_0228","notes":{"map_info":{}}},{"name":"fabG","id":"Asuc_0572","notes":{"map_info":{}}},{"name":"Asuc_1383","id":"Asuc_1383","notes":{"map_info":{}}},{"name":"Asuc_0221","id":"Asuc_0221","notes":{"map_info":{}}},{"name":"Asuc_1662","id":"Asuc_1662","notes":{"map_info":{}}},{"name":"Asuc_1171","id":"Asuc_1171","notes":{"map_info":{}}},{"name":"Asuc_0218","id":"Asuc_0218","notes":{"map_info":{}}},{"name":"Asuc_1580","id":"Asuc_1580","notes":{"map_info":{}}},{"name":"Asuc_1597","id":"Asuc_1597","notes":{"map_info":{}}},{"name":"Asuc_1870","id":"Asuc_1870","notes":{"map_info":{}}},{"name":"Asuc_0582","id":"Asuc_0582","notes":{"map_info":{}}},{"name":"Asuc_0170","id":"Asuc_0170","notes":{"map_info":{}}},{"name":"Asuc_0171","id":"Asuc_0171","notes":{"map_info":{}}},{"name":"Asuc_0265","id":"Asuc_0265","notes":{"map_info":{}}},{"name":"fabG","id":"Asuc_0677","notes":{"map_info":{}}},{"name":"Asuc_1575","id":"Asuc_1575","notes":{"map_info":{}}},{"name":"Asuc_1601","id":"Asuc_1601","notes":{"map_info":{}}},{"name":"Asuc_0301","id":"Asuc_0301","notes":{"map_info":{}}},{"name":"Asuc_0302","id":"Asuc_0302","notes":{"map_info":{}}},{"name":"Asuc_0303","id":"Asuc_0303","notes":{"map_info":{}}},{"name":"Asuc_1264","id":"Asuc_1264","notes":{"map_info":{}}},{"name":"Asuc_1265","id":"Asuc_1265","notes":{"map_info":{}}},{"name":"Asuc_1704","id":"Asuc_1704","notes":{"map_info":{}}},{"name":"ldhA","id":"b1380","notes":{"map_info":{}}},{"name":"dld","id":"b2133","notes":{"map_info":{}}},{"name":"lldP","id":"b3603","notes":{"map_info":{}}},{"name":"glcA","id":"b2975","notes":{"map_info":{}}},{"name":"b1300","id":"b1300"}],"id":"asuc_v1","name":"A. Succinogenes CCM Model","compartments":{},"notes":{"map_info":{}},"version":1}
--------------------------------------------------------------------------------
/d3flux/examples/asuc/full-map-render.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------