diff --git a/.gitignore b/.gitignore index b39dd5438..f7c6cc11a 100644 --- a/.gitignore +++ b/.gitignore @@ -87,6 +87,7 @@ ipython_config.py # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 # User-specific stuff +.idea/**/*.iml .idea/**/workspace.xml .idea/**/tasks.xml .idea/**/usage.statistics.xml @@ -113,14 +114,15 @@ ipython_config.py # When using Gradle or Maven with auto-import, you should exclude module files, # since they will be recreated, and may cause churn. Uncomment if using # auto-import. -# .idea/artifacts -# .idea/compiler.xml -# .idea/jarRepositories.xml -# .idea/modules.xml -# .idea/*.iml -# .idea/modules -# *.iml -# *.ipr + .idea/artifacts + .idea/compiler.xml + .idea/jarRepositories.xml + .idea/modules.xml + .idea/*.iml + .idea/*.xml + .idea/modules + *.iml + *.ipr # CMake cmake-build-*/ diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 000000000..74459b697 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,13 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 000000000..105ce2da2 --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 000000000..5d64c867e --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 000000000..c8e807676 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 000000000..94a25f7f4 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/documentation_builder/metadata.ipynb b/documentation_builder/metadata.ipynb new file mode 100644 index 000000000..2889f41c4 --- /dev/null +++ b/documentation_builder/metadata.ipynb @@ -0,0 +1,548 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.0" + }, + "colab": { + "name": "metadata.ipynb", + "provenance": [] + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "bVgYSbcPLbwU", + "colab_type": "text" + }, + "source": [ + "# Metadata\n", + "\n", + "Metadata in the form of annotations, provenance or additional key:value pairs is an important asset for a model.\n", + "Such data can be handled via the `annotation` field on cobra objects" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Rv-QKmAPM8PY", + "colab_type": "text", + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "# History\n", + "\n", + "History attribute, present in the `annotation` attribute of a COBRA component, stores the history of the component like creators, created date and modified date of that component." + ] + }, + { + "cell_type": "code", + "metadata": { + "pycharm": { + "name": "#%%\n" + }, + "id": "EsBAtYeHLbwc", + "colab_type": "code", + "colab": {} + }, + "source": [ + "from cobra.core import Metabolite\n", + "from cobra.core.metadata import History, Creator, HistoryDatetime\n", + "\n", + "metabolite = Metabolite(id=\"glc\", name=\"D-glucose\")\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "The dates have to be objects of `HistoryDateTime` class and creators that of `Creator` class. We can add then directly via constructor." + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "history = History(\n", + " creators=[\n", + " Creator(\n", + " first_name=\"Matthias\",\n", + " last_name=\"Koenig\",\n", + " organization_name=\"HU\",\n", + " email=\"test@test.com\",\n", + " ),\n", + " ],\n", + " created_date=HistoryDatetime(\"2020-06-26T02:34:30+05:30\"),\n", + " modified_dates=[\n", + " HistoryDatetime(\"2020-06-26T12:34:11+00:00\"),\n", + " HistoryDatetime(\"2020-06-26T00:34:11+05:30\"),\n", + " ],\n", + " )\n", + "\n", + "metabolite.annotation.history = history" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "Or we can also add them by making object separtely and then adding in the history object." + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "new_creator = Creator(\n", + " first_name=\"Andreas\",\n", + " last_name=\"Draeger\",\n", + " organization_name=\"University of Tübingen\",\n", + " email=\"test2@test2.com\",\n", + " )\n", + "\n", + "metabolite.annotation.history.creators.append(new_creator)\n", + "modified_hdtime = HistoryDatetime()\n", + "modified_hdtime.utcnow()\n", + "metabolite.annotation.history.modified_dates.append(modified_hdtime)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "# CVTerms\n", + "\n", + "CVTerms stands for Controlled Vocabulary Terms, are is used to store the external resources which are linked with the given COBRA component. We can make CVTerm's object either by passing the data directly from the constructor. We can also define the nested data for linked resources." + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "annotation_dict = {\n", + " \"bqb_hasTaxon\": [{\"resources\": [\"http://identifiers.org/taxonomy/511145\"]}],\n", + " \"bqm_is\": [\n", + " {\n", + " \"nested_data\": {\n", + " \"bqb_isDescribedBy\": [\n", + " {\"resources\": [\"https://identifiers.org/pubmed/1111111\"]},\n", + " {\"resources\": [\"https://identifiers.org/eco/ECO:0000004\"]},\n", + " ]\n", + " },\n", + " \"resources\": [\"http://identifiers.org/bigg.model/e_coli_core\"],\n", + " }\n", + " ],\n", + "}\n", + "\n", + "cvterms = CVTerms(annotation_dict)\n", + "metabolite.annotation.cvterms = cvterms\n", + "\n" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "Or we can also add data by making separate `CVTerm` objects and then adding them at a particular index (indexing is done for a single qualifier for adding alternative annotation)." + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "cvterm1 = CVTerm(Qualifier.bqb_isDescribedBy, \"http://identifiers.org/doi/10.1128/ecosalplus.10.2.1\")\n", + "cvterm2 = CVTerm(Qualifier.bqb_isDescribedBy, \"http://identifiers.org/ncbigi/gi:16128336\")\n", + "\n", + "metabolite.annotation.cvterms.add_cvterm(cvterm1, 0)\n", + "metabolite.annotation.cvterms.add_cvterm(cvterm1, 1)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "# KeyValuePairs\n", + "\n", + "The KeyValuePair class is used for storing any type of key-value pair data, which is not suitable to store anywhere else in the model" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + " entry1 = {\n", + " \"id\": \"id1\",\n", + " \"name\": \"abc_xyz\",\n", + " \"key\": \"key1\",\n", + " \"value\": \"45\",\n", + " \"uri\": \"https://tinyurl.com/ybyr7b62\",\n", + " }\n", + " entry2 = KeyValueEntry.from_data({\n", + " \"id\": \"id2\",\n", + " \"name\": \"abc_xyz2\",\n", + " \"key\": \"key2\",\n", + " \"value\": \"48\",\n", + " \"uri\": \"https://tinyurl2.com/ybyr7b62\",\n", + " })\n", + "\n", + " kvp = KeyValuePairs(entries=[entry1, entry2])\n", + " metabolite.annotation.keyvaluepairs = kvp" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "# Notes\n", + "The `notes` field under a COBRA component is used to store the notes data. Though it is not a right place to store key-value pairs, but earlier implementation has left many models where notes field have key-value pairs inside it. The current implementation contains a notes string as well as a notes dictionary, both synchronized with each other. One can only update values inside the notes dictioanry, adding new key-value pairs is restricted. Updating the dictionary will update the notes string also (only the key-value pair part). String manipulation, if required, will have to be done manually." + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "notes_str = (\n", + " '\\\n", + "\\n\\\n", + " \\n\\\n", + "
\\n\\\n", + "

Key1 : Value 1

\\n\\\n", + "

Key2 : Value2

\\n\\\n", + "
\\n\\\n", + "

A Heading

\\n\\\n", + "
e_coli_core - Escherichia coli '\n", + " \"str. K-12 substr. MG1655
\\n\\\n", + "
\\n\\\n", + "

Key3 : Value 3

\\n\\\n", + "
\\n\\\n", + " \\n\\\n", + "
\"\n", + ")\n", + "\n", + "metabolite.notes = Notes(notes_str)\n", + "metabolite.notes[\"Key1\"] = \"New Value1\"" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "metadata": { + "id": "11wwIBGHWM66", + "colab_type": "text" + }, + "source": [ + "notes_str = (\n", + " '\\\n", + "\\n\\\n", + " \\n\\\n", + "
\\n\\\n", + "

Key1 : Value 1

\\n\\\n", + "

Key2 : Value2

\\n\\\n", + "
\\n\\\n", + "

A Heading

\\n\\\n", + "
e_coli_core - Escherichia coli '\n", + " \"str. K-12 substr. MG1655
\\n\\\n", + "
\\n\\\n", + "

Key3 : Value 3

\\n\\\n", + "
\\n\\\n", + " \\n\\\n", + "
\"\n", + ")\n", + "\n", + "metabolite.notes = Notes(notes_str)\n", + "metabolite.notes[\"Key1\"] = \"New Value1\"" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Tmo3MUtpWn8K", + "colab_type": "code", + "colab": {} + }, + "source": [ + "history = History(\n", + " creators=[\n", + " Creator(\n", + " first_name=\"Matthias\",\n", + " last_name=\"Koenig\",\n", + " organization_name=\"HU\",\n", + " email=\"test@test.com\",\n", + " ),\n", + " ],\n", + " created_date=HistoryDatetime(\"2020-06-26T02:34:30+05:30\"),\n", + " modified_dates=[\n", + " HistoryDatetime(\"2020-06-26T12:34:11+00:00\"),\n", + " HistoryDatetime(\"2020-06-26T00:34:11+05:30\"),\n", + " ],\n", + " )\n", + "\n", + "metabolite.annotation.history = history" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6EtjXs5FWsB2", + "colab_type": "text" + }, + "source": [ + "Or we can also add them by making object separtely and then adding in the history object." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "9tiNKucaW1nT", + "colab_type": "code", + "colab": {} + }, + "source": [ + "new_creator = Creator(\n", + " first_name=\"Andreas\",\n", + " last_name=\"Draeger\",\n", + " organization_name=\"University of Tübingen\",\n", + " email=\"test2@test2.com\",\n", + " )\n", + "\n", + "metabolite.annotation.history.creators.append(new_creator)\n", + "modified_hdtime = HistoryDatetime()\n", + "modified_hdtime.utcnow()\n", + "metabolite.annotation.history.modified_dates.append(modified_hdtime)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "wXst9A76PuoJ", + "colab_type": "text" + }, + "source": [ + "# CVTerms\n", + "\n", + "CVTerms stands for Controlled Vocabulary Terms, are is used to store the external resources which are linked with the given COBRA component. We can make CVTerm's object either by passing the data directly from the constructor. We can also define the nested data for linked resources." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "whC9AASSQKnn", + "colab_type": "code", + "colab": {} + }, + "source": [ + "annotation_dict = {\n", + " \"bqb_hasTaxon\": [{\"resources\": [\"http://identifiers.org/taxonomy/511145\"]}],\n", + " \"bqm_is\": [\n", + " {\n", + " \"nested_data\": {\n", + " \"bqb_isDescribedBy\": [\n", + " {\"resources\": [\"https://identifiers.org/pubmed/1111111\"]},\n", + " {\"resources\": [\"https://identifiers.org/eco/ECO:0000004\"]},\n", + " ]\n", + " },\n", + " \"resources\": [\"http://identifiers.org/bigg.model/e_coli_core\"],\n", + " }\n", + " ],\n", + "}\n", + "\n", + "cvterms = CVTerms(annotation_dict)\n", + "metabolite.annotation.cvterms = cvterms\n", + "\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-BP4wL2JXUlK", + "colab_type": "text" + }, + "source": [ + "Or we can also add data by making separate `CVTerm` objects and then adding them at a particular index (indexing is done for a single qualifier for adding alternative annotation)." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "DEyuH1cqXoar", + "colab_type": "code", + "colab": {} + }, + "source": [ + "cvterm1 = CVTerm(Qualifier.bqb_isDescribedBy, \"http://identifiers.org/doi/10.1128/ecosalplus.10.2.1\")\n", + "cvterm2 = CVTerm(Qualifier.bqb_isDescribedBy, \"http://identifiers.org/ncbigi/gi:16128336\")\n", + "\n", + "metabolite.annotation.cvterms.add_cvterm(cvterm1, 0)\n", + "metabolite.annotation.cvterms.add_cvterm(cvterm1, 1)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "olUCYEdwSw6k", + "colab_type": "text" + }, + "source": [ + "# KeyValuePairs\n", + "\n", + "The KeyValuePair class is used for storing any type of key-value pair data, which is not suitable to store anywhere else in the model" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "ENKACjXES9k1", + "colab_type": "code", + "colab": {} + }, + "source": [ + " entry1 = {\n", + " \"id\": \"id1\",\n", + " \"name\": \"abc_xyz\",\n", + " \"key\": \"key1\",\n", + " \"value\": \"45\",\n", + " \"uri\": \"https://tinyurl.com/ybyr7b62\",\n", + " }\n", + " entry2 = KeyValueEntry.from_data({\n", + " \"id\": \"id2\",\n", + " \"name\": \"abc_xyz2\",\n", + " \"key\": \"key2\",\n", + " \"value\": \"48\",\n", + " \"uri\": \"https://tinyurl2.com/ybyr7b62\",\n", + " })\n", + "\n", + " kvp = KeyValuePairs(entries=[entry1, entry2])\n", + " metabolite.annotation.keyvaluepairs = kvp" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Rl3UV44OTe4Q", + "colab_type": "text" + }, + "source": [ + "# Notes\n", + "The `notes` field under a COBRA component is used to store the notes data. Though it is not a right place to store key-value pairs, but earlier implementation has left many models where notes field have key-value pairs inside it. The current implementation contains a notes string as well as a notes dictionary, both synchronized with each other. One can only update values inside the notes dictioanry, adding new key-value pairs is restricted. Updating the dictionary will update the notes string also (only the key-value pair part). String manipulation, if required, will have to be done manually." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "psrA4ROmU4X6", + "colab_type": "code", + "colab": {} + }, + "source": [ + "notes_str = (\n", + " '\\\n", + "\\n\\\n", + " \\n\\\n", + "
\\n\\\n", + "

Key1 : Value 1

\\n\\\n", + "

Key2 : Value2

\\n\\\n", + "
\\n\\\n", + "

A Heading

\\n\\\n", + "
e_coli_core - Escherichia coli '\n", + " \"str. K-12 substr. MG1655
\\n\\\n", + "
\\n\\\n", + "

Key3 : Value 3

\\n\\\n", + "
\\n\\\n", + " \\n\\\n", + "
\"\n", + ")\n", + "\n", + "metabolite.notes = Notes(notes_str)\n", + "metabolite.notes[\"Key1\"] = \"New Value1\"" + ], + "execution_count": null, + "outputs": [] + } + ] +} \ No newline at end of file diff --git a/setup.cfg b/setup.cfg index 1ce24597b..4f7a61e3e 100644 --- a/setup.cfg +++ b/setup.cfg @@ -6,7 +6,7 @@ parse = (?P\d+) \.(?P\d+) \.(?P\d+) (?P[a]*)(?P\d*) -serialize = +serialize = {major}.{minor}.{patch}{release}{num} {major}.{minor}.{patch} tag_name = {new_version} @@ -15,7 +15,7 @@ tag_name = {new_version} name = cobra url = https://opencobra.github.io/cobrapy download_url = https://pypi.org/project/cobra -project_urls = +project_urls = Source Code = https://github.com/opencobra/cobrapy Documentation = https://cobrapy.readthedocs.io Bug Tracker = https://github.com/opencobra/cobrapy/issues @@ -23,7 +23,7 @@ author = The cobrapy core development team. author_email = cobra-pie@googlegroups.com maintainer = Moritz E. Beber maintainer_email = moritz.beber@gmail.com -classifiers = +classifiers = Development Status :: 5 - Production/Stable Intended Audience :: Science/Research License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+) @@ -39,7 +39,7 @@ license = LGPL-2.0-or-later OR GPL-2.0-or-later description = COBRApy is a package for constraint-based modeling of metabolic networks. long_description = file: README.rst, INSTALL.rst long_description_content_type = text/x-rst -keywords = +keywords = metabolism biology constraint-based @@ -51,7 +51,7 @@ keywords = [options] zip_safe = True -install_requires = +install_requires = depinfo future importlib_resources @@ -62,24 +62,25 @@ install_requires = ruamel.yaml ~= 0.16 six swiglpk -tests_require = + jsonschema +tests_require = tox packages = find: -package_dir = +package_dir = = src [options.packages.find] where = src [options.package_data] -cobra = +cobra = io/*.json test/data/* [options.extras_require] -array = +array = scipy -development = +development = black bumpversion isort @@ -91,7 +92,7 @@ universal = 1 [bumpversion:part:release] optional_value = placeholder first_value = placeholder -values = +values = placeholder a diff --git a/src/cobra/core/__init__.py b/src/cobra/core/__init__.py index ef0d59bbd..a4bea3fbc 100644 --- a/src/cobra/core/__init__.py +++ b/src/cobra/core/__init__.py @@ -1,10 +1,12 @@ from cobra.core.configuration import Configuration from cobra.core.dictlist import DictList from cobra.core.gene import Gene +from cobra.core.group import Group from cobra.core.metabolite import Metabolite +from cobra.core.metadata import * from cobra.core.model import Model from cobra.core.object import Object from cobra.core.reaction import Reaction -from cobra.core.group import Group -from cobra.core.solution import Solution, LegacySolution, get_solution +from cobra.core.solution import LegacySolution, Solution, get_solution from cobra.core.species import Species +from cobra.core.udconstraints import ConstraintComponent, UserDefinedConstraint diff --git a/src/cobra/core/formula.py b/src/cobra/core/formula.py index dc37d5ad2..fe440f903 100644 --- a/src/cobra/core/formula.py +++ b/src/cobra/core/formula.py @@ -16,7 +16,6 @@ class Formula(Object): """Describes a Chemical Formula - Parameters --------- formula : string @@ -32,12 +31,10 @@ def __init__(self, formula=None): def __add__(self, other_formula): """Combine two molecular formulas. - Parameters ---------- other_formula : Formula, str string for a chemical formula - Returns ------- Formula @@ -84,7 +81,6 @@ def parse_composition(self): @property def weight(self): """Calculate the mol mass of the compound - Returns ------- float diff --git a/src/cobra/core/metabolite.py b/src/cobra/core/metabolite.py index ef918b210..a46ced81e 100644 --- a/src/cobra/core/metabolite.py +++ b/src/cobra/core/metabolite.py @@ -246,10 +246,7 @@ def summary(self, solution=None, fva=None): from cobra.summary import MetaboliteSummary return MetaboliteSummary( - metabolite=self, - model=self._model, - solution=solution, - fva=fva, + metabolite=self, model=self._model, solution=solution, fva=fva, ) def _repr_html_(self): diff --git a/src/cobra/core/metadata/__init__.py b/src/cobra/core/metadata/__init__.py new file mode 100644 index 000000000..27fdea1e4 --- /dev/null +++ b/src/cobra/core/metadata/__init__.py @@ -0,0 +1,11 @@ +from cobra.core.metadata.cvterm import ( + CVList, + CVTerm, + CVTerms, + ExternalResources, + Qualifier, +) +from cobra.core.metadata.history import Creator, History, HistoryDatetime +from cobra.core.metadata.keyvaluepairs import KeyValuePairs +from cobra.core.metadata.metadata import MetaData +from cobra.core.metadata.notes import Notes diff --git a/src/cobra/core/metadata/cvterm.py b/src/cobra/core/metadata/cvterm.py new file mode 100644 index 000000000..d62cadd89 --- /dev/null +++ b/src/cobra/core/metadata/cvterm.py @@ -0,0 +1,572 @@ +""" Define the Controlled Vocabulary term class.""" + +import collections +import re +from collections import defaultdict, OrderedDict +from enum import Enum +from typing import Dict, Iterator, List, Tuple, Union +from warnings import warn + + +class Qualifier(Enum): + """The possible qualifiers inside a CVTerm""" + + bqb_is = 0 + bqb_hasPart = 1 + bqb_isPartOf = 2 + bqb_isVersionOf = 3 + bqb_hasVersion = 4 + bqb_isHomologTo = 5 + bqb_isDescribedBy = 6 + bqb_isEncodedBy = 7 + bqb_encodes = 8 + bqb_occursIn = 9 + bqb_hasProperty = 10 + bqb_isPropertyOf = 11 + bqb_hasTaxon = 12 + bqb_unknown = 13 + bqm_is = 14 + bqm_isDescribedBy = 15 + bqm_isDerivedFrom = 16 + bqm_isInstanceOf = 17 + bqm_hasInstance = 18 + bqm_unknown = 19 + + +# the URL pattern to parse provider and identifier +URL_IDENTIFIERS_PATTERN = re.compile(r"^https?://identifiers.org/(.+?)[:/](.+)") + + +class CVTerm: + """Representation of a single CVTerm. + + Parameters + ---------- + qualifier : Qualifier + the qualifier relation of resource to the component + resource : string + a uri identifying external resource + """ + + def __init__(self, qualifier: Qualifier = Qualifier.bqb_is, resource: str = None): + self.uri = resource + if isinstance(qualifier, Qualifier): + self.qualifier = qualifier + elif isinstance(qualifier, str): + if qualifier not in Qualifier.__members__: + raise TypeError(f"{qualifier} is not a supported enum Qualifier") + else: + self.qualifier = Qualifier[qualifier] + else: + raise TypeError(f"{qualifier} is not a supported enum Qualifier") + + def parse_provider_identifier(self) -> Tuple: + """Parses provider and identifier term from given resource uri. + + Returns + ------- + (provider, identifier) if resolvable, None otherwise + """ + if self.uri is None: + raise ValueError(f"'uri' set for this cvterm is None: {self}") + else: + match = URL_IDENTIFIERS_PATTERN.match(self.uri) + if match: + provider, identifier = match.group(1), match.group(2) + if provider.isupper(): + identifier = f"{provider}:{identifier}" + provider = provider.lower() + else: + warn( + f"{self.uri} does not conform to " + f"'http(s)://identifiers.org/collection/id' or " + f"'http(s)://identifiers.org/COLLECTION:id, so " + f"is not added to annotation dictionary." + ) + return None + + return provider, identifier + + +class CVTerms(collections.MutableMapping): + """ + Representation of all CVTerms of an object in their + dependency structure. It is like a dictionary where + qualifier will be keys and CVList will be corresponding values. + + Parameters + ---------- + data : dict + a dictionary mapping qualifier to its CVList/List + + This is how a CVTerms looks : + { + "bqb_is": [ + { + "resources": [ + "resource_uri", + ... + ], + "nested_data": CVTerms Object + }, + ... + ], + ... + } + + 1. The only way to add annotation data via old format is by + using the method "add_simple_annotations()". + 2. Single CVTerm data can be added by using "add_cvterm()". + 3. Multiple CVTerm data can be added by using "add_cvterms()". + """ + + def __init__(self, data: Dict = None): + + # storing data in old annotation format + self._annotations = defaultdict(list) + + # storing data in new annotation format + # as described above + self._cvterms = defaultdict(CVList) + + if data is None: + return + elif isinstance(data, dict): + for key, value in data.items(): + self.__setitem__(key, value) + else: + raise TypeError(f"Invalid format for CVTerms: '{data}'") + + @staticmethod + def from_data(data: Union[Dict, "CVTerms"]) -> "CVTerms": + """Parses a CVTerms object from given data""" + if data is None or isinstance(data, dict): + return CVTerms(data) + elif isinstance(data, CVTerms): + return data + else: + raise TypeError(f"Invalid format for CVTerms: '{data}'") + + def to_dict(self) -> dict: + """Represent a CVTerm object in python dict""" + cv_dict = OrderedDict() + for key, value in self._cvterms.items(): + cvlist = [] + for ex_res in value: + cvlist.append(ex_res.to_dict()) + cv_dict[key] = cvlist + return cv_dict + + def add_cvterm(self, cvterm: CVTerm, index: int = 0) -> None: + """ + Adds a single CVTerm to CVTerms at given index position + corresponding to the passed qualifier. + + Parameters + ---------- + cvterm : CVTerm + the cvterm to be added + index : int + the index where this cvterm should be added inside + the CVList of corresponding qualifier + """ + if isinstance(cvterm, CVTerm): + qual = str(cvterm.qualifier) + qual = qual[10:] if qual.startswith("Qualifier.") else qual + data = cvterm.parse_provider_identifier() + if data is not None: + provider, identifier = data + self._annotations[provider].append(identifier) + else: + raise TypeError(f"The CVTerm passed must be a CVTerm object: {cvterm}") + + if index < len(self[qual]): + self[qual][index].resources.append(cvterm.uri) + elif index == len(self[qual]): + self[qual].append({"resources": [cvterm.uri]}) + else: + raise UnboundLocalError(f"The index is out of bound: {index}") + + def add_cvterms(self, cvterms: Union[Dict, "CVTerms"] = None) -> None: + """ + Adds multiple CVTerm to CVTerms. + + Parameters + ---------- + cvterms : CVTerms or dict (to be added in CVTerms dict) + the cvterms to be added + """ + if cvterms is None: + return + + if isinstance(cvterms, dict) or isinstance(cvterms, CVTerms): + parsed_cvterms = CVTerms.from_data(cvterms) + for key, value in parsed_cvterms.items(): + + offset = len(self[key]) + for index in range(len(value)): + external_res = value[index] + res_list = external_res.resources + for uri in res_list: + cvterm = CVTerm(Qualifier[key], uri) + self.add_cvterm(cvterm, index + offset) + if ( + external_res.nested_data is not None + and len(external_res.nested_data) != 0 + ): + self[key][index + offset].nested_data = external_res.nested_data + else: + raise TypeError(f"The value passed must be of type CVTerms: {cvterms}") + + def add_simple_annotations(self, data: Union[Dict, List] = None) -> None: + """ + Adds cvterms via old annotation format. If no qualifier + is linked to the identifier, default qualifier i.e "bqb_is" + will be used. + + Parameters + ---------- + data : dict + the data in old annotation format + """ + if data is None: + data = {} + + # if annotation is in the form of list of list, modify the format + # https://github.com/opencobra/cobrapy/issues/736 + if isinstance(data, list): + dict_anno = defaultdict(list) + for item in data: + cvt = CVTerm(resource=item[1]) + data = cvt.parse_provider_identifier() + if data is None: + continue + else: + provider, identifier = data + + dict_anno[provider].append(identifier) + data = dict_anno + + if not isinstance(data, dict): + raise TypeError(f"The data passed must be of type dict: {data}") + + for key, value in data.items(): + + # addition of "sbo" term + if key == "sbo": + if isinstance(value, str): + self._annotations[key] = list([value]) + elif isinstance(value, list): + self._annotations[key] = list(value) + else: + raise TypeError( + f"'sbo' terms must be wrapped inside a list: {value}" + ) + continue + + # if single identifiers are put directly as string, + # put them inside a list. For eg: + # { "chebi": "CHEBI:17234"} -> { "chebi": ["CHEBI:17234"]} + if isinstance(value, str) and key != "sbo": + data[key] = [value] + value = [value] + if not isinstance(value, list): + raise TypeError(f"The value passed must be of type list: {value}") + if not isinstance(key, str): + raise TypeError(f"The key passed must be of type string: {key}") + + # adding data one by one + for identifier in value: + cvterm = CVTerm() + + # if no qualifier is linked to identifier i.e annotation + # of the form { "chebi": ["CHEBI:17234"]} + if isinstance(identifier, str): + cvterm.uri = "https://identifiers.org/" + key + "/" + identifier + cvterm.qualifier = Qualifier["bqb_is"] + # if some qualifier is linked to the identifier i.e annotation + # of the form { "chebi": ["bqb_is", "CHEBI:17234"]} + elif isinstance(identifier, list): + cvterm.uri = "https://identifiers.org/" + key + "/" + identifier[1] + cvterm.qualifier = Qualifier[identifier[0]] + else: + raise TypeError( + f"The identifier passed must be of type string: {identifier}" + ) + self.add_cvterm(cvterm, 0) + + @property + def annotations(self) -> Dict: + """Annotation in old format""" + return self._annotations + + def __getitem__(self, key: str) -> "CVList": + """Get CVList corresponding to a qualifier""" + if key not in Qualifier.__members__: + raise TypeError(f"'{key}' is not an valid Qualifier.") + return self._cvterms[key] + + def __setitem__(self, key: str, value: Union[List, "CVList"]) -> None: + """Adds data to the CVTerm dict. 'key' has to be a Qualifier + name string like "bqb_is" or "bqm_is" and value has to be a + List/CVList object corresponding to that qualifier. + """ + # setting the cvterm + if key not in Qualifier.__members__: + raise TypeError(f"{key} is not an enum Qualifier") + if isinstance(value, list): + self._cvterms[key] = CVList(value) + elif isinstance(value, CVList): + self._cvterms[key] = value + else: + raise TypeError(f"The value passed must be of type list or CVList: {value}") + + # update the old annotation data + for ex_res in self._cvterms[key]: + for uri in ex_res.resources: + cvterm = CVTerm(Qualifier[key], uri) + data = cvterm.parse_provider_identifier() + if data is not None: + provider, identifier = data + self._annotations[provider].append(identifier) + + def __eq__(self, other: "CVTerms") -> bool: + """Compare two CVTerms objects to find out whether they + are same (have same data) or not + """ + if len(self._cvterms) != len(other): + return False + for key, value in other.items(): + if key not in self._cvterms: + return False + if not value == self._cvterms[key]: + return False + return True + + def __delitem__(self, key: str) -> None: + del self._cvterms[key] + + def __iter__(self) -> Iterator: + return iter(self._cvterms) + + def __len__(self) -> int: + return len(self._cvterms) + + def __str__(self) -> str: + return str(dict(self._cvterms)) + + def __repr__(self) -> str: + return self.__str__() + + +class CVList(collections.MutableSequence): + """ + Class representation of all sets of resources and their nested + annotation corresponding to a given qualifier. It have similar + structure like that of a list but has only restricted type of + entries (of type ExternalResources) within it. This list will + have more than one entry inside it only in the case of alternative + set of resources linked to a given qualifier. + + CVList : [ + { + "resources" : [], + "nested_data" : CVTerm + }, + { + "resources" : [], + "nested_data" : CVTerm + }, + ... + ] + + Parameters + ---------- + cvlist : list + a list containing entries confirming to ExternalResources structure + + """ + + def __init__(self, data: List = None): + + self._sequence = list() + if data is None: + data = [] + elif not isinstance(data, list): + raise TypeError(f"The data passed must be inside a list: '{data}'") + for item in data: + self.append(item) + + def insert(self, index: int, value: Union[Dict, "ExternalResources"]) -> None: + """Insert a ExternalResource object at given index.""" + + if isinstance(value, ExternalResources): + self._sequence.insert(index, value) + elif isinstance(value, dict): + self._sequence.insert(index, ExternalResources(value)) + else: + raise TypeError( + f"The passed object for setting external " + f"resources has invalid format: {value}" + ) + + def append(self, value: Union[Dict, "ExternalResources"]) -> None: + """Append a ExternalResource object to this list.""" + + if isinstance(value, ExternalResources): + self._sequence.append(value) + elif isinstance(value, dict): + self._sequence.append(ExternalResources(value)) + else: + raise TypeError( + f"The passed object for setting external " + f"resources has invalid format: {value}" + ) + + def __getitem__(self, index: int) -> "ExternalResources": + return self._sequence[index] + + def __setitem__(self, index: int, value: Union[Dict, "ExternalResources"]) -> None: + if isinstance(value, ExternalResources): + self._sequence[index] = value + elif isinstance(value, dict): + self._sequence[index] = ExternalResources(value) + else: + raise TypeError( + f"The passed object for setting external " + f"resources has invalid format: {value}" + ) + + def __eq__(self, other: "CVList") -> bool: + """ Compare two CVList objects to find out whether + they are same (have same data) or not + """ + if len(self) != len(other): + return False + for k, ext_res in enumerate(self): + if not ext_res == other[k]: + return False + return True + + def __len__(self) -> int: + return len(self._sequence) + + def __delitem__(self, index: int) -> None: + del self._sequence[index] + + def __str__(self) -> str: + return str(self._sequence) + + def __repr__(self) -> str: + return f"{list(self._sequence)}" + + +class ExternalResources: + """ + Class representation of a single set of resources and its nested + annotation. Its a special type of dict with restricted keys and + values + + Parameters + ---------- + data : dict + A dictionary containing the resources and nested annotation + { + "resources" : [], + "nested_data" : CVTerms + } + + Allowed Keys + ---------- + "resources" : list + for accessing the mapped resources + "nested_data" : CVTerms + for accessing the nested annotation data + + """ + + def __init__(self, data: Dict = None): + if data is None: + data = {} + if not isinstance(data, dict): + raise TypeError("The value passed must be of type dict.") + self.resources = data["resources"] if "resources" in data else None + self.nested_data = data["nested_data"] if "nested_data" in data else None + for key, value in data.items(): + if key == "resources": + continue + elif key == "nested_data": + continue + elif key in Qualifier.__members__: + self._nested_data = CVTerms({key: value}) + else: + raise ValueError( + f"Key '{key}' is not allowed. Only " + f"allowed keys are 'resources', " + f"'nested_data'." + ) + + @property + def resources(self) -> List: + return self._resources + + @resources.setter + def resources(self, value: List) -> None: + if value is None: + self._resources = None + elif not isinstance(value, list): + raise TypeError(f"The resources must be wrapped inside a list: {value}") + else: + self._resources = value + + @property + def nested_data(self) -> CVTerms: + return self._nested_data + + @nested_data.setter + def nested_data(self, value: Union[Dict, CVTerms]): + if value is None: + self._nested_data = None + elif isinstance(value, CVTerms): + self._nested_data = value + elif isinstance(value, dict): + self._nested_data = CVTerms(value) + else: + raise TypeError( + f"The nested data structure does not have valid CVTerm format: {value}" + ) + + def to_dict(self): + """Represents a ExternalResource object as python dict""" + resources = [] + for resource in self._resources: + resources.append(resource) + ex_dic = {"resources": resources} + if self.nested_data is None: + return ex_dic + ex_dic["nested_data"] = self.nested_data.to_dict() + return ex_dic + + def __eq__(self, other: "ExternalResources") -> bool: + """ + Compare two ExternalResources objects to find out whether + they are same (have same data) or not + """ + if self.resources != other.resources: + return False + if self.nested_data is None and other.nested_data is None: + return True + elif self.nested_data is None or other.nested_data is None: + return False + elif not self.nested_data == other.nested_data: + return False + return True + + def __str__(self) -> str: + if self.nested_data is None: + return str({"resources": self.resources}) + else: + return str({"resources": self.resources, "nested_data": self.nested_data}) + + def __repr__(self) -> str: + return self.__str__() diff --git a/src/cobra/core/metadata/history.py b/src/cobra/core/metadata/history.py new file mode 100644 index 000000000..f0e817646 --- /dev/null +++ b/src/cobra/core/metadata/history.py @@ -0,0 +1,291 @@ +""" +The history allows to encode provenance meta-data about +model objects. The history allows to encode who created or modified +objects in a model with respective time stamps. +""" +from datetime import datetime +from typing import Dict, Iterable, List, Union + + +class History: + """History object encoding object provenance. + + Parameters + ---------- + creators : list + A list of Creators + created_date : HistoryDatetime + The datetime of creation in W3CDTF ISO 8601 format + modified_dates : list + A list of datetimes when the object was modified. + """ + + def __init__( + self, + creators: List["Creator"] = None, + created_date: "HistoryDatetime" = None, + modified_dates: List["HistoryDatetime"] = None, + ): + self._creators = list() + self._created_date = None + self._modified_dates = list() + + # use properties to set fields + self.creators = creators + self.created_date = created_date + self.modified_dates = modified_dates + + @property + def creators(self) -> List: + return self._creators + + @creators.setter + def creators(self, values: Iterable["Creator"]) -> None: + self._creators = list() + if values: + self._creators = [Creator.from_data(v) for v in values] + + @property + def created_date(self) -> "HistoryDatetime": + return self._created_date + + @created_date.setter + def created_date(self, date: Union[str, "HistoryDateTime"]) -> None: + self._created_date = HistoryDatetime(date) + + @property + def modified_dates(self) -> List: + return self._modified_dates + + @modified_dates.setter + def modified_dates(self, dates: Iterable[Union[str, "HistoryDateTime"]]) -> None: + self._modified_dates = list() + if dates: + self._modified_dates = [HistoryDatetime(d) for d in dates] + + @staticmethod + def from_data(data: Union[Dict, "History"]) -> "History": + """Parse history from data.""" + if data is None: + return History() + elif isinstance(data, History): + return data + elif isinstance(data, dict): + return History(**data) + else: + raise TypeError(f"Unsupported type for History: '{data}'") + + def is_empty(self) -> bool: + """Checks if history is empty. + + Returns False if at least one history attribute is set, else True. + """ + if self.creators: + return False + if self.created_date.datetime: + return False + if self.modified_dates: + return False + return True + + def __eq__(self, history: "History") -> bool: + """ Checking equality of two history objects. + + A history is equal if all attributes are equal. + """ + # check equality of creators + if len(self.creators) != len(history.creators): + return False + for k, creator in enumerate(self.creators): + if creator != history.creators[k]: + return False + + # checking equality of created_date + if self.created_date != history.created_date: + return False + + # checking equality of modified_dates + if len(self.modified_dates) != len(history.modified_dates): + return False + for k, modified_date in enumerate(self.modified_dates): + if modified_date != history.modified_dates[k]: + return False + + return True + + def to_dict(self): + """Returns dictionary representation.""" + modified_dates = [] + for modified_date in self._modified_dates: + modified_dates.append(modified_date.datetime) + return { + "creators": [c.to_dict() for c in self.creators], + "created_date": self.created_date.datetime, + "modified_dates": modified_dates, + } + + def __str__(self) -> str: + return str(self.to_dict()) + + def __repr__(self): + return f"<{self.__class__.__name__} {self.creators}>" + + +class Creator: + """Metadata for person who created an object. + + Parameters + ---------- + first_name : str, + last_name : str, + email : str, + organization_name : str + """ + + def __init__( + self, + first_name: str = None, + last_name: str = None, + email: str = None, + organization_name: str = None, + ): + self.first_name = first_name # type: str + self.last_name = last_name # type: str + self.email = email # type: str + self.organization_name = organization_name # type: str + + @staticmethod + def from_data(data: Union[Dict, "Creator"]) -> "Creator": + """Parse creator from data.""" + if not data: + return Creator() + elif isinstance(data, Creator): + return data + elif isinstance(data, dict): + return Creator(**data) + else: + raise TypeError(f"Invalid format for Creator: {data}") + + def __eq__(self, creator_obj: "Creator") -> bool: + """Compare creator objects for equality + + Two creators are equal if all fields are equal. + """ + if ( + self.first_name != creator_obj.first_name + or self.last_name != creator_obj.last_name + or self.email != creator_obj.email + or self.organization_name != creator_obj.organization_name + ): + return False + + return True + + def to_dict(self): + return { + "first_name": self.first_name, + "last_name": self.last_name, + "email": self.email, + "organization_name": self.organization_name, + } + + def __str__(self) -> str: + return str(self.to_dict()) + + def __repr__(self): + return f"<{self.__class__.__name__} {self.first_name} {self.last_name}>" + + +class HistoryDatetime: + """Datetime allowed in a model history. + + This class make sure that datetimes are of the form: + %Y-%m-%dT%H:%M:%S%z + + Parameter + --------- + datetime: str, datetime + date in the form of a string + """ + + def __init__(self, history_datetime: str = None): + self._datetime = None # type: str + self.datetime = history_datetime + + @property + def datetime(self) -> str: + return self._datetime + + @datetime.setter + def datetime(self, value: str) -> None: + self._datetime = self.parse_datetime(value) + + def parse_datetime(self, value: str) -> str: + if value is None: + return None + if isinstance(value, HistoryDatetime): + return value.datetime + elif isinstance(value, str): + self.validate_datetime(value) + return value + elif isinstance(value, datetime): + return value.strftime("%Y-%m-%dT%H:%M:%S%z") + else: + raise TypeError( + f"Invalid type passed for datetime. " + f"Accepted types are 'str' or " + f"'datetime' objects: {value}" + ) + + @staticmethod + def utcnow() -> "HistoryDatetime": + """HistoryDatetime with current UTC time.""" + utcnow = datetime.utcnow() + value = utcnow.strftime("%Y-%m-%dT%H:%M:%S%z") + return HistoryDatetime(value) + + @staticmethod + def validate_datetime(datetime_str: str) -> bool: + """Validate if the date format is of type w3cdtf ISO 8601. + + Raises ValueError if not valid. + """ + if not isinstance(datetime_str, str): + raise TypeError( + f"The date passed must be of " f"type string: {datetime_str}" + ) + + # python 3.6 doesn't allow : (colon) in the utc offset. + try: + datetime.strptime(datetime_str, "%Y-%m-%dT%H:%M:%S%z") + except ValueError as e: + # checking for python 3.6 + if "Z" in datetime_str: + try: + datetime.strptime( + datetime_str.replace("Z", ""), "%Y-%m-%dT%H:%M:%S" + ) + except ValueError as e1: + raise ValueError(str(e1)) + return False + return True + else: + utcoff = datetime_str[20:25] + utcoff_p36 = utcoff.replace(":", "") + date_p36 = datetime_str.replace(utcoff, utcoff_p36) + try: + datetime.strptime(date_p36, "%Y-%m-%dT%H:%M:%S%z") + except ValueError: + raise ValueError(str(e)) + return True + + return True + + def __eq__(self, history_datetime: "HistoryDatetime") -> bool: + return self.datetime == history_datetime.datetime + + def __str__(self) -> str: + return self.datetime + + def __repr__(self): + return f"<{self.__class__.__name__} {self.datetime}>" diff --git a/src/cobra/core/metadata/keyvaluepairs.py b/src/cobra/core/metadata/keyvaluepairs.py new file mode 100644 index 000000000..93d0659e7 --- /dev/null +++ b/src/cobra/core/metadata/keyvaluepairs.py @@ -0,0 +1,101 @@ +from collections import OrderedDict +from collections.abc import MutableMapping +from typing import Dict, Iterable, Union + + +class KeyValueEntry: + """ Single key-value entry. + + The key is an attribute on the entry. + + Parameters + ---------- + id : str + name : str + key : str + value : str + uri : str + """ + + def __init__( + self, + id: str = None, + name: str = None, + key: str = None, + value: str = None, + uri: str = None, + ): + self.id = id + self.name = name + self.key = key + self.value = value + self.uri = uri + + @staticmethod + def from_data(data: Union[Dict, "KeyValueEntry"]) -> "KeyValueEntry": + """ Makes a KeyValueDict object using the data passed. """ + if data is None: + return KeyValueEntry() + elif isinstance(data, KeyValueEntry): + return data + elif isinstance(data, dict): + return KeyValueEntry(**data) + else: + raise TypeError(f"Invalid format for KeyValueEntry: '{data}'") + + def to_dict(self) -> dict: + return { + "id": self.id, + "name": self.name, + "key": self.key, + "value": self.value, + "uri": self.uri, + } + + def __str__(self) -> str: + return str(self.to_dict()) + + def __repr__(self) -> str: + return f"<{self.__class__.__name__} ({self.key}, {self.value}, {self.uri})>" + + +class KeyValuePairs(MutableMapping): + """An OrderedDict extension to store KeyValueEntries + + Parameters + ---------- + entries : Iterable + an iterable containing entry information + """ + + def __init__(self, entries: Iterable[Union[Dict, KeyValueEntry]] = None): + self.mapping = OrderedDict() # type: OrderedDict[str, KeyValueEntry] + if entries: + for item in entries: + entry = KeyValueEntry.from_data(item) + self.mapping[entry.key] = entry + + def __getitem__(self, key: str) -> KeyValueEntry: + return self.mapping.__getitem__(key) + + def __setitem__(self, key: str, item: Union[Dict, KeyValueEntry]) -> None: + entry = KeyValueEntry.from_data(item) + self.mapping[key] = entry + + def __len__(self) -> int: + return len(self.mapping) + + def __iter__(self): + return iter(self.mapping) + + def __delitem__(self, key: str) -> None: + del self.mapping[key] + + def __str__(self) -> str: + return str(self.to_dict()) + + def __repr__(self) -> str: + return f"<{self.__class__.__name__} [{len(self)}]>" + + def to_dict(self) -> dict: + return {k: v.to_dict() for k, v in self.mapping.items()} diff --git a/src/cobra/core/metadata/metadata.py b/src/cobra/core/metadata/metadata.py new file mode 100644 index 000000000..840943522 --- /dev/null +++ b/src/cobra/core/metadata/metadata.py @@ -0,0 +1,145 @@ +from collections import MutableMapping, OrderedDict +from typing import Dict, Iterator, List, Union + +from cobra.core.metadata.cvterm import CVTerms +from cobra.core.metadata.history import Creator, History, HistoryDatetime +from cobra.core.metadata.keyvaluepairs import KeyValuePairs + + +class MetaData(MutableMapping): + """Meta-data of a cobrapy object. + + Meta-data encodes additional information on an object such as annotations + or notes. Such information is currently stored in SBML on the notes and + annotation fields. + + Meta-data consists of three components: + - CVTerms: storing resource:identifier annotation information. The annotation + information is exposed via the dict interface for full backwards compatibility + to the earlier object.annotation field. + - History: storing the object history consisting of creators, created date, and + modified dates. + - KeyValuePairs, a list of key-value pairs to store additional information + + Parameters + ---------- + cvterms : dict or CVTerms object + The cvterms store annotations to external resources + history : dict, History + The history stores information about the creator, + created and modified dates. + keyvaluepairs : list + Key-value pairs which are not suitable to be + represented anywhere else in the model. + Data is represented as an OrderedDict. + """ + + def __init__( + self, + cvterms: Union[Dict, CVTerms] = None, + history: Union[Dict, History] = None, + keyvaluepairs: List = None, + ): + self._cvterms = None # type: CVTerms + self._history = None # type: History + self._keyvaluepairs = None # type: KeyValuePairs + + # use setters + self.cvterms = cvterms + self.history = history + self.keyvaluepairs = keyvaluepairs + + @property + def annotations(self) -> Dict: + """Backwards compatible annotations.""" + return self.cvterms.annotations + + def __setitem__(self, key: str, value: List) -> None: + self._cvterms.add_simple_annotations(dict({key: value})) + + def __getitem__(self, key: str) -> List: + if key == "sbo" and len(self.annotations[key]) == 0: + value = self._cvterms._annotations[key] + del self._cvterms._annotations[key] + return value + return self.annotations[key] + + def __delitem__(self, key: str) -> None: + del self.annotations[key] + + def __iter__(self) -> Iterator: + return iter(self.annotations) + + def __len__(self) -> int: + return len(self.annotations) + + def __str__(self) -> str: + return str(dict(self.annotations)) + + def __repr__(self) -> str: + return str(dict(self.annotations)) + + @property + def cvterms(self) -> "CVTerms": + return self._cvterms + + @cvterms.setter + def cvterms(self, cvterms: Union[Dict, CVTerms]) -> None: + self._cvterms = CVTerms.from_data(cvterms) + + def add_cvterms(self, cvterms: Union[Dict, CVTerms]) -> None: + self._cvterms.add_cvterms(cvterms) + + @property + def history(self) -> History: + return self._history + + @history.setter + def history(self, history: Union[Dict, History]) -> None: + self._history = History.from_data(history) + + def add_creator(self, creator: Creator): + self.history.creators.append(creator) + + @property + def keyvaluepairs(self) -> KeyValuePairs: + return self._keyvaluepairs + + @keyvaluepairs.setter + def keyvaluepairs(self, keyvaluepairs: Union[Dict, KeyValuePairs]) -> None: + self._keyvaluepairs = KeyValuePairs(keyvaluepairs) + + def to_dict(self) -> Dict: + """Creates string dictionary for serialization""" + d = OrderedDict() + if "sbo" in self and self["sbo"] != []: + # set first SBO term as sbo + d["sbo"] = self["sbo"][0] + + if self.cvterms: + d["cvterms"] = self.cvterms.to_dict() + + if self.history and not self.history.is_empty(): + d["history"] = self.history.to_dict() + + if self.keyvaluepairs: + d["keyvaluepairs"] = self.keyvaluepairs.to_dict() + + return d + + @staticmethod + def from_dict(data: Dict) -> "MetaData": + cvterms = data["cvterms"] if "cvterms" in data else None + history = data["history"] if "history" in data else None + keyValuepairs = data["keyvaluepairs"] if "keyvaluepairs" in data else None + + if cvterms or history or keyValuepairs: + annotation = MetaData(cvterms, history, keyValuepairs) + else: + annotation = MetaData() + annotation.cvterms.add_simple_annotations(data) + + if "sbo" in data: + annotation["sbo"] = [data["sbo"]] + + return annotation diff --git a/src/cobra/core/metadata/notes.py b/src/cobra/core/metadata/notes.py new file mode 100644 index 000000000..8418e86e7 --- /dev/null +++ b/src/cobra/core/metadata/notes.py @@ -0,0 +1,178 @@ +import collections +import re +from typing import Iterator +from warnings import warn + + +class Notes(collections.MutableMapping): + """ Class representation of 'notes' of an object. + + The previous version of COBRApy was parsing entries of + the form '

key : value

' and making + a dict out of it. All other information was simply + left out. When writing the model back to SBML, this + dict was converted in the string: + + " +

key1: value1

" +

key2: value2

" + ... + " + + The 'notes' attribute on an object stored this key: value + dictionary. + + The current version of 'notes' has a dedicated class + that behaves like a dict storing the key-value pairs + present inside the notes string (making it backward + compatible). In addition the the complete notes + information is stored. + + The dict and the string of 'notes' are both synchronized + with each other. + Importantly, the 'notes' attribute is not meant to to + store any machine-readable information. To enforce this + behavior the addition of new key-values inside the + 'notes' dict is not permitted. Trying to do so + will throw an ValueError. The KeyValuePairs should be used + to store key:value information for objects. + + The complete 'notes' string is + directly written to formats like "JSON", "YAML" etc when + COBRA model is written in these format. And when writing + SBML, 'notes' is initialized using the method: + + SBase.getNotesString() + + which makes the xhtml content of the notes using the string. + + Parameters + ---------- + notes_xhtml : string + The complete notes (xhtml) data in the form of a string. + """ + + # pattern checking for "

key : value

" type string + PATTERN_PTAG = re.compile( + r"<(?P(\w+:)?)p[^>]*>(?P.*?)", + re.IGNORECASE | re.DOTALL, + ) + + def __init__(self, notes_xhtml: str = None): + self._data = {} + self._notes_xhtml = None + self.notes_xhtml = notes_xhtml + + @property + def notes_xhtml(self) -> str: + """ Return the html content of notes in the form of a string. """ + return self._notes_xhtml + + @notes_xhtml.setter + def notes_xhtml(self, value: str) -> None: + """ Set the notes_xhtml string """ + if value is None: + self._notes_xhtml = value + self._data = {} + elif isinstance(value, str): + self._notes_xhtml = value + self._data = {} + self.update_notes_dict() + else: + raise TypeError(f"notes data must be of type string: {value}") + + def __eq__(self, other: "Notes") -> bool: + if not isinstance(other, Notes): + return False + return self._notes_xhtml == other._notes_xhtml + + def __getitem__(self, key: str) -> str: + return self._data[key] + + def __setitem__(self, key: str, value: str) -> None: + if key not in self._data: + raise ValueError( + "Notes string is not a right place " + "to store key value pairs. Store them " + "at appropriate place in the document." + ) + else: + self._data[key] = value + self.update_notes_str(key, value) + + def __delitem__(self, key: str) -> None: + del self._data[key] + + def __iter__(self) -> Iterator: + return iter(self._data) + + def __len__(self) -> int: + return len(self._data) + + def __str__(self) -> str: + if self._notes_xhtml is None: + return "" + return self.notes_xhtml + + def __repr__(self) -> str: + return self.__str__() + + def update_notes_dict(self) -> None: + """ Updates notes dictionary according to key-value stored + in notes string. + """ + if self._notes_xhtml: + for match in Notes.PATTERN_PTAG.finditer(self._notes_xhtml): + try: + key, value = match.group("content").split(":", 1) + except ValueError: + continue + self._data[key.strip()] = value.strip() + + def update_notes_str(self, key: str, value: str) -> None: + """ Updates the notes string according to key-value pairs + passed. If any such 'key' is present inside notes string + having format '

key : oldvalue

', then it will be + updated to store the new value. But if that 'key' is not + present, an ValueError will be thrown. + """ + # if notes string is empty + if self._notes_xhtml is None: + raise ValueError( + "Notes string is not a right place " + "to store key value pairs. Store them " + "at appropriate place in the document." + ) + + # if value passed is not of type 'str' + if not isinstance(value, str): + warn( + "The value must be of type string. \n" + "Converting value to 'string' type and " + "then putting in notes string...." + ) + value = str(value) + + # pattern to search for inside notes string + pattern = re.compile( + r"<(?P(\w+:)?)p[^>]*>(\s*){}(\s*):(\s*)" + r"(?P.*?)(\s*)".format(key), + re.IGNORECASE | re.DOTALL, + ) + match = re.search(pattern, self._notes_xhtml) + + # if no such key-value substring is + # already present inside notes string + if match is None: + del self._data[key] + raise ValueError( + "Notes string is not the right place " + "to store key value pairs. Store them " + "at appropriate place in the document." + ) + # otherwise update the content + else: + start = match.start("content") + end = match.end("content") + modified_str = self._notes_xhtml[:start] + value + self._notes_xhtml[end:] + self._notes_xhtml = modified_str diff --git a/src/cobra/core/model.py b/src/cobra/core/model.py index d92412246..6a1845f02 100644 --- a/src/cobra/core/model.py +++ b/src/cobra/core/model.py @@ -23,6 +23,7 @@ from cobra.core.object import Object from cobra.core.reaction import Reaction from cobra.core.solution import get_solution +from cobra.core.udconstraints import UserDefinedConstraint from cobra.exceptions import SolverNotFound from cobra.medium import find_boundary_types, find_external_compartment, sbo_terms from cobra.util.context import HistoryManager, get_context, resettable @@ -67,6 +68,8 @@ class Model(Object): groups : DictList A DictList where the key is the group identifier and the value a Group + user_defined_const : UserDefinedConstraint + A Dictlist to store UserDefinedConstraints solution : Solution The last obtained solution from optimizing the model. @@ -107,6 +110,9 @@ def __init__(self, id_or_model=None, name=None): self.reactions = DictList() # A list of cobra.Reactions self.metabolites = DictList() # A list of cobra.Metabolites self.groups = DictList() # A list of cobra.Groups + # A list of UserDefinedConstraints + self.user_defined_const = DictList() + self._const_ids = set() # genes based on their ids {Gene.id: Gene} self._compartments = {} self._contexts = [] @@ -341,7 +347,8 @@ def copy(self): "reactions", "genes", "notes", - "annotation", + "_annotation", + "user_defined_const", "groups", } for attr in self.__dict__: @@ -351,13 +358,14 @@ def copy(self): new.annotation = deepcopy(self.annotation) new.metabolites = DictList() - do_not_copy_by_ref = {"_reaction", "_model"} + do_not_copy_by_ref = {"_reaction", "_model", "_annotation"} for metabolite in self.metabolites: new_met = metabolite.__class__() for attr, value in iteritems(metabolite.__dict__): if attr not in do_not_copy_by_ref: new_met.__dict__[attr] = copy(value) if attr == "formula" else value new_met._model = new + new_met.annotation = deepcopy(metabolite.annotation) new.metabolites.append(new_met) new.genes = DictList() @@ -369,16 +377,18 @@ def copy(self): copy(value) if attr == "formula" else value ) new_gene._model = new + new_gene.annotation = deepcopy(gene.annotation) new.genes.append(new_gene) new.reactions = DictList() - do_not_copy_by_ref = {"_model", "_metabolites", "_genes"} + do_not_copy_by_ref = {"_model", "_metabolites", "_genes", "_annotation"} for reaction in self.reactions: new_reaction = reaction.__class__() for attr, value in iteritems(reaction.__dict__): if attr not in do_not_copy_by_ref: new_reaction.__dict__[attr] = copy(value) new_reaction._model = new + new_reaction._annotation = deepcopy(reaction.annotation) new.reactions.append(new_reaction) # update awareness for metabolite, stoic in iteritems(reaction._metabolites): @@ -391,7 +401,7 @@ def copy(self): new_gene._reaction.add(new_reaction) new.groups = DictList() - do_not_copy_by_ref = {"_model", "_members"} + do_not_copy_by_ref = {"_model", "_members", "_annotation"} # Groups can be members of other groups. We initialize them first and # then update their members. for group in self.groups: @@ -400,6 +410,7 @@ def copy(self): if attr not in do_not_copy_by_ref: new_group.__dict__[attr] = copy(value) new_group._model = new + new_group.annotation = deepcopy(group.annotation) new.groups.append(new_group) for group in self.groups: new_group = new.groups.get_by_id(group.id) @@ -413,7 +424,7 @@ def copy(self): elif isinstance(member, Gene): new_object = new.genes.get_by_id(member.id) elif isinstance(member, Group): - new_object = new.genes.get_by_id(member.id) + new_object = new.groups.get_by_id(member.id) else: raise TypeError( "The group member {!r} is unexpectedly not a " @@ -423,6 +434,30 @@ def copy(self): new_objects.append(new_object) new_group.add_members(new_objects) + # new.user_defined_const = deepcopy(self.user_defined_const) + + new.user_defined_const = DictList() + do_not_copy_by_ref = {"_model", "_constraint_comps", "_annotation"} + for const in self.user_defined_const: + new_user_defined_const = const.__class__() + + for attr, value in iteritems(const.__dict__): + if attr not in do_not_copy_by_ref: + new_user_defined_const.__dict__[attr] = copy(value) + new_user_defined_const._model = new + new_user_defined_const.annotation = deepcopy(const.annotation) + + do_not_copy_by_ref = {"_annotation"} + for const_comp in const.constraint_comps: + new_const_comp = const_comp.__class__(variable=const_comp.variable) + for attr, value in iteritems(const_comp.__dict__): + if attr not in do_not_copy_by_ref: + new_const_comp.__dict__[attr] = copy(value) + new_const_comp.annotation = deepcopy(const_comp.annotation) + new_user_defined_const.add_constraint_comps([new_const_comp]) + + new.user_defined_const.append(new_user_defined_const) + try: new._solver = deepcopy(self.solver) # Cplex has an issue with deep copies @@ -889,6 +924,105 @@ def get_associated_groups(self, element): # check whether the element is associated with the model return [g for g in self.groups if element in g.members] + def add_user_defined_constraints(self, constraints: list) -> None: + """Adds User defined constraints (FBC V3) to the model + + Parameters + ---------- + constraints: list + a list of UserDefinedConstraints + """ + + if not isinstance(constraints, list): + # if single UserDefinedConstraints, convert to a list + if isinstance(constraints, UserDefinedConstraint): + warn(f"The constraints passed must be inside a list: " f"{constraints}") + constraints = [constraints] + else: + raise TypeError( + f"The constraints passed must be inside " f"a list: {constraints}" + ) + + for constraint in constraints: + if not isinstance(constraint, UserDefinedConstraint): + raise TypeError( + f"The user defined constraints passed must be of " + f"type 'UserDefinedConstraints': {constraint}" + ) + + if constraint.lower_bound is None or constraint.upper_bound is None: + raise ValueError(f"Bounds must be set for the constraint: {constraint}") + + if constraint.id is None or constraint.id == "": + constraint.id = "$_internal_const_id" + str(len(self._const_ids)) + self._const_ids.add(constraint.id) + constraint._model = self + cons_exp = 0 # an expression involving variables + list_of_var_cons = [] + + for item in constraint.constraint_comps: + + # set the exponent of variable/flux + if item.variable_type == "linear": + var_pow = 1 + elif item.variable_type == "quadratic": + var_pow = 2 + else: + raise ValueError(f"Unexpected variable type set for item: {item}") + + # checks if the reference variable is a rxn flux + # or variable + if item.variable in self.reactions: + rxn = self.reactions.get_by_id(item.variable) + var_to_add = rxn.flux_expression + else: + var_to_add = self.problem.Variable(item.variable) + if var_to_add not in self.variables: + list_of_var_cons.append(var_to_add) + + # add the variable/flux to the constraint expression + cons_exp += item.coefficient * pow(var_to_add, var_pow) + + # make the constraint using expression and bounds + new_constraint = self.problem.Constraint( + cons_exp, + name=constraint.id, + lb=constraint.lower_bound, + ub=constraint.upper_bound, + ) + + list_of_var_cons.append(new_constraint) + self.user_defined_const.append(constraint) + self.add_cons_vars(list_of_var_cons) + + def remove_user_defined_constraints(self, constraints: list) -> None: + """Remove the constraints from the model + + Parameters + ---------- + constraints: list + a list of UserDefinedConstraints + """ + if not isinstance(constraints, list): + # if single UserDefinedConstraints, convert to a list + if isinstance(constraints, UserDefinedConstraint): + warn(f"The constraints passed must be inside a list: {constraints}") + constraints = [constraints] + else: + raise TypeError( + f"The constraints passed must be inside " f"a list: {constraints}" + ) + + for constraint in constraints: + if not isinstance(constraint, UserDefinedConstraint): + raise TypeError( + "The user defined constraints passed must be of " + "type 'UserDefinedConstraints': {constraint}" + ) + self._const_ids.remove(constraint.id) + cons_to_remove = self.constraints[constraint.id] + self.remove_cons_vars(cons_to_remove) + def add_cons_vars(self, what, **kwargs): """Add constraints and variables to the model's mathematical problem. diff --git a/src/cobra/core/object.py b/src/cobra/core/object.py index 7adfe114f..6d248bc3b 100644 --- a/src/cobra/core/object.py +++ b/src/cobra/core/object.py @@ -2,8 +2,12 @@ from __future__ import absolute_import +from collections import defaultdict + from six import string_types +from cobra.core.metadata import CVList, MetaData, Notes + class Object(object): """Defines common behavior of object in cobra.core""" @@ -19,8 +23,8 @@ def __init__(self, id=None, name=""): self._id = id self.name = name - self.notes = {} - self._annotation = {} + self._notes = Notes() + self._annotation = MetaData() @property def id(self): @@ -37,19 +41,38 @@ def id(self, value): else: self._id = value - def _set_id_with_model(self, value): - self._id = value + @property + def notes(self): + return getattr(self, "_notes", None) + + @notes.setter + def notes(self, data): + if isinstance(data, Notes): + self._notes = data + return + self._notes.notes_xhtml = data @property def annotation(self): - return self._annotation + return getattr(self, "_annotation", None) @annotation.setter - def annotation(self, annotation): - if not isinstance(annotation, dict): - raise TypeError("Annotation must be a dict") + def annotation(self, value): + if not (isinstance(value, dict) or isinstance(value, MetaData)): + raise TypeError( + "The data passed for annotation must be inside " + "a dictionary: {}".format(value) + ) else: - self._annotation = annotation + if isinstance(value, MetaData): + self._annotation = value + else: + self._annotation.cvterms._annotations = defaultdict(list) + self._annotation.cvterms._cvterms = defaultdict(CVList) + self._annotation.cvterms.add_simple_annotations(value) + + def _set_id_with_model(self, value): + self._id = value def __getstate__(self): """To prevent excessive replication during deepcopy.""" diff --git a/src/cobra/core/reaction.py b/src/cobra/core/reaction.py index 8fe9e131a..e49c41a9e 100644 --- a/src/cobra/core/reaction.py +++ b/src/cobra/core/reaction.py @@ -1174,10 +1174,7 @@ def summary(self, solution=None, fva=None): from cobra.summary import ReactionSummary return ReactionSummary( - reaction=self, - model=self._model, - solution=solution, - fva=fva, + reaction=self, model=self._model, solution=solution, fva=fva, ) def __str__(self): diff --git a/src/cobra/core/udconstraints.py b/src/cobra/core/udconstraints.py new file mode 100644 index 000000000..1774c5ce1 --- /dev/null +++ b/src/cobra/core/udconstraints.py @@ -0,0 +1,540 @@ +import ast +from ast import ( + Add, + BinOp, + Div, + Expression, + Mod, + Mult, + Name, + NodeTransformer, + Num, + Sub, + UAdd, + UnaryOp, + USub, + copy_location, +) +from typing import List, Union +from warnings import warn + +from cobra.core import DictList +from cobra.core.object import Object + + +class UserDefinedConstraint(Object): + """Class representation of constraints defined by + user. + + The id attribute of UserDefinedConstraint is optional according + to SBML specifications. But DictList requires the id of the object + to be set. So temporary inner id's will be generated to store such + objects. + + Parameters + ---------- + id : string + An identifier for the chemical species + name : string + A human readable name. + lower_bound : int, float + lower bound on constraint expression + upper_bound : int, float + upper bound on constraint expression + const_comps : list + a list of constraint components + """ + + def __init__( + self, + id=None, + name=None, + lower_bound: [int, float] = None, + upper_bound: [int, float] = None, + const_comps: List = None, + ): + Object.__init__(self, id, name) + self._model = None + + self.lower_bound = lower_bound + self.upper_bound = upper_bound + + self._constraint_comps = DictList() + self._const_comp_ids = set() + if const_comps is not None: + self.add_constraint_comps(const_comps) + + class ComputeNumericNodes(NodeTransformer): + """ Compute the value of nodes which are solvable i.e + node containing numeric value on both sides. + """ + + def visit_BinOp(self, node: BinOp): + """This method visits every node of ast tree and solve the nodes + which are computable i.e having numeric value on both sides and + a defined BioOp (or UnaryOp) + """ + node.left = self.visit(node.left) + node.right = self.visit(node.right) + if isinstance(node.left, Num) and isinstance(node.right, Num): + if isinstance(node.op, Add): + result = Num(n=node.left.n + node.right.n) + return copy_location(result, node) + elif isinstance(node.op, Sub): + result = Num(n=node.left.n - node.right.n) + return copy_location(result, node) + elif isinstance(node.op, Mult): + result = Num(n=node.left.n * node.right.n) + return copy_location(result, node) + elif isinstance(node.op, Div): + result = Num(n=node.left.n / node.right.n) + return copy_location(result, node) + elif isinstance(node.op, Mod): + result = Num(n=node.left.n % node.right.n) + return copy_location(result, node) + return node + + def add_single_node( + self, ast_node: Union[Name, UnaryOp, BinOp], negate: bool = False + ) -> None: + """ + The final node to add constraint component inside constraint. + + Parameters + ---------- + ast_node : AST Node classes + Final node representation of a constraint component + negate : bool + Whether to add a negative sign before this component + + """ + # variable of type 'v1' + if isinstance(ast_node, Name): + coeff = 1 + if negate: + coeff = -1 + self.add_constraint_comps( + [ + ConstraintComponent( + coefficient=coeff, variable=ast_node.id, variable_type="linear" + ) + ] + ) + # variable of type '-v1' + elif isinstance(ast_node, UnaryOp): + if isinstance(ast_node.op, UAdd): + coeff = 1 + elif isinstance(ast_node.op, USub): + coeff = -1 + else: + raise ValueError(f"Unsupported Unary Operand: {ast_node.op}") + if negate: + coeff = -1 * coeff + self.add_constraint_comps( + [ + ConstraintComponent( + coefficient=coeff, + variable=ast_node.operand.id, + variable_type="linear", + ) + ] + ) + # variable of type '2*v1', '3*v1*v1' etc. + elif isinstance(ast_node, BinOp): + if not isinstance(ast_node.op, Mult): + raise ValueError( + f"Unsupported operand type between the variables:" + f"{ast_node.left} and {ast_node.right}" + ) + if not isinstance(ast_node.right, Name): + raise ValueError( + f"The second argument must be a single variable" + f": {ast_node.right}" + ) + # variable of type '2*v1' + if isinstance(ast_node.left, Num): + coeff = ast_node.left.n + if negate: + coeff = -1 * coeff + var = ast_node.right.id + self.add_constraint_comps( + [ + ConstraintComponent( + coefficient=coeff, variable=var, variable_type="linear" + ) + ] + ) + # variables of type 'v1*v1' + elif isinstance(ast_node.left, Name): + if ast_node.left.id != ast_node.right.id: + raise ValueError( + f"Multiplication of two different variables is not " + f"allowed as per SBML FBC-V3: {ast_node.left.id} and " + f"{ast_node.right.id}" + ) + coeff = 1 + if negate: + coeff = -1 + self.add_constraint_comps( + [ + ConstraintComponent( + coefficient=coeff, + variable=ast_node.right.id, + variable_type="quadratic", + ) + ] + ) + # variables of type '-v1*v1' + elif isinstance(ast_node.left, UnaryOp): + if isinstance(ast_node.left.operand, Num): + if isinstance(ast_node.left.op, UAdd): + coeff = 1 + elif isinstance(ast_node.left.op, USub): + coeff = -1 + else: + raise ValueError( + f"Unsupported Unary Operand: {ast_node.left.op}" + ) + coeff *= ast_node.left.operand.n + if negate: + coeff = -1 * coeff + comp = ConstraintComponent( + coefficient=coeff, + variable=ast_node.right.id, + variable_type="linear", + ) + self.add_constraint_comps([comp]) + elif isinstance(ast_node.left.operand, Name): + if ast_node.left.operand.id != ast_node.right.id: + raise ValueError( + f"Multiplication of two different variables is not allowed " + f"as per SBML FBC-V3: {ast_node.left.operand.id}" + f" and {ast_node.right.id}" + ) + if isinstance(ast_node.left.op, UAdd): + coeff = 1 + elif isinstance(ast_node.left.op, USub): + coeff = -1 + else: + raise ValueError( + f"Unsupported Unary Operand: {ast_node.left.op}" + ) + if negate: + coeff = -1 * coeff + comp = ConstraintComponent( + coefficient=coeff, + variable=ast_node.left.operand.id, + variable_type="quadratic", + ) + self.add_constraint_comps([comp]) + # variables of type '2*v1*v1' + elif isinstance(ast_node.left, BinOp): + if ast_node.left.right.id != ast_node.right.id: + raise ValueError( + f"Multiplication of two different variables is not " + f"allowed as per SBML FBC-V3: {ast_node.left.name.id} " + f"and {ast_node.right.id}" + ) + # variables of type '-2*v1*v1' + if isinstance(ast_node.left.left, UnaryOp): + if isinstance(ast_node.left.left.op, USub): + coeff = -1 + elif isinstance(ast_node.left.left.op, UAdd): + coeff = 1 + else: + raise ValueError("Invalid expression.") + coeff = coeff * ast_node.left.left.operand.n + elif isinstance(ast_node.left.left, Num): + coeff = ast_node.left.left.n + else: + raise ValueError("Invalid expression.") + if negate: + coeff = -1 * coeff + comp = ConstraintComponent( + coefficient=coeff, + variable=ast_node.right.id, + variable_type="quadratic", + ) + self.add_constraint_comps([comp]) + + def add_components_via_ast_nodes( + self, + ast_node: Union[Name, UnaryOp, BinOp, Expression, Num], + negate: bool = False, + ) -> None: + """ + Add the constraint components to model via ast node + representation of constraint expression. + + Parameters + ---------- + ast_node : Expression + The ast of the constraint expression + negate : bool + Whether to add a '-' sign before this node + + """ + + if isinstance(ast_node, BinOp): + if isinstance(ast_node.op, Add): + self.add_components_via_ast_nodes(ast_node.left, negate) + self.add_components_via_ast_nodes(ast_node.right, negate) + elif isinstance(ast_node.op, Sub): + self.add_components_via_ast_nodes(ast_node.left, negate) + negate = not negate + self.add_components_via_ast_nodes(ast_node.right, negate) + elif isinstance(ast_node.op, Mult): + self.add_single_node(ast_node, negate) + else: + raise ValueError(f"Unsupported operation between variables: {ast_node}") + elif isinstance(ast_node, Name): + self.add_single_node(ast_node, negate) + elif isinstance(ast_node, UnaryOp): + self.add_single_node(ast_node, negate) + elif isinstance(ast_node, Expression): + self.add_components_via_ast_nodes(ast_node.body, negate) + else: + raise ValueError(f"Unsupported variable type: {ast_node}") + + @staticmethod + def constraint_from_expression( + id: str = None, + expression: str = "", + lower_bound: Union[int, float] = None, + upper_bound: Union[int, float] = None, + ) -> "UserDefinedConstraint": + """ + Method to add a user defined constraint via an expression of + type string. Following rules must be followed while making the + expression: + + 1. The coefficient must be added before the variable and must + have a multiplicative sign (*) only between itself and the + variable. It can be an expression containing numbers: + + 2*variable : Allowed + 2 * variable : Allowed + 2.variable : Not Allowed + 2.0*variable : Allowed + (4/2+5%2)*variable : Allowed + (2/4)*variable : Allowed + variable*2 : Not Allowed + + 2. The 'caret' operator must not be used to set the exponent. + Use multiplicative sign instead. Also, since only 'linear' and + 'quadratic' variables are allowed, we will need multiplication + of variable at most one (in quadratic case). + + variable : Allowed + variable^2 : Not allowed + variable * variable : Allowed + + Parameters + ---------- + id : str, optional + identifier to attach with this constraint + expression : str + the expression defining the constraint + lower_bound : [int, float] + the lower bound on constraint expression + upper_bound : [int, float] + the lower bound on constraint expression + + Returns + ------- + A UserDefinedConstraint object + """ + constraint = UserDefinedConstraint( + id=id, lower_bound=lower_bound, upper_bound=upper_bound + ) + if expression is None or expression == "": + return constraint + + expression = expression.strip() + + tree = ast.parse(source=expression, mode="eval") + compute_nodes = UserDefinedConstraint.ComputeNumericNodes() + tree = compute_nodes.visit(tree) + print((ast.dump(tree))) + constraint.add_components_via_ast_nodes(ast_node=tree) + + return constraint + + @property + def lower_bound(self) -> Union[int, float]: + return self._lower_bound + + @lower_bound.setter + def lower_bound(self, value: Union[int, float]) -> None: + if value is None: + self._lower_bound = value + elif not (isinstance(value, int) or isinstance(value, float)): + raise TypeError( + f"The 'lower_bound' must be of type 'number' (int, float): {value}" + ) + else: + self._lower_bound = value + + @property + def upper_bound(self) -> Union[int, float]: + return self._upper_bound + + @upper_bound.setter + def upper_bound(self, value: Union[int, float]) -> None: + if value is None: + self._upper_bound = value + elif not (isinstance(value, int) or isinstance(value, float)): + raise TypeError( + f"The 'upper_bound' must be of type 'number' (int, float): {value}" + ) + else: + self._upper_bound = value + + @property + def constraint_comps(self) -> List: + return self._constraint_comps + + def add_constraint_comps(self, value: List) -> None: + """Adds a UserDefinedConstraintComponent in this constraint + + Parameters + ---------- + value: list + the constraint component to add in the model + + """ + if self._model is not None: + raise ValueError( + f"The constraint has already been added to model. Can't add more " + f"constraint components: {value}" + ) + + if not isinstance(value, list): + if isinstance(value, ConstraintComponent): + warn(f"Pass the Constraint Components inside a list: {value}") + value = [value] + else: + raise TypeError( + f"Pass the Constraint Components inside a list: {value}" + ) + + for item in value: + if not isinstance(item, ConstraintComponent): + raise TypeError( + f"The constraint component should be of type " + f"'UserDefinedConstraintComponents': {item}" + ) + if item.id is None or item.id == "": + item.id = "$_internal_comp_id" + str(len(self._const_comp_ids)) + self._const_comp_ids.add(item.id) + self.constraint_comps.append(item) + + def remove_constraint_comps(self, value: "ConstraintComponent") -> None: + """Removes a UserDefinedConstraintComponent from this constraint + + Parameters + ---------- + value: ConstraintComponent + the constraint component to br removed + + """ + if self._model is not None: + raise ValueError( + f"The constraint has already been added to model. Can't remove any " + f"constraint components: {value}" + ) + + if not isinstance(value, list): + if isinstance(value, ConstraintComponent): + warn(f"Pass the Constraint Components inside a list: {value}") + value = [value] + else: + raise TypeError( + f"Pass the Constraint Components inside a list: {value}" + ) + + for item in value: + if not isinstance(item, ConstraintComponent): + raise TypeError( + f"The constraint component should be of type " + f"'UserDefinedConstraintComponents': {item}" + ) + self._const_comp_ids.remove(item.id) + self.constraint_comps.remove(item) + + +class ConstraintComponent(Object): + """Class representation of component of a user-defined + constraint. + + Parameters + ---------- + id: str + An identifier for the chemical species + name : string + A human readable name. + variable: str + the id of variable referenced by this component + coefficient: int, float + coefficient of the variable in constraint expression + variable_type: str + exponent of the variable in constraint expression + + """ + + variable_types = ("linear", "quadratic") + + def __init__( + self, + id: str = None, + name: str = None, + variable: str = None, + coefficient: int = 1.0, + variable_type: str = "linear", + ): + Object.__init__(self, id=id, name=name) + self.variable = variable + self.coefficient = coefficient + self.variable_type = variable_type + + @property + def variable(self) -> str: + return self._variable + + @variable.setter + def variable(self, value: str) -> None: + if not isinstance(value, str): + raise TypeError( + f"The 'variable' have to be an COBRA object id and must be of" + f" type string: {value}" + ) + else: + self._variable = value + + @property + def coefficient(self) -> Union[int, float]: + return self._coefficient + + @coefficient.setter + def coefficient(self, value: Union[int, float]) -> None: + if value is None: + self._coefficient = 1 + elif not (isinstance(value, int) or isinstance(value, float)): + raise TypeError( + f"The 'coefficient' must be of type 'number' (int, float): {value}" + ) + else: + self._coefficient = value + + @property + def variable_type(self) -> str: + return self._variable_type + + @variable_type.setter + def variable_type(self, value: str) -> None: + if value not in self.variable_types: + raise ValueError( + f"The 'variable_type' must be one of 'linear' or 'quadratic': {value}" + ) + else: + self._variable_type = value diff --git a/src/cobra/flux_analysis/deletion.py b/src/cobra/flux_analysis/deletion.py index 195bdaae4..f691ed9c0 100644 --- a/src/cobra/flux_analysis/deletion.py +++ b/src/cobra/flux_analysis/deletion.py @@ -132,14 +132,7 @@ def _multi_deletion( def extract_knockout_results(result_iter): result = pd.DataFrame( - [ - ( - set(ids), - growth, - status, - ) - for (ids, growth, status) in result_iter - ], + [(set(ids), growth, status,) for (ids, growth, status) in result_iter], columns=["ids", "growth", "status"], ) return result diff --git a/src/cobra/flux_analysis/loopless.py b/src/cobra/flux_analysis/loopless.py index 203135d55..36c8dfb2b 100644 --- a/src/cobra/flux_analysis/loopless.py +++ b/src/cobra/flux_analysis/loopless.py @@ -169,9 +169,7 @@ def loopless_solution(model, fluxes=None): prob = model.problem # Needs one fixed bound for cplex... loopless_obj_constraint = prob.Constraint( - model.objective.expression, - lb=-1e32, - name="loopless_obj_constraint", + model.objective.expression, lb=-1e32, name="loopless_obj_constraint", ) model.add_cons_vars([loopless_obj_constraint]) _add_cycle_free(model, fluxes) diff --git a/src/cobra/flux_analysis/variability.py b/src/cobra/flux_analysis/variability.py index 471fc7004..3b5c52275 100644 --- a/src/cobra/flux_analysis/variability.py +++ b/src/cobra/flux_analysis/variability.py @@ -186,8 +186,7 @@ def flux_variability_analysis( if pfba_factor is not None: if pfba_factor < 1.0: warn( - "The 'pfba_factor' should be larger or equal to 1.", - UserWarning, + "The 'pfba_factor' should be larger or equal to 1.", UserWarning, ) with model: add_pfba(model, fraction_of_optimum=0) @@ -228,11 +227,7 @@ def flux_variability_analysis( def find_blocked_reactions( - model, - reaction_list=None, - zero_cutoff=None, - open_exchanges=False, - processes=None, + model, reaction_list=None, zero_cutoff=None, open_exchanges=False, processes=None, ): """ Find reactions that cannot carry any flux. diff --git a/src/cobra/io/__init__.py b/src/cobra/io/__init__.py index 0837635ce..861fc8cac 100644 --- a/src/cobra/io/__init__.py +++ b/src/cobra/io/__init__.py @@ -3,7 +3,13 @@ from __future__ import absolute_import from cobra.io.dict import model_from_dict, model_to_dict -from cobra.io.json import from_json, load_json_model, save_json_model, to_json +from cobra.io.json import ( + from_json, + load_json_model, + save_json_model, + to_json, + validate_json_model, +) from cobra.io.mat import load_matlab_model, save_matlab_model from cobra.io.sbml import read_sbml_model, write_sbml_model, validate_sbml_model from cobra.io.yaml import from_yaml, load_yaml_model, save_yaml_model, to_yaml diff --git a/src/cobra/io/dict.py b/src/cobra/io/dict.py index 9e60edf88..f94a1ad76 100644 --- a/src/cobra/io/dict.py +++ b/src/cobra/io/dict.py @@ -1,15 +1,24 @@ -# -*- coding: utf-8 -*- - from __future__ import absolute_import from collections import OrderedDict from operator import attrgetter, itemgetter +from typing import Dict import numpy as np from numpy import bool_, float_ from six import iteritems, string_types -from cobra.core import Gene, Metabolite, Model, Reaction +from cobra.core import ( + ConstraintComponent, + Gene, + Group, + Metabolite, + Model, + Reaction, + UserDefinedConstraint, +) +from cobra.core.metadata import MetaData, Notes +from cobra.io.sbml import F_REPLACE from cobra.util.solver import set_objective @@ -57,6 +66,32 @@ "annotation": {}, } +_REQUIRED_GROUP_ATTRIBUTES = ["id", "kind", "members"] +_ORDERED_OPTIONAL_GROUP_KEYS = ["name", "notes", "annotation"] +_OPTIONAL_GROUP_ATTRIBUTES = { + "name": "", + "notes": {}, + "annotation": {}, +} + +_REQUIRED_CONSTRAINT_ATTRIBUTES = ["lower_bound", "upper_bound", "constraint_comps"] +_ORDERED_OPTIONAL_CONSTRAINT_KEYS = ["id", "name", "notes", "annotation"] +_OPTIONAL_CONSTRAINT_ATTRIBUTES = { + "id": None, + "name": None, + "notes": {}, + "annotation": {}, +} + +_REQUIRED_CONSTRAINT_COMP_ATTRIBUTES = ["variable", "coefficient", "variable_type"] +_ORDERED_OPTIONAL_CONSTRAINT_COMP_KEYS = ["id", "name", "notes", "annotation"] +_OPTIONAL_CONSTRAINT_COMP_ATTRIBUTES = { + "id": None, + "name": None, + "notes": {}, + "annotation": {}, +} + _ORDERED_OPTIONAL_MODEL_KEYS = ["name", "compartments", "notes", "annotation"] _OPTIONAL_MODEL_ATTRIBUTES = { "name": None, @@ -80,6 +115,8 @@ def _fix_type(value): return list(value) if isinstance(value, dict): return OrderedDict((key, value[key]) for key in sorted(value)) + if isinstance(value, Notes): + return str(value) # handle legacy Formula type if value.__class__.__name__ == "Formula": return str(value) @@ -93,15 +130,24 @@ def _update_optional(cobra_object, new_dict, optional_attribute_dict, ordered_ke for key in ordered_keys: default = optional_attribute_dict[key] value = getattr(cobra_object, key) + if key == "notes" and ( + value.notes_xhtml is None or len(value.notes_xhtml) == 0 + ): + continue if value is None or value == default: continue + if key == "annotation": + value = value.to_dict() new_dict[key] = _fix_type(value) def metabolite_to_dict(metabolite): new_met = OrderedDict() for key in _REQUIRED_METABOLITE_ATTRIBUTES: - new_met[key] = _fix_type(getattr(metabolite, key)) + if key == "id": + new_met[key] = _fix_type(F_REPLACE["F_SPECIE_REV"](metabolite.id)) + else: + new_met[key] = _fix_type(getattr(metabolite, key)) _update_optional( metabolite, new_met, @@ -114,14 +160,27 @@ def metabolite_to_dict(metabolite): def metabolite_from_dict(metabolite): new_metabolite = Metabolite() for k, v in iteritems(metabolite): - setattr(new_metabolite, k, v) + if k == "annotation": + value = MetaData.from_dict(v) + setattr(new_metabolite, k, value) + elif k == "notes": + notes_data = Notes(v) + setattr(new_metabolite, k, notes_data) + elif k == "id": + id = F_REPLACE["F_SPECIE"](v) + setattr(new_metabolite, k, id) + else: + setattr(new_metabolite, k, v) return new_metabolite def gene_to_dict(gene): new_gene = OrderedDict() for key in _REQUIRED_GENE_ATTRIBUTES: - new_gene[key] = _fix_type(getattr(gene, key)) + if key == "id": + new_gene[key] = _fix_type(F_REPLACE["F_GENE_REV"](gene.id)) + else: + new_gene[key] = _fix_type(getattr(gene, key)) _update_optional( gene, new_gene, _OPTIONAL_GENE_ATTRIBUTES, _ORDERED_OPTIONAL_GENE_KEYS ) @@ -131,7 +190,17 @@ def gene_to_dict(gene): def gene_from_dict(gene): new_gene = Gene(gene["id"]) for k, v in iteritems(gene): - setattr(new_gene, k, v) + if k == "annotation": + value = MetaData.from_dict(v) + setattr(new_gene, k, value) + elif k == "notes": + notes_data = Notes(v) + setattr(new_gene, k, notes_data) + elif k == "id": + id = F_REPLACE["F_GENE"](v) + setattr(new_gene, k, id) + else: + setattr(new_gene, k, v) return new_gene @@ -147,12 +216,15 @@ def reaction_to_dict(reaction): np.isnan(reaction.upper_bound) or np.isinf(reaction.upper_bound) ): new_reaction[key] = str(_fix_type(getattr(reaction, key))) + elif key == "id": + new_reaction[key] = _fix_type(F_REPLACE["F_REACTION_REV"](reaction.id)) else: new_reaction[key] = _fix_type(getattr(reaction, key)) continue mets = OrderedDict() for met in sorted(reaction.metabolites, key=attrgetter("id")): - mets[str(met)] = reaction.metabolites[met] + id = F_REPLACE["F_SPECIE_REV"](str(met)) + mets[id] = reaction.metabolites[met] new_reaction["metabolites"] = mets _update_optional( reaction, @@ -171,18 +243,144 @@ def reaction_from_dict(reaction, model): elif k == "metabolites": new_reaction.add_metabolites( OrderedDict( - (model.metabolites.get_by_id(str(met)), coeff) + ( + model.metabolites.get_by_id(F_REPLACE["F_SPECIE"](str(met))), + coeff, + ) for met, coeff in iteritems(v) ) ) else: - if k == "lower_bound" or k == "upper_bound": + if k == "annotation": + value = MetaData.from_dict(v) + setattr(new_reaction, k, value) + elif k == "notes": + notes_data = Notes(v) + setattr(new_reaction, k, notes_data) + elif k == "lower_bound" or k == "upper_bound": setattr(new_reaction, k, float(v)) + elif k == "id": + id = F_REPLACE["F_REACTION"](v) + setattr(new_reaction, k, id) else: setattr(new_reaction, k, v) return new_reaction +def const_comp_to_dict(component: ConstraintComponent) -> Dict: + new_const_comp = OrderedDict() + for key in _REQUIRED_CONSTRAINT_COMP_ATTRIBUTES: + new_const_comp[key] = _fix_type(getattr(component, key)) + _update_optional( + component, + new_const_comp, + _OPTIONAL_CONSTRAINT_COMP_ATTRIBUTES, + _ORDERED_OPTIONAL_CONSTRAINT_COMP_KEYS, + ) + return new_const_comp + + +def user_defined_const_to_dict(constraint: UserDefinedConstraint) -> Dict: + new_const = OrderedDict() + for key in _REQUIRED_CONSTRAINT_ATTRIBUTES: + if key != "constraint_comps": + new_const[key] = _fix_type(getattr(constraint, key)) + continue + new_const["constraint_comps"] = list( + map(const_comp_to_dict, constraint.constraint_comps) + ) + _update_optional( + constraint, + new_const, + _OPTIONAL_CONSTRAINT_ATTRIBUTES, + _ORDERED_OPTIONAL_CONSTRAINT_KEYS, + ) + return new_const + + +def user_defined_const_from_dict(constraint: Dict) -> UserDefinedConstraint: + new_user_defined_const = UserDefinedConstraint() + for k, v in iteritems(constraint): + if k == "constraint_comps": + for comp in v: + new_comp = ConstraintComponent(**comp) + new_user_defined_const.add_constraint_comps([new_comp]) + elif k == "annotation": + value = MetaData.from_dict(v) + setattr(new_user_defined_const, k, value) + elif k == "notes": + notes_data = Notes(v) + setattr(new_user_defined_const, k, notes_data) + else: + setattr(new_user_defined_const, k, v) + return new_user_defined_const + + +def group_to_dict(group: Group) -> Dict: + new_group = OrderedDict() + for key in _REQUIRED_GROUP_ATTRIBUTES: + if key != "members": + if key == "id": + new_group[key] = _fix_type(F_REPLACE["F_GROUP_REV"](group.id)) + else: + new_group[key] = _fix_type(getattr(group, key)) + continue + members = [] + for member in group.members: + idRef = member.id + if isinstance(member, Reaction): + idRef = F_REPLACE["F_REACTION_REV"](member.id) + elif isinstance(member, Gene): + idRef = F_REPLACE["F_GENE_REV"](member.id) + elif isinstance(member, Metabolite): + idRef = F_REPLACE["F_SPECIE_REV"](member.id) + elif isinstance(member, Group): + idRef = F_REPLACE["F_GROUP_REV"](member.id) + json_member = {"idRef": idRef, "type": type(member).__name__} + members.append(json_member) + new_group["members"] = members + _update_optional( + group, new_group, _OPTIONAL_GROUP_ATTRIBUTES, _ORDERED_OPTIONAL_GROUP_KEYS + ) + return new_group + + +def group_from_dict(group: Dict, model: Model) -> Group: + new_group = Group(group["id"]) + for k, v in iteritems(group): + if k == "annotation": + value = MetaData.from_dict(v) + setattr(new_group, k, value) + elif k == "notes": + notes_data = Notes(v) + setattr(new_group, k, notes_data) + elif k == "members": + cobra_members = [] + for member in group["members"]: + if member["type"] == "Reaction": + cobra_obj = model.reactions.get_by_id( + F_REPLACE["F_REACTION"](member["idRef"]) + ) + cobra_members.append(cobra_obj) + elif member["type"] == "Metabolite": + cobra_obj = model.metabolites.get_by_id( + F_REPLACE["F_SPECIE"](member["idRef"]) + ) + cobra_members.append(cobra_obj) + elif member["type"] == "Gene": + cobra_obj = model.genes.get_by_id( + F_REPLACE["F_GENE"](member["idRef"]) + ) + cobra_members.append(cobra_obj) + new_group.add_members(cobra_members) + elif k == "id": + id = F_REPLACE["F_GROUP"](v) + setattr(new_group, k, id) + else: + setattr(new_group, k, v) + return new_group + + def model_to_dict(model, sort=False): """Convert model to a dict. @@ -210,6 +408,21 @@ def model_to_dict(model, sort=False): obj["metabolites"] = list(map(metabolite_to_dict, model.metabolites)) obj["reactions"] = list(map(reaction_to_dict, model.reactions)) obj["genes"] = list(map(gene_to_dict, model.genes)) + obj["groups"] = list(map(group_to_dict, model.groups)) + obj["user_defined_constraints"] = list( + map(user_defined_const_to_dict, model.user_defined_const) + ) + + # sbml meta info + sbml_info = OrderedDict() + if hasattr(model, "_sbml"): + for key, value in iteritems(model._sbml): + if key == "annotation": + sbml_info[key] = _fix_type(value.to_dict()) + else: + sbml_info[key] = _fix_type(value) + obj["sbml_info"] = sbml_info + obj["id"] = model.id _update_optional( model, obj, _OPTIONAL_MODEL_ATTRIBUTES, _ORDERED_OPTIONAL_MODEL_KEYS @@ -219,6 +432,7 @@ def model_to_dict(model, sort=False): obj["metabolites"].sort(key=get_id) obj["reactions"].sort(key=get_id) obj["genes"].sort(key=get_id) + obj["groups"].sort(key=get_id) return obj @@ -259,11 +473,43 @@ def model_from_dict(obj): rxn for rxn in obj["reactions"] if rxn.get("objective_coefficient", 0) != 0 ] coefficients = { - model.reactions.get_by_id(rxn["id"]): rxn["objective_coefficient"] + model.reactions.get_by_id(F_REPLACE["F_REACTION"](rxn["id"])): rxn[ + "objective_coefficient" + ] for rxn in objective_reactions } + if "groups" in obj: + model.add_groups([group_from_dict(group, model) for group in obj["groups"]]) + if "user_defined_constraints" in obj: + model.add_user_defined_constraints( + [ + user_defined_const_from_dict(cons) + for cons in obj["user_defined_constraints"] + ] + ) set_objective(model, coefficients) + + # sbml meta info + if "sbml_info" in obj: + meta = {} + for k, v in iteritems(obj["sbml_info"]): + if k == "annotation": + value = MetaData.from_dict(v) + meta[k] = value + elif k == "notes": + notes_data = Notes(v) + meta[k] = notes_data + else: + meta[k] = v + model._sbml = meta + for k, v in iteritems(obj): - if k in {"id", "name", "notes", "compartments", "annotation"}: + if k == "annotation": + value = MetaData.from_dict(v) + setattr(model, k, value) + elif k == "notes": + notes_data = Notes(v) + setattr(model, k, notes_data) + elif k in {"id", "name", "notes", "compartments"}: setattr(model, k, v) return model diff --git a/src/cobra/io/json.py b/src/cobra/io/json.py index f4da4f26d..125bfea9f 100644 --- a/src/cobra/io/json.py +++ b/src/cobra/io/json.py @@ -1,9 +1,11 @@ -# -*- coding: utf-8 -*- - -from __future__ import absolute_import +from pathlib import Path +from typing import Dict, List, Union +import jsonschema +from importlib_resources import open_text from six import string_types +from cobra import io as cio from cobra.io.dict import model_from_dict, model_to_dict @@ -16,6 +18,18 @@ JSON_SPEC = "1" +def json_schema_v1() -> Dict: + with open_text(cio, "schema_v1.json") as handle: + schema_v1 = json.load(handle) + return schema_v1 + + +def json_schema_v2() -> Dict: + with open_text(cio, "schema_v2.json") as handle: + schema_v2 = json.load(handle) + return schema_v2 + + def to_json(model, sort=False, **kwargs): """ Return the model as a JSON document. @@ -41,7 +55,7 @@ def to_json(model, sort=False, **kwargs): json.dumps : Base function. """ obj = model_to_dict(model, sort=sort) - obj[u"version"] = JSON_SPEC + obj["version"] = JSON_SPEC return json.dumps(obj, allow_nan=False, **kwargs) @@ -76,7 +90,7 @@ def save_json_model(model, filename, sort=False, pretty=False, **kwargs): ---------- model : cobra.Model The cobra model to represent. - filename : str or file-like + filename : str or file-like or Path File path or descriptor that the JSON representation should be written to. sort : bool, optional @@ -93,7 +107,7 @@ def save_json_model(model, filename, sort=False, pretty=False, **kwargs): json.dump : Base function. """ obj = model_to_dict(model, sort=sort) - obj[u"version"] = JSON_SPEC + obj["version"] = JSON_SPEC if pretty: dump_opts = { @@ -111,7 +125,7 @@ def save_json_model(model, filename, sort=False, pretty=False, **kwargs): } dump_opts.update(**kwargs) - if isinstance(filename, string_types): + if isinstance(filename, (string_types, Path)): with open(filename, "w") as file_handle: json.dump(obj, file_handle, **dump_opts) else: @@ -124,7 +138,7 @@ def load_json_model(filename): Parameters ---------- - filename : str or file-like + filename : str or file-like or Path File path or descriptor that contains the JSON document describing the cobra model. @@ -137,8 +151,51 @@ def load_json_model(filename): -------- from_json : Load from a string. """ - if isinstance(filename, string_types): + if isinstance(filename, (string_types, Path)): with open(filename, "r") as file_handle: return model_from_dict(json.load(file_handle)) else: return model_from_dict(json.load(filename)) + + +def validate_json_model( + filename: Union[str, bytes], json_schema_version: int = 1 +) -> List: + """ + Validate a model in json format against the schema with given version + Parameters + ---------- + filename : str or file-like + File path or descriptor that contains the JSON document describing the + cobra model. + json_schema_version : int {1, 2} + the version of schema to be used for validation. + Currently we have v1 and v2 only and v2 is under development + Returns + ------- + errors : list + The list of errors encountered while validating + """ + + if json_schema_version == 1: + schema = json_schema_v1() + elif json_schema_version == 2: + schema = json_schema_v2() + else: + raise ValueError( + f"Only v1 and v2 of JSON schema are available. JSON " + f"schema v{json_schema_version} is not supported." + ) + + validator = jsonschema.Draft7Validator(schema) + + try: + if isinstance(filename, string_types): + with open(filename, "r") as file_handle: + errors = validator.iter_errors(json.load(file_handle)) + else: + errors = validator.iter_errors(json.load(filename)) + except OSError: + errors = validator.iter_errors(json.loads(filename)) + + return list(errors) diff --git a/src/cobra/io/sbml.py b/src/cobra/io/sbml.py index 1fea29157..1ba49bb38 100644 --- a/src/cobra/io/sbml.py +++ b/src/cobra/io/sbml.py @@ -27,15 +27,12 @@ https://github.com/opencobra/cobrapy/issues/812) """ -from __future__ import absolute_import - -import datetime import logging import os import re -import traceback from collections import defaultdict, namedtuple from copy import deepcopy +from io import StringIO from sys import platform import libsbml @@ -44,16 +41,19 @@ import cobra from cobra.core import Gene, Group, Metabolite, Model, Reaction from cobra.core.gene import parse_gpr +from cobra.core.metadata import ( + Creator, + CVList, + CVTerms, + HistoryDatetime, + MetaData, + Notes, + Qualifier, +) from cobra.manipulation.validate import check_metabolite_compartment_formula from cobra.util.solver import linear_reaction_coefficients, set_objective -try: - from cStringIO import StringIO # Python 2 -except ImportError: - from io import StringIO - - class CobraSBMLError(Exception): """ SBML error class. """ @@ -373,39 +373,6 @@ def _sbml_to_model( cobra_model = Model(model_id) cobra_model.name = model.getName() - # meta information - meta = { - "model.id": model_id, - "level": model.getLevel(), - "version": model.getVersion(), - "packages": [], - } - # History - creators = [] - created = None - if model.isSetModelHistory(): - history = model.getModelHistory() # type: libsbml.ModelHistory - - if history.isSetCreatedDate(): - created = history.getCreatedDate() - - for c in history.getListCreators(): # type: libsbml.ModelCreator - creators.append( - { - "familyName": c.getFamilyName() if c.isSetFamilyName() else None, - "givenName": c.getGivenName() if c.isSetGivenName() else None, - "organisation": c.getOrganisation() - if c.isSetOrganisation() - else None, - "email": c.getEmail() if c.isSetEmail() else None, - } - ) - - meta["creators"] = creators - meta["created"] = created - meta["notes"] = _parse_notes_dict(doc) - meta["annotation"] = _parse_annotations(doc) - info = "<{}> SBML L{}V{}".format(model_id, model.getLevel(), model.getVersion()) packages = {} for k in range(doc.getNumPlugins()): @@ -419,12 +386,22 @@ def _sbml_to_model( "information is not parsed", key, ) - meta["info"] = info - meta["packages"] = packages + + # meta information + meta = { + "model.id": model_id, + "level": model.getLevel(), + "version": model.getVersion(), + "packages": packages, + "notes": _parse_notes_info(doc), + "annotation": _parse_annotations(doc), + "info": info, + } + cobra_model._sbml = meta # notes and annotations - cobra_model.notes = _parse_notes_dict(model) + cobra_model.notes = _parse_notes_info(model) cobra_model.annotation = _parse_annotations(model) # Compartments @@ -450,7 +427,7 @@ def _sbml_to_model( met = Metabolite(sid) met.name = specie.getName() - met.notes = _parse_notes_dict(specie) + met.notes = _parse_notes_info(specie) met.annotation = _parse_annotations(specie) met.compartment = specie.getCompartment() @@ -529,7 +506,7 @@ def _sbml_to_model( if cobra_gene.name is None: cobra_gene.name = gid cobra_gene.annotation = _parse_annotations(gp) - cobra_gene.notes = _parse_notes_dict(gp) + cobra_gene.notes = _parse_notes_info(gp) cobra_model.genes.append(cobra_gene) else: @@ -537,7 +514,7 @@ def _sbml_to_model( cobra_reaction ) in model.getListOfReactions(): # noqa: E501 type: libsbml.Reaction # fallback to notes information - notes = _parse_notes_dict(cobra_reaction) + notes = _parse_notes_info(cobra_reaction) if "GENE ASSOCIATION" in notes: gpr = notes["GENE ASSOCIATION"] elif "GENE_ASSOCIATION" in notes: @@ -610,7 +587,7 @@ def process_association(ass): cobra_reaction = Reaction(rid) cobra_reaction.name = reaction.getName() cobra_reaction.annotation = _parse_annotations(reaction) - cobra_reaction.notes = _parse_notes_dict(reaction) + cobra_reaction.notes = _parse_notes_info(reaction) # set bounds p_ub, p_lb = None, None @@ -862,7 +839,7 @@ def process_association(ass): if group.isSetKind(): cobra_group.kind = group.getKindAsString() cobra_group.annotation = _parse_annotations(group) - cobra_group.notes = _parse_notes_dict(group) + cobra_group.notes = _parse_notes_info(group) cobra_members = [] for member in group.getListOfMembers(): # type: libsbml.Member @@ -1014,7 +991,7 @@ def _model_to_sbml(cobra_model, f_replace=None, units=True): # for parsing annotation corresponding to the model _sbase_annotations(model, cobra_model.annotation) # for parsing notes corresponding to the model - _sbase_notes_dict(model, cobra_model.notes) + _set_notes(model, cobra_model.notes) # Meta information (ModelHistory) related to SBMLDocument if hasattr(cobra_model, "_sbml"): @@ -1022,37 +999,7 @@ def _model_to_sbml(cobra_model, f_replace=None, units=True): if "annotation" in meta: _sbase_annotations(doc, meta["annotation"]) if "notes" in meta: - _sbase_notes_dict(doc, meta["notes"]) - - history = libsbml.ModelHistory() # type: libsbml.ModelHistory - if "created" in meta and meta["created"]: - history.setCreatedDate(meta["created"]) - else: - time = datetime.datetime.now() - timestr = time.strftime("%Y-%m-%dT%H:%M:%S") - date = libsbml.Date(timestr) - _check(history.setCreatedDate(date), "set creation date") - _check(history.setModifiedDate(date), "set modified date") - - if "creators" in meta: - for cobra_creator in meta[ - "creators" - ]: # noqa: E501 type: libsbml.ModelCreator - creator = libsbml.ModelCreator() - if cobra_creator.get("familyName", None): - creator.setFamilyName(cobra_creator["familyName"]) - if cobra_creator.get("givenName", None): - creator.setGivenName(cobra_creator["givenName"]) - if cobra_creator.get("organisation", None): - creator.setOrganisation(cobra_creator["organisation"]) - if cobra_creator.get("email", None): - creator.setEmail(cobra_creator["email"]) - - _check(history.addCreator(creator), "adding creator to ModelHistory.") - - # TODO: Will be implemented as part of - # https://github.com/opencobra/cobrapy/issues/810 - # _check(model.setModelHistory(history), 'set model history') + _set_notes(doc, meta["notes"]) # Units if units: @@ -1119,7 +1066,7 @@ def _model_to_sbml(cobra_model, f_replace=None, units=True): s_fbc.setChemicalFormula(metabolite.formula) _sbase_annotations(specie, metabolite.annotation) - _sbase_notes_dict(specie, metabolite.notes) + _set_notes(specie, metabolite.notes) # Genes for cobra_gene in cobra_model.genes: @@ -1135,7 +1082,7 @@ def _model_to_sbml(cobra_model, f_replace=None, units=True): gp.setLabel(gid) _sbase_annotations(gp, cobra_gene.annotation) - _sbase_notes_dict(gp, cobra_gene.notes) + _set_notes(gp, cobra_gene.notes) # Objective objective = model_fbc.createObjective() # type: libsbml.Objective @@ -1155,7 +1102,7 @@ def _model_to_sbml(cobra_model, f_replace=None, units=True): reaction.setFast(False) reaction.setReversible((cobra_reaction.lower_bound < 0)) _sbase_annotations(reaction, cobra_reaction.annotation) - _sbase_notes_dict(reaction, cobra_reaction.notes) + _set_notes(reaction, cobra_reaction.notes) # stoichiometry for metabolite, stoichiometry in iteritems(cobra_reaction._metabolites): @@ -1251,7 +1198,7 @@ def _model_to_sbml(cobra_model, f_replace=None, units=True): group.setName(cobra_group.name) group.setKind(cobra_group.kind) - _sbase_notes_dict(group, cobra_group.notes) + _set_notes(group, cobra_group.notes) _sbase_annotations(group, cobra_group.annotation) for cobra_member in cobra_group.members: @@ -1405,8 +1352,10 @@ def _check(value, message): # ----------------------------------------------------------------------------- # Notes # ----------------------------------------------------------------------------- -def _parse_notes_dict(sbase): - """Creates dictionary of COBRA notes. + + +def _parse_notes_info(sbase: libsbml.SBase) -> Notes: + """ Creates Notes object. Parameters ---------- @@ -1414,27 +1363,15 @@ def _parse_notes_dict(sbase): Returns ------- - dict of notes + Notes object """ notes = sbase.getNotesString() - if notes and len(notes) > 0: - notes_store = dict() - for match in pattern_notes.finditer(notes): - try: - # Python 2.7 does not allow keywords for split. - # Python 3 can have (":", maxsplit=1) - key, value = match.group("content").split(":", 1) - except ValueError: - LOGGER.debug("Unexpected content format '{}'.", match.group("content")) - continue - notes_store[key.strip()] = value.strip() - return {k: v for k, v in notes_store.items() if len(v) > 0} - else: - return {} + cobra_notes = Notes(notes) + return cobra_notes -def _sbase_notes_dict(sbase, notes): - """Set SBase notes based on dictionary. +def _set_notes(sbase: libsbml.SBase, notes: Notes) -> None: + """Set SBase notes based on the COBRA notes object. Parameters ---------- @@ -1443,70 +1380,62 @@ def _sbase_notes_dict(sbase, notes): notes : notes object notes information from cobra object """ - if notes and len(notes) > 0: - tokens = ( - [''] - + ["

{}: {}

".format(k, v) for (k, v) in notes.items()] - + [""] - ) - _check( - sbase.setNotes("\n".join(tokens)), - "Setting notes on sbase: {}".format(sbase), - ) + if notes.notes_xhtml is None or len(notes.notes_xhtml) == 0: + return + _check( + sbase.setNotes(notes.notes_xhtml), "Setting notes on sbase: {}".format(sbase) + ) # ----------------------------------------------------------------------------- # Annotations # ----------------------------------------------------------------------------- -""" -cobra annotations will be dictionaries of the form: - object.annotation = { - 'provider' : [(qualifier, entity), ...] - } -A concrete example for a metabolite would look like the following - metabolite.annotation = { - 'chebi': [(isVersionOf, "CHEBI:17234), (is, "CHEBI:4167),], - 'kegg.compound': [(is, "C00031")] - } -The providers are hereby MIRIAM registry keys for collections -https://www.ebi.ac.uk/miriam/main/collections -The qualifiers are biomodel qualifiers -https://co.mbine.org/standards/qualifiers - -In the current stage the new annotation format is not completely supported yet. -""" URL_IDENTIFIERS_PATTERN = re.compile(r"^https?://identifiers.org/(.+?)[:/](.+)") -URL_IDENTIFIERS_PREFIX = "https://identifiers.org" -QUALIFIER_TYPES = { - "is": libsbml.BQB_IS, - "hasPart": libsbml.BQB_HAS_PART, - "isPartOf": libsbml.BQB_IS_PART_OF, - "isVersionOf": libsbml.BQB_IS_VERSION_OF, - "hasVersion": libsbml.BQB_HAS_VERSION, - "isHomologTo": libsbml.BQB_IS_HOMOLOG_TO, - "isDescribedBy": libsbml.BQB_IS_DESCRIBED_BY, - "isEncodedBy": libsbml.BQB_IS_ENCODED_BY, - "encodes": libsbml.BQB_ENCODES, - "occursIn": libsbml.BQB_OCCURS_IN, - "hasProperty": libsbml.BQB_HAS_PROPERTY, - "isPropertyOf": libsbml.BQB_IS_PROPERTY_OF, - "hasTaxon": libsbml.BQB_HAS_TAXON, - "unknown": libsbml.BQB_UNKNOWN, - "bqm_is": libsbml.BQM_IS, - "bqm_isDescribedBy": libsbml.BQM_IS_DESCRIBED_BY, - "bqm_isDerivedFrom": libsbml.BQM_IS_DERIVED_FROM, - "bqm_isInstanceOf": libsbml.BQM_IS_INSTANCE_OF, - "bqm_hasInstance": libsbml.BQM_HAS_INSTANCE, - "bqm_unknown": libsbml.BQM_UNKNOWN, -} +def _parse_annotation_info(uri): + """Parses provider and term from given identifiers annotation uri. + Parameters + ---------- + uri : str + uri (identifiers.org url) + Returns + ------- + (provider, identifier) if resolvable, None otherwise + """ + match = URL_IDENTIFIERS_PATTERN.match(uri) + if match: + provider, identifier = match.group(1), match.group(2) + if provider.isupper(): + identifier = "%s:%s" % (provider, identifier) + provider = provider.lower() + else: + LOGGER.warning( + f"{uri} does not conform to " + f"'http(s)://identifiers.org/collection/id' or" + f"'http(s)://identifiers.org/COLLECTION:id" + ) + return None + + return provider, identifier -def _parse_annotations(sbase): + +def _parse_annotations(sbase: libsbml.SBase) -> MetaData: """Parses cobra annotations from a given SBase object. - Annotations are dictionaries with the providers as keys. + The annotation format has been changed. We no longer have + simple dictionaries for storing annotation data. Dedicated + classes for storing CVTerm data, History data and key-value + pair data corresponding to an SBase object have been made. + The metadata classes inside cobra.core directory contains + of them. All the existing issues in old annotation format have + been solved. The new format annotation is completely backward + compatible. It can read models with old annotation format, + can convert old format annotation to new format annotation, + and writes annotation in new format only (for JSON and other + formats). The JSON schema v2 specifies the new format annotation + whereas JSON schema v1 have annotation data defined in old format. Parameters ---------- @@ -1515,17 +1444,14 @@ def _parse_annotations(sbase): Returns ------- - dict (annotation dictionary) - - FIXME: annotation format must be updated (this is a big collection of - fixes) - see: https://github.com/opencobra/cobrapy/issues/684) + MetaData + a metadata object storing COBRA annotation """ - annotation = {} + annotation = MetaData() # SBO term if sbase.isSetSBOTerm(): - # FIXME: correct handling of annotations - annotation["sbo"] = sbase.getSBOTermID() + annotation["sbo"] = [sbase.getSBOTermID()] # RDF annotation cvterms = sbase.getCVTerms() @@ -1533,60 +1459,105 @@ def _parse_annotations(sbase): return annotation for cvterm in cvterms: # type: libsbml.CVTerm + # reading the qualifier + qualifier_type = cvterm.getQualifierType() + if qualifier_type == 0: + mq_type = cvterm.getModelQualifierType() + qualifier = "bqm_" + libsbml.ModelQualifierType_toString(mq_type) + elif qualifier_type == 1: + bq_type = cvterm.getBiologicalQualifierType() + qualifier = "bqb_" + libsbml.BiolQualifierType_toString(bq_type) + else: + qualifier = "unknown_qualifier" + ext_res = {"resources": []} for k in range(cvterm.getNumResources()): - # FIXME: read and store the qualifier - uri = cvterm.getResourceURI(k) - data = _parse_annotation_info(uri) - if data is None: - continue - else: - provider, identifier = data - - if provider in annotation: - if isinstance(annotation[provider], string_types): - annotation[provider] = [annotation[provider]] - # FIXME: use a list - if identifier not in annotation[provider]: - annotation[provider].append(identifier) - else: - # FIXME: always in list - annotation[provider] = identifier + ext_res["resources"].append(uri) + ext_res["nested_data"] = _set_nested_data(cvterm) + new_cvterms = CVTerms({qualifier: CVList([ext_res])}) + annotation.add_cvterms(new_cvterms) + + # history of the component + if sbase.isSetModelHistory(): + model_history = sbase.getModelHistory() # type: libsbml.ModelHistory + + cobra_creators = [] + for index in range(model_history.getNumCreators()): + creator = model_history.getCreator(index) # type: libsbml.Creator + creator_dict = {} + if creator.isSetGivenName(): + creator_dict["first_name"] = creator.getGivenName() + if creator.isSetFamilyName(): + creator_dict["last_name"] = creator.getFamilyName() + if creator.isSetEmail(): + creator_dict["email"] = creator.getEmail() + if creator.isSetOrganisation(): + creator_dict["organization_name"] = creator.getOrganisation() + cobra_creator = Creator.from_data(creator_dict) + cobra_creators.append(cobra_creator) + annotation.history.creators = cobra_creators + + if model_history.isSetCreatedDate(): + date = model_history.getCreatedDate() # type: libsbml.Date + cobra_date = HistoryDatetime( + date.getDateAsString() + ) # type: HistoryDatetime + annotation.history.created_date = cobra_date + + cobra_modified_dates = [] + for index in range(model_history.getNumModifiedDates()): + modified_date = model_history.getModifiedDate(index) + cobra_modified_date = HistoryDatetime(modified_date.getDateAsString()) + cobra_modified_dates.append(cobra_modified_date) + annotation.history.modified_dates = cobra_modified_dates return annotation -def _parse_annotation_info(uri): - """Parses provider and term from given identifiers annotation uri. +def _set_nested_data(cvterm_obj: libsbml.CVTerm) -> CVTerms: + """ Parses the nested data corresponding to a given + libsbml.CVTerm object Parameters ---------- - uri : str - uri (identifiers.org url) + cvterm_obj : libsbml.CVTerm + The CVTerm object from which nested data is to be parsed Returns ------- - (provider, identifier) if resolvable, None otherwise + CVTerms + the parsed nested data of the given CVTerm object """ - match = URL_IDENTIFIERS_PATTERN.match(uri) - if match: - provider, identifier = match.group(1), match.group(2) - if provider.isupper(): - identifier = "%s:%s" % (provider, identifier) - provider = provider.lower() - else: - LOGGER.warning( - "%s does not conform to " - "'http(s)://identifiers.org/collection/id' or" - "'http(s)://identifiers.org/COLLECTION:id", - uri, - ) - return None + num_nested_cvterms = cvterm_obj.getNumNestedCVTerms() + cobra_nested_cvterms = CVTerms() + if num_nested_cvterms == 0: + return cobra_nested_cvterms + + for index in range(num_nested_cvterms): # type libsbml.CVTerm + # reading the qualifier + cvterm = cvterm_obj.getNestedCVTerm(index) + qualifier_type = cvterm.getQualifierType() + if qualifier_type == 0: + mq_type = cvterm.getModelQualifierType() + qualifier = "bqm_" + libsbml.ModelQualifierType_toString(mq_type) + elif qualifier_type == 1: + bq_type = cvterm.getBiologicalQualifierType() + qualifier = "bqb_" + libsbml.BiolQualifierType_toString(bq_type) + else: + qualifier = "unknown_qualifier" - return provider, identifier + ext_res = {"resources": []} + for k in range(cvterm.getNumResources()): + uri = cvterm.getResourceURI(k) + ext_res["resources"].append(uri) + ext_res["nested_data"] = _set_nested_data(cvterm) + new_cvterms = CVTerms({qualifier: CVList([ext_res])}) + cobra_nested_cvterms.add_cvterms(new_cvterms) + + return cobra_nested_cvterms -def _sbase_annotations(sbase, annotation): +def _sbase_annotations(sbase: libsbml.SBase, annotation: MetaData) -> None: """Set SBase annotations based on cobra annotations. Parameters @@ -1596,75 +1567,118 @@ def _sbase_annotations(sbase, annotation): annotation : cobra annotation structure cobra object with annotation information - FIXME: annotation format must be updated - (https://github.com/opencobra/cobrapy/issues/684) """ - if not annotation or len(annotation) == 0: - return - # standardize annotations annotation_data = deepcopy(annotation) - for key, value in annotation_data.items(): - # handling of non-string annotations (e.g. integers) - if isinstance(value, (float, int)): - value = str(value) - if isinstance(value, string_types): - annotation_data[key] = [("is", value)] + if not isinstance(annotation_data, MetaData): + raise TypeError( + f"The annotation object must be " f"of type 'Metadata': {annotation_data}" + ) - for key, value in annotation_data.items(): - for idx, item in enumerate(value): - if isinstance(item, string_types): - value[idx] = ("is", item) + if "sbo" in annotation and annotation["sbo"] != []: + sbo_term = annotation["sbo"] + _check(sbase.setSBOTerm(sbo_term[0]), "Setting SBOTerm: {}".format(sbo_term[0])) # set metaId meta_id = "meta_{}".format(sbase.getId()) sbase.setMetaId(meta_id) - # rdf_items = [] - for provider, data in iteritems(annotation_data): + # set cvterms + for key, value in annotation.cvterms.items(): + qualifier = key + if qualifier.startswith("bqb"): + qualifier_type = libsbml.BIOLOGICAL_QUALIFIER + elif qualifier.startswith("bqm"): + qualifier_type = libsbml.MODEL_QUALIFIER + else: + raise CobraSBMLError("Unsupported qualifier: " "%s" % qualifier) + + for ex_res in value: + cv = libsbml.CVTerm() # type: libsbml.CVTerm + cv.setQualifierType(qualifier_type) + if qualifier_type == libsbml.BIOLOGICAL_QUALIFIER: + cv.setBiologicalQualifierType(Qualifier[qualifier].value) + elif qualifier_type == libsbml.MODEL_QUALIFIER: + cv.setModelQualifierType(Qualifier[qualifier].value - 14) + else: + raise CobraSBMLError(f"Unsupported qualifier: {qualifier}") + for uri in ex_res.resources: + cv.addResource(uri) + + # adding the nested data + if ex_res.nested_data is not None: + _add_nested_data(cv, ex_res.nested_data) + + # finally add the cvterm + _check(sbase.addCVTerm(cv), "Setting cvterm: {}".format(cv)) + + # set history + if not annotation.history.is_empty(): + comp_history = libsbml.ModelHistory() + + for creator in annotation.history.creators: + comp_creator = libsbml.ModelCreator() + comp_creator.setGivenName(creator.first_name) + comp_creator.setFamilyName(creator.last_name) + comp_creator.setEmail(creator.email) + comp_creator.setOrganisation(creator.organization_name) + comp_history.addCreator(comp_creator) + + if annotation.history.created_date.datetime is not None: + date = libsbml.Date(annotation.history.created_date.datetime) + comp_history.setCreatedDate(date) + + for modified_date in annotation.history.modified_dates: + date = libsbml.Date(modified_date.datetime) + comp_history.addModifiedDate(date) + + # finally add the compo_history + _check( + sbase.setModelHistory(comp_history), + "Setting ModelHistory: {}".format(comp_history), + ) - # set SBOTerm - if provider in ["SBO", "sbo"]: - if provider == "SBO": - LOGGER.warning( - "'SBO' provider is deprecated, " "use 'sbo' provider instead" - ) - sbo_term = data[0][1] - _check(sbase.setSBOTerm(sbo_term), "Setting SBOTerm: {}".format(sbo_term)) - - # FIXME: sbo should also be written as CVTerm - continue - - for item in data: - qualifier_str, entity = item[0], item[1] - qualifier = QUALIFIER_TYPES.get(qualifier_str, None) - if qualifier is None: - qualifier = libsbml.BQB_IS - LOGGER.error( - "Qualifier type is not supported on " - "annotation: '{}'".format(qualifier_str) - ) +def _add_nested_data(cvterm: libsbml.CVTerm, nested_data: CVTerms): + """Sets nested data inside a libsbml.CVTerm object. + + Parameters + ---------- + cvterm : libsbml.CVTerm + the cvterm object whose nested data is to be set + nested_data : CVTerms + the nested data to be set. + + """ + for key, value in nested_data.items(): + qualifier = key + if qualifier.startswith("bqb"): qualifier_type = libsbml.BIOLOGICAL_QUALIFIER - if qualifier_str.startswith("bqm_"): - qualifier_type = libsbml.MODEL_QUALIFIER + elif qualifier.startswith("bqm"): + qualifier_type = libsbml.MODEL_QUALIFIER + else: + raise CobraSBMLError(f"Unsupported qualifier: {qualifier}") + for ex_res in value: cv = libsbml.CVTerm() # type: libsbml.CVTerm cv.setQualifierType(qualifier_type) if qualifier_type == libsbml.BIOLOGICAL_QUALIFIER: - cv.setBiologicalQualifierType(qualifier) + cv.setBiologicalQualifierType(Qualifier[qualifier].value) elif qualifier_type == libsbml.MODEL_QUALIFIER: - cv.setModelQualifierType(qualifier) + cv.setModelQualifierType(Qualifier[qualifier].value - 14) else: - raise CobraSBMLError("Unsupported qualifier: " "%s" % qualifier) - resource = "%s/%s/%s" % (URL_IDENTIFIERS_PREFIX, provider, entity) - cv.addResource(resource) - _check( - sbase.addCVTerm(cv), - "Setting cvterm: {}, resource: {}".format(cv, resource), - ) + raise CobraSBMLError(f"Unsupported qualifier: {qualifier}") + for uri in ex_res.resources: + cv.addResource(uri) + + # adding the nested data + if ex_res.nested_data is not None: + _add_nested_data(cv, ex_res.nested_data) + + # finally add the cvterm + _check(cvterm.addNestedCVTerm(cv), "Adding nested cvterm: {}".format(cv)) # ----------------------------------------------------------------------------- @@ -1676,7 +1690,7 @@ def validate_sbml_model( internal_consistency=True, check_units_consistency=False, check_modeling_practice=False, - **kwargs + **kwargs, ): """Validate SBML model and returns the model along with a list of errors. diff --git a/src/cobra/io/schema_v1.json b/src/cobra/io/schema_v1.json index edc9756fb..8fd7cb0a4 100644 --- a/src/cobra/io/schema_v1.json +++ b/src/cobra/io/schema_v1.json @@ -153,5 +153,5 @@ "metabolites", "genes" ], - "additionalProperties": false + "additionalProperties": true } diff --git a/src/cobra/io/schema_v2.json b/src/cobra/io/schema_v2.json new file mode 100644 index 000000000..137158672 --- /dev/null +++ b/src/cobra/io/schema_v2.json @@ -0,0 +1,370 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "COBRA", + "description": "JSON representation of COBRA model", + "definitions": { + "annotation": { + "type": "object", + "properties": { + "sbo": { + "type": "string" + }, + "cvterms": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "object", + "properties": { + "resources": { + "type": "array", + "items": { + "type": "string" + } + }, + "nested_data": { + "$ref": "#/definitions/annotation" + } + } + } + } + }, + "history": { + "type": "object", + "properties": { + "creators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "email": { + "type": "string" + }, + "first_name": { + "type": "string" + }, + "last_name": { + "type": "string" + }, + "organization_name": { + "type": "string" + } + }, + "required": [ + "first_name", + "last_name" + ], + "additionalProperties": false + } + }, + "created_date": { + "type": "string", + "format": "date-time" + }, + "modified_dates": { + "type": "array", + "items": { + "type": "string", + "format": "date-time" + } + } + }, + "required": [ + "creators", + "created_date", + "modified_dates" + ], + "additionalProperties": false + }, + "listofkeyvalue": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[a-zA-Z|_][a-zA-Z0-9_]*$" + }, + "name": { + "type": "string" + }, + "key": { + "type": "string" + }, + "value": { + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "required": [ + "key" + ], + "additionalProperties": false + } + } + } + } + }, + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[a-zA-Z|_][a-zA-Z0-9_]*$" + }, + "name": { + "type": "string" + }, + "version": { + "type": "string", + "default": "1" + }, + "reactions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[a-zA-Z|_][a-zA-Z0-9_]*$" + }, + "name": { + "type": "string" + }, + "metabolites": { + "type": "object", + "patternProperties": { + ".*": { + "type": "number" + } + } + }, + "gene_reaction_rule": { + "type": "string" + }, + "lower_bound": { + "type": "number" + }, + "upper_bound": { + "type": "number" + }, + "objective_coefficient": { + "type": "number", + "default": 0 + }, + "subsystem": { + "type": "string" + }, + "notes": { + "type": "string" + }, + "annotation": { + "$ref": "#/definitions/annotation" + } + }, + "required": [ + "id", + "name", + "metabolites", + "lower_bound", + "upper_bound", + "gene_reaction_rule" + ], + "additionalProperties": false + } + }, + "metabolites": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[a-zA-Z|_][a-zA-Z0-9_]*$" + }, + "name": { + "type": "string" + }, + "compartment": { + "type": "string", + "pattern": "[a-z]{1,2}" + }, + "charge": { + "type": "integer" + }, + "formula": { + "type": "string" + }, + "_bound": { + "type": "number", + "default": 0 + }, + "notes": { + "type": "string" + }, + "annotation": { + "$ref": "#/definitions/annotation" + } + }, + "required": [ + "id", + "name", + "compartment" + ], + "additionalProperties": false + } + }, + "genes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[a-zA-Z|_][a-zA-Z0-9_]*$" + }, + "name": { + "type": "string" + }, + "notes": { + "type": "string" + }, + "annotation": { + "$ref": "#/definitions/annotation" + } + }, + "required": [ + "id", + "name" + ], + "additionalProperties": false + } + }, + "compartments": { + "type": "object", + "patternProperties": { + "[a-z]{1,2}": { + "type": "string" + } + } + }, + "groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[a-zA-Z|_][a-zA-Z0-9_]*$" + }, + "name": { + "type": "string" + }, + "notes": { + "type": "string" + }, + "annotation": { + "$ref": "#/definitions/annotation" + }, + "kind": { + "type": "string", + "enum": ["collection", "classification", "partonomy"] + }, + "members": { + "type": "array", + "items": { + "type": "object", + "properties": { + "idRef": { + "type": "string", + "pattern": "^[a-zA-Z|_][a-zA-Z0-9_]*$" + }, + "type": { + "type": "string" + } + }, + "required": ["idRef", "type"] + } + } + }, + "required": ["kind", "members"] + } + }, + "user_defined_constraints": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[a-zA-Z|_][a-zA-Z0-9_]*$" + }, + "name": { + "type": "string" + }, + "lower_bound": { + "type": "number" + }, + "upper_bound": { + "type": "number" + }, + "constraint_comps": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[a-zA-Z|_][a-zA-Z0-9_]*$" + }, + "name": { + "type": "string" + }, + "coefficient": { + "type": "number" + }, + "variable": { + "type": "string" + }, + "variable_type": { + "type": "string", + "enum": ["linear", "quadratic"] + }, + "notes": { + "type": "string" + }, + "annotation": { + "$ref": "#/definitions/annotation" + } + }, + "required": ["variable"], + "additionalProperties": false + } + }, + "notes": { + "type": "string" + }, + "annotation": { + "$ref": "#/definitions/annotation" + } + }, + "required": ["lower_bound", "upper_bound", "constraint_comps"], + "additionalProperties": false + } + }, + "notes": { + "type": "string" + }, + "annotation": { + "$ref": "#/definitions/annotation" + } + }, + "required": [ + "id", + "reactions", + "metabolites", + "genes" + ], + "additionalProperties": true +} diff --git a/src/cobra/manipulation/annotate.py b/src/cobra/manipulation/annotate.py index aef3f87b3..d0ead3d36 100644 --- a/src/cobra/manipulation/annotate.py +++ b/src/cobra/manipulation/annotate.py @@ -14,13 +14,13 @@ def add_SBO(model): """ for r in model.reactions: # don't annotate already annotated reactions - if r.annotation.get("sbo"): + if len(r.annotation.get("sbo")) != 0: continue # only doing exchanges if len(r.metabolites) != 1: continue met_id = list(r._metabolites)[0].id if r.id.startswith("EX_") and r.id == "EX_" + met_id: - r.annotation["sbo"] = "SBO:0000627" + r.annotation["sbo"] = ["SBO:0000627"] elif r.id.startswith("DM_") and r.id == "DM_" + met_id: - r.annotation["sbo"] = "SBO:0000628" + r.annotation["sbo"] = ["SBO:0000628"] diff --git a/src/cobra/manipulation/validate.py b/src/cobra/manipulation/validate.py index 6c5bd972e..bfec46e09 100644 --- a/src/cobra/manipulation/validate.py +++ b/src/cobra/manipulation/validate.py @@ -15,7 +15,12 @@ def check_mass_balance(model): unbalanced = {} for reaction in model.reactions: - if reaction.annotation.get("sbo") not in NOT_MASS_BALANCED_TERMS: + sbo = reaction.annotation["sbo"] + if len(sbo) == 0: + sbo = None + else: + sbo = sbo[0] + if sbo not in NOT_MASS_BALANCED_TERMS: balance = reaction.check_mass_balance() if balance: unbalanced[reaction] = balance diff --git a/src/cobra/medium/boundary_types.py b/src/cobra/medium/boundary_types.py index 2c7d0e7d9..4ce054d89 100644 --- a/src/cobra/medium/boundary_types.py +++ b/src/cobra/medium/boundary_types.py @@ -113,9 +113,9 @@ def is_boundary_type(reaction, boundary_type, external_compartment): """ # Check if the reaction has an annotation. Annotations dominate everything. sbo_term = reaction.annotation.get("sbo", "") - if isinstance(sbo_term, list): + if isinstance(sbo_term, list) and len(sbo_term) != 0: sbo_term = sbo_term[0] - sbo_term = sbo_term.upper() + sbo_term = sbo_term.upper() if sbo_term == sbo_terms[boundary_type]: return True diff --git a/src/cobra/sampling/achr.py b/src/cobra/sampling/achr.py index 616a81863..6baa7c00b 100644 --- a/src/cobra/sampling/achr.py +++ b/src/cobra/sampling/achr.py @@ -154,8 +154,7 @@ def sample(self, n, fluxes=True): names = [r.id for r in self.model.reactions] return pandas.DataFrame( - samples[:, self.fwd_idx] - samples[:, self.rev_idx], - columns=names, + samples[:, self.fwd_idx] - samples[:, self.rev_idx], columns=names, ) else: names = [v.name for v in self.model.variables] diff --git a/src/cobra/sampling/hr_sampler.py b/src/cobra/sampling/hr_sampler.py index 70d930650..c71b9c325 100644 --- a/src/cobra/sampling/hr_sampler.py +++ b/src/cobra/sampling/hr_sampler.py @@ -285,9 +285,7 @@ def generate_fva_warmup(self): primals = self.model.solver.primal_values sol = [primals[v.name] for v in self.model.variables] - self.warmup[ - self.n_warmup, - ] = sol + self.warmup[self.n_warmup,] = sol self.n_warmup += 1 # Reset objective @@ -393,33 +391,13 @@ def _bounds_dist(self, p): """Get the lower and upper bound distances. Negative is bad.""" prob = self.problem - lb_dist = ( - p - - prob.variable_bounds[ - 0, - ] - ).min() - ub_dist = ( - prob.variable_bounds[ - 1, - ] - - p - ).min() + lb_dist = (p - prob.variable_bounds[0,]).min() + ub_dist = (prob.variable_bounds[1,] - p).min() if prob.bounds.shape[0] > 0: const = prob.inequalities.dot(p) - const_lb_dist = ( - const - - prob.bounds[ - 0, - ] - ).min() - const_ub_dist = ( - prob.bounds[ - 1, - ] - - const - ).min() + const_lb_dist = (const - prob.bounds[0,]).min() + const_ub_dist = (prob.bounds[1,] - const).min() lb_dist = min(lb_dist, const_lb_dist) ub_dist = min(ub_dist, const_ub_dist) @@ -508,39 +486,13 @@ def validate(self, samples): ) feasibility = np.abs(S.dot(samples.T).T - b).max(axis=1) - lb_error = ( - samples - - bounds[ - 0, - ] - ).min(axis=1) - ub_error = ( - bounds[ - 1, - ] - - samples - ).min(axis=1) + lb_error = (samples - bounds[0,]).min(axis=1) + ub_error = (bounds[1,] - samples).min(axis=1) if samples.shape[1] == len(self.model.variables) and prob.inequalities.shape[0]: consts = prob.inequalities.dot(samples.T) - lb_error = np.minimum( - lb_error, - ( - consts - - prob.bounds[ - 0, - ] - ).min(axis=1), - ) - ub_error = np.minimum( - ub_error, - ( - prob.bounds[ - 1, - ] - - consts - ).min(axis=1), - ) + lb_error = np.minimum(lb_error, (consts - prob.bounds[0,]).min(axis=1),) + ub_error = np.minimum(ub_error, (prob.bounds[1,] - consts).min(axis=1),) valid = ( (feasibility < self.feasibility_tol) diff --git a/src/cobra/sampling/optgp.py b/src/cobra/sampling/optgp.py index b34450a93..bd5a07e11 100644 --- a/src/cobra/sampling/optgp.py +++ b/src/cobra/sampling/optgp.py @@ -234,8 +234,7 @@ def sample(self, n, fluxes=True): names = [r.id for r in self.model.reactions] return pandas.DataFrame( - chains[:, self.fwd_idx] - chains[:, self.rev_idx], - columns=names, + chains[:, self.fwd_idx] - chains[:, self.rev_idx], columns=names, ) else: names = [v.name for v in self.model.variables] diff --git a/src/cobra/summary/metabolite_summary.py b/src/cobra/summary/metabolite_summary.py index f9fdef4ac..4bc30db1c 100644 --- a/src/cobra/summary/metabolite_summary.py +++ b/src/cobra/summary/metabolite_summary.py @@ -128,11 +128,7 @@ def _generate( # Create the basic flux table. flux = pd.DataFrame( data=[ - ( - r.id, - solution[r.id], - r.get_coefficient(self._metabolite.id), - ) + (r.id, solution[r.id], r.get_coefficient(self._metabolite.id),) for r in self._reactions ], columns=["reaction", "flux", "factor"], @@ -398,13 +394,11 @@ def to_html( metabolite = self._metabolite.id production = self._html_table( - self._display_flux(self.producing_flux, names, threshold), - float_format, + self._display_flux(self.producing_flux, names, threshold), float_format, ) consumption = self._html_table( - self._display_flux(self.consuming_flux, names, threshold), - float_format, + self._display_flux(self.consuming_flux, names, threshold), float_format, ) return ( diff --git a/src/cobra/summary/model_summary.py b/src/cobra/summary/model_summary.py index 832fe6f15..c35b72320 100644 --- a/src/cobra/summary/model_summary.py +++ b/src/cobra/summary/model_summary.py @@ -118,9 +118,7 @@ def _generate( if isinstance(fva, float): logger.info("Performing flux variability analysis.") fva = flux_variability_analysis( - model=model, - reaction_list=model.boundary, - fraction_of_optimum=fva, + model=model, reaction_list=model.boundary, fraction_of_optimum=fva, ) if coefficients: self._objective: Dict["Reaction", float] = { diff --git a/src/cobra/summary/reaction_summary.py b/src/cobra/summary/reaction_summary.py index a8e7f20ba..45a01507d 100644 --- a/src/cobra/summary/reaction_summary.py +++ b/src/cobra/summary/reaction_summary.py @@ -107,24 +107,17 @@ def _generate( if isinstance(fva, float): logger.info("Performing flux variability analysis.") fva = flux_variability_analysis( - model, - reaction_list=[self._reaction], - fraction_of_optimum=fva, + model, reaction_list=[self._reaction], fraction_of_optimum=fva, ) # Create the basic flux table. self._flux = pd.DataFrame( - data={"flux": [solution[self._reaction.id]]}, - index=[self._reaction.id], + data={"flux": [solution[self._reaction.id]]}, index=[self._reaction.id], ) if fva is not None: self._flux = self._flux.join(fva) - def _string_flux( - self, - threshold: float, - float_format: str, - ) -> str: + def _string_flux(self, threshold: float, float_format: str,) -> str: """ Transform a flux data frame to a string. diff --git a/src/cobra/summary/summary.py b/src/cobra/summary/summary.py index e7403b051..f975a9873 100644 --- a/src/cobra/summary/summary.py +++ b/src/cobra/summary/summary.py @@ -27,10 +27,7 @@ class Summary(ABC): """ - def __init__( - self, - **kwargs, - ) -> None: + def __init__(self, **kwargs,) -> None: """ Initialize a summary. diff --git a/src/cobra/test/data/cvterms_alternative.json b/src/cobra/test/data/cvterms_alternative.json new file mode 100644 index 000000000..c6a154083 --- /dev/null +++ b/src/cobra/test/data/cvterms_alternative.json @@ -0,0 +1,26 @@ +{ + "bqb_hasVersion": [ + { + "resources": [ + "https://identifiers.org/chebi/CHEBI:17345", + "https://identifiers.org/chebi/CHEBI:17552", + "https://identifiers.org/chebi/CHEBI:17627" + ] + }, + { + "resources": [ + "https://identifiers.org/kegg.compound/C00035", + "https://identifiers.org/kegg.compound/C00044", + "https://identifiers.org/kegg.compound/C00144" + ] + } + ], + "bqb_isDescribedBy": [ + { + "resources": [ + "https://identifiers.org/uniprot/Q9UQM7", + "https://identifiers.org/uniprot/Q13554" + ] + } + ] +} diff --git a/src/cobra/test/data/cvterms_nested.json b/src/cobra/test/data/cvterms_nested.json new file mode 100644 index 000000000..ba62ee764 --- /dev/null +++ b/src/cobra/test/data/cvterms_nested.json @@ -0,0 +1,30 @@ +{ + "bqb_hasPart": [ + { + "resources": [ + "https://identifiers.org/uniprot/P69905", + "https://identifiers.org/uniprot/P68871", + "https://identifiers.org/kegg.compound/C00032" + ] + }, + { + "resources": [ + "https://identifiers.org/uniprot/P69905", + "https://www.uniprot.org/uniprot/P68871", + "https://identifiers.org/chebi/CHEBI:17627" + ], + "bqb_isDescribedBy": [ + { + "resources": [ + "https://identifiers.org/pubmed/1111111" + ] + }, + { + "resources": [ + "https://identifiers.org/eco/000000" + ] + } + ] + } + ] +} diff --git a/src/cobra/test/data/e_coli_core.json b/src/cobra/test/data/e_coli_core.json new file mode 100644 index 000000000..39db77321 --- /dev/null +++ b/src/cobra/test/data/e_coli_core.json @@ -0,0 +1,14786 @@ +{ +"metabolites":[ +{ +"id":"glc__D_e", +"name":"D-Glucose", +"compartment":"e", +"charge":0, +"formula":"C6H12O6", +"notes":{ +"original_bigg_ids":[ +"glc_D_e" +] +}, +"annotation":{ +"bigg.metabolite":[ +"glc__D" +], +"biocyc":[ +"META:Glucopyranose" +], +"chebi":[ +"CHEBI:12965", +"CHEBI:20999", +"CHEBI:4167", +"CHEBI:17634" +], +"hmdb":[ +"HMDB00122", +"HMDB06564" +], +"inchi_key":[ +"WQZGKKKJIJFFOK-GASJEMHNSA-N" +], +"kegg.compound":[ +"C00031" +], +"kegg.drug":[ +"D00009" +], +"metanetx.chemical":[ +"MNXM41" +], +"sabiork":[ +"1406", +"1407" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd26821", +"cpd00027" +] +} +}, +{ +"id":"gln__L_c", +"name":"L-Glutamine", +"compartment":"c", +"charge":0, +"formula":"C5H10N2O3", +"notes":{ +"original_bigg_ids":[ +"gln_L_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"gln__L" +], +"biocyc":[ +"META:GLN" +], +"chebi":[ +"CHEBI:42943", +"CHEBI:42899", +"CHEBI:32679", +"CHEBI:32678", +"CHEBI:58359", +"CHEBI:28300", +"CHEBI:42812", +"CHEBI:13110", +"CHEBI:18050", +"CHEBI:32666", +"CHEBI:6227", +"CHEBI:32665", +"CHEBI:21308", +"CHEBI:42814", +"CHEBI:5432", +"CHEBI:24316" +], +"hmdb":[ +"HMDB00641" +], +"inchi_key":[ +"ZDXPYRJPNDTMRX-VKHMYHEASA-N" +], +"kegg.compound":[ +"C00064", +"C00303" +], +"kegg.drug":[ +"D00015" +], +"metanetx.chemical":[ +"MNXM37" +], +"reactome.compound":[ +"113522", +"212615", +"29472" +], +"sabiork":[ +"2011", +"74" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00253", +"cpd00053" +] +} +}, +{ +"id":"gln__L_e", +"name":"L-Glutamine", +"compartment":"e", +"charge":0, +"formula":"C5H10N2O3", +"notes":{ +"original_bigg_ids":[ +"gln_L_e" +] +}, +"annotation":{ +"bigg.metabolite":[ +"gln__L" +], +"biocyc":[ +"META:GLN" +], +"chebi":[ +"CHEBI:42943", +"CHEBI:42899", +"CHEBI:32679", +"CHEBI:32678", +"CHEBI:58359", +"CHEBI:28300", +"CHEBI:42812", +"CHEBI:13110", +"CHEBI:18050", +"CHEBI:32666", +"CHEBI:6227", +"CHEBI:32665", +"CHEBI:21308", +"CHEBI:42814", +"CHEBI:5432", +"CHEBI:24316" +], +"hmdb":[ +"HMDB00641" +], +"inchi_key":[ +"ZDXPYRJPNDTMRX-VKHMYHEASA-N" +], +"kegg.compound":[ +"C00064", +"C00303" +], +"kegg.drug":[ +"D00015" +], +"metanetx.chemical":[ +"MNXM37" +], +"reactome.compound":[ +"113522", +"212615", +"29472" +], +"sabiork":[ +"2011", +"74" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00253", +"cpd00053" +] +} +}, +{ +"id":"glu__L_c", +"name":"L-Glutamate", +"compartment":"c", +"charge":-1, +"formula":"C5H8NO4", +"notes":{ +"original_bigg_ids":[ +"glu_L_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"glu__L" +], +"biocyc":[ +"META:Glutamates", +"META:GLT" +], +"chebi":[ +"CHEBI:76051", +"CHEBI:21301", +"CHEBI:29985", +"CHEBI:42825", +"CHEBI:29987", +"CHEBI:18237", +"CHEBI:24314", +"CHEBI:16015", +"CHEBI:13107", +"CHEBI:5431", +"CHEBI:21304", +"CHEBI:6224", +"CHEBI:14321", +"CHEBI:29988" +], +"hmdb":[ +"HMDB00148", +"HMDB60475" +], +"inchi_key":[ +"WHUUTDBJXJRKMK-VKHMYHEASA-M" +], +"kegg.compound":[ +"C00025", +"C00302" +], +"kegg.drug":[ +"D00007", +"D04341" +], +"metanetx.chemical":[ +"MNXM89557" +], +"reactome.compound":[ +"428614", +"29404", +"113552", +"210382" +], +"sabiork":[ +"73", +"2010" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd27177", +"cpd00023", +"cpd19002" +] +} +}, +{ +"id":"glu__L_e", +"name":"L-Glutamate", +"compartment":"e", +"charge":-1, +"formula":"C5H8NO4", +"notes":{ +"original_bigg_ids":[ +"glu_L_e" +] +}, +"annotation":{ +"bigg.metabolite":[ +"glu__L" +], +"biocyc":[ +"META:Glutamates", +"META:GLT" +], +"chebi":[ +"CHEBI:76051", +"CHEBI:21301", +"CHEBI:29985", +"CHEBI:42825", +"CHEBI:29987", +"CHEBI:18237", +"CHEBI:24314", +"CHEBI:16015", +"CHEBI:13107", +"CHEBI:5431", +"CHEBI:21304", +"CHEBI:6224", +"CHEBI:14321", +"CHEBI:29988" +], +"hmdb":[ +"HMDB00148", +"HMDB60475" +], +"inchi_key":[ +"WHUUTDBJXJRKMK-VKHMYHEASA-M" +], +"kegg.compound":[ +"C00025", +"C00302" +], +"kegg.drug":[ +"D00007", +"D04341" +], +"metanetx.chemical":[ +"MNXM89557" +], +"reactome.compound":[ +"428614", +"29404", +"113552", +"210382" +], +"sabiork":[ +"73", +"2010" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd27177", +"cpd00023", +"cpd19002" +] +} +}, +{ +"id":"glx_c", +"name":"Glyoxylate", +"compartment":"c", +"charge":-1, +"formula":"C2H1O3", +"notes":{ +"original_bigg_ids":[ +"glx_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"glx" +], +"biocyc":[ +"META:GLYOX" +], +"chebi":[ +"CHEBI:24420", +"CHEBI:36655", +"CHEBI:14368", +"CHEBI:24421", +"CHEBI:42767", +"CHEBI:16891", +"CHEBI:35977", +"CHEBI:5509" +], +"envipath":[ +"32de3cf4-e3e6-4168-956e-32fa5ddb0ce1/compound/cdffdb1a-3322-4cc1-9171-d857bfaa198a", +"4fd7f3e0-dd25-43ac-9453-dda3e52396e4/compound/aecbda66-6e98-4c11-aeaf-6a072f4f963c", +"5882df9c-dae1-4d80-a40e-db4724271456/compound/9dc0aa3b-447a-4b5d-8157-501b036f9626", +"650babc9-9d68-4b73-9332-11972ca26f7b/compound/43b74f4f-bc8a-4b8b-b587-c97d8e9eed48" +], +"hmdb":[ +"HMDB00119" +], +"inchi_key":[ +"HHLFWLYXYJOTON-UHFFFAOYSA-M" +], +"kegg.compound":[ +"C00048" +], +"metanetx.chemical":[ +"MNXM69" +], +"reactome.compound":[ +"904849", +"389678" +], +"sabiork":[ +"1838" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00040" +] +} +}, +{ +"id":"h2o_c", +"name":"H2O H2O", +"compartment":"c", +"charge":0, +"formula":"H2O", +"notes":{ +"original_bigg_ids":[ +"h2o_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"h2o" +], +"biocyc":[ +"META:CPD-15815", +"META:OXONIUM", +"META:HYDROXYL-GROUP", +"META:WATER", +"META:OH" +], +"chebi":[ +"CHEBI:13352", +"CHEBI:30490", +"CHEBI:43228", +"CHEBI:33813", +"CHEBI:44292", +"CHEBI:44641", +"CHEBI:27313", +"CHEBI:42043", +"CHEBI:44819", +"CHEBI:29356", +"CHEBI:5594", +"CHEBI:10743", +"CHEBI:15377", +"CHEBI:42857", +"CHEBI:13365", +"CHEBI:29412", +"CHEBI:16234", +"CHEBI:13419", +"CHEBI:5585", +"CHEBI:44701" +], +"envipath":[ +"650babc9-9d68-4b73-9332-11972ca26f7b/compound/799908db-b8c9-4982-86cb-1f225e2ad08c", +"650babc9-9d68-4b73-9332-11972ca26f7b/compound/e7f34a8e-cded-4793-b6d5-792335b38636", +"5882df9c-dae1-4d80-a40e-db4724271456/compound/969d0227-3069-4e44-9525-7ae7bad84170" +], +"hmdb":[ +"HMDB02111", +"HMDB01039" +], +"inchi_key":[ +"XLYOFNOQVPJJNP-UHFFFAOYSA-N" +], +"kegg.compound":[ +"C00001", +"C01328" +], +"kegg.drug":[ +"D00001", +"D06322" +], +"metanetx.chemical":[ +"MNXM2" +], +"reactome.compound":[ +"113521", +"141343", +"2022884", +"5278291", +"29356", +"189422", +"5668574", +"5693747", +"109276", +"113519", +"1605715", +"8851517", +"113518", +"351603" +], +"sabiork":[ +"40" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd27222", +"cpd00001", +"cpd15275" +] +} +}, +{ +"id":"h2o_e", +"name":"H2O H2O", +"compartment":"e", +"charge":0, +"formula":"H2O", +"notes":{ +"original_bigg_ids":[ +"h2o_e" +] +}, +"annotation":{ +"bigg.metabolite":[ +"h2o" +], +"biocyc":[ +"META:CPD-15815", +"META:OXONIUM", +"META:HYDROXYL-GROUP", +"META:WATER", +"META:OH" +], +"chebi":[ +"CHEBI:13352", +"CHEBI:30490", +"CHEBI:43228", +"CHEBI:33813", +"CHEBI:44292", +"CHEBI:44641", +"CHEBI:27313", +"CHEBI:42043", +"CHEBI:44819", +"CHEBI:29356", +"CHEBI:5594", +"CHEBI:10743", +"CHEBI:15377", +"CHEBI:42857", +"CHEBI:13365", +"CHEBI:29412", +"CHEBI:16234", +"CHEBI:13419", +"CHEBI:5585", +"CHEBI:44701" +], +"envipath":[ +"650babc9-9d68-4b73-9332-11972ca26f7b/compound/799908db-b8c9-4982-86cb-1f225e2ad08c", +"650babc9-9d68-4b73-9332-11972ca26f7b/compound/e7f34a8e-cded-4793-b6d5-792335b38636", +"5882df9c-dae1-4d80-a40e-db4724271456/compound/969d0227-3069-4e44-9525-7ae7bad84170" +], +"hmdb":[ +"HMDB02111", +"HMDB01039" +], +"inchi_key":[ +"XLYOFNOQVPJJNP-UHFFFAOYSA-N" +], +"kegg.compound":[ +"C00001", +"C01328" +], +"kegg.drug":[ +"D00001", +"D06322" +], +"metanetx.chemical":[ +"MNXM2" +], +"reactome.compound":[ +"113521", +"141343", +"2022884", +"5278291", +"29356", +"189422", +"5668574", +"5693747", +"109276", +"113519", +"1605715", +"8851517", +"113518", +"351603" +], +"sabiork":[ +"40" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd27222", +"cpd00001", +"cpd15275" +] +} +}, +{ +"id":"h_c", +"name":"H+", +"compartment":"c", +"charge":1, +"formula":"H", +"notes":{ +"original_bigg_ids":[ +"h_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"h" +], +"biocyc":[ +"META:PROTON" +], +"chebi":[ +"CHEBI:5584", +"CHEBI:13357", +"CHEBI:15378", +"CHEBI:10744" +], +"hmdb":[ +"HMDB59597" +], +"inchi_key":[ +"GPRLSGONYQIRFK-UHFFFAOYSA-N" +], +"kegg.compound":[ +"C00080" +], +"metanetx.chemical":[ +"MNXM1" +], +"reactome.compound":[ +"2000349", +"425978", +"74722", +"428040", +"427899", +"428548", +"156540", +"70106", +"425969", +"1132304", +"5668577", +"1470067", +"163953", +"193465", +"113529", +"351626", +"425999", +"194688", +"374900", +"2872447", +"372511" +], +"sabiork":[ +"39" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00067" +] +} +}, +{ +"id":"h_e", +"name":"H+", +"compartment":"e", +"charge":1, +"formula":"H", +"notes":{ +"original_bigg_ids":[ +"h_e" +] +}, +"annotation":{ +"bigg.metabolite":[ +"h" +], +"biocyc":[ +"META:PROTON" +], +"chebi":[ +"CHEBI:5584", +"CHEBI:13357", +"CHEBI:15378", +"CHEBI:10744" +], +"hmdb":[ +"HMDB59597" +], +"inchi_key":[ +"GPRLSGONYQIRFK-UHFFFAOYSA-N" +], +"kegg.compound":[ +"C00080" +], +"metanetx.chemical":[ +"MNXM1" +], +"reactome.compound":[ +"2000349", +"425978", +"74722", +"428040", +"427899", +"428548", +"156540", +"70106", +"425969", +"1132304", +"5668577", +"1470067", +"163953", +"193465", +"113529", +"351626", +"425999", +"194688", +"374900", +"2872447", +"372511" +], +"sabiork":[ +"39" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00067" +] +} +}, +{ +"id":"icit_c", +"name":"Isocitrate", +"compartment":"c", +"charge":-3, +"formula":"C6H5O7", +"notes":{ +"original_bigg_ids":[ +"icit_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"icit" +], +"chebi":[ +"CHEBI:16087", +"CHEBI:36454", +"CHEBI:5998", +"CHEBI:24886", +"CHEBI:36453", +"CHEBI:14465", +"CHEBI:30887", +"CHEBI:24884" +], +"hmdb":[ +"HMDB00193" +], +"inchi_key":[ +"ODBLHEXUDAPZAU-UHFFFAOYSA-K" +], +"kegg.compound":[ +"C00311" +], +"metanetx.chemical":[ +"MNXM89661" +], +"sabiork":[ +"2013" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00260" +] +} +}, +{ +"id":"lac__D_c", +"name":"D-Lactate", +"compartment":"c", +"charge":-1, +"formula":"C3H5O3", +"notes":{ +"original_bigg_ids":[ +"lac_D_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"lac__D" +], +"biocyc":[ +"META:D-LACTATE" +], +"chebi":[ +"CHEBI:16004", +"CHEBI:341", +"CHEBI:18684", +"CHEBI:43701", +"CHEBI:11001", +"CHEBI:42111", +"CHEBI:42105" +], +"hmdb":[ +"HMDB01311", +"HMDB00171" +], +"inchi_key":[ +"JVTAAEKCZFNVCJ-UWTATZPHSA-M" +], +"kegg.compound":[ +"C00256" +], +"metanetx.chemical":[ +"MNXM285" +], +"sabiork":[ +"1997", +"2284" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00221" +] +} +}, +{ +"id":"lac__D_e", +"name":"D-Lactate", +"compartment":"e", +"charge":-1, +"formula":"C3H5O3", +"notes":{ +"original_bigg_ids":[ +"lac_D_e" +] +}, +"annotation":{ +"bigg.metabolite":[ +"lac__D" +], +"biocyc":[ +"META:D-LACTATE" +], +"chebi":[ +"CHEBI:16004", +"CHEBI:341", +"CHEBI:18684", +"CHEBI:43701", +"CHEBI:11001", +"CHEBI:42111", +"CHEBI:42105" +], +"hmdb":[ +"HMDB01311", +"HMDB00171" +], +"inchi_key":[ +"JVTAAEKCZFNVCJ-UWTATZPHSA-M" +], +"kegg.compound":[ +"C00256" +], +"metanetx.chemical":[ +"MNXM285" +], +"sabiork":[ +"1997", +"2284" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00221" +] +} +}, +{ +"id":"mal__L_c", +"name":"L-Malate", +"compartment":"c", +"charge":-2, +"formula":"C4H4O5", +"notes":{ +"original_bigg_ids":[ +"mal_L_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"mal__L" +], +"biocyc":[ +"META:MAL" +], +"chebi":[ +"CHEBI:15589", +"CHEBI:30797", +"CHEBI:423", +"CHEBI:18784", +"CHEBI:18785", +"CHEBI:13140", +"CHEBI:11066" +], +"hmdb":[ +"HMDB00156" +], +"inchi_key":[ +"BJEPYKJPYRNKOW-REOHCLBHSA-L" +], +"kegg.compound":[ +"C00149" +], +"metanetx.chemical":[ +"MNXM98" +], +"reactome.compound":[ +"198498", +"113544" +], +"sabiork":[ +"1918" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00130" +] +} +}, +{ +"id":"mal__L_e", +"name":"L-Malate", +"compartment":"e", +"charge":-2, +"formula":"C4H4O5", +"notes":{ +"original_bigg_ids":[ +"mal_L_e" +] +}, +"annotation":{ +"bigg.metabolite":[ +"mal__L" +], +"biocyc":[ +"META:MAL" +], +"chebi":[ +"CHEBI:15589", +"CHEBI:30797", +"CHEBI:423", +"CHEBI:18784", +"CHEBI:18785", +"CHEBI:13140", +"CHEBI:11066" +], +"hmdb":[ +"HMDB00156" +], +"inchi_key":[ +"BJEPYKJPYRNKOW-REOHCLBHSA-L" +], +"kegg.compound":[ +"C00149" +], +"metanetx.chemical":[ +"MNXM98" +], +"reactome.compound":[ +"198498", +"113544" +], +"sabiork":[ +"1918" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00130" +] +} +}, +{ +"id":"nad_c", +"name":"Nicotinamide adenine dinucleotide", +"compartment":"c", +"charge":-1, +"formula":"C21H26N7O14P2", +"notes":{ +"original_bigg_ids":[ +"nad_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"nad" +], +"biocyc":[ +"META:NAD" +], +"chebi":[ +"CHEBI:7422", +"CHEBI:44215", +"CHEBI:13394", +"CHEBI:21901", +"CHEBI:57540", +"CHEBI:15846", +"CHEBI:44281", +"CHEBI:44214", +"CHEBI:13393", +"CHEBI:29867" +], +"hmdb":[ +"HMDB00902" +], +"inchi_key":[ +"BAWFJGJZGIEFAR-NNYOXOHSSA-M" +], +"kegg.compound":[ +"C00003" +], +"kegg.drug":[ +"D00002" +], +"metanetx.chemical":[ +"MNXM8" +], +"reactome.compound":[ +"352330", +"192307", +"194653", +"113526", +"29360" +], +"sabiork":[ +"37" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00003" +] +} +}, +{ +"id":"nadh_c", +"name":"Nicotinamide adenine dinucleotide - reduced", +"compartment":"c", +"charge":-2, +"formula":"C21H27N7O14P2", +"notes":{ +"original_bigg_ids":[ +"nadh_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"nadh" +], +"biocyc":[ +"META:NADH" +], +"chebi":[ +"CHEBI:13395", +"CHEBI:21902", +"CHEBI:7423", +"CHEBI:44216", +"CHEBI:57945", +"CHEBI:16908", +"CHEBI:13396" +], +"hmdb":[ +"HMDB01487" +], +"inchi_key":[ +"BOPGDPNILDQYTO-NNYOXOHSSA-L" +], +"kegg.compound":[ +"C00004" +], +"metanetx.chemical":[ +"MNXM10" +], +"reactome.compound":[ +"192305", +"73473", +"29362", +"194697" +], +"sabiork":[ +"38" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00004" +] +} +}, +{ +"id":"nadp_c", +"name":"Nicotinamide adenine dinucleotide phosphate", +"compartment":"c", +"charge":-3, +"formula":"C21H25N7O17P3", +"notes":{ +"original_bigg_ids":[ +"nadp_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"nadp" +], +"biocyc":[ +"META:NADP" +], +"chebi":[ +"CHEBI:29868", +"CHEBI:44405", +"CHEBI:25523", +"CHEBI:13397", +"CHEBI:18009", +"CHEBI:7424", +"CHEBI:13398", +"CHEBI:21903", +"CHEBI:58349", +"CHEBI:44409" +], +"hmdb":[ +"HMDB00217" +], +"inchi_key":[ +"XJLXINKUBYWONI-NNYOXOHSSA-K" +], +"kegg.compound":[ +"C00006" +], +"metanetx.chemical":[ +"MNXM5" +], +"reactome.compound":[ +"194668", +"113563", +"6790191", +"5623650", +"2000348", +"389556", +"29366", +"351628", +"113564" +], +"sabiork":[ +"1263" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00006" +] +} +}, +{ +"id":"nadph_c", +"name":"Nicotinamide adenine dinucleotide phosphate - reduced", +"compartment":"c", +"charge":-4, +"formula":"C21H26N7O17P3", +"notes":{ +"original_bigg_ids":[ +"nadph_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"nadph" +], +"biocyc":[ +"META:NADPH" +], +"chebi":[ +"CHEBI:16474", +"CHEBI:7425", +"CHEBI:57783", +"CHEBI:21904", +"CHEBI:13399", +"CHEBI:13400", +"CHEBI:44286" +], +"hmdb":[ +"HMDB06341", +"HMDB00221", +"HMDB00799" +], +"inchi_key":[ +"ACFIXJIJDZMPPO-NNYOXOHSSA-J" +], +"kegg.compound":[ +"C00005" +], +"metanetx.chemical":[ +"MNXM6" +], +"reactome.compound":[ +"113600", +"6790135", +"113602", +"113601", +"2000347", +"351627", +"29364", +"5623644", +"194725" +], +"sabiork":[ +"1262" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00005" +] +} +}, +{ +"id":"nh4_c", +"name":"Ammonium", +"compartment":"c", +"charge":1, +"formula":"H4N", +"notes":{ +"original_bigg_ids":[ +"nh4_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"nh4" +], +"biocyc":[ +"META:AMMONIUM", +"META:AMMONIA" +], +"chebi":[ +"CHEBI:44284", +"CHEBI:135980", +"CHEBI:22533", +"CHEBI:13406", +"CHEBI:29337", +"CHEBI:29340", +"CHEBI:13771", +"CHEBI:16134", +"CHEBI:28938", +"CHEBI:22534", +"CHEBI:13405", +"CHEBI:49783", +"CHEBI:7434", +"CHEBI:7435", +"CHEBI:44269", +"CHEBI:44404", +"CHEBI:13407" +], +"envipath":[ +"650babc9-9d68-4b73-9332-11972ca26f7b/compound/96667bd9-aeae-4e8f-89d3-100d0396af05", +"32de3cf4-e3e6-4168-956e-32fa5ddb0ce1/compound/41e4c903-407f-49f7-bf6b-0a94d39fa3a7", +"5882df9c-dae1-4d80-a40e-db4724271456/compound/27a89bdf-42f7-478f-91d8-e39881581096" +], +"hmdb":[ +"HMDB00051", +"HMDB41827" +], +"inchi_key":[ +"QGZKDVFQNNGYKY-UHFFFAOYSA-O" +], +"kegg.compound":[ +"C00014", +"C01342" +], +"kegg.drug":[ +"D02916", +"D02915" +], +"metanetx.chemical":[ +"MNXM15" +], +"reactome.compound":[ +"5693978", +"1132163", +"29382", +"76230", +"140912", +"389843", +"2022135", +"31633", +"113561" +], +"sabiork":[ +"1268", +"43" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd19013", +"cpd00013" +] +} +}, +{ +"id":"13dpg_c", +"name":"3-Phospho-D-glyceroyl phosphate", +"compartment":"c", +"charge":-4, +"formula":"C3H4O10P2", +"notes":{ +"original_bigg_ids":[ +"13dpg_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"13dpg" +], +"biocyc":[ +"META:DPG" +], +"chebi":[ +"CHEBI:57604", +"CHEBI:20189", +"CHEBI:11881", +"CHEBI:16001", +"CHEBI:1658" +], +"hmdb":[ +"HMDB62758" +], +"inchi_key":[ +"LJQLQCAXBUHEAZ-UWTATZPHSA-J" +], +"kegg.compound":[ +"C00236" +], +"metanetx.chemical":[ +"MNXM261" +], +"reactome.compound":[ +"29800" +], +"sabiork":[ +"21215" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00203" +] +} +}, +{ +"id":"nh4_e", +"name":"Ammonium", +"compartment":"e", +"charge":1, +"formula":"H4N", +"notes":{ +"original_bigg_ids":[ +"nh4_e" +] +}, +"annotation":{ +"bigg.metabolite":[ +"nh4" +], +"biocyc":[ +"META:AMMONIUM", +"META:AMMONIA" +], +"chebi":[ +"CHEBI:44284", +"CHEBI:135980", +"CHEBI:22533", +"CHEBI:13406", +"CHEBI:29337", +"CHEBI:29340", +"CHEBI:13771", +"CHEBI:16134", +"CHEBI:28938", +"CHEBI:22534", +"CHEBI:13405", +"CHEBI:49783", +"CHEBI:7434", +"CHEBI:7435", +"CHEBI:44269", +"CHEBI:44404", +"CHEBI:13407" +], +"envipath":[ +"650babc9-9d68-4b73-9332-11972ca26f7b/compound/96667bd9-aeae-4e8f-89d3-100d0396af05", +"32de3cf4-e3e6-4168-956e-32fa5ddb0ce1/compound/41e4c903-407f-49f7-bf6b-0a94d39fa3a7", +"5882df9c-dae1-4d80-a40e-db4724271456/compound/27a89bdf-42f7-478f-91d8-e39881581096" +], +"hmdb":[ +"HMDB00051", +"HMDB41827" +], +"inchi_key":[ +"QGZKDVFQNNGYKY-UHFFFAOYSA-O" +], +"kegg.compound":[ +"C00014", +"C01342" +], +"kegg.drug":[ +"D02916", +"D02915" +], +"metanetx.chemical":[ +"MNXM15" +], +"reactome.compound":[ +"5693978", +"1132163", +"29382", +"76230", +"140912", +"389843", +"2022135", +"31633", +"113561" +], +"sabiork":[ +"1268", +"43" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd19013", +"cpd00013" +] +} +}, +{ +"id":"o2_c", +"name":"O2 O2", +"compartment":"c", +"charge":0, +"formula":"O2", +"notes":{ +"original_bigg_ids":[ +"o2_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"o2" +], +"biocyc":[ +"META:OXYGEN-MOLECULE" +], +"chebi":[ +"CHEBI:7860", +"CHEBI:26689", +"CHEBI:29097", +"CHEBI:15379", +"CHEBI:13416", +"CHEBI:27140", +"CHEBI:29793", +"CHEBI:30491", +"CHEBI:44742", +"CHEBI:23833", +"CHEBI:25366", +"CHEBI:10745" +], +"envipath":[ +"5882df9c-dae1-4d80-a40e-db4724271456/compound/d5d12248-82d3-4cf3-b7d0-2e3d096768b4" +], +"hmdb":[ +"HMDB01377" +], +"inchi_key":[ +"MYMOFIZGZYHOMD-UHFFFAOYSA-N" +], +"kegg.compound":[ +"C00007" +], +"kegg.drug":[ +"D00003" +], +"metanetx.chemical":[ +"MNXM4" +], +"reactome.compound":[ +"113534", +"113535", +"113685", +"5668566", +"189461", +"113533", +"1131511", +"352327", +"351593", +"29368", +"1236709" +], +"sabiork":[ +"1264" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00007" +] +} +}, +{ +"id":"2pg_c", +"name":"D-Glycerate 2-phosphate", +"compartment":"c", +"charge":-3, +"formula":"C3H4O7P", +"notes":{ +"original_bigg_ids":[ +"2pg_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"2pg" +], +"biocyc":[ +"META:2-PG" +], +"chebi":[ +"CHEBI:39868", +"CHEBI:21028", +"CHEBI:58289", +"CHEBI:24344", +"CHEBI:12986", +"CHEBI:17835", +"CHEBI:11651", +"CHEBI:1267", +"CHEBI:88350" +], +"hmdb":[ +"HMDB00362", +"HMDB62707", +"HMDB03391" +], +"inchi_key":[ +"GXIURPTVHJPJLF-UWTATZPHSA-K" +], +"kegg.compound":[ +"C00631" +], +"metanetx.chemical":[ +"MNXM275" +], +"reactome.compound":[ +"30485" +], +"sabiork":[ +"31" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00482" +] +} +}, +{ +"id":"o2_e", +"name":"O2 O2", +"compartment":"e", +"charge":0, +"formula":"O2", +"notes":{ +"original_bigg_ids":[ +"o2_e" +] +}, +"annotation":{ +"bigg.metabolite":[ +"o2" +], +"biocyc":[ +"META:OXYGEN-MOLECULE" +], +"chebi":[ +"CHEBI:7860", +"CHEBI:26689", +"CHEBI:29097", +"CHEBI:15379", +"CHEBI:13416", +"CHEBI:27140", +"CHEBI:29793", +"CHEBI:30491", +"CHEBI:44742", +"CHEBI:23833", +"CHEBI:25366", +"CHEBI:10745" +], +"envipath":[ +"5882df9c-dae1-4d80-a40e-db4724271456/compound/d5d12248-82d3-4cf3-b7d0-2e3d096768b4" +], +"hmdb":[ +"HMDB01377" +], +"inchi_key":[ +"MYMOFIZGZYHOMD-UHFFFAOYSA-N" +], +"kegg.compound":[ +"C00007" +], +"kegg.drug":[ +"D00003" +], +"metanetx.chemical":[ +"MNXM4" +], +"reactome.compound":[ +"113534", +"113535", +"113685", +"5668566", +"189461", +"113533", +"1131511", +"352327", +"351593", +"29368", +"1236709" +], +"sabiork":[ +"1264" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00007" +] +} +}, +{ +"id":"3pg_c", +"name":"3-Phospho-D-glycerate", +"compartment":"c", +"charge":-3, +"formula":"C3H4O7P", +"notes":{ +"original_bigg_ids":[ +"3pg_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"3pg" +], +"biocyc":[ +"META:G3P" +], +"chebi":[ +"CHEBI:11879", +"CHEBI:11880", +"CHEBI:17794", +"CHEBI:21029", +"CHEBI:1657", +"CHEBI:58272", +"CHEBI:12987" +], +"hmdb":[ +"HMDB60180" +], +"inchi_key":[ +"OSJPPGNTCRNQQC-UWTATZPHSA-K" +], +"kegg.compound":[ +"C00197" +], +"metanetx.chemical":[ +"MNXM126" +], +"reactome.compound":[ +"6799493", +"29728" +], +"sabiork":[ +"21216" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00169" +] +} +}, +{ +"id":"oaa_c", +"name":"Oxaloacetate", +"compartment":"c", +"charge":-2, +"formula":"C4H2O5", +"notes":{ +"original_bigg_ids":[ +"oaa_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"oaa" +], +"biocyc":[ +"META:OXALACETIC_ACID" +], +"chebi":[ +"CHEBI:25731", +"CHEBI:24959", +"CHEBI:12820", +"CHEBI:16452", +"CHEBI:30744", +"CHEBI:14703", +"CHEBI:24958", +"CHEBI:7812", +"CHEBI:25734", +"CHEBI:29049" +], +"envipath":[ +"4fd7f3e0-dd25-43ac-9453-dda3e52396e4/compound/133a11f3-81b0-4384-837e-1ccdd0a2a645", +"650babc9-9d68-4b73-9332-11972ca26f7b/compound/40afaad4-431a-4e3c-b4c7-020dbe4bdd2a", +"32de3cf4-e3e6-4168-956e-32fa5ddb0ce1/compound/be7c543c-40bd-4698-9821-22f2e65c38f3" +], +"hmdb":[ +"HMDB00223" +], +"inchi_key":[ +"KHPXUQMNIQBQEV-UHFFFAOYSA-L" +], +"kegg.compound":[ +"C00036" +], +"lipidmaps":[ +"LMFA01170120" +], +"metanetx.chemical":[ +"MNXM46" +], +"reactome.compound":[ +"6810070", +"113587", +"76213" +], +"sabiork":[ +"1915" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00032" +] +} +}, +{ +"id":"pep_c", +"name":"Phosphoenolpyruvate", +"compartment":"c", +"charge":-3, +"formula":"C3H2O6P", +"notes":{ +"original_bigg_ids":[ +"pep_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"pep" +], +"biocyc":[ +"META:PHOSPHO-ENOL-PYRUVATE" +], +"chebi":[ +"CHEBI:18021", +"CHEBI:44894", +"CHEBI:26054", +"CHEBI:14812", +"CHEBI:26055", +"CHEBI:8147", +"CHEBI:58702", +"CHEBI:44897" +], +"hmdb":[ +"HMDB00263" +], +"inchi_key":[ +"DTBNBXWJWCWCIK-UHFFFAOYSA-K" +], +"kegg.compound":[ +"C00074" +], +"metanetx.chemical":[ +"MNXM73" +], +"reactome.compound":[ +"372364", +"29492" +], +"sabiork":[ +"32" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00061" +] +} +}, +{ +"id":"6pgc_c", +"name":"6-Phospho-D-gluconate", +"compartment":"c", +"charge":-3, +"formula":"C6H10O10P", +"notes":{ +"original_bigg_ids":[ +"6pgc_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"6pgc" +], +"biocyc":[ +"META:CPD-2961" +], +"chebi":[ +"CHEBI:33851", +"CHEBI:2231", +"CHEBI:16863", +"CHEBI:40282", +"CHEBI:12232", +"CHEBI:48928", +"CHEBI:58759" +], +"hmdb":[ +"HMDB01316", +"HMDB62800" +], +"inchi_key":[ +"BIRSGZKFKXLSJQ-SQOUGZDYSA-K" +], +"kegg.compound":[ +"C00345" +], +"metanetx.chemical":[ +"MNXM325" +], +"reactome.compound":[ +"29996" +], +"sabiork":[ +"22801", +"2024" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00284" +] +} +}, +{ +"id":"pi_c", +"name":"Phosphate", +"compartment":"c", +"charge":-2, +"formula":"HO4P", +"notes":{ +"original_bigg_ids":[ +"pi_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"pi" +], +"biocyc":[ +"META:Pi", +"META:CPD-16459", +"META:PHOSPHATE-GROUP" +], +"chebi":[ +"CHEBI:26078", +"CHEBI:18367", +"CHEBI:29139", +"CHEBI:39739", +"CHEBI:43470", +"CHEBI:35780", +"CHEBI:43474", +"CHEBI:26020", +"CHEBI:45024", +"CHEBI:39745", +"CHEBI:29137", +"CHEBI:14791", +"CHEBI:7793" +], +"envipath":[ +"650babc9-9d68-4b73-9332-11972ca26f7b/compound/db5219ee-60cb-4370-b066-340c9faf069c", +"5882df9c-dae1-4d80-a40e-db4724271456/compound/84684967-eade-48d4-b25d-c4aede0a0836", +"5882df9c-dae1-4d80-a40e-db4724271456/compound/ad82c39b-2edb-4953-b971-79a2d2ea6e26", +"650babc9-9d68-4b73-9332-11972ca26f7b/compound/aac01fea-4223-49c1-8b12-cd50f11ebfc8", +"32de3cf4-e3e6-4168-956e-32fa5ddb0ce1/compound/c581b2ce-6238-45de-abc0-60ca8d47ed04" +], +"hmdb":[ +"HMDB02105", +"HMDB00973", +"HMDB01429", +"HMDB02142", +"HMDB05947" +], +"inchi_key":[ +"NBIIXXVUZAFLBC-UHFFFAOYSA-L" +], +"kegg.compound":[ +"C00009" +], +"kegg.drug":[ +"D05467" +], +"metanetx.chemical":[ +"MNXM9" +], +"reactome.compound":[ +"5228339", +"113550", +"8851513", +"113551", +"109277", +"29372", +"8851226", +"113548" +], +"sabiork":[ +"36" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd27787", +"cpd00009" +] +} +}, +{ +"id":"6pgl_c", +"name":"6-phospho-D-glucono-1,5-lactone", +"compartment":"c", +"charge":-2, +"formula":"C6H9O9P", +"notes":{ +"original_bigg_ids":[ +"6pgl_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"6pgl" +], +"biocyc":[ +"META:D-6-P-GLUCONO-DELTA-LACTONE" +], +"chebi":[ +"CHEBI:12233", +"CHEBI:4160", +"CHEBI:57955", +"CHEBI:16938", +"CHEBI:20989", +"CHEBI:12958" +], +"hmdb":[ +"HMDB62628", +"HMDB01127" +], +"inchi_key":[ +"IJOJIVNDFQSGAB-SQOUGZDYSA-L" +], +"kegg.compound":[ +"C01236" +], +"metanetx.chemical":[ +"MNXM429" +], +"reactome.compound":[ +"31467" +], +"sabiork":[ +"1366" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00911" +] +} +}, +{ +"id":"pi_e", +"name":"Phosphate", +"compartment":"e", +"charge":-2, +"formula":"HO4P", +"notes":{ +"original_bigg_ids":[ +"pi_e" +] +}, +"annotation":{ +"bigg.metabolite":[ +"pi" +], +"biocyc":[ +"META:Pi", +"META:CPD-16459", +"META:PHOSPHATE-GROUP" +], +"chebi":[ +"CHEBI:26078", +"CHEBI:18367", +"CHEBI:29139", +"CHEBI:39739", +"CHEBI:43470", +"CHEBI:35780", +"CHEBI:43474", +"CHEBI:26020", +"CHEBI:45024", +"CHEBI:39745", +"CHEBI:29137", +"CHEBI:14791", +"CHEBI:7793" +], +"envipath":[ +"650babc9-9d68-4b73-9332-11972ca26f7b/compound/db5219ee-60cb-4370-b066-340c9faf069c", +"5882df9c-dae1-4d80-a40e-db4724271456/compound/84684967-eade-48d4-b25d-c4aede0a0836", +"5882df9c-dae1-4d80-a40e-db4724271456/compound/ad82c39b-2edb-4953-b971-79a2d2ea6e26", +"650babc9-9d68-4b73-9332-11972ca26f7b/compound/aac01fea-4223-49c1-8b12-cd50f11ebfc8", +"32de3cf4-e3e6-4168-956e-32fa5ddb0ce1/compound/c581b2ce-6238-45de-abc0-60ca8d47ed04" +], +"hmdb":[ +"HMDB02105", +"HMDB00973", +"HMDB01429", +"HMDB02142", +"HMDB05947" +], +"inchi_key":[ +"NBIIXXVUZAFLBC-UHFFFAOYSA-L" +], +"kegg.compound":[ +"C00009" +], +"kegg.drug":[ +"D05467" +], +"metanetx.chemical":[ +"MNXM9" +], +"reactome.compound":[ +"5228339", +"113550", +"8851513", +"113551", +"109277", +"29372", +"8851226", +"113548" +], +"sabiork":[ +"36" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd27787", +"cpd00009" +] +} +}, +{ +"id":"ac_c", +"name":"Acetate", +"compartment":"c", +"charge":-1, +"formula":"C2H3O2", +"notes":{ +"original_bigg_ids":[ +"ac_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"ac" +], +"biocyc":[ +"META:ACET" +], +"chebi":[ +"CHEBI:13704", +"CHEBI:22165", +"CHEBI:22169", +"CHEBI:40480", +"CHEBI:15366", +"CHEBI:2387", +"CHEBI:30089", +"CHEBI:40486" +], +"envipath":[ +"5882df9c-dae1-4d80-a40e-db4724271456/compound/9e26dcbe-4db9-46a0-8614-9f03545032d2", +"5882df9c-dae1-4d80-a40e-db4724271456/compound/5e4989fc-13d3-45d4-ad57-3be380a9d3c0", +"650babc9-9d68-4b73-9332-11972ca26f7b/compound/a8f0be58-24e8-441b-8d81-a516a0ead4b3", +"4fd7f3e0-dd25-43ac-9453-dda3e52396e4/compound/d45256fe-61fa-4f5b-bb16-91a3d615e3d8", +"32de3cf4-e3e6-4168-956e-32fa5ddb0ce1/compound/b545cabc-8c9e-4b20-8848-efa015b481ea", +"650babc9-9d68-4b73-9332-11972ca26f7b/compound/3e2d750f-df31-4445-9255-163c627e9b4a" +], +"hmdb":[ +"HMDB00042" +], +"inchi_key":[ +"QTBSBXVTEAMEQO-UHFFFAOYSA-M" +], +"kegg.compound":[ +"C00033" +], +"kegg.drug":[ +"D00010" +], +"lipidmaps":[ +"LMFA01010002" +], +"metanetx.chemical":[ +"MNXM26" +], +"reactome.compound":[ +"1524044", +"390305", +"113539", +"2022890", +"29416" +], +"sabiork":[ +"1278" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00029" +], +"slm":[ +"000000449" +] +} +}, +{ +"id":"pyr_c", +"name":"Pyruvate", +"compartment":"c", +"charge":-1, +"formula":"C3H3O3", +"notes":{ +"original_bigg_ids":[ +"pyr_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"pyr" +], +"biocyc":[ +"META:PYRUVATE" +], +"chebi":[ +"CHEBI:26462", +"CHEBI:26466", +"CHEBI:8685", +"CHEBI:32816", +"CHEBI:45253", +"CHEBI:14987", +"CHEBI:15361" +], +"envipath":[ +"650babc9-9d68-4b73-9332-11972ca26f7b/compound/ccc99777-54dc-42d4-a97e-009b780d3905", +"32de3cf4-e3e6-4168-956e-32fa5ddb0ce1/compound/dc01020e-8c7e-4087-9f56-cf8c962b7437" +], +"hmdb":[ +"HMDB00243" +], +"inchi_key":[ +"LCTONWCANYUPML-UHFFFAOYSA-M" +], +"kegg.compound":[ +"C00022" +], +"lipidmaps":[ +"LMFA01060077" +], +"metanetx.chemical":[ +"MNXM23" +], +"reactome.compound":[ +"1130930", +"5357717", +"113557", +"29398", +"389680" +], +"sabiork":[ +"33" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00020" +] +} +}, +{ +"id":"pyr_e", +"name":"Pyruvate", +"compartment":"e", +"charge":-1, +"formula":"C3H3O3", +"notes":{ +"original_bigg_ids":[ +"pyr_e" +] +}, +"annotation":{ +"bigg.metabolite":[ +"pyr" +], +"biocyc":[ +"META:PYRUVATE" +], +"chebi":[ +"CHEBI:26462", +"CHEBI:26466", +"CHEBI:8685", +"CHEBI:32816", +"CHEBI:45253", +"CHEBI:14987", +"CHEBI:15361" +], +"envipath":[ +"650babc9-9d68-4b73-9332-11972ca26f7b/compound/ccc99777-54dc-42d4-a97e-009b780d3905", +"32de3cf4-e3e6-4168-956e-32fa5ddb0ce1/compound/dc01020e-8c7e-4087-9f56-cf8c962b7437" +], +"hmdb":[ +"HMDB00243" +], +"inchi_key":[ +"LCTONWCANYUPML-UHFFFAOYSA-M" +], +"kegg.compound":[ +"C00022" +], +"lipidmaps":[ +"LMFA01060077" +], +"metanetx.chemical":[ +"MNXM23" +], +"reactome.compound":[ +"1130930", +"5357717", +"113557", +"29398", +"389680" +], +"sabiork":[ +"33" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00020" +] +} +}, +{ +"id":"q8_c", +"name":"Ubiquinone-8", +"compartment":"c", +"charge":0, +"formula":"C49H74O4", +"notes":{ +"original_bigg_ids":[ +"q8_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"q8" +], +"biocyc":[ +"META:UBIQUINONE-8" +], +"chebi":[ +"CHEBI:61683" +], +"inchi_key":[ +"ICFIZJQGJAJRSU-SGHXUWJISA-N" +], +"kegg.compound":[ +"C17569" +], +"lipidmaps":[ +"LMPR02010005" +], +"metanetx.chemical":[ +"MNXM232" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd15560" +] +} +}, +{ +"id":"q8h2_c", +"name":"Ubiquinol-8", +"compartment":"c", +"charge":0, +"formula":"C49H76O4", +"notes":{ +"original_bigg_ids":[ +"q8h2_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"q8h2" +], +"biocyc":[ +"META:CPD-9956" +], +"chebi":[ +"CHEBI:61682" +], +"hmdb":[ +"HMDB01060" +], +"inchi_key":[ +"LOJUQFSPYHMHEO-SGHXUWJISA-N" +], +"metanetx.chemical":[ +"MNXM191" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd29608", +"cpd15561" +] +} +}, +{ +"id":"r5p_c", +"name":"Alpha-D-Ribose 5-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C5H9O8P", +"notes":{ +"original_bigg_ids":[ +"r5p_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"r5p" +], +"biocyc":[ +"META:CPD-15318" +], +"chebi":[ +"CHEBI:18189", +"CHEBI:22413", +"CHEBI:12331", +"CHEBI:10270" +], +"inchi_key":[ +"KTVPXOYAKDPRHY-AIHAYLRMSA-L" +], +"kegg.compound":[ +"C03736" +], +"metanetx.chemical":[ +"MNXM15900" +], +"sabiork":[ +"1473" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd19028" +] +} +}, +{ +"id":"ru5p__D_c", +"name":"D-Ribulose 5-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C5H9O8P", +"notes":{ +"original_bigg_ids":[ +"ru5p_D_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"ru5p__D" +], +"biocyc":[ +"META:RIBULOSE-5P" +], +"chebi":[ +"CHEBI:40192", +"CHEBI:21088", +"CHEBI:17363", +"CHEBI:26572", +"CHEBI:13040", +"CHEBI:37455", +"CHEBI:58121", +"CHEBI:13018", +"CHEBI:4243" +], +"hmdb":[ +"HMDB02033", +"HMDB02694", +"HMDB00618" +], +"inchi_key":[ +"FNZLKVNUWIIPSJ-UHNVWZDZSA-L" +], +"kegg.compound":[ +"C00199" +], +"metanetx.chemical":[ +"MNXM145" +], +"reactome.compound":[ +"29732" +], +"sabiork":[ +"22814", +"1313" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00171" +] +} +}, +{ +"id":"ac_e", +"name":"Acetate", +"compartment":"e", +"charge":-1, +"formula":"C2H3O2", +"notes":{ +"original_bigg_ids":[ +"ac_e" +] +}, +"annotation":{ +"bigg.metabolite":[ +"ac" +], +"biocyc":[ +"META:ACET" +], +"chebi":[ +"CHEBI:13704", +"CHEBI:22165", +"CHEBI:22169", +"CHEBI:40480", +"CHEBI:15366", +"CHEBI:2387", +"CHEBI:30089", +"CHEBI:40486" +], +"envipath":[ +"5882df9c-dae1-4d80-a40e-db4724271456/compound/9e26dcbe-4db9-46a0-8614-9f03545032d2", +"5882df9c-dae1-4d80-a40e-db4724271456/compound/5e4989fc-13d3-45d4-ad57-3be380a9d3c0", +"650babc9-9d68-4b73-9332-11972ca26f7b/compound/a8f0be58-24e8-441b-8d81-a516a0ead4b3", +"4fd7f3e0-dd25-43ac-9453-dda3e52396e4/compound/d45256fe-61fa-4f5b-bb16-91a3d615e3d8", +"32de3cf4-e3e6-4168-956e-32fa5ddb0ce1/compound/b545cabc-8c9e-4b20-8848-efa015b481ea", +"650babc9-9d68-4b73-9332-11972ca26f7b/compound/3e2d750f-df31-4445-9255-163c627e9b4a" +], +"hmdb":[ +"HMDB00042" +], +"inchi_key":[ +"QTBSBXVTEAMEQO-UHFFFAOYSA-M" +], +"kegg.compound":[ +"C00033" +], +"kegg.drug":[ +"D00010" +], +"lipidmaps":[ +"LMFA01010002" +], +"metanetx.chemical":[ +"MNXM26" +], +"reactome.compound":[ +"1524044", +"390305", +"113539", +"2022890", +"29416" +], +"sabiork":[ +"1278" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00029" +], +"slm":[ +"000000449" +] +} +}, +{ +"id":"acald_c", +"name":"Acetaldehyde", +"compartment":"c", +"charge":0, +"formula":"C2H4O", +"notes":{ +"original_bigg_ids":[ +"acald_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"acald" +], +"biocyc":[ +"META:ACETALD" +], +"chebi":[ +"CHEBI:40533", +"CHEBI:13703", +"CHEBI:2383", +"CHEBI:22158", +"CHEBI:15343" +], +"envipath":[ +"4fd7f3e0-dd25-43ac-9453-dda3e52396e4/compound/9c8865b2-a99d-42e4-a042-c88504f04b51", +"5882df9c-dae1-4d80-a40e-db4724271456/compound/47aa8e53-36ae-4be3-987c-c1cfab66af78", +"650babc9-9d68-4b73-9332-11972ca26f7b/compound/ee2c714d-ff9d-4df8-b343-48c1ec76ef0e", +"32de3cf4-e3e6-4168-956e-32fa5ddb0ce1/compound/78f3645f-408e-4001-9dda-a52ea62a15d4" +], +"hmdb":[ +"HMDB00990" +], +"inchi_key":[ +"IKHGUXGNUITLKF-UHFFFAOYSA-N" +], +"kegg.compound":[ +"C00084" +], +"metanetx.chemical":[ +"MNXM75" +], +"reactome.compound":[ +"113532", +"29510", +"113681", +"113745" +], +"sabiork":[ +"1292" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00071" +] +} +}, +{ +"id":"s7p_c", +"name":"Sedoheptulose 7-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C7H13O10P", +"notes":{ +"original_bigg_ids":[ +"s7p_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"s7p" +], +"biocyc":[ +"META:D-SEDOHEPTULOSE-7-P" +], +"chebi":[ +"CHEBI:4244", +"CHEBI:15073", +"CHEBI:15721", +"CHEBI:26621", +"CHEBI:9083", +"CHEBI:15074", +"CHEBI:57483" +], +"hmdb":[ +"HMDB01068", +"HMDB62754" +], +"inchi_key":[ +"JDTUMPKOJBQPKX-GBNDHIKLSA-L" +], +"kegg.compound":[ +"C05382" +], +"metanetx.chemical":[ +"MNXM271" +], +"reactome.compound":[ +"29882" +], +"sabiork":[ +"1618", +"1325" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00238" +] +} +}, +{ +"id":"acald_e", +"name":"Acetaldehyde", +"compartment":"e", +"charge":0, +"formula":"C2H4O", +"notes":{ +"original_bigg_ids":[ +"acald_e" +] +}, +"annotation":{ +"bigg.metabolite":[ +"acald" +], +"biocyc":[ +"META:ACETALD" +], +"chebi":[ +"CHEBI:40533", +"CHEBI:13703", +"CHEBI:2383", +"CHEBI:22158", +"CHEBI:15343" +], +"envipath":[ +"4fd7f3e0-dd25-43ac-9453-dda3e52396e4/compound/9c8865b2-a99d-42e4-a042-c88504f04b51", +"5882df9c-dae1-4d80-a40e-db4724271456/compound/47aa8e53-36ae-4be3-987c-c1cfab66af78", +"650babc9-9d68-4b73-9332-11972ca26f7b/compound/ee2c714d-ff9d-4df8-b343-48c1ec76ef0e", +"32de3cf4-e3e6-4168-956e-32fa5ddb0ce1/compound/78f3645f-408e-4001-9dda-a52ea62a15d4" +], +"hmdb":[ +"HMDB00990" +], +"inchi_key":[ +"IKHGUXGNUITLKF-UHFFFAOYSA-N" +], +"kegg.compound":[ +"C00084" +], +"metanetx.chemical":[ +"MNXM75" +], +"reactome.compound":[ +"113532", +"29510", +"113681", +"113745" +], +"sabiork":[ +"1292" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00071" +] +} +}, +{ +"id":"accoa_c", +"name":"Acetyl-CoA", +"compartment":"c", +"charge":-4, +"formula":"C23H34N7O17P3S", +"notes":{ +"original_bigg_ids":[ +"accoa_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"accoa" +], +"biocyc":[ +"META:ACETYL-COA" +], +"chebi":[ +"CHEBI:57288", +"CHEBI:22192", +"CHEBI:15351", +"CHEBI:13712", +"CHEBI:2408", +"CHEBI:40470" +], +"envipath":[ +"32de3cf4-e3e6-4168-956e-32fa5ddb0ce1/compound/57bd5e24-9d14-4b91-bc60-64c8ea6c2d11" +], +"hmdb":[ +"HMDB01206" +], +"inchi_key":[ +"ZSLZBFCDCINBPY-ZSJPKINUSA-J" +], +"kegg.compound":[ +"C00024" +], +"lipidmaps":[ +"LMFA07050029", +"LMFA07050281" +], +"metanetx.chemical":[ +"MNXM21" +], +"reactome.compound":[ +"727753", +"76183", +"113560", +"353123", +"113559" +], +"sabiork":[ +"1276" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00022" +], +"slm":[ +"000000297" +] +} +}, +{ +"id":"succ_c", +"name":"Succinate", +"compartment":"c", +"charge":-2, +"formula":"C4H4O4", +"notes":{ +"original_bigg_ids":[ +"succ_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"succ" +], +"biocyc":[ +"META:SUC" +], +"chebi":[ +"CHEBI:22941", +"CHEBI:26803", +"CHEBI:15741", +"CHEBI:132287", +"CHEBI:45639", +"CHEBI:30779", +"CHEBI:15125", +"CHEBI:22943", +"CHEBI:26807", +"CHEBI:9304", +"CHEBI:90372", +"CHEBI:30031" +], +"envipath":[ +"4fd7f3e0-dd25-43ac-9453-dda3e52396e4/compound/cc98aff0-7f64-4db4-9d59-de961c228496", +"5882df9c-dae1-4d80-a40e-db4724271456/compound/6377658b-03f6-4fed-a5bf-ff0f2389b693", +"650babc9-9d68-4b73-9332-11972ca26f7b/compound/600b74d3-8fe5-426d-bedf-291175bd23e4", +"32de3cf4-e3e6-4168-956e-32fa5ddb0ce1/compound/8fdfd425-4343-4bf2-8427-b2ffa57fdbd7" +], +"hmdb":[ +"HMDB00254" +], +"inchi_key":[ +"KDYFGRWQOYBRFD-UHFFFAOYSA-L" +], +"kegg.compound":[ +"C00042" +], +"lipidmaps":[ +"LMFA01170043" +], +"metanetx.chemical":[ +"MNXM25" +], +"reactome.compound":[ +"389583", +"5278787", +"159939", +"433123", +"29434", +"113536" +], +"sabiork":[ +"1924" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00036" +] +} +}, +{ +"id":"succ_e", +"name":"Succinate", +"compartment":"e", +"charge":-2, +"formula":"C4H4O4", +"notes":{ +"original_bigg_ids":[ +"succ_e" +] +}, +"annotation":{ +"bigg.metabolite":[ +"succ" +], +"biocyc":[ +"META:SUC" +], +"chebi":[ +"CHEBI:22941", +"CHEBI:26803", +"CHEBI:15741", +"CHEBI:132287", +"CHEBI:45639", +"CHEBI:30779", +"CHEBI:15125", +"CHEBI:22943", +"CHEBI:26807", +"CHEBI:9304", +"CHEBI:90372", +"CHEBI:30031" +], +"envipath":[ +"4fd7f3e0-dd25-43ac-9453-dda3e52396e4/compound/cc98aff0-7f64-4db4-9d59-de961c228496", +"5882df9c-dae1-4d80-a40e-db4724271456/compound/6377658b-03f6-4fed-a5bf-ff0f2389b693", +"650babc9-9d68-4b73-9332-11972ca26f7b/compound/600b74d3-8fe5-426d-bedf-291175bd23e4", +"32de3cf4-e3e6-4168-956e-32fa5ddb0ce1/compound/8fdfd425-4343-4bf2-8427-b2ffa57fdbd7" +], +"hmdb":[ +"HMDB00254" +], +"inchi_key":[ +"KDYFGRWQOYBRFD-UHFFFAOYSA-L" +], +"kegg.compound":[ +"C00042" +], +"lipidmaps":[ +"LMFA01170043" +], +"metanetx.chemical":[ +"MNXM25" +], +"reactome.compound":[ +"389583", +"5278787", +"159939", +"433123", +"29434", +"113536" +], +"sabiork":[ +"1924" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00036" +] +} +}, +{ +"id":"succoa_c", +"name":"Succinyl-CoA", +"compartment":"c", +"charge":-5, +"formula":"C25H35N7O19P3S", +"notes":{ +"original_bigg_ids":[ +"succoa_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"succoa" +], +"biocyc":[ +"META:SUC-COA" +], +"chebi":[ +"CHEBI:57292", +"CHEBI:10746", +"CHEBI:15127", +"CHEBI:15380", +"CHEBI:9310", +"CHEBI:45541", +"CHEBI:26811" +], +"envipath":[ +"32de3cf4-e3e6-4168-956e-32fa5ddb0ce1/compound/359075fb-98d9-458d-ba82-db4020e753f3" +], +"hmdb":[ +"HMDB01022" +], +"inchi_key":[ +"VNOYUJKHFWYWIR-ITIYDSSPSA-I" +], +"kegg.compound":[ +"C00091" +], +"lipidmaps":[ +"LMFA07050370" +], +"metanetx.chemical":[ +"MNXM92" +], +"reactome.compound":[ +"70958" +], +"sabiork":[ +"1931" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00078" +] +} +}, +{ +"id":"acon_C_c", +"name":"Cis-Aconitate", +"compartment":"c", +"charge":-3, +"formula":"C6H3O6", +"notes":{ +"original_bigg_ids":[ +"acon_C_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"acon_C" +], +"biocyc":[ +"META:CIS-ACONITATE" +], +"chebi":[ +"CHEBI:23306", +"CHEBI:16383", +"CHEBI:12798", +"CHEBI:32805", +"CHEBI:23308", +"CHEBI:10482" +], +"envipath":[ +"32de3cf4-e3e6-4168-956e-32fa5ddb0ce1/compound/643481e5-a35b-477e-8665-70f4dca66baa" +], +"hmdb":[ +"HMDB00461", +"HMDB00072" +], +"inchi_key":[ +"GTZCVFVGUGFEME-IWQZZHSRSA-K" +], +"kegg.compound":[ +"C00417" +], +"metanetx.chemical":[ +"MNXM813" +], +"sabiork":[ +"2043" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00331" +] +} +}, +{ +"id":"xu5p__D_c", +"name":"D-Xylulose 5-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C5H9O8P", +"notes":{ +"original_bigg_ids":[ +"xu5p_D_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"xu5p__D" +], +"biocyc":[ +"META:XYLULOSE-5-PHOSPHATE" +], +"chebi":[ +"CHEBI:13036", +"CHEBI:27354", +"CHEBI:4269", +"CHEBI:16332", +"CHEBI:57737", +"CHEBI:21121" +], +"hmdb":[ +"HMDB06212", +"HMDB00868" +], +"inchi_key":[ +"FNZLKVNUWIIPSJ-RFZPGFLSSA-L" +], +"kegg.compound":[ +"C00231" +], +"metanetx.chemical":[ +"MNXM186" +], +"reactome.compound":[ +"29790" +], +"sabiork":[ +"1317" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00198" +] +} +}, +{ +"id":"actp_c", +"name":"Acetyl phosphate", +"compartment":"c", +"charge":-2, +"formula":"C2H3O5P", +"notes":{ +"original_bigg_ids":[ +"actp_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"actp" +], +"biocyc":[ +"META:ACETYL-P" +], +"chebi":[ +"CHEBI:13711", +"CHEBI:46262", +"CHEBI:15350", +"CHEBI:22191", +"CHEBI:2407" +], +"hmdb":[ +"HMDB01494" +], +"inchi_key":[ +"LIPOUNRJVLNBCD-UHFFFAOYSA-L" +], +"kegg.compound":[ +"C00227" +], +"metanetx.chemical":[ +"MNXM280" +], +"sabiork":[ +"1316" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00196" +] +} +}, +{ +"id":"adp_c", +"name":"ADP C10H12N5O10P2", +"compartment":"c", +"charge":-3, +"formula":"C10H12N5O10P2", +"notes":{ +"original_bigg_ids":[ +"adp_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"adp" +], +"biocyc":[ +"META:ADP" +], +"chebi":[ +"CHEBI:2342", +"CHEBI:16761", +"CHEBI:456216", +"CHEBI:40553", +"CHEBI:22244", +"CHEBI:87518", +"CHEBI:13222" +], +"hmdb":[ +"HMDB01341" +], +"inchi_key":[ +"XTWYTFMLZFPYCI-KQYNXXCUSA-K" +], +"kegg.compound":[ +"C00008" +], +"kegg.glycan":[ +"G11113" +], +"metanetx.chemical":[ +"MNXM7" +], +"reactome.compound":[ +"114565", +"211606", +"114564", +"6798177", +"5632457", +"5696026", +"8869360", +"29370", +"113581", +"113582" +], +"sabiork":[ +"35" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00008" +] +} +}, +{ +"id":"akg_c", +"name":"2-Oxoglutarate", +"compartment":"c", +"charge":-2, +"formula":"C5H4O5", +"notes":{ +"original_bigg_ids":[ +"akg_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"akg" +], +"biocyc":[ +"META:2-KETOGLUTARATE" +], +"chebi":[ +"CHEBI:40661", +"CHEBI:16810", +"CHEBI:11638", +"CHEBI:30916", +"CHEBI:19749", +"CHEBI:1253", +"CHEBI:30915", +"CHEBI:19748" +], +"envipath":[ +"32de3cf4-e3e6-4168-956e-32fa5ddb0ce1/compound/5b0a94f6-d411-44fd-bcc1-fb79b4e697f5", +"4fd7f3e0-dd25-43ac-9453-dda3e52396e4/compound/6557f3f2-0ab8-494b-a865-8ce0eae788a9" +], +"hmdb":[ +"HMDB00208", +"HMDB02812", +"HMDB62781" +], +"inchi_key":[ +"KPGXRSRHYNQIFN-UHFFFAOYSA-L" +], +"kegg.compound":[ +"C00026" +], +"metanetx.chemical":[ +"MNXM20" +], +"reactome.compound":[ +"113594", +"561075", +"5278317", +"113671", +"29406", +"389537" +], +"sabiork":[ +"1922" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00024" +] +} +}, +{ +"id":"akg_e", +"name":"2-Oxoglutarate", +"compartment":"e", +"charge":-2, +"formula":"C5H4O5", +"notes":{ +"original_bigg_ids":[ +"akg_e" +] +}, +"annotation":{ +"bigg.metabolite":[ +"akg" +], +"biocyc":[ +"META:2-KETOGLUTARATE" +], +"chebi":[ +"CHEBI:40661", +"CHEBI:16810", +"CHEBI:11638", +"CHEBI:30916", +"CHEBI:19749", +"CHEBI:1253", +"CHEBI:30915", +"CHEBI:19748" +], +"envipath":[ +"32de3cf4-e3e6-4168-956e-32fa5ddb0ce1/compound/5b0a94f6-d411-44fd-bcc1-fb79b4e697f5", +"4fd7f3e0-dd25-43ac-9453-dda3e52396e4/compound/6557f3f2-0ab8-494b-a865-8ce0eae788a9" +], +"hmdb":[ +"HMDB00208", +"HMDB02812", +"HMDB62781" +], +"inchi_key":[ +"KPGXRSRHYNQIFN-UHFFFAOYSA-L" +], +"kegg.compound":[ +"C00026" +], +"metanetx.chemical":[ +"MNXM20" +], +"reactome.compound":[ +"113594", +"561075", +"5278317", +"113671", +"29406", +"389537" +], +"sabiork":[ +"1922" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00024" +] +} +}, +{ +"id":"amp_c", +"name":"AMP C10H12N5O7P", +"compartment":"c", +"charge":-2, +"formula":"C10H12N5O7P", +"notes":{ +"original_bigg_ids":[ +"amp_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"amp" +], +"biocyc":[ +"META:AMP-GROUP", +"META:AMP" +], +"chebi":[ +"CHEBI:13736", +"CHEBI:2356", +"CHEBI:13234", +"CHEBI:22242", +"CHEBI:40786", +"CHEBI:16027", +"CHEBI:40721", +"CHEBI:40510", +"CHEBI:456215", +"CHEBI:13235", +"CHEBI:22245", +"CHEBI:40726", +"CHEBI:47222", +"CHEBI:13740", +"CHEBI:40826", +"CHEBI:12056" +], +"hmdb":[ +"HMDB00045" +], +"inchi_key":[ +"UDMBCSSLTHHNCD-KQYNXXCUSA-L" +], +"kegg.compound":[ +"C00020" +], +"kegg.drug":[ +"D02769" +], +"metanetx.chemical":[ +"MNXM14" +], +"reactome.compound":[ +"389620", +"159448", +"76577", +"109275", +"164121" +], +"sabiork":[ +"1273" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd22272", +"cpd00018" +] +} +}, +{ +"id":"atp_c", +"name":"ATP C10H12N5O13P3", +"compartment":"c", +"charge":-4, +"formula":"C10H12N5O13P3", +"notes":{ +"original_bigg_ids":[ +"atp_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"atp" +], +"biocyc":[ +"META:ATP" +], +"chebi":[ +"CHEBI:15422", +"CHEBI:10789", +"CHEBI:10841", +"CHEBI:2359", +"CHEBI:22249", +"CHEBI:13236", +"CHEBI:237958", +"CHEBI:30616", +"CHEBI:57299", +"CHEBI:40938" +], +"hmdb":[ +"HMDB00538" +], +"inchi_key":[ +"ZKHQWZAMYRWXGA-KQYNXXCUSA-J" +], +"kegg.compound":[ +"C00002" +], +"kegg.drug":[ +"D08646" +], +"metanetx.chemical":[ +"MNXM3" +], +"reactome.compound":[ +"8878982", +"389573", +"8938081", +"211579", +"113593", +"113592", +"5632460", +"5696069", +"29358", +"8869363", +"6798184" +], +"sabiork":[ +"34" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00002" +] +} +}, +{ +"id":"cit_c", +"name":"Citrate", +"compartment":"c", +"charge":-3, +"formula":"C6H5O7", +"notes":{ +"original_bigg_ids":[ +"cit_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"cit" +], +"biocyc":[ +"META:CIT" +], +"chebi":[ +"CHEBI:35802", +"CHEBI:133748", +"CHEBI:35809", +"CHEBI:76049", +"CHEBI:41523", +"CHEBI:35810", +"CHEBI:30769", +"CHEBI:13999", +"CHEBI:23322", +"CHEBI:35808", +"CHEBI:42563", +"CHEBI:16947", +"CHEBI:132362", +"CHEBI:35804", +"CHEBI:23321", +"CHEBI:3727", +"CHEBI:35806" +], +"hmdb":[ +"HMDB00094" +], +"inchi_key":[ +"KRKNYBCHXYNGOX-UHFFFAOYSA-K" +], +"kegg.compound":[ +"C00158" +], +"kegg.drug":[ +"D00037" +], +"metanetx.chemical":[ +"MNXM131" +], +"reactome.compound":[ +"29654", +"433138", +"76190" +], +"sabiork":[ +"1952" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00137" +] +} +}, +{ +"id":"co2_c", +"name":"CO2 CO2", +"compartment":"c", +"charge":0, +"formula":"CO2", +"notes":{ +"original_bigg_ids":[ +"co2_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"co2" +], +"biocyc":[ +"META:CARBON-DIOXIDE" +], +"chebi":[ +"CHEBI:23011", +"CHEBI:3283", +"CHEBI:48829", +"CHEBI:16526", +"CHEBI:13283", +"CHEBI:13285", +"CHEBI:13284", +"CHEBI:13282" +], +"envipath":[ +"650babc9-9d68-4b73-9332-11972ca26f7b/compound/2ec3da94-5f50-4525-81b1-5607c5c7a3d3", +"32de3cf4-e3e6-4168-956e-32fa5ddb0ce1/compound/05f60af4-0a3f-4ead-9a29-33bb0f123379" +], +"hmdb":[ +"HMDB01967" +], +"inchi_key":[ +"CURLTUGMZLYLDI-UHFFFAOYSA-N" +], +"kegg.compound":[ +"C00011" +], +"kegg.drug":[ +"D00004" +], +"metanetx.chemical":[ +"MNXM13" +], +"reactome.compound":[ +"29376", +"5668565", +"189480", +"1132345", +"113528", +"1237009", +"159751", +"389536", +"159942" +], +"sabiork":[ +"1266" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00011" +] +} +}, +{ +"id":"co2_e", +"name":"CO2 CO2", +"compartment":"e", +"charge":0, +"formula":"CO2", +"notes":{ +"original_bigg_ids":[ +"co2_e" +] +}, +"annotation":{ +"bigg.metabolite":[ +"co2" +], +"biocyc":[ +"META:CARBON-DIOXIDE" +], +"chebi":[ +"CHEBI:23011", +"CHEBI:3283", +"CHEBI:48829", +"CHEBI:16526", +"CHEBI:13283", +"CHEBI:13285", +"CHEBI:13284", +"CHEBI:13282" +], +"envipath":[ +"650babc9-9d68-4b73-9332-11972ca26f7b/compound/2ec3da94-5f50-4525-81b1-5607c5c7a3d3", +"32de3cf4-e3e6-4168-956e-32fa5ddb0ce1/compound/05f60af4-0a3f-4ead-9a29-33bb0f123379" +], +"hmdb":[ +"HMDB01967" +], +"inchi_key":[ +"CURLTUGMZLYLDI-UHFFFAOYSA-N" +], +"kegg.compound":[ +"C00011" +], +"kegg.drug":[ +"D00004" +], +"metanetx.chemical":[ +"MNXM13" +], +"reactome.compound":[ +"29376", +"5668565", +"189480", +"1132345", +"113528", +"1237009", +"159751", +"389536", +"159942" +], +"sabiork":[ +"1266" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00011" +] +} +}, +{ +"id":"coa_c", +"name":"Coenzyme A", +"compartment":"c", +"charge":-4, +"formula":"C21H32N7O16P3S", +"notes":{ +"original_bigg_ids":[ +"coa_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"coa" +], +"biocyc":[ +"META:COA-GROUP", +"META:CO-A" +], +"chebi":[ +"CHEBI:41631", +"CHEBI:41597", +"CHEBI:741566", +"CHEBI:23355", +"CHEBI:13295", +"CHEBI:13298", +"CHEBI:57287", +"CHEBI:15346", +"CHEBI:3771", +"CHEBI:13294" +], +"envipath":[ +"32de3cf4-e3e6-4168-956e-32fa5ddb0ce1/compound/19310484-6aa5-4dcf-b1da-855a8c21ecfd" +], +"hmdb":[ +"HMDB01423", +"HMDB62184" +], +"inchi_key":[ +"RGJOEKWQDUBAIZ-IBOSZNHHSA-J" +], +"kegg.compound":[ +"C00010" +], +"metanetx.chemical":[ +"MNXM12" +], +"reactome.compound":[ +"193514", +"162743", +"2485002", +"1678675", +"29374", +"76194", +"8939024" +], +"sabiork":[ +"1265" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd22528", +"cpd00010" +] +} +}, +{ +"id":"dhap_c", +"name":"Dihydroxyacetone phosphate", +"compartment":"c", +"charge":-2, +"formula":"C3H5O6P", +"notes":{ +"original_bigg_ids":[ +"dhap_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"dhap" +], +"biocyc":[ +"META:DIHYDROXY-ACETONE-PHOSPHATE" +], +"chebi":[ +"CHEBI:14341", +"CHEBI:5454", +"CHEBI:16108", +"CHEBI:14342", +"CHEBI:24355", +"CHEBI:39571", +"CHEBI:57642" +], +"hmdb":[ +"HMDB11735", +"HMDB01473" +], +"inchi_key":[ +"GNGACRATGGDKBX-UHFFFAOYSA-L" +], +"kegg.compound":[ +"C00111" +], +"metanetx.chemical":[ +"MNXM77" +], +"reactome.compound":[ +"390404", +"75970", +"188451" +], +"sabiork":[ +"28" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00095" +] +} +}, +{ +"id":"e4p_c", +"name":"D-Erythrose 4-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C4H7O7P", +"notes":{ +"original_bigg_ids":[ +"e4p_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"e4p" +], +"biocyc":[ +"META:ERYTHROSE-4P" +], +"chebi":[ +"CHEBI:4114", +"CHEBI:20927", +"CHEBI:12921", +"CHEBI:48153", +"CHEBI:16897", +"CHEBI:42349" +], +"hmdb":[ +"HMDB01321" +], +"inchi_key":[ +"NGHMDNPXVRFFGS-IUYQGCFVSA-L" +], +"kegg.compound":[ +"C00279" +], +"metanetx.chemical":[ +"MNXM258" +], +"reactome.compound":[ +"29878" +], +"sabiork":[ +"1324" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00236" +] +} +}, +{ +"id":"etoh_c", +"name":"Ethanol", +"compartment":"c", +"charge":0, +"formula":"C2H6O", +"notes":{ +"original_bigg_ids":[ +"etoh_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"etoh" +], +"biocyc":[ +"META:ETOH" +], +"chebi":[ +"CHEBI:42377", +"CHEBI:23978", +"CHEBI:30880", +"CHEBI:16236", +"CHEBI:52092", +"CHEBI:30878", +"CHEBI:4879", +"CHEBI:44594", +"CHEBI:14222" +], +"envipath":[ +"5882df9c-dae1-4d80-a40e-db4724271456/compound/a4a354fd-5003-4b7b-b11b-f54204aea384", +"5882df9c-dae1-4d80-a40e-db4724271456/compound/f89efe7c-1a6a-4d21-b99c-e3e1070a8062", +"650babc9-9d68-4b73-9332-11972ca26f7b/compound/56e18a05-c059-433a-94f6-0e26c01b010f", +"32de3cf4-e3e6-4168-956e-32fa5ddb0ce1/compound/9fb1fbdf-101b-4b82-a596-d2f52c870e4f" +], +"hmdb":[ +"HMDB00108" +], +"inchi_key":[ +"LFQSCWFLJHTTHZ-UHFFFAOYSA-N" +], +"kegg.compound":[ +"C00469" +], +"kegg.drug":[ +"D06542", +"D02798", +"D00068", +"D04855" +], +"metanetx.chemical":[ +"MNXM303" +], +"reactome.compound":[ +"113748", +"30203" +], +"sabiork":[ +"56" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00363" +] +} +}, +{ +"id":"etoh_e", +"name":"Ethanol", +"compartment":"e", +"charge":0, +"formula":"C2H6O", +"notes":{ +"original_bigg_ids":[ +"etoh_e" +] +}, +"annotation":{ +"bigg.metabolite":[ +"etoh" +], +"biocyc":[ +"META:ETOH" +], +"chebi":[ +"CHEBI:42377", +"CHEBI:23978", +"CHEBI:30880", +"CHEBI:16236", +"CHEBI:52092", +"CHEBI:30878", +"CHEBI:4879", +"CHEBI:44594", +"CHEBI:14222" +], +"envipath":[ +"5882df9c-dae1-4d80-a40e-db4724271456/compound/a4a354fd-5003-4b7b-b11b-f54204aea384", +"5882df9c-dae1-4d80-a40e-db4724271456/compound/f89efe7c-1a6a-4d21-b99c-e3e1070a8062", +"650babc9-9d68-4b73-9332-11972ca26f7b/compound/56e18a05-c059-433a-94f6-0e26c01b010f", +"32de3cf4-e3e6-4168-956e-32fa5ddb0ce1/compound/9fb1fbdf-101b-4b82-a596-d2f52c870e4f" +], +"hmdb":[ +"HMDB00108" +], +"inchi_key":[ +"LFQSCWFLJHTTHZ-UHFFFAOYSA-N" +], +"kegg.compound":[ +"C00469" +], +"kegg.drug":[ +"D06542", +"D02798", +"D00068", +"D04855" +], +"metanetx.chemical":[ +"MNXM303" +], +"reactome.compound":[ +"113748", +"30203" +], +"sabiork":[ +"56" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00363" +] +} +}, +{ +"id":"f6p_c", +"name":"D-Fructose 6-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C6H11O9P", +"notes":{ +"original_bigg_ids":[ +"f6p_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"f6p" +], +"biocyc":[ +"META:FRUCTOSE-6P" +], +"chebi":[ +"CHEBI:16084", +"CHEBI:12352", +"CHEBI:57634", +"CHEBI:22768", +"CHEBI:10375", +"CHEBI:42378" +], +"hmdb":[ +"HMDB03971" +], +"inchi_key":[ +"BGWGXPAPYGQALX-ARQDHWQXSA-L" +], +"kegg.compound":[ +"C05345" +], +"metanetx.chemical":[ +"MNXM89621" +], +"sabiork":[ +"25" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd19035" +] +} +}, +{ +"id":"fdp_c", +"name":"D-Fructose 1,6-bisphosphate", +"compartment":"c", +"charge":-4, +"formula":"C6H10O12P2", +"notes":{ +"original_bigg_ids":[ +"fdp_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"fdp" +], +"chebi":[ +"CHEBI:37736", +"CHEBI:49299" +], +"inchi_key":[ +"RNBGYGVWRKECFJ-VRPWFDPXSA-J" +], +"kegg.compound":[ +"C00354" +], +"metanetx.chemical":[ +"MNXM417" +], +"sabiork":[ +"1465" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00290" +] +} +}, +{ +"id":"for_c", +"name":"Formate", +"compartment":"c", +"charge":-1, +"formula":"CH1O2", +"notes":{ +"original_bigg_ids":[ +"for_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"for" +], +"biocyc":[ +"META:CPD1G-1532", +"META:CPD1G-1535", +"META:FORMATE", +"META:CPD-9845", +"META:CPD1G-1534", +"META:CARBOXYL-GROUP", +"META:CPD1G-1533" +], +"chebi":[ +"CHEBI:24081", +"CHEBI:30751", +"CHEBI:15740", +"CHEBI:5145", +"CHEBI:42460", +"CHEBI:14276", +"CHEBI:24082" +], +"envipath":[ +"650babc9-9d68-4b73-9332-11972ca26f7b/compound/9a9d20ae-b6ec-40a9-93ca-1de20597b1ed", +"32de3cf4-e3e6-4168-956e-32fa5ddb0ce1/compound/09c1ad08-016e-4477-8840-b97a031eae23", +"4fd7f3e0-dd25-43ac-9453-dda3e52396e4/compound/bf16ab32-cb3c-4427-a65a-089ab754823e", +"5882df9c-dae1-4d80-a40e-db4724271456/compound/34fe3cd9-9b0b-46b0-a1c5-8a66509f1919", +"650babc9-9d68-4b73-9332-11972ca26f7b/compound/1d077cf2-3f9f-4163-aa49-0fca1b2b3ab3" +], +"hmdb":[ +"HMDB00142" +], +"inchi_key":[ +"BDAGIHXWWSANSR-UHFFFAOYSA-M" +], +"kegg.compound":[ +"C00058" +], +"metanetx.chemical":[ +"MNXM39" +], +"reactome.compound":[ +"29460", +"194712", +"389585", +"6801451" +], +"sabiork":[ +"1285" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00047", +"cpd22511" +] +} +}, +{ +"id":"for_e", +"name":"Formate", +"compartment":"e", +"charge":-1, +"formula":"CH1O2", +"notes":{ +"original_bigg_ids":[ +"for_e" +] +}, +"annotation":{ +"bigg.metabolite":[ +"for" +], +"biocyc":[ +"META:CPD1G-1532", +"META:CPD1G-1535", +"META:FORMATE", +"META:CPD-9845", +"META:CPD1G-1534", +"META:CARBOXYL-GROUP", +"META:CPD1G-1533" +], +"chebi":[ +"CHEBI:24081", +"CHEBI:30751", +"CHEBI:15740", +"CHEBI:5145", +"CHEBI:42460", +"CHEBI:14276", +"CHEBI:24082" +], +"envipath":[ +"650babc9-9d68-4b73-9332-11972ca26f7b/compound/9a9d20ae-b6ec-40a9-93ca-1de20597b1ed", +"32de3cf4-e3e6-4168-956e-32fa5ddb0ce1/compound/09c1ad08-016e-4477-8840-b97a031eae23", +"4fd7f3e0-dd25-43ac-9453-dda3e52396e4/compound/bf16ab32-cb3c-4427-a65a-089ab754823e", +"5882df9c-dae1-4d80-a40e-db4724271456/compound/34fe3cd9-9b0b-46b0-a1c5-8a66509f1919", +"650babc9-9d68-4b73-9332-11972ca26f7b/compound/1d077cf2-3f9f-4163-aa49-0fca1b2b3ab3" +], +"hmdb":[ +"HMDB00142" +], +"inchi_key":[ +"BDAGIHXWWSANSR-UHFFFAOYSA-M" +], +"kegg.compound":[ +"C00058" +], +"metanetx.chemical":[ +"MNXM39" +], +"reactome.compound":[ +"29460", +"194712", +"389585", +"6801451" +], +"sabiork":[ +"1285" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00047", +"cpd22511" +] +} +}, +{ +"id":"fru_e", +"name":"D-Fructose", +"compartment":"e", +"charge":0, +"formula":"C6H12O6", +"notes":{ +"original_bigg_ids":[ +"fru_e" +] +}, +"annotation":{ +"bigg.metabolite":[ +"fru" +], +"biocyc":[ +"META:D-Fructopyranose", +"META:Fructofuranose", +"META:CPD-15382", +"META:FRU" +], +"chebi":[ +"CHEBI:47424", +"CHEBI:28757", +"CHEBI:24110", +"CHEBI:20929", +"CHEBI:4119", +"CHEBI:15824", +"CHEBI:5172", +"CHEBI:24104", +"CHEBI:12923", +"CHEBI:4118", +"CHEBI:37714", +"CHEBI:37721", +"CHEBI:48095" +], +"hmdb":[ +"HMDB62538" +], +"inchi_key":[ +"RFSUNEUAIZKAJO-VRPWFDPXSA-N" +], +"kegg.compound":[ +"C01496", +"C05003", +"C00095", +"C10906" +], +"kegg.drug":[ +"D00114" +], +"metanetx.chemical":[ +"MNXM175" +], +"reactome.compound":[ +"189049", +"29532" +], +"sabiork":[ +"25055", +"1463", +"1464" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00082", +"cpd19015", +"cpd27040" +] +} +}, +{ +"id":"fum_c", +"name":"Fumarate", +"compartment":"c", +"charge":-2, +"formula":"C4H2O4", +"notes":{ +"original_bigg_ids":[ +"fum_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"fum" +], +"biocyc":[ +"META:FUM" +], +"chebi":[ +"CHEBI:36180", +"CHEBI:37155", +"CHEBI:42511", +"CHEBI:5190", +"CHEBI:18012", +"CHEBI:42743", +"CHEBI:22956", +"CHEBI:22957", +"CHEBI:24124", +"CHEBI:14284", +"CHEBI:37154", +"CHEBI:29806", +"CHEBI:22958", +"CHEBI:24122" +], +"envipath":[ +"32de3cf4-e3e6-4168-956e-32fa5ddb0ce1/compound/709035ec-4868-4de8-9095-06428f6be14b" +], +"hmdb":[ +"HMDB00134" +], +"inchi_key":[ +"VZCYOOQTPOCHFL-OWOJBTEDSA-L" +], +"kegg.compound":[ +"C00122" +], +"kegg.drug":[ +"D02308" +], +"metanetx.chemical":[ +"MNXM93" +], +"reactome.compound":[ +"113588", +"29586" +], +"sabiork":[ +"1910" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00106" +] +} +}, +{ +"id":"fum_e", +"name":"Fumarate", +"compartment":"e", +"charge":-2, +"formula":"C4H2O4", +"notes":{ +"original_bigg_ids":[ +"fum_e" +] +}, +"annotation":{ +"bigg.metabolite":[ +"fum" +], +"biocyc":[ +"META:FUM" +], +"chebi":[ +"CHEBI:36180", +"CHEBI:37155", +"CHEBI:42511", +"CHEBI:5190", +"CHEBI:18012", +"CHEBI:42743", +"CHEBI:22956", +"CHEBI:22957", +"CHEBI:24124", +"CHEBI:14284", +"CHEBI:37154", +"CHEBI:29806", +"CHEBI:22958", +"CHEBI:24122" +], +"envipath":[ +"32de3cf4-e3e6-4168-956e-32fa5ddb0ce1/compound/709035ec-4868-4de8-9095-06428f6be14b" +], +"hmdb":[ +"HMDB00134" +], +"inchi_key":[ +"VZCYOOQTPOCHFL-OWOJBTEDSA-L" +], +"kegg.compound":[ +"C00122" +], +"kegg.drug":[ +"D02308" +], +"metanetx.chemical":[ +"MNXM93" +], +"reactome.compound":[ +"113588", +"29586" +], +"sabiork":[ +"1910" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00106" +] +} +}, +{ +"id":"g3p_c", +"name":"Glyceraldehyde 3-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C3H5O6P", +"notes":{ +"original_bigg_ids":[ +"g3p_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"g3p" +], +"biocyc":[ +"META:GAP" +], +"chebi":[ +"CHEBI:5446", +"CHEBI:14333", +"CHEBI:12984", +"CHEBI:181", +"CHEBI:17138", +"CHEBI:21026", +"CHEBI:12983", +"CHEBI:18324", +"CHEBI:58027", +"CHEBI:59776", +"CHEBI:29052" +], +"hmdb":[ +"HMDB01112" +], +"inchi_key":[ +"LXJXRIRHZLFYRP-VKHMYHEASA-L" +], +"kegg.compound":[ +"C00661", +"C00118" +], +"metanetx.chemical":[ +"MNXM74" +], +"reactome.compound":[ +"29578" +], +"sabiork":[ +"27", +"1687" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00102", +"cpd19005" +] +} +}, +{ +"id":"g6p_c", +"name":"D-Glucose 6-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C6H11O9P", +"notes":{ +"original_bigg_ids":[ +"g6p_c" +] +}, +"annotation":{ +"bigg.metabolite":[ +"g6p" +], +"biocyc":[ +"META:D-glucopyranose-6-phosphate" +], +"chebi":[ +"CHEBI:61548", +"CHEBI:14314", +"CHEBI:4170" +], +"hmdb":[ +"HMDB01549", +"HMDB01401", +"HMDB06793" +], +"inchi_key":[ +"NBSCHQHZLSJFNQ-GASJEMHNSA-L" +], +"kegg.compound":[ +"C00092" +], +"metanetx.chemical":[ +"MNXM160" +], +"reactome.compound":[ +"1629756" +], +"sabiork":[ +"1404", +"1405" +], +"sbo":"SBO:0000247", +"seed.compound":[ +"cpd00079", +"cpd26836" +] +} +} +], +"reactions":[ +{ +"id":"PFK", +"name":"Phosphofructokinase", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"f6p_c":-1.0, +"fdp_c":1.0, +"h_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b3916 or b1723", +"subsystem":"Glycolysis/Gluconeogenesis", +"notes":{ +"original_bigg_ids":[ +"PFK" +] +}, +"annotation":{ +"bigg.reaction":[ +"PFK" +], +"ec-code":[ +"2.7.1.11" +], +"metanetx.reaction":[ +"MNXR102507" +], +"rhea":[ +"16111", +"16109", +"16110", +"16112" +], +"sbo":"SBO:0000176" +} +}, +{ +"id":"PFL", +"name":"Pyruvate formate lyase", +"metabolites":{ +"accoa_c":1.0, +"coa_c":-1.0, +"for_c":1.0, +"pyr_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"((b0902 and b0903) and b2579) or (b0902 and b0903) or (b0902 and b3114) or (b3951 and b3952)", +"subsystem":"Pyruvate Metabolism", +"notes":{ +"original_bigg_ids":[ +"PFL" +] +}, +"annotation":{ +"bigg.reaction":[ +"PFL" +], +"biocyc":[ +"META:PYRUVFORMLY-RXN" +], +"ec-code":[ +"2.3.1.54" +], +"kegg.reaction":[ +"R00212" +], +"metanetx.reaction":[ +"MNXR102514" +], +"rhea":[ +"11847", +"11845", +"11844", +"11846" +], +"sabiork":[ +"146" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn00157" +] +} +}, +{ +"id":"PGI", +"name":"Glucose-6-phosphate isomerase", +"metabolites":{ +"f6p_c":1.0, +"g6p_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b4025", +"subsystem":"Glycolysis/Gluconeogenesis", +"notes":{ +"original_bigg_ids":[ +"PGI" +] +}, +"annotation":{ +"bigg.reaction":[ +"PGI" +], +"biocyc":[ +"META:PGLUCISOM-RXN" +], +"ec-code":[ +"5.3.1.9" +], +"metanetx.reaction":[ +"MNXR102535" +], +"sbo":"SBO:0000176" +} +}, +{ +"id":"PGK", +"name":"Phosphoglycerate kinase", +"metabolites":{ +"13dpg_c":1.0, +"3pg_c":-1.0, +"adp_c":1.0, +"atp_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b2926", +"subsystem":"Glycolysis/Gluconeogenesis", +"notes":{ +"original_bigg_ids":[ +"PGK" +] +}, +"annotation":{ +"bigg.reaction":[ +"PGK" +], +"biocyc":[ +"META:PHOSGLYPHOS-RXN" +], +"ec-code":[ +"2.7.2.3" +], +"kegg.reaction":[ +"R01512" +], +"metanetx.reaction":[ +"MNXR102538" +], +"reactome.reaction":[ +"R-ATH-71850", +"R-DME-71850", +"R-GGA-71850", +"R-SPO-71850", +"R-OSA-71850", +"R-GGA-353039", +"R-GGA-353023", +"R-BTA-71850", +"R-CFA-70486", +"R-MMU-71850", +"R-DME-70486", +"R-PFA-71850", +"R-SPO-70486", +"R-SCE-70486", +"R-PFA-70486", +"R-SSC-70486", +"R-ATH-70486", +"R-DRE-70486", +"R-HSA-70486", +"R-OSA-70486", +"R-XTR-71850", +"R-MMU-70486", +"R-RNO-70486", +"R-TGU-70486", +"R-DRE-71850", +"R-SSC-71850", +"R-SCE-71850", +"R-CFA-71850", +"R-XTR-70486", +"R-DDI-70486", +"R-DDI-71850", +"R-RNO-71850", +"R-BTA-70486", +"R-CEL-70486", +"R-HSA-71850", +"R-CEL-71850", +"R-GGA-70486", +"R-TGU-71850" +], +"rhea":[ +"14801", +"14804", +"14802", +"14803" +], +"sabiork":[ +"7644" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn01100" +] +} +}, +{ +"id":"PGL", +"name":"6-phosphogluconolactonase", +"metabolites":{ +"6pgc_c":1.0, +"6pgl_c":-1.0, +"h2o_c":-1.0, +"h_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b0767", +"subsystem":"Pentose Phosphate Pathway", +"notes":{ +"original_bigg_ids":[ +"PGL" +] +}, +"annotation":{ +"bigg.reaction":[ +"PGL" +], +"biocyc":[ +"META:6PGLUCONOLACT-RXN" +], +"ec-code":[ +"3.1.1.31" +], +"kegg.reaction":[ +"R02035" +], +"metanetx.reaction":[ +"MNXR102539" +], +"reactome.reaction":[ +"R-OSA-71296", +"R-CFA-71296", +"R-CEL-71296", +"R-GGA-71296", +"R-MMU-71296", +"R-SSC-71296", +"R-BTA-71296", +"R-ATH-71296", +"R-DME-71296", +"R-DRE-71296", +"R-SCE-71296", +"R-HSA-71296", +"R-XTR-71296", +"R-RNO-71296", +"R-DDI-71296", +"R-SPO-71296" +], +"rhea":[ +"12559", +"12556", +"12557", +"12558" +], +"sabiork":[ +"109" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn01476" +] +} +}, +{ +"id":"ACALD", +"name":"Acetaldehyde dehydrogenase (acetylating)", +"metabolites":{ +"acald_c":-1.0, +"accoa_c":1.0, +"coa_c":-1.0, +"h_c":1.0, +"nad_c":-1.0, +"nadh_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b0351 or b1241", +"subsystem":"Pyruvate Metabolism", +"notes":{ +"original_bigg_ids":[ +"ACALD" +] +}, +"annotation":{ +"bigg.reaction":[ +"ACALD" +], +"biocyc":[ +"META:ACETALD-DEHYDROG-RXN" +], +"ec-code":[ +"1.2.1.10" +], +"kegg.reaction":[ +"R00228" +], +"metanetx.reaction":[ +"MNXR95210" +], +"rhea":[ +"23290", +"23291", +"23289", +"23288" +], +"sabiork":[ +"163" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn00171" +] +} +}, +{ +"id":"AKGt2r", +"name":"2 oxoglutarate reversible transport via symport", +"metabolites":{ +"akg_c":1.0, +"akg_e":-1.0, +"h_c":1.0, +"h_e":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b2587", +"subsystem":"Transport, Extracellular", +"notes":{ +"original_bigg_ids":[ +"AKGt2r" +] +}, +"annotation":{ +"bigg.reaction":[ +"AKGt2r" +], +"biocyc":[ +"META:TRANS-RXN-23" +], +"metanetx.reaction":[ +"MNXR95661" +], +"rhea":[ +"29011", +"29013", +"29012", +"29014" +], +"sbo":"SBO:0000185", +"seed.reaction":[ +"rxn05493", +"rxn08095", +"rxn09827" +] +} +}, +{ +"id":"PGM", +"name":"Phosphoglycerate mutase", +"metabolites":{ +"2pg_c":-1.0, +"3pg_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b3612 or b4395 or b0755", +"subsystem":"Glycolysis/Gluconeogenesis", +"notes":{ +"original_bigg_ids":[ +"PGM" +] +}, +"annotation":{ +"bigg.reaction":[ +"PGM" +], +"biocyc":[ +"META:3PGAREARR-RXN", +"META:RXN-15513" +], +"ec-code":[ +"5.4.2.1", +"5.4.2.11", +"5.4.2.12" +], +"kegg.reaction":[ +"R01518" +], +"metanetx.reaction":[ +"MNXR102547" +], +"reactome.reaction":[ +"R-XTR-71654", +"R-SSC-71654", +"R-DME-71445", +"R-XTR-71445", +"R-RNO-71445", +"R-GGA-71654", +"R-SSC-71445", +"R-GGA-71445", +"R-DDI-71654", +"R-SPO-71654", +"R-MMU-71445", +"R-BTA-71445", +"R-CFA-71445", +"R-PFA-71445", +"R-GGA-352994", +"R-TGU-71654", +"R-SPO-71445", +"R-HSA-71445", +"R-ATH-71654", +"R-MMU-71654", +"R-BTA-71654", +"R-GGA-353014", +"R-DRE-71654", +"R-HSA-71654", +"R-CFA-71654", +"R-OSA-71654", +"R-DDI-71445", +"R-RNO-71654", +"R-DRE-71445", +"R-OSA-71445", +"R-PFA-71654", +"R-DME-71654", +"R-TGU-71445", +"R-SCE-71445", +"R-ATH-71445", +"R-SCE-71654" +], +"rhea":[ +"15902", +"15903", +"15901", +"15904" +], +"sabiork":[ +"7641" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn01106" +] +} +}, +{ +"id":"PIt2r", +"name":"Phosphate reversible transport via symport", +"metabolites":{ +"h_c":1.0, +"h_e":-1.0, +"pi_c":1.0, +"pi_e":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b2987 or b3493", +"subsystem":"Inorganic Ion Transport and Metabolism", +"notes":{ +"original_bigg_ids":[ +"PIt2r" +] +}, +"annotation":{ +"bigg.reaction":[ +"PIt2r" +], +"biocyc":[ +"META:TRANS-RXN-114" +], +"metanetx.reaction":[ +"MNXR102872" +], +"rhea":[ +"29939", +"29941", +"29940", +"29942" +], +"sbo":"SBO:0000185", +"seed.reaction":[ +"rxn05312", +"rxn09833", +"rxn09811", +"rxn09872", +"rxn09723", +"rxn09120" +] +} +}, +{ +"id":"ALCD2x", +"name":"Alcohol dehydrogenase (ethanol)", +"metabolites":{ +"acald_c":1.0, +"etoh_c":-1.0, +"h_c":1.0, +"nad_c":-1.0, +"nadh_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b0356 or b1478 or b1241", +"subsystem":"Pyruvate Metabolism", +"notes":{ +"original_bigg_ids":[ +"ALCD2x" +] +}, +"annotation":{ +"bigg.reaction":[ +"ALCD2x" +], +"biocyc":[ +"META:ALCOHOL-DEHYDROG-RXN" +], +"ec-code":[ +"1.1.1.71", +"1.1.1.1" +], +"kegg.reaction":[ +"R00754" +], +"metanetx.reaction":[ +"MNXR95725" +], +"reactome.reaction":[ +"R-MMU-71707", +"R-XTR-71707", +"R-CFA-71707", +"R-OSA-71707", +"R-RNO-71707", +"R-HSA-71707", +"R-SSC-71707", +"R-GGA-71707", +"R-SPO-71707", +"R-DME-71707", +"R-DRE-71707", +"R-BTA-71707", +"R-ATH-71707", +"R-SCE-71707", +"R-TGU-71707", +"R-CEL-71707", +"R-DDI-71707" +], +"rhea":[ +"25292", +"25290", +"25291", +"25293" +], +"sabiork":[ +"597" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn00543" +] +} +}, +{ +"id":"ACALDt", +"name":"Acetaldehyde reversible transport", +"metabolites":{ +"acald_c":1.0, +"acald_e":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"s0001", +"subsystem":"Transport, Extracellular", +"notes":{ +"original_bigg_ids":[ +"ACALDt" +] +}, +"annotation":{ +"bigg.reaction":[ +"ACALDt" +], +"metanetx.reaction":[ +"MNXR95212" +], +"reactome.reaction":[ +"R-HSA-449872" +], +"sbo":"SBO:0000185", +"seed.reaction":[ +"rxn09700", +"rxn08033", +"rxn13212", +"rxn08032" +] +} +}, +{ +"id":"ACKr", +"name":"Acetate kinase", +"metabolites":{ +"ac_c":-1.0, +"actp_c":1.0, +"adp_c":1.0, +"atp_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b3115 or b2296 or b1849", +"subsystem":"Pyruvate Metabolism", +"notes":{ +"original_bigg_ids":[ +"ACKr" +] +}, +"annotation":{ +"bigg.reaction":[ +"ACKr" +], +"biocyc":[ +"META:ACETATEKIN-RXN" +], +"ec-code":[ +"2.7.2.15", +"2.7.2.1" +], +"kegg.reaction":[ +"R00315" +], +"metanetx.reaction":[ +"MNXR95269" +], +"rhea":[ +"11354", +"11355", +"11353", +"11352" +], +"sabiork":[ +"71" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn00225" +] +} +}, +{ +"id":"PPC", +"name":"Phosphoenolpyruvate carboxylase", +"metabolites":{ +"co2_c":-1.0, +"h2o_c":-1.0, +"h_c":1.0, +"oaa_c":1.0, +"pep_c":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b3956", +"subsystem":"Anaplerotic reactions", +"notes":{ +"original_bigg_ids":[ +"PPC" +] +}, +"annotation":{ +"bigg.reaction":[ +"PPC" +], +"ec-code":[ +"4.1.1.31" +], +"kegg.reaction":[ +"R00345" +], +"metanetx.reaction":[ +"MNXR103096" +], +"rhea":[ +"23073", +"23072", +"23075", +"23074" +], +"sabiork":[ +"150" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn00251" +] +} +}, +{ +"id":"ACONTa", +"name":"Aconitase (half-reaction A, Citrate hydro-lyase)", +"metabolites":{ +"acon_C_c":1.0, +"cit_c":-1.0, +"h2o_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b0118 or b1276", +"subsystem":"Citric Acid Cycle", +"notes":{ +"original_bigg_ids":[ +"ACONTa" +] +}, +"annotation":{ +"bigg.reaction":[ +"ACONTa" +], +"biocyc":[ +"META:ACONITATEDEHYDR-RXN" +], +"ec-code":[ +"4.2.1.3" +], +"kegg.reaction":[ +"R01325" +], +"metanetx.reaction":[ +"MNXR95386" +], +"rhea":[ +"10230", +"10229", +"10231", +"10228" +], +"sabiork":[ +"268" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn00974" +] +} +}, +{ +"id":"ACONTb", +"name":"Aconitase (half-reaction B, Isocitrate hydro-lyase)", +"metabolites":{ +"acon_C_c":-1.0, +"h2o_c":-1.0, +"icit_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b0118 or b1276", +"subsystem":"Citric Acid Cycle", +"notes":{ +"original_bigg_ids":[ +"ACONTb" +] +}, +"annotation":{ +"bigg.reaction":[ +"ACONTb" +], +"ec-code":[ +"4.2.1.3" +], +"kegg.reaction":[ +"R01900" +], +"metanetx.reaction":[ +"MNXR95387" +], +"rhea":[ +"22145", +"22144", +"22146", +"22147" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn01388" +] +} +}, +{ +"id":"ATPM", +"name":"ATP maintenance requirement", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"h2o_c":-1.0, +"h_c":1.0, +"pi_c":1.0 +}, +"lower_bound":8.39, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Biomass and maintenance functions", +"notes":{ +"original_bigg_ids":[ +"ATPM" +] +}, +"annotation":{ +"bigg.reaction":[ +"ATPM" +], +"biocyc":[ +"META:ATPASE-RXN" +], +"ec-code":[ +"3.6.1.5", +"3.6.3.34", +"3.6.3.20", +"3.6.3.53", +"3.6.3.8", +"3.6.3.32", +"3.6.4.12", +"3.6.3.48", +"3.6.3.40", +"3.6.3.9", +"3.6.3.23", +"3.6.3.22", +"3.6.3.54", +"3.6.3.1", +"3.6.1.8", +"3.6.3.29", +"3.6.3.17", +"3.6.3.50", +"3.6.3.39", +"3.6.3.19", +"3.6.3.4", +"3.6.3.35", +"3.6.3.16", +"3.6.4.4", +"3.6.3.37", +"3.6.4.8", +"3.6.3.31", +"3.6.3.6", +"3.6.4.5", +"3.6.3.52", +"3.6.3.2", +"3.6.3.14", +"3.6.3.51", +"3.6.3.25", +"3.6.3.38", +"3.6.3.33", +"3.6.3.43", +"3.6.4.10", +"3.6.4.13", +"3.6.3.3", +"3.6.3.10", +"3.6.3.24", +"3.6.3.44", +"3.6.3.15", +"3.6.3.5", +"3.6.1.3", +"3.6.1.15", +"3.6.4.2", +"3.6.4.3", +"3.6.3.42", +"3.6.3.11", +"3.6.3.28", +"3.6.3.30", +"3.6.4.1", +"3.6.4.11", +"3.6.3.47", +"3.6.4.6", +"3.6.3.36", +"3.6.3.21", +"3.6.3.12", +"3.6.3.18", +"3.6.3.26", +"3.6.3.27", +"3.6.3.7", +"3.6.4.9", +"3.6.4.7", +"3.6.3.46", +"3.6.3.41", +"3.6.3.49" +], +"kegg.reaction":[ +"R00086" +], +"metanetx.reaction":[ +"MNXR96131" +], +"rhea":[ +"13066", +"13065", +"13068", +"13067" +], +"sabiork":[ +"75" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn11300", +"rxn09694", +"rxn00062" +] +} +}, +{ +"id":"PPCK", +"name":"Phosphoenolpyruvate carboxykinase", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"co2_c":1.0, +"oaa_c":-1.0, +"pep_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b3403", +"subsystem":"Anaplerotic reactions", +"notes":{ +"original_bigg_ids":[ +"PPCK" +] +}, +"annotation":{ +"bigg.reaction":[ +"PPCK" +], +"biocyc":[ +"META:PEPCARBOXYKIN-RXN" +], +"ec-code":[ +"4.1.1.49" +], +"kegg.reaction":[ +"R00341" +], +"metanetx.reaction":[ +"MNXR103099" +], +"rhea":[ +"18620", +"18618", +"18617", +"18619" +], +"sabiork":[ +"151" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn00247" +] +} +}, +{ +"id":"ACt2r", +"name":"Acetate reversible transport via proton symport", +"metabolites":{ +"ac_c":1.0, +"ac_e":-1.0, +"h_c":1.0, +"h_e":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport, Extracellular", +"notes":{ +"original_bigg_ids":[ +"ACt2r" +] +}, +"annotation":{ +"bigg.reaction":[ +"ACt2r" +], +"biocyc":[ +"META:TRANS-RXN0-571" +], +"metanetx.reaction":[ +"MNXR95429" +], +"sbo":"SBO:0000185", +"seed.reaction":[ +"rxn08061", +"rxn05488" +] +} +}, +{ +"id":"PPS", +"name":"Phosphoenolpyruvate synthase", +"metabolites":{ +"amp_c":1.0, +"atp_c":-1.0, +"h2o_c":-1.0, +"h_c":2.0, +"pep_c":1.0, +"pi_c":1.0, +"pyr_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b1702", +"subsystem":"Glycolysis/Gluconeogenesis", +"notes":{ +"original_bigg_ids":[ +"PPS" +] +}, +"annotation":{ +"bigg.reaction":[ +"PPS" +], +"biocyc":[ +"META:PEPSYNTH-RXN" +], +"ec-code":[ +"2.7.9.2" +], +"kegg.reaction":[ +"R00199" +], +"metanetx.reaction":[ +"MNXR103140" +], +"rhea":[ +"11364", +"11367", +"11366", +"11365" +], +"sabiork":[ +"148" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn00147" +] +} +}, +{ +"id":"ADK1", +"name":"Adenylate kinase", +"metabolites":{ +"adp_c":2.0, +"amp_c":-1.0, +"atp_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b0474", +"subsystem":"Oxidative Phosphorylation", +"notes":{ +"original_bigg_ids":[ +"ADK1" +] +}, +"annotation":{ +"bigg.reaction":[ +"ADK1" +], +"biocyc":[ +"META:ADENYL-KIN-RXN" +], +"ec-code":[ +"2.7.4.3" +], +"kegg.reaction":[ +"R00127" +], +"metanetx.reaction":[ +"MNXR95450" +], +"reactome.reaction":[ +"R-ATH-110145", +"R-SSC-110144", +"R-ATH-110144", +"R-SSC-110145", +"R-GGA-110145", +"R-PFA-110144", +"R-HSA-110145", +"R-RNO-110144", +"R-OSA-110145", +"R-SCE-110145", +"R-RNO-110145", +"R-XTR-110144", +"R-SCE-110144", +"R-PFA-110145", +"R-OSA-110144", +"R-HSA-110144", +"R-BTA-110144", +"R-DRE-110145", +"R-DRE-110144", +"R-SPO-110145", +"R-CEL-110144", +"R-CFA-110144", +"R-XTR-110145", +"R-MMU-110144", +"R-DME-110144", +"R-SPO-110144", +"R-DDI-110145", +"R-GGA-110144", +"R-TGU-110144", +"R-BTA-110145", +"R-CEL-110145", +"R-CFA-110145", +"R-DME-110145", +"R-TGU-110145", +"R-DDI-110144", +"R-MMU-110145" +], +"rhea":[ +"12975", +"12973", +"12976", +"12974" +], +"sabiork":[ +"82" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn00097" +] +} +}, +{ +"id":"AKGDH", +"name":"2-Oxogluterate dehydrogenase", +"metabolites":{ +"akg_c":-1.0, +"co2_c":1.0, +"coa_c":-1.0, +"nad_c":-1.0, +"nadh_c":1.0, +"succoa_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b0116 and b0726 and b0727", +"subsystem":"Citric Acid Cycle", +"notes":{ +"original_bigg_ids":[ +"AKGDH" +] +}, +"annotation":{ +"bigg.reaction":[ +"AKGDH" +], +"biocyc":[ +"META:2OXOGLUTARATEDEH-RXN" +], +"ec-code":[ +"1.2.1.52", +"2.3.1.61", +"1.8.1.4", +"1.2.4.2" +], +"kegg.reaction":[ +"R08549" +], +"metanetx.reaction":[ +"MNXR95655" +], +"reactome.reaction":[ +"R-PFA-71401", +"R-XTR-71401", +"R-SCE-71401", +"R-SSC-71401", +"R-TGU-71401", +"R-ATH-71401", +"R-OSA-71401", +"R-SPO-71401", +"R-CEL-71401", +"R-RNO-71401", +"R-DRE-71401", +"R-GGA-373042", +"R-DDI-71401", +"R-CFA-71401", +"R-HSA-71401", +"R-BTA-71401", +"R-DME-71401", +"R-MMU-71401", +"R-GGA-71401" +], +"rhea":[ +"27789", +"27788", +"27786", +"27787" +], +"sabiork":[ +"8163" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn08094" +] +} +}, +{ +"id":"ATPS4r", +"name":"ATP synthase (four protons for one ATP)", +"metabolites":{ +"adp_c":-1.0, +"atp_c":1.0, +"h2o_c":1.0, +"h_c":3.0, +"h_e":-4.0, +"pi_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"((b3736 and b3737 and b3738) and (b3731 and b3732 and b3733 and b3734 and b3735)) or ((b3736 and b3737 and b3738) and (b3731 and b3732 and b3733 and b3734 and b3735) and b3739)", +"subsystem":"Oxidative Phosphorylation", +"notes":{ +"original_bigg_ids":[ +"ATPS4r" +] +}, +"annotation":{ +"bigg.reaction":[ +"ATPS4r" +], +"biocyc":[ +"META:ATPSYN-RXN" +], +"ec-code":[ +"3.6.3.14" +], +"metanetx.reaction":[ +"MNXR96136" +], +"sbo":"SBO:0000185", +"seed.reaction":[ +"rxn08173", +"rxn10042" +] +} +}, +{ +"id":"PTAr", +"name":"Phosphotransacetylase", +"metabolites":{ +"accoa_c":-1.0, +"actp_c":1.0, +"coa_c":1.0, +"pi_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b2297 or b2458", +"subsystem":"Pyruvate Metabolism", +"notes":{ +"original_bigg_ids":[ +"PTAr" +] +}, +"annotation":{ +"bigg.reaction":[ +"PTAr" +], +"biocyc":[ +"META:PHOSACETYLTRANS-RXN" +], +"ec-code":[ +"2.3.1.8" +], +"kegg.reaction":[ +"R00230" +], +"metanetx.reaction":[ +"MNXR103319" +], +"rhea":[ +"19521", +"19523", +"19522", +"19524" +], +"sabiork":[ +"72" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn00173" +] +} +}, +{ +"id":"PYK", +"name":"Pyruvate kinase", +"metabolites":{ +"adp_c":-1.0, +"atp_c":1.0, +"h_c":-1.0, +"pep_c":-1.0, +"pyr_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b1854 or b1676", +"subsystem":"Glycolysis/Gluconeogenesis", +"notes":{ +"original_bigg_ids":[ +"PYK" +] +}, +"annotation":{ +"bigg.reaction":[ +"PYK" +], +"biocyc":[ +"META:PEPDEPHOS-RXN" +], +"ec-code":[ +"2.7.1.40" +], +"kegg.reaction":[ +"R00200" +], +"metanetx.reaction":[ +"MNXR103371" +], +"reactome.reaction":[ +"R-SSC-71670", +"R-GGA-353056", +"R-DRE-71670", +"R-OSA-71670", +"R-SPO-71670", +"R-DDI-71670", +"R-SCE-71670", +"R-CEL-71670", +"R-PFA-71670", +"R-HSA-71670", +"R-TGU-71670", +"R-DME-71670", +"R-ATH-71670", +"R-BTA-71670", +"R-MMU-71670", +"R-RNO-71670", +"R-GGA-71670", +"R-CFA-71670", +"R-XTR-71670" +], +"rhea":[ +"18160", +"18159", +"18158", +"18157" +], +"sabiork":[ +"9" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn00148" +] +} +}, +{ +"id":"BIOMASS_Ecoli_core_w_GAM", +"name":"Biomass Objective Function with GAM", +"metabolites":{ +"3pg_c":-1.496, +"accoa_c":-3.7478, +"adp_c":59.81, +"akg_c":4.1182, +"atp_c":-59.81, +"coa_c":3.7478, +"e4p_c":-0.361, +"f6p_c":-0.0709, +"g3p_c":-0.129, +"g6p_c":-0.205, +"gln__L_c":-0.2557, +"glu__L_c":-4.9414, +"h2o_c":-59.81, +"h_c":59.81, +"nad_c":-3.547, +"nadh_c":3.547, +"nadp_c":13.0279, +"nadph_c":-13.0279, +"oaa_c":-1.7867, +"pep_c":-0.5191, +"pi_c":59.81, +"pyr_c":-2.8328, +"r5p_c":-0.8977 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"objective_coefficient":1.0, +"subsystem":"Biomass and maintenance functions", +"notes":{ +"original_bigg_ids":[ +"Biomass_Ecoli_core_w_GAM" +] +}, +"annotation":{ +"bigg.reaction":[ +"BIOMASS_Ecoli_core_w_GAM" +], +"metanetx.reaction":[ +"MNXR96280" +], +"sbo":"SBO:0000629" +} +}, +{ +"id":"PYRt2", +"name":"Pyruvate transport in via proton symport", +"metabolites":{ +"h_c":1.0, +"h_e":-1.0, +"pyr_c":1.0, +"pyr_e":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport, Extracellular", +"notes":{ +"original_bigg_ids":[ +"PYRt2r" +] +}, +"annotation":{ +"bigg.reaction":[ +"PYRt2" +], +"metanetx.reaction":[ +"MNXR103385" +], +"reactome.reaction":[ +"R-RNO-372347", +"R-HSA-372342", +"R-GGA-372359" +], +"sbo":"SBO:0000185", +"seed.reaction":[ +"rxn05469", +"rxn09832", +"rxn09717", +"rxn09217" +] +} +}, +{ +"id":"CO2t", +"name":"CO2 transporter via diffusion", +"metabolites":{ +"co2_c":1.0, +"co2_e":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"s0001", +"subsystem":"Transport, Extracellular", +"notes":{ +"original_bigg_ids":[ +"CO2t" +] +}, +"annotation":{ +"bigg.reaction":[ +"CO2t" +], +"biocyc":[ +"META:TRANS-RXN0-545" +], +"metanetx.reaction":[ +"MNXR96810" +], +"reactome.reaction":[ +"R-DDI-1247645", +"R-CFA-1237069", +"R-TGU-1247649", +"R-CFA-1237042", +"R-CEL-1247645", +"R-XTR-1237069", +"R-HSA-1247645", +"R-OSA-1237042", +"R-GGA-1237042", +"R-BTA-1247645", +"R-GGA-1247649", +"R-RNO-1247645", +"R-XTR-1247645", +"R-TGU-1237042", +"R-SCE-1247649", +"R-MMU-1247649", +"R-CFA-1247649", +"R-GGA-1247645", +"R-SSC-1247645", +"R-BTA-1237069", +"R-RNO-1237069", +"R-SCE-1237042", +"R-DDI-1247649", +"R-SSC-1237042", +"R-DRE-1247649", +"R-DRE-1237042", +"R-DDI-1237042", +"R-DME-1237042", +"R-MMU-1237042", +"R-SSC-1247649", +"R-TGU-1237069", +"R-BTA-1247649", +"R-CFA-1247645", +"R-RNO-1247649", +"R-HSA-1237069", +"R-CEL-1237069", +"R-DDI-1237069", +"R-MMU-1237069", +"R-DME-1247645", +"R-ATH-1237042", +"R-OSA-1247649", +"R-HSA-1237042", +"R-DRE-1247645", +"R-HSA-1247649", +"R-MMU-1247645", +"R-DME-1237069", +"R-RNO-1237042", +"R-TGU-1247645", +"R-BTA-1237042", +"R-GGA-1237069", +"R-DME-1247649", +"R-SSC-1237069", +"R-DRE-1237069", +"R-ATH-1247649" +], +"sbo":"SBO:0000185", +"seed.reaction":[ +"rxn05467", +"rxn08237", +"rxn09706", +"rxn09821", +"rxn09775", +"rxn09876", +"rxn08238", +"rxn09860" +] +} +}, +{ +"id":"RPE", +"name":"Ribulose 5-phosphate 3-epimerase", +"metabolites":{ +"ru5p__D_c":-1.0, +"xu5p__D_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b3386 or b4301", +"subsystem":"Pentose Phosphate Pathway", +"notes":{ +"original_bigg_ids":[ +"RPE" +] +}, +"annotation":{ +"bigg.reaction":[ +"RPE" +], +"biocyc":[ +"META:RIBULP3EPIM-RXN" +], +"ec-code":[ +"5.1.3.1" +], +"kegg.reaction":[ +"R01529" +], +"metanetx.reaction":[ +"MNXR104083" +], +"reactome.reaction":[ +"R-SPO-71303", +"R-CFA-199803", +"R-ATH-71303", +"R-SCE-71303", +"R-CFA-71303", +"R-DME-199803", +"R-XTR-199803", +"R-SSC-199803", +"R-GGA-199803", +"R-TGU-71303", +"R-OSA-199803", +"R-SSC-71303", +"R-MMU-71303", +"R-OSA-71303", +"R-HSA-71303", +"R-MMU-199803", +"R-XTR-71303", +"R-SPO-199803", +"R-SCE-199803", +"R-DDI-71303", +"R-RNO-71303", +"R-DME-71303", +"R-HSA-199803", +"R-DRE-71303", +"R-PFA-199803", +"R-CEL-199803", +"R-RNO-199803", +"R-PFA-71303", +"R-CEL-71303", +"R-TGU-199803", +"R-GGA-71303", +"R-DDI-199803", +"R-BTA-71303", +"R-ATH-199803", +"R-DRE-199803", +"R-BTA-199803" +], +"rhea":[ +"13677", +"13680", +"13678", +"13679" +], +"sabiork":[ +"62" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn01116" +] +} +}, +{ +"id":"CS", +"name":"Citrate synthase", +"metabolites":{ +"accoa_c":-1.0, +"cit_c":1.0, +"coa_c":1.0, +"h2o_c":-1.0, +"h_c":1.0, +"oaa_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b0720", +"subsystem":"Citric Acid Cycle", +"notes":{ +"original_bigg_ids":[ +"CS" +] +}, +"annotation":{ +"bigg.reaction":[ +"CS" +], +"biocyc":[ +"META:CITSYN-RXN", +"META:RXN-14905" +], +"ec-code":[ +"2.3.3.16", +"2.3.3.1", +"2.3.3.3" +], +"kegg.reaction":[ +"R00351" +], +"metanetx.reaction":[ +"MNXR96920" +], +"reactome.reaction":[ +"R-GGA-373006", +"R-GGA-70975", +"R-CEL-70975", +"R-HSA-70975", +"R-DRE-70975", +"R-MMU-70975", +"R-ATH-70975", +"R-SPO-70975", +"R-OSA-70975", +"R-SCE-70975", +"R-SSC-70975", +"R-DDI-70975", +"R-RNO-70975", +"R-DME-70975", +"R-PFA-70975", +"R-XTR-70975", +"R-CFA-70975", +"R-BTA-70975" +], +"rhea":[ +"16847", +"16846", +"16845", +"16848" +], +"sabiork":[ +"267" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn00256" +] +} +}, +{ +"id":"RPI", +"name":"Ribose-5-phosphate isomerase", +"metabolites":{ +"r5p_c":-1.0, +"ru5p__D_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b2914 or b4090", +"subsystem":"Pentose Phosphate Pathway", +"notes":{ +"original_bigg_ids":[ +"RPI" +] +}, +"annotation":{ +"bigg.reaction":[ +"RPI" +], +"ec-code":[ +"5.3.1.6" +], +"metanetx.reaction":[ +"MNXR104084" +], +"sbo":"SBO:0000176" +} +}, +{ +"id":"SUCCt2_2", +"name":"Succinate transport via proton symport (2 H)", +"metabolites":{ +"h_c":2.0, +"h_e":-2.0, +"succ_c":1.0, +"succ_e":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b3528", +"subsystem":"Transport, Extracellular", +"notes":{ +"original_bigg_ids":[ +"SUCCt2_2" +] +}, +"annotation":{ +"bigg.reaction":[ +"SUCCt2_2" +], +"biocyc":[ +"META:TRANS-RXN-121" +], +"metanetx.reaction":[ +"MNXR104620" +], +"rhea":[ +"29305", +"29306", +"29304", +"29303" +], +"sbo":"SBO:0000185", +"seed.reaction":[ +"rxn10154", +"rxn09269" +] +} +}, +{ +"id":"CYTBD", +"name":"Cytochrome oxidase bd (ubiquinol-8: 2 protons)", +"metabolites":{ +"h2o_c":1.0, +"h_c":-2.0, +"h_e":2.0, +"o2_c":-0.5, +"q8_c":1.0, +"q8h2_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"(b0978 and b0979) or (b0733 and b0734)", +"subsystem":"Oxidative Phosphorylation", +"notes":{ +"original_bigg_ids":[ +"CYTBD" +] +}, +"annotation":{ +"bigg.reaction":[ +"CYTBD" +], +"metanetx.reaction":[ +"MNXR97031" +], +"sbo":"SBO:0000185", +"seed.reaction":[ +"rxn12494", +"rxn10112", +"rxn08288" +] +} +}, +{ +"id":"D_LACt2", +"name":"D lactate transport via proton symport", +"metabolites":{ +"h_c":1.0, +"h_e":-1.0, +"lac__D_c":1.0, +"lac__D_e":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b2975 or b3603", +"subsystem":"Transport, Extracellular", +"notes":{ +"original_bigg_ids":[ +"D_LACt2" +] +}, +"annotation":{ +"bigg.reaction":[ +"D_LACt2" +], +"biocyc":[ +"META:TRANS-RXN0-515" +], +"metanetx.reaction":[ +"MNXR97838" +], +"sbo":"SBO:0000185", +"seed.reaction":[ +"rxn10171", +"rxn09772", +"rxn08350" +] +} +}, +{ +"id":"ENO", +"name":"Enolase", +"metabolites":{ +"2pg_c":-1.0, +"h2o_c":1.0, +"pep_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b2779", +"subsystem":"Glycolysis/Gluconeogenesis", +"notes":{ +"original_bigg_ids":[ +"ENO" +] +}, +"annotation":{ +"bigg.reaction":[ +"ENO" +], +"biocyc":[ +"META:2PGADEHYDRAT-RXN" +], +"ec-code":[ +"4.2.1.11" +], +"kegg.reaction":[ +"R00658" +], +"metanetx.reaction":[ +"MNXR97932" +], +"reactome.reaction":[ +"R-BTA-71660", +"R-RNO-70494", +"R-TGU-71660", +"R-SSC-71660", +"R-GGA-352981", +"R-DME-70494", +"R-CFA-70494", +"R-OSA-70494", +"R-SCE-71660", +"R-GGA-353044", +"R-CFA-71660", +"R-GGA-70494", +"R-PFA-71660", +"R-SPO-71660", +"R-SPO-70494", +"R-DDI-70494", +"R-RNO-71660", +"R-MMU-70494", +"R-ATH-70494", +"R-SCE-70494", +"R-SSC-70494", +"R-HSA-70494", +"R-DME-71660", +"R-CEL-71660", +"R-HSA-71660", +"R-TGU-70494", +"R-XTR-71660", +"R-DRE-70494", +"R-DRE-71660", +"R-MMU-71660", +"R-ATH-71660", +"R-BTA-70494", +"R-CEL-70494", +"R-XTR-70494", +"R-DDI-71660", +"R-OSA-71660", +"R-PFA-70494", +"R-GGA-71660" +], +"rhea":[ +"10166", +"10165", +"10164", +"10167" +], +"sabiork":[ +"8" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn00459" +] +} +}, +{ +"id":"SUCCt3", +"name":"Succinate transport out via proton antiport", +"metabolites":{ +"h_c":1.0, +"h_e":-1.0, +"succ_c":-1.0, +"succ_e":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport, Extracellular", +"notes":{ +"original_bigg_ids":[ +"SUCCt3" +] +}, +"annotation":{ +"bigg.reaction":[ +"SUCCt3" +], +"metanetx.reaction":[ +"MNXR104623" +], +"sbo":"SBO:0000185", +"seed.reaction":[ +"rxn09270" +] +} +}, +{ +"id":"ETOHt2r", +"name":"Ethanol reversible transport via proton symport", +"metabolites":{ +"etoh_c":1.0, +"etoh_e":-1.0, +"h_c":1.0, +"h_e":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport, Extracellular", +"notes":{ +"original_bigg_ids":[ +"ETOHt2r" +] +}, +"annotation":{ +"bigg.reaction":[ +"ETOHt2r" +], +"metanetx.reaction":[ +"MNXR97981" +], +"sbo":"SBO:0000185", +"seed.reaction":[ +"rxn10146", +"rxn08427" +] +} +}, +{ +"id":"SUCDi", +"name":"Succinate dehydrogenase (irreversible)", +"metabolites":{ +"fum_c":1.0, +"q8_c":-1.0, +"q8h2_c":1.0, +"succ_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b0721 and b0722 and b0723 and b0724", +"subsystem":"Oxidative Phosphorylation", +"notes":{ +"original_bigg_ids":[ +"SUCDi" +] +}, +"annotation":{ +"bigg.reaction":[ +"SUCDi" +], +"metanetx.reaction":[ +"MNXR99641" +], +"rhea":[ +"29190", +"29189", +"29187", +"29188" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn09272" +] +} +}, +{ +"id":"SUCOAS", +"name":"Succinyl-CoA synthetase (ADP-forming)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"coa_c":-1.0, +"pi_c":1.0, +"succ_c":-1.0, +"succoa_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b0728 and b0729", +"subsystem":"Citric Acid Cycle", +"notes":{ +"original_bigg_ids":[ +"SUCOAS" +] +}, +"annotation":{ +"bigg.reaction":[ +"SUCOAS" +], +"biocyc":[ +"META:SUCCCOASYN-RXN" +], +"ec-code":[ +"6.2.1.5" +], +"kegg.reaction":[ +"R00405" +], +"metanetx.reaction":[ +"MNXR104635" +], +"reactome.reaction":[ +"R-BTA-70997", +"R-GGA-372977", +"R-PFA-70997", +"R-GGA-373134", +"R-TGU-70997", +"R-XTR-70997", +"R-SSC-70997", +"R-HSA-70997", +"R-DRE-70997", +"R-SCE-70997", +"R-SPO-70997", +"R-DDI-70997", +"R-CFA-70997", +"R-OSA-70997", +"R-GGA-70997", +"R-RNO-70997", +"R-ATH-70997", +"R-MMU-70997" +], +"rhea":[ +"17664", +"17663", +"17662", +"17661" +], +"sabiork":[ +"260" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn00285" +] +} +}, +{ +"id":"TALA", +"name":"Transaldolase", +"metabolites":{ +"e4p_c":1.0, +"f6p_c":1.0, +"g3p_c":-1.0, +"s7p_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b2464 or b0008", +"subsystem":"Pentose Phosphate Pathway", +"notes":{ +"original_bigg_ids":[ +"TALA" +] +}, +"annotation":{ +"bigg.reaction":[ +"TALA" +], +"biocyc":[ +"META:TRANSALDOL-RXN" +], +"ec-code":[ +"2.2.1.2" +], +"kegg.reaction":[ +"R01827" +], +"metanetx.reaction":[ +"MNXR104715" +], +"rhea":[ +"17056", +"17055", +"17054", +"17053" +], +"sbo":"SBO:0000176" +} +}, +{ +"id":"THD2", +"name":"NAD(P) transhydrogenase", +"metabolites":{ +"h_c":2.0, +"h_e":-2.0, +"nad_c":1.0, +"nadh_c":-1.0, +"nadp_c":-1.0, +"nadph_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b1602 and b1603", +"subsystem":"Oxidative Phosphorylation", +"notes":{ +"original_bigg_ids":[ +"THD2" +] +}, +"annotation":{ +"bigg.reaction":[ +"THD2" +], +"ec-code":[ +"1.6.1.1" +], +"metanetx.reaction":[ +"MNXR104805" +], +"sbo":"SBO:0000185", +"seed.reaction":[ +"rxn10125", +"rxn09295" +] +} +}, +{ +"id":"TKT1", +"name":"Transketolase", +"metabolites":{ +"g3p_c":1.0, +"r5p_c":-1.0, +"s7p_c":1.0, +"xu5p__D_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b2935 or b2465", +"subsystem":"Pentose Phosphate Pathway", +"notes":{ +"original_bigg_ids":[ +"TKT1" +] +}, +"annotation":{ +"bigg.reaction":[ +"TKT1" +], +"ec-code":[ +"2.2.1.1" +], +"metanetx.reaction":[ +"MNXR104868" +], +"sbo":"SBO:0000176" +} +}, +{ +"id":"TKT2", +"name":"Transketolase", +"metabolites":{ +"e4p_c":-1.0, +"f6p_c":1.0, +"g3p_c":1.0, +"xu5p__D_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b2935 or b2465", +"subsystem":"Pentose Phosphate Pathway", +"notes":{ +"original_bigg_ids":[ +"TKT2" +] +}, +"annotation":{ +"bigg.reaction":[ +"TKT2" +], +"biocyc":[ +"META:2TRANSKETO-RXN" +], +"ec-code":[ +"2.2.1.1" +], +"kegg.reaction":[ +"R01830" +], +"metanetx.reaction":[ +"MNXR104869" +], +"rhea":[ +"27627", +"27628", +"27626", +"27629" +], +"sbo":"SBO:0000176" +} +}, +{ +"id":"TPI", +"name":"Triose-phosphate isomerase", +"metabolites":{ +"dhap_c":-1.0, +"g3p_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b3919", +"subsystem":"Glycolysis/Gluconeogenesis", +"notes":{ +"original_bigg_ids":[ +"TPI" +] +}, +"annotation":{ +"bigg.reaction":[ +"TPI" +], +"biocyc":[ +"META:TRIOSEPISOMERIZATION-RXN" +], +"ec-code":[ +"5.3.1.1" +], +"kegg.reaction":[ +"R01015" +], +"metanetx.reaction":[ +"MNXR104918" +], +"reactome.reaction":[ +"R-RNO-70481", +"R-MMU-70481", +"R-XTR-70481", +"R-SSC-70481", +"R-GGA-352927", +"R-SCE-70454", +"R-CEL-70481", +"R-PFA-70454", +"R-XTR-70454", +"R-BTA-70481", +"R-BTA-70454", +"R-GGA-352914", +"R-ATH-70481", +"R-CFA-70454", +"R-OSA-70454", +"R-HSA-70481", +"R-DRE-70454", +"R-DME-70481", +"R-OSA-70481", +"R-DRE-70481", +"R-ATH-70454", +"R-HSA-70454", +"R-SSC-70454", +"R-DDI-70454", +"R-SCE-70481", +"R-CFA-70481", +"R-PFA-70481", +"R-DDI-70481", +"R-SPO-70454", +"R-SPO-70481", +"R-RNO-70454", +"R-MMU-70454", +"R-CEL-70454", +"R-GGA-70481", +"R-GGA-70454", +"R-DME-70454" +], +"rhea":[ +"18587", +"18588", +"18586", +"18585" +], +"sabiork":[ +"4" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn00747" +] +} +}, +{ +"id":"EX_ac_e", +"name":"Acetate exchange", +"metabolites":{ +"ac_e":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange", +"notes":{ +"original_bigg_ids":[ +"EX_ac_e" +] +}, +"annotation":{ +"bigg.reaction":[ +"EX_ac_e" +], +"biocyc":[ +"META:RXN0-1981", +"META:TRANS-RXN0-567" +], +"metanetx.reaction":[ +"MNXR95431" +], +"rhea":[ +"27817", +"27814", +"27816", +"27815" +], +"sabiork":[ +"12184" +], +"sbo":"SBO:0000627", +"seed.reaction":[ +"rxn09787", +"rxn09866", +"rxn10904", +"rxn08063" +] +} +}, +{ +"id":"EX_acald_e", +"name":"Acetaldehyde exchange", +"metabolites":{ +"acald_e":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange", +"notes":{ +"original_bigg_ids":[ +"EX_acald_e" +] +}, +"annotation":{ +"bigg.reaction":[ +"EX_acald_e" +], +"metanetx.reaction":[ +"MNXR95212" +], +"reactome.reaction":[ +"R-HSA-449872" +], +"sbo":"SBO:0000627", +"seed.reaction":[ +"rxn09700", +"rxn08033", +"rxn13212", +"rxn08032" +] +} +}, +{ +"id":"EX_akg_e", +"name":"2-Oxoglutarate exchange", +"metabolites":{ +"akg_e":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange", +"notes":{ +"original_bigg_ids":[ +"EX_akg_e" +] +}, +"annotation":{ +"bigg.reaction":[ +"EX_akg_e" +], +"metanetx.reaction":[ +"MNXR95663" +], +"sabiork":[ +"13794" +], +"sbo":"SBO:0000627", +"seed.reaction":[ +"rxn10923", +"rxn08096", +"rxn13220" +] +} +}, +{ +"id":"EX_co2_e", +"name":"CO2 exchange", +"metabolites":{ +"co2_e":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange", +"notes":{ +"original_bigg_ids":[ +"EX_co2_e" +] +}, +"annotation":{ +"bigg.reaction":[ +"EX_co2_e" +], +"biocyc":[ +"META:TRANS-RXN0-545" +], +"metanetx.reaction":[ +"MNXR96810" +], +"reactome.reaction":[ +"R-DDI-1247645", +"R-CFA-1237069", +"R-TGU-1247649", +"R-CFA-1237042", +"R-CEL-1247645", +"R-XTR-1237069", +"R-HSA-1247645", +"R-OSA-1237042", +"R-GGA-1237042", +"R-BTA-1247645", +"R-GGA-1247649", +"R-RNO-1247645", +"R-XTR-1247645", +"R-TGU-1237042", +"R-SCE-1247649", +"R-MMU-1247649", +"R-CFA-1247649", +"R-GGA-1247645", +"R-SSC-1247645", +"R-BTA-1237069", +"R-RNO-1237069", +"R-SCE-1237042", +"R-DDI-1247649", +"R-SSC-1237042", +"R-DRE-1247649", +"R-DRE-1237042", +"R-DDI-1237042", +"R-DME-1237042", +"R-MMU-1237042", +"R-SSC-1247649", +"R-TGU-1237069", +"R-BTA-1247649", +"R-CFA-1247645", +"R-RNO-1247649", +"R-HSA-1237069", +"R-CEL-1237069", +"R-DDI-1237069", +"R-MMU-1237069", +"R-DME-1247645", +"R-ATH-1237042", +"R-OSA-1247649", +"R-HSA-1237042", +"R-DRE-1247645", +"R-HSA-1247649", +"R-MMU-1247645", +"R-DME-1237069", +"R-RNO-1237042", +"R-TGU-1247645", +"R-BTA-1237042", +"R-GGA-1237069", +"R-DME-1247649", +"R-SSC-1237069", +"R-DRE-1237069", +"R-ATH-1247649" +], +"sbo":"SBO:0000627", +"seed.reaction":[ +"rxn05467", +"rxn08237", +"rxn09706", +"rxn09821", +"rxn09775", +"rxn09876", +"rxn08238", +"rxn09860" +] +} +}, +{ +"id":"EX_etoh_e", +"name":"Ethanol exchange", +"metabolites":{ +"etoh_e":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange", +"notes":{ +"original_bigg_ids":[ +"EX_etoh_e" +] +}, +"annotation":{ +"bigg.reaction":[ +"EX_etoh_e" +], +"biocyc":[ +"META:TRANS-RXN0-546" +], +"metanetx.reaction":[ +"MNXR97980" +], +"rhea":[ +"35269", +"35267", +"35270", +"35268" +], +"sbo":"SBO:0000627", +"seed.reaction":[ +"rxn09683", +"rxn08428", +"rxn09764" +] +} +}, +{ +"id":"EX_for_e", +"name":"Formate exchange", +"metabolites":{ +"for_e":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange", +"notes":{ +"original_bigg_ids":[ +"EX_for_e" +] +}, +"annotation":{ +"bigg.reaction":[ +"EX_for_e" +], +"biocyc":[ +"META:TRANS-RXN-1" +], +"metanetx.reaction":[ +"MNXR99620" +], +"reactome.reaction":[ +"R-HSA-6803255" +], +"rhea":[ +"29681", +"29680", +"29682", +"29679" +], +"sabiork":[ +"12483" +], +"sbo":"SBO:0000627", +"seed.reaction":[ +"rxn09754", +"rxn08525", +"rxn09682", +"rxn08526" +] +} +}, +{ +"id":"EX_fru_e", +"name":"D-Fructose exchange", +"metabolites":{ +"fru_e":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange", +"notes":{ +"original_bigg_ids":[ +"EX_fru_e" +] +}, +"annotation":{ +"bigg.reaction":[ +"EX_fru_e" +], +"metanetx.reaction":[ +"MNXR99663" +], +"reactome.reaction":[ +"R-OSA-189222", +"R-XTR-189222", +"R-SCE-189222", +"R-ATH-189222", +"R-RNO-189222", +"R-DME-189222", +"R-TGU-189222", +"R-SSC-189222", +"R-CFA-189222", +"R-DRE-189222", +"R-HSA-189222", +"R-GGA-189222", +"R-BTA-189222", +"R-MMU-189222", +"R-DDI-189222" +], +"sabiork":[ +"13415" +], +"sbo":"SBO:0000627", +"seed.reaction":[ +"rxn12996", +"rxn08537" +] +} +}, +{ +"id":"EX_fum_e", +"name":"Fumarate exchange", +"metabolites":{ +"fum_e":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange", +"notes":{ +"original_bigg_ids":[ +"EX_fum_e" +] +}, +"annotation":{ +"bigg.reaction":[ +"EX_fum_e" +], +"biocyc":[ +"META:TRANS-RXN0-553" +], +"metanetx.reaction":[ +"MNXR99715" +], +"sbo":"SBO:0000627", +"seed.reaction":[ +"rxn08544", +"rxn11013" +] +} +}, +{ +"id":"EX_glc__D_e", +"name":"D-Glucose exchange", +"metabolites":{ +"glc__D_e":-1.0 +}, +"lower_bound":-10.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange", +"notes":{ +"original_bigg_ids":[ +"EX_glc_e" +] +}, +"annotation":{ +"bigg.reaction":[ +"EX_glc__D_e" +], +"biocyc":[ +"META:TRANS-RXN0-574" +], +"metanetx.reaction":[ +"MNXR100188" +], +"sabiork":[ +"7002", +"601" +], +"sbo":"SBO:0000627", +"seed.reaction":[ +"rxn09875", +"rxn09679", +"rxn08617" +] +} +}, +{ +"id":"EX_gln__L_e", +"name":"L-Glutamine exchange", +"metabolites":{ +"gln__L_e":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange", +"notes":{ +"original_bigg_ids":[ +"EX_gln_L_e" +] +}, +"annotation":{ +"bigg.reaction":[ +"EX_gln__L_e" +], +"biocyc":[ +"META:TRANS-RXN-233" +], +"metanetx.reaction":[ +"MNXR100259" +], +"reactome.reaction":[ +"R-HSA-212651", +"R-BTA-212614", +"R-RNO-212614", +"R-SSC-212614", +"R-MMU-212614", +"R-HSA-212614", +"R-GGA-212614", +"R-CFA-212614", +"R-TGU-212614", +"R-SCE-212614" +], +"sabiork":[ +"13421" +], +"sbo":"SBO:0000627", +"seed.reaction":[ +"rxn08625", +"rxn10928" +] +} +}, +{ +"id":"EX_glu__L_e", +"name":"L-Glutamate exchange", +"metabolites":{ +"glu__L_e":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange", +"notes":{ +"original_bigg_ids":[ +"EX_glu_L_e" +] +}, +"annotation":{ +"bigg.reaction":[ +"EX_glu__L_e" +], +"biocyc":[ +"META:TRANS-RXN-234", +"META:TRANS-RXN-232" +], +"metanetx.reaction":[ +"MNXR100301" +], +"reactome.reaction":[ +"R-HSA-212658", +"R-TGU-210439", +"R-GGA-210439", +"R-XTR-210439", +"R-RNO-210439", +"R-CFA-210439", +"R-CEL-210439", +"R-DME-210439", +"R-SSC-210439", +"R-HSA-210439", +"R-DRE-210439", +"R-MMU-210439", +"R-BTA-210439" +], +"sabiork":[ +"12283" +], +"sbo":"SBO:0000627", +"seed.reaction":[ +"rxn08633", +"rxn09750", +"rxn13304", +"rxn13120", +"rxn10917" +] +} +}, +{ +"id":"EX_h_e", +"name":"H+ exchange", +"metabolites":{ +"h_e":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange", +"notes":{ +"original_bigg_ids":[ +"EX_h_e" +] +}, +"annotation":{ +"bigg.reaction":[ +"EX_h_e" +], +"biocyc":[ +"META:RXN-14452" +], +"metanetx.reaction":[ +"MNXR100765" +], +"reactome.reaction":[ +"R-HSA-2534378", +"R-DDI-74723", +"R-BTA-170026", +"R-CFA-170026", +"R-SCE-74723", +"R-DRE-74723", +"R-HSA-170026", +"R-TGU-2534378", +"R-HSA-74723", +"R-CFA-2534378", +"R-TGU-74723", +"R-OSA-170026", +"R-RNO-2534378", +"R-GGA-2534378", +"R-MMU-2534378", +"R-BTA-2534378", +"R-SSC-2534378", +"R-DRE-170026", +"R-TGU-170026", +"R-GGA-170026", +"R-SCE-170026", +"R-DRE-2534378", +"R-BTA-74723", +"R-SPO-74723", +"R-XTR-74723", +"R-RNO-74723", +"R-XTR-2534378", +"R-MMU-74723", +"R-CFA-74723", +"R-GGA-74723", +"R-CEL-170026", +"R-MMU-170026", +"R-ATH-74723", +"R-DME-74723", +"R-PFA-74723", +"R-SSC-74723", +"R-XTR-170026", +"R-SSC-170026", +"R-CEL-74723", +"R-ATH-170026", +"R-RNO-170026", +"R-DME-170026" +], +"rhea":[ +"34980", +"34981", +"34982", +"34979" +], +"sbo":"SBO:0000627", +"seed.reaction":[ +"rxn11009", +"rxn08730" +] +} +}, +{ +"id":"EX_h2o_e", +"name":"H2O exchange", +"metabolites":{ +"h2o_e":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange", +"notes":{ +"original_bigg_ids":[ +"EX_h2o_e" +] +}, +"annotation":{ +"bigg.reaction":[ +"EX_h2o_e" +], +"biocyc":[ +"META:TRANS-RXN-145", +"META:TRANS-RXN0-547" +], +"metanetx.reaction":[ +"MNXR98641" +], +"reactome.reaction":[ +"R-ATH-507868", +"R-CFA-432054", +"R-CFA-432010", +"R-RNO-507868", +"R-OSA-432065", +"R-GGA-432010", +"R-SPO-445714", +"R-PFA-445714", +"R-CFA-432065", +"R-GGA-432067", +"R-TGU-432054", +"R-TGU-445714", +"R-OSA-507868", +"R-DRE-507868", +"R-SPO-507868", +"R-BTA-432054", +"R-GGA-507870", +"R-OSA-432010", +"R-DME-432065", +"R-DRE-432067", +"R-PFA-507868", +"R-SSC-432054", +"R-HSA-432065", +"R-OSA-507870", +"R-HSA-432054", +"R-SSC-432065", +"R-CEL-507868", +"R-XTR-507868", +"R-ATH-507870", +"R-SCE-432065", +"R-BTA-507870", +"R-DME-432010", +"R-CFA-445714", +"R-DRE-445714", +"R-BTA-507868", +"R-GGA-507868", +"R-RNO-432054", +"R-RNO-432010", +"R-SSC-432067", +"R-CEL-445714", +"R-DDI-432065", +"R-ATH-432010", +"R-SCE-432054", +"R-MMU-432065", +"R-MMU-445714", +"R-GGA-432065", +"R-HSA-432067", +"R-SSC-507870", +"R-SCE-432067", +"R-RNO-507870", +"R-DME-432054", +"R-ATH-432067", +"R-BTA-445714", +"R-DRE-507870", +"R-DME-507868", +"R-DME-507870", +"R-DRE-432010", +"R-MMU-432010", +"R-HSA-445714", +"R-OSA-432054", +"R-RNO-432067", +"R-TGU-432010", +"R-TGU-507868", +"R-DDI-432054", +"R-PFA-507870", +"R-HSA-507870", +"R-XTR-432067", +"R-HSA-432010", +"R-SSC-507868", +"R-SCE-507870", +"R-CEL-507870", +"R-DDI-507868", +"R-DRE-432054", +"R-XTR-507870", +"R-DDI-432010", +"R-BTA-432065", +"R-CFA-432067", +"R-OSA-432067", +"R-ATH-432065", +"R-GGA-445714", +"R-SCE-507868", +"R-TGU-432065", +"R-MMU-432067", +"R-TGU-507870", +"R-CFA-507870", +"R-RNO-432065", +"R-MMU-432054", +"R-MMU-507868", +"R-SPO-507870", +"R-SCE-432010", +"R-MMU-507870", +"R-SSC-445714", +"R-HSA-507868", +"R-DME-432067", +"R-SSC-432010", +"R-TGU-432067", +"R-GGA-432054", +"R-BTA-432010", +"R-SCE-445714", +"R-DDI-507870", +"R-ATH-432054", +"R-DDI-432067", +"R-XTR-445714", +"R-BTA-432067", +"R-CFA-507868", +"R-RNO-445714" +], +"rhea":[ +"29668", +"29669", +"29667", +"29670" +], +"sbo":"SBO:0000627", +"seed.reaction":[ +"rxn08687", +"rxn08686", +"rxn09745", +"rxn09838", +"rxn09874", +"rxn09812", +"rxn09643", +"rxn05319" +] +} +}, +{ +"id":"EX_lac__D_e", +"name":"D-lactate exchange", +"metabolites":{ +"lac__D_e":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange", +"notes":{ +"original_bigg_ids":[ +"EX_lac_D_e" +] +}, +"annotation":{ +"bigg.reaction":[ +"EX_lac__D_e" +], +"metanetx.reaction":[ +"MNXR97840" +], +"sabiork":[ +"12471" +], +"sbo":"SBO:0000627", +"seed.reaction":[ +"rxn08351" +] +} +}, +{ +"id":"EX_mal__L_e", +"name":"L-Malate exchange", +"metabolites":{ +"mal__L_e":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange", +"notes":{ +"original_bigg_ids":[ +"EX_mal_L_e" +] +}, +"annotation":{ +"bigg.reaction":[ +"EX_mal__L_e" +], +"biocyc":[ +"META:TRANS-RXN-225", +"META:TRANS-RXN-224" +], +"metanetx.reaction":[ +"MNXR101367" +], +"sabiork":[ +"13793" +], +"sbo":"SBO:0000627", +"seed.reaction":[ +"rxn10967", +"rxn08868" +] +} +}, +{ +"id":"EX_nh4_e", +"name":"Ammonia exchange", +"metabolites":{ +"nh4_e":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange", +"notes":{ +"original_bigg_ids":[ +"EX_nh4_e" +] +}, +"annotation":{ +"bigg.reaction":[ +"EX_nh4_e" +], +"biocyc":[ +"META:TRANS-RXN0-206", +"META:RXN-9615", +"META:TRANS-RXN0-544" +], +"metanetx.reaction":[ +"MNXR101950" +], +"reactome.reaction":[ +"R-CEL-444416", +"R-SSC-444416", +"R-DDI-444416", +"R-MMU-444416", +"R-DRE-444416", +"R-GGA-444416", +"R-CFA-444416", +"R-HSA-444416", +"R-XTR-444416", +"R-BTA-444416", +"R-RNO-444416", +"R-TGU-444416", +"R-DME-444416" +], +"rhea":[ +"28749", +"28748", +"28750", +"28747" +], +"sabiork":[ +"11683" +], +"sbo":"SBO:0000627", +"seed.reaction":[ +"rxn13364", +"rxn09835", +"rxn05466", +"rxn08987", +"rxn08986", +"rxn09736" +] +} +}, +{ +"id":"EX_o2_e", +"name":"O2 exchange", +"metabolites":{ +"o2_e":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange", +"notes":{ +"original_bigg_ids":[ +"EX_o2_e" +] +}, +"annotation":{ +"bigg.reaction":[ +"EX_o2_e" +], +"biocyc":[ +"META:TRANS-RXN0-474" +], +"metanetx.reaction":[ +"MNXR102090" +], +"sbo":"SBO:0000627", +"seed.reaction":[ +"rxn09641", +"rxn05468", +"rxn09031", +"rxn09032", +"rxn09734" +] +} +}, +{ +"id":"EX_pi_e", +"name":"Phosphate exchange", +"metabolites":{ +"pi_e":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange", +"notes":{ +"original_bigg_ids":[ +"EX_pi_e" +] +}, +"annotation":{ +"bigg.reaction":[ +"EX_pi_e" +], +"biocyc":[ +"META:TRANS-RXN0-470" +], +"metanetx.reaction":[ +"MNXR102871" +], +"rhea":[ +"32824", +"32826", +"32825", +"32823" +], +"sabiork":[ +"10985" +], +"sbo":"SBO:0000627", +"seed.reaction":[ +"rxn10838", +"rxn09722", +"rxn09121", +"rxn13178" +] +} +}, +{ +"id":"EX_pyr_e", +"name":"Pyruvate exchange", +"metabolites":{ +"pyr_e":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange", +"notes":{ +"original_bigg_ids":[ +"EX_pyr_e" +] +}, +"annotation":{ +"bigg.reaction":[ +"EX_pyr_e" +], +"biocyc":[ +"META:TRANS-RXN0-506", +"META:TRANS-RXN0-570" +], +"metanetx.reaction":[ +"MNXR103384" +], +"sabiork":[ +"12168" +], +"sbo":"SBO:0000627", +"seed.reaction":[ +"rxn10929", +"rxn09218" +] +} +}, +{ +"id":"EX_succ_e", +"name":"Succinate exchange", +"metabolites":{ +"succ_e":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange", +"notes":{ +"original_bigg_ids":[ +"EX_succ_e" +] +}, +"annotation":{ +"bigg.reaction":[ +"EX_succ_e" +], +"biocyc":[ +"META:TRANS-RXN0-552" +], +"metanetx.reaction":[ +"MNXR104619" +], +"sbo":"SBO:0000627", +"seed.reaction":[ +"rxn10952", +"rxn09271" +] +} +}, +{ +"id":"FBA", +"name":"Fructose-bisphosphate aldolase", +"metabolites":{ +"dhap_c":1.0, +"fdp_c":-1.0, +"g3p_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b2097 or b1773 or b2925", +"subsystem":"Glycolysis/Gluconeogenesis", +"notes":{ +"original_bigg_ids":[ +"FBA" +] +}, +"annotation":{ +"bigg.reaction":[ +"FBA" +], +"ec-code":[ +"4.1.2.13" +], +"kegg.reaction":[ +"R01068" +], +"metanetx.reaction":[ +"MNXR99459" +], +"rhea":[ +"14729", +"14732", +"14731", +"14730" +], +"sabiork":[ +"1338" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn00786" +] +} +}, +{ +"id":"FBP", +"name":"Fructose-bisphosphatase", +"metabolites":{ +"f6p_c":1.0, +"fdp_c":-1.0, +"h2o_c":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b3925 or b4232", +"subsystem":"Glycolysis/Gluconeogenesis", +"notes":{ +"original_bigg_ids":[ +"FBP" +] +}, +"annotation":{ +"bigg.reaction":[ +"FBP" +], +"ec-code":[ +"3.1.3.11" +], +"metanetx.reaction":[ +"MNXR99465" +], +"rhea":[ +"11067", +"11065", +"11066", +"11064" +], +"sabiork":[ +"2084" +], +"sbo":"SBO:0000176" +} +}, +{ +"id":"FORt2", +"name":"Formate transport in via proton symport", +"metabolites":{ +"for_c":1.0, +"for_e":-1.0, +"h_c":1.0, +"h_e":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b0904 or b2492", +"subsystem":"Transport, Extracellular", +"notes":{ +"original_bigg_ids":[ +"FORt2" +] +}, +"annotation":{ +"bigg.reaction":[ +"FORt2" +], +"metanetx.reaction":[ +"MNXR99621" +], +"sbo":"SBO:0000185", +"seed.reaction":[ +"rxn08524", +"rxn05559" +] +} +}, +{ +"id":"FORt", +"name":"Formate transport via diffusion", +"metabolites":{ +"for_c":1.0, +"for_e":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":0.0, +"gene_reaction_rule":"b0904 or b2492", +"subsystem":"Transport, Extracellular", +"notes":{ +"original_bigg_ids":[ +"FORti" +] +}, +"annotation":{ +"bigg.reaction":[ +"FORt" +], +"biocyc":[ +"META:TRANS-RXN-1" +], +"metanetx.reaction":[ +"MNXR99620" +], +"reactome.reaction":[ +"R-HSA-6803255" +], +"rhea":[ +"29681", +"29680", +"29682", +"29679" +], +"sabiork":[ +"12483" +], +"sbo":"SBO:0000185", +"seed.reaction":[ +"rxn09754", +"rxn08525", +"rxn09682", +"rxn08526" +] +} +}, +{ +"id":"FRD7", +"name":"Fumarate reductase", +"metabolites":{ +"fum_c":-1.0, +"q8_c":1.0, +"q8h2_c":-1.0, +"succ_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b4151 and b4152 and b4153 and b4154", +"subsystem":"Oxidative Phosphorylation", +"notes":{ +"original_bigg_ids":[ +"FRD7" +] +}, +"annotation":{ +"bigg.reaction":[ +"FRD7" +], +"metanetx.reaction":[ +"MNXR99641" +], +"rhea":[ +"29190", +"29189", +"29187", +"29188" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn09272" +] +} +}, +{ +"id":"FRUpts2", +"name":"Fructose transport via PEP:Pyr PTS (f6p generating)", +"metabolites":{ +"f6p_c":1.0, +"fru_e":-1.0, +"pep_c":-1.0, +"pyr_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b1817 and b1818 and b1819 and b2415 and b2416", +"subsystem":"Transport, Extracellular", +"notes":{ +"original_bigg_ids":[ +"FRUpts2" +] +}, +"annotation":{ +"bigg.reaction":[ +"FRUpts2" +], +"metanetx.reaction":[ +"MNXR99662" +], +"sbo":"SBO:0000185" +} +}, +{ +"id":"FUM", +"name":"Fumarase", +"metabolites":{ +"fum_c":-1.0, +"h2o_c":-1.0, +"mal__L_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b1612 or b4122 or b1611", +"subsystem":"Citric Acid Cycle", +"notes":{ +"original_bigg_ids":[ +"FUM" +] +}, +"annotation":{ +"bigg.reaction":[ +"FUM" +], +"biocyc":[ +"META:FUMHYDR-RXN" +], +"ec-code":[ +"4.2.1.2" +], +"kegg.reaction":[ +"R01082" +], +"metanetx.reaction":[ +"MNXR99705" +], +"reactome.reaction":[ +"R-TGU-451033", +"R-TGU-70982", +"R-HSA-70982", +"R-ATH-451033", +"R-SPO-70982", +"R-SPO-451033", +"R-XTR-451033", +"R-MMU-70982", +"R-DRE-70982", +"R-DME-70982", +"R-DME-451033", +"R-HSA-451033", +"R-SCE-451033", +"R-DDI-451033", +"R-OSA-451033", +"R-CFA-70982", +"R-XTR-70982", +"R-MMU-451033", +"R-OSA-70982", +"R-BTA-70982", +"R-DRE-451033", +"R-GGA-373141", +"R-RNO-451033", +"R-CEL-451033", +"R-ATH-70982", +"R-GGA-373145", +"R-CEL-70982", +"R-BTA-451033", +"R-SSC-451033", +"R-SCE-70982", +"R-CFA-451033", +"R-RNO-70982", +"R-GGA-70982", +"R-DDI-70982", +"R-GGA-451033", +"R-SSC-70982" +], +"rhea":[ +"12463", +"12461", +"12462", +"12460" +], +"sabiork":[ +"256" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn00799" +] +} +}, +{ +"id":"FUMt2_2", +"name":"Fumarate transport via proton symport (2 H)", +"metabolites":{ +"fum_c":1.0, +"fum_e":-1.0, +"h_c":2.0, +"h_e":-2.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b3528", +"subsystem":"Transport, Extracellular", +"notes":{ +"original_bigg_ids":[ +"FUMt2_2" +] +}, +"annotation":{ +"bigg.reaction":[ +"FUMt2_2" +], +"biocyc":[ +"META:TRANS-RXN-121B" +], +"metanetx.reaction":[ +"MNXR99711" +], +"rhea":[ +"29332", +"29334", +"29333", +"29331" +], +"sbo":"SBO:0000185", +"seed.reaction":[ +"rxn08542", +"rxn10152" +] +} +}, +{ +"id":"G6PDH2r", +"name":"Glucose 6-phosphate dehydrogenase", +"metabolites":{ +"6pgl_c":1.0, +"g6p_c":-1.0, +"h_c":1.0, +"nadp_c":-1.0, +"nadph_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b1852", +"subsystem":"Pentose Phosphate Pathway", +"notes":{ +"original_bigg_ids":[ +"G6PDH2r" +] +}, +"annotation":{ +"bigg.reaction":[ +"G6PDH2r" +], +"biocyc":[ +"META:GLU6PDEHYDROG-RXN" +], +"ec-code":[ +"1.1.1.363", +"1.1.1.49" +], +"kegg.reaction":[ +"R00835" +], +"metanetx.reaction":[ +"MNXR99907" +], +"rhea":[ +"15842", +"15843", +"15841", +"15844" +], +"sabiork":[ +"1176", +"6509" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn00604" +] +} +}, +{ +"id":"GAPD", +"name":"Glyceraldehyde-3-phosphate dehydrogenase", +"metabolites":{ +"13dpg_c":1.0, +"g3p_c":-1.0, +"h_c":1.0, +"nad_c":-1.0, +"nadh_c":1.0, +"pi_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b1779", +"subsystem":"Glycolysis/Gluconeogenesis", +"notes":{ +"original_bigg_ids":[ +"GAPD" +] +}, +"annotation":{ +"bigg.reaction":[ +"GAPD" +], +"biocyc":[ +"META:GAPOXNPHOSPHN-RXN" +], +"ec-code":[ +"1.2.1.12", +"1.2.1.59" +], +"kegg.reaction":[ +"R01061" +], +"metanetx.reaction":[ +"MNXR100040" +], +"reactome.reaction":[ +"R-ATH-70482", +"R-DME-70449", +"R-PFA-70482", +"R-SPO-70449", +"R-DRE-70449", +"R-CEL-70449", +"R-CEL-70482", +"R-CFA-70449", +"R-MMU-70482", +"R-HSA-70449", +"R-OSA-70482", +"R-GGA-352956", +"R-RNO-70449", +"R-SCE-70449", +"R-SSC-70482", +"R-ATH-70449", +"R-GGA-70482", +"R-OSA-70449", +"R-GGA-352921", +"R-DDI-70449", +"R-SPO-70482", +"R-TGU-70482", +"R-SCE-70482", +"R-HSA-70482", +"R-DME-70482", +"R-PFA-70449", +"R-XTR-70449", +"R-DRE-70482", +"R-XTR-70482", +"R-GGA-70449", +"R-RNO-70482", +"R-SSC-70449", +"R-DDI-70482", +"R-TGU-70449", +"R-MMU-70449", +"R-CFA-70482", +"R-BTA-70449", +"R-BTA-70482" +], +"rhea":[ +"10303", +"10300", +"10302", +"10301" +], +"sabiork":[ +"7844" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn00781" +] +} +}, +{ +"id":"GLCpts", +"name":"D-glucose transport via PEP:Pyr PTS", +"metabolites":{ +"g6p_c":1.0, +"glc__D_e":-1.0, +"pep_c":-1.0, +"pyr_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"(b2417 and b1101 and b2415 and b2416) or (b1817 and b1818 and b1819 and b2415 and b2416) or (b2417 and b1621 and b2415 and b2416)", +"subsystem":"Transport, Extracellular", +"notes":{ +"original_bigg_ids":[ +"GLCpts" +] +}, +"annotation":{ +"bigg.reaction":[ +"GLCpts" +], +"metanetx.reaction":[ +"MNXR100237" +], +"sbo":"SBO:0000185", +"seed.reaction":[ +"rxn08612", +"rxn05226" +] +} +}, +{ +"id":"GLNS", +"name":"Glutamine synthetase", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"gln__L_c":1.0, +"glu__L_c":-1.0, +"h_c":1.0, +"nh4_c":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b3870 or b1297", +"subsystem":"Glutamate Metabolism", +"notes":{ +"original_bigg_ids":[ +"GLNS" +] +}, +"annotation":{ +"bigg.reaction":[ +"GLNS" +], +"biocyc":[ +"META:GLUTAMINESYN-RXN" +], +"ec-code":[ +"6.3.1.2" +], +"kegg.reaction":[ +"R00253" +], +"metanetx.reaction":[ +"MNXR100024" +], +"reactome.reaction":[ +"R-GGA-70606", +"R-RNO-70606", +"R-TGU-70606", +"R-DME-70606", +"R-CEL-70606", +"R-DRE-70606", +"R-XTR-70606", +"R-SPO-70606", +"R-ATH-70606", +"R-CFA-70606", +"R-BTA-70606", +"R-OSA-70606", +"R-SSC-70606", +"R-MMU-70606", +"R-HSA-70606", +"R-SCE-70606" +], +"rhea":[ +"16172", +"16171", +"16169", +"16170" +], +"sabiork":[ +"760" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn00187" +] +} +}, +{ +"id":"GLNabc", +"name":"L-glutamine transport via ABC system", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"gln__L_c":1.0, +"gln__L_e":-1.0, +"h2o_c":-1.0, +"h_c":1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b0811 and b0810 and b0809", +"subsystem":"Transport, Extracellular", +"notes":{ +"original_bigg_ids":[ +"GLNabc" +] +}, +"annotation":{ +"bigg.reaction":[ +"GLNabc" +], +"biocyc":[ +"META:ABC-12-RXN" +], +"ec-code":[ +"3.6.3.21" +], +"metanetx.reaction":[ +"MNXR100258" +], +"rhea":[ +"29895#1", +"29897#1", +"29898#1", +"29896#1" +], +"sbo":"SBO:0000185", +"seed.reaction":[ +"rxn11233", +"rxn05196", +"rxn05155", +"rxn11101", +"rxn08624" +] +} +}, +{ +"id":"GLUDy", +"name":"Glutamate dehydrogenase (NADP)", +"metabolites":{ +"akg_c":1.0, +"glu__L_c":-1.0, +"h2o_c":-1.0, +"h_c":1.0, +"nadp_c":-1.0, +"nadph_c":1.0, +"nh4_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b1761", +"subsystem":"Glutamate Metabolism", +"notes":{ +"original_bigg_ids":[ +"GLUDy" +] +}, +"annotation":{ +"bigg.reaction":[ +"GLUDy" +], +"biocyc":[ +"META:GLUTDEHYD-RXN" +], +"ec-code":[ +"1.4.1.13", +"1.4.1.3", +"1.4.1.4" +], +"kegg.reaction":[ +"R00248" +], +"metanetx.reaction":[ +"MNXR100086" +], +"rhea":[ +"11613", +"11614", +"11612", +"11615" +], +"sabiork":[ +"757" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn00184" +] +} +}, +{ +"id":"GLUN", +"name":"Glutaminase", +"metabolites":{ +"gln__L_c":-1.0, +"glu__L_c":1.0, +"h2o_c":-1.0, +"nh4_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b1812 or b0485 or b1524", +"subsystem":"Glutamate Metabolism", +"notes":{ +"original_bigg_ids":[ +"GLUN" +] +}, +"annotation":{ +"bigg.reaction":[ +"GLUN" +], +"biocyc":[ +"META:GLUTAMIN-RXN" +], +"ec-code":[ +"6.3.5.2", +"4.3.3.6", +"6.3.5.5", +"1.4.7.1", +"6.3.5.4", +"3.5.1.2", +"6.3.4.2", +"1.4.1.13", +"3.5.1.38" +], +"kegg.reaction":[ +"R00256" +], +"metanetx.reaction":[ +"MNXR100030" +], +"reactome.reaction":[ +"R-TGU-70609", +"R-XTR-70609", +"R-SSC-70609", +"R-GGA-70609", +"R-DDI-70609", +"R-MMU-70609", +"R-DME-70609", +"R-RNO-70609", +"R-CEL-70609", +"R-BTA-70609", +"R-DRE-70609", +"R-HSA-70609", +"R-CFA-70609" +], +"rhea":[ +"15892", +"15889", +"15891", +"15890" +], +"sabiork":[ +"762" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn00189" +] +} +}, +{ +"id":"GLUSy", +"name":"Glutamate synthase (NADPH)", +"metabolites":{ +"akg_c":-1.0, +"gln__L_c":-1.0, +"glu__L_c":2.0, +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b3212 and b3213", +"subsystem":"Glutamate Metabolism", +"notes":{ +"original_bigg_ids":[ +"GLUSy" +] +}, +"annotation":{ +"bigg.reaction":[ +"GLUSy" +], +"biocyc":[ +"META:GLUTAMATESYN-RXN" +], +"ec-code":[ +"1.4.1.13" +], +"kegg.reaction":[ +"R00114" +], +"metanetx.reaction":[ +"MNXR100291" +], +"rhea":[ +"15503", +"15501", +"15504", +"15502" +], +"sabiork":[ +"694" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn00085" +] +} +}, +{ +"id":"GLUt2r", +"name":"L glutamate transport via proton symport reversible", +"metabolites":{ +"glu__L_c":1.0, +"glu__L_e":-1.0, +"h_c":1.0, +"h_e":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b4077", +"subsystem":"Transport, Extracellular", +"notes":{ +"original_bigg_ids":[ +"GLUt2r" +] +}, +"annotation":{ +"bigg.reaction":[ +"GLUt2r" +], +"metanetx.reaction":[ +"MNXR100300" +], +"reactome.reaction":[ +"R-SCE-8875623", +"R-MMU-8875623", +"R-TGU-8875623", +"R-XTR-8875623", +"R-SSC-8875623", +"R-DME-8875623", +"R-CEL-8875623", +"R-DRE-8875623", +"R-GGA-8875623", +"R-HSA-8875623", +"R-RNO-8875623", +"R-DDI-8875623", +"R-CFA-8875623", +"R-BTA-8875623" +], +"sbo":"SBO:0000185", +"seed.reaction":[ +"rxn05297", +"rxn09813", +"rxn13303", +"rxn09751", +"rxn08631" +] +} +}, +{ +"id":"GND", +"name":"Phosphogluconate dehydrogenase", +"metabolites":{ +"6pgc_c":-1.0, +"co2_c":1.0, +"nadp_c":-1.0, +"nadph_c":1.0, +"ru5p__D_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b2029", +"subsystem":"Pentose Phosphate Pathway", +"notes":{ +"original_bigg_ids":[ +"GND" +] +}, +"annotation":{ +"bigg.reaction":[ +"GND" +], +"biocyc":[ +"META:RXN-9952" +], +"ec-code":[ +"1.1.1.44", +"1.1.1.351" +], +"kegg.reaction":[ +"R01528" +], +"metanetx.reaction":[ +"MNXR100389" +], +"reactome.reaction":[ +"R-PFA-71299", +"R-GGA-71299", +"R-HSA-71299", +"R-SPO-71299", +"R-XTR-71299", +"R-ATH-71299", +"R-TGU-71299", +"R-OSA-71299", +"R-MMU-71299", +"R-DRE-71299", +"R-SCE-71299", +"R-SSC-71299", +"R-DDI-71299", +"R-CFA-71299", +"R-DME-71299", +"R-BTA-71299", +"R-CEL-71299" +], +"rhea":[ +"10116", +"10117", +"10118", +"10119" +], +"sabiork":[ +"108" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn01115" +] +} +}, +{ +"id":"H2Ot", +"name":"H2O transport via diffusion", +"metabolites":{ +"h2o_c":1.0, +"h2o_e":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b0875 or s0001", +"subsystem":"Transport, Extracellular", +"notes":{ +"original_bigg_ids":[ +"H2Ot" +] +}, +"annotation":{ +"bigg.reaction":[ +"H2Ot" +], +"biocyc":[ +"META:TRANS-RXN-145", +"META:TRANS-RXN0-547" +], +"metanetx.reaction":[ +"MNXR98641" +], +"reactome.reaction":[ +"R-ATH-507868", +"R-CFA-432054", +"R-CFA-432010", +"R-RNO-507868", +"R-OSA-432065", +"R-GGA-432010", +"R-SPO-445714", +"R-PFA-445714", +"R-CFA-432065", +"R-GGA-432067", +"R-TGU-432054", +"R-TGU-445714", +"R-OSA-507868", +"R-DRE-507868", +"R-SPO-507868", +"R-BTA-432054", +"R-GGA-507870", +"R-OSA-432010", +"R-DME-432065", +"R-DRE-432067", +"R-PFA-507868", +"R-SSC-432054", +"R-HSA-432065", +"R-OSA-507870", +"R-HSA-432054", +"R-SSC-432065", +"R-CEL-507868", +"R-XTR-507868", +"R-ATH-507870", +"R-SCE-432065", +"R-BTA-507870", +"R-DME-432010", +"R-CFA-445714", +"R-DRE-445714", +"R-BTA-507868", +"R-GGA-507868", +"R-RNO-432054", +"R-RNO-432010", +"R-SSC-432067", +"R-CEL-445714", +"R-DDI-432065", +"R-ATH-432010", +"R-SCE-432054", +"R-MMU-432065", +"R-MMU-445714", +"R-GGA-432065", +"R-HSA-432067", +"R-SSC-507870", +"R-SCE-432067", +"R-RNO-507870", +"R-DME-432054", +"R-ATH-432067", +"R-BTA-445714", +"R-DRE-507870", +"R-DME-507868", +"R-DME-507870", +"R-DRE-432010", +"R-MMU-432010", +"R-HSA-445714", +"R-OSA-432054", +"R-RNO-432067", +"R-TGU-432010", +"R-TGU-507868", +"R-DDI-432054", +"R-PFA-507870", +"R-HSA-507870", +"R-XTR-432067", +"R-HSA-432010", +"R-SSC-507868", +"R-SCE-507870", +"R-CEL-507870", +"R-DDI-507868", +"R-DRE-432054", +"R-XTR-507870", +"R-DDI-432010", +"R-BTA-432065", +"R-CFA-432067", +"R-OSA-432067", +"R-ATH-432065", +"R-GGA-445714", +"R-SCE-507868", +"R-TGU-432065", +"R-MMU-432067", +"R-TGU-507870", +"R-CFA-507870", +"R-RNO-432065", +"R-MMU-432054", +"R-MMU-507868", +"R-SPO-507870", +"R-SCE-432010", +"R-MMU-507870", +"R-SSC-445714", +"R-HSA-507868", +"R-DME-432067", +"R-SSC-432010", +"R-TGU-432067", +"R-GGA-432054", +"R-BTA-432010", +"R-SCE-445714", +"R-DDI-507870", +"R-ATH-432054", +"R-DDI-432067", +"R-XTR-445714", +"R-BTA-432067", +"R-CFA-507868", +"R-RNO-445714" +], +"rhea":[ +"29668", +"29669", +"29667", +"29670" +], +"sbo":"SBO:0000185", +"seed.reaction":[ +"rxn08687", +"rxn08686", +"rxn09745", +"rxn09838", +"rxn09874", +"rxn09812", +"rxn09643", +"rxn05319" +] +} +}, +{ +"id":"ICDHyr", +"name":"Isocitrate dehydrogenase (NADP)", +"metabolites":{ +"akg_c":1.0, +"co2_c":1.0, +"icit_c":-1.0, +"nadp_c":-1.0, +"nadph_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b1136", +"subsystem":"Citric Acid Cycle", +"notes":{ +"original_bigg_ids":[ +"ICDHyr" +] +}, +"annotation":{ +"bigg.reaction":[ +"ICDHyr" +], +"ec-code":[ +"1.1.1.42" +], +"kegg.reaction":[ +"R00267" +], +"metanetx.reaction":[ +"MNXR100781" +], +"rhea":[ +"19629", +"19630", +"19631", +"19632" +], +"sabiork":[ +"269" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn00198" +] +} +}, +{ +"id":"ICL", +"name":"Isocitrate lyase", +"metabolites":{ +"glx_c":1.0, +"icit_c":-1.0, +"succ_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b4015", +"subsystem":"Anaplerotic reactions", +"notes":{ +"original_bigg_ids":[ +"ICL" +] +}, +"annotation":{ +"bigg.reaction":[ +"ICL" +], +"ec-code":[ +"4.1.3.1" +], +"kegg.reaction":[ +"R00479" +], +"metanetx.reaction":[ +"MNXR100789" +], +"rhea":[ +"13248", +"13245", +"13246", +"13247" +], +"sabiork":[ +"911" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn00336" +] +} +}, +{ +"id":"LDH_D", +"name":"D-lactate dehydrogenase", +"metabolites":{ +"h_c":1.0, +"lac__D_c":-1.0, +"nad_c":-1.0, +"nadh_c":1.0, +"pyr_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b2133 or b1380", +"subsystem":"Pyruvate Metabolism", +"notes":{ +"original_bigg_ids":[ +"LDH_D" +] +}, +"annotation":{ +"bigg.reaction":[ +"LDH_D" +], +"biocyc":[ +"META:DLACTDEHYDROGNAD-RXN" +], +"ec-code":[ +"1.1.1.28" +], +"kegg.reaction":[ +"R00704" +], +"metanetx.reaction":[ +"MNXR101037" +], +"rhea":[ +"16370", +"16371", +"16372", +"16369" +], +"sabiork":[ +"155" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn00500" +] +} +}, +{ +"id":"MALS", +"name":"Malate synthase", +"metabolites":{ +"accoa_c":-1.0, +"coa_c":1.0, +"glx_c":-1.0, +"h2o_c":-1.0, +"h_c":1.0, +"mal__L_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b4014 or b2976", +"subsystem":"Anaplerotic reactions", +"notes":{ +"original_bigg_ids":[ +"MALS" +] +}, +"annotation":{ +"bigg.reaction":[ +"MALS" +], +"biocyc":[ +"META:MALSYN-RXN" +], +"ec-code":[ +"2.3.3.9" +], +"kegg.reaction":[ +"R00472" +], +"metanetx.reaction":[ +"MNXR101347" +], +"rhea":[ +"18181", +"18182", +"18184", +"18183" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn00330" +] +} +}, +{ +"id":"MALt2_2", +"name":"Malate transport via proton symport (2 H)", +"metabolites":{ +"h_c":2.0, +"h_e":-2.0, +"mal__L_c":1.0, +"mal__L_e":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b3528", +"subsystem":"Transport, Extracellular", +"notes":{ +"original_bigg_ids":[ +"MALt2_2" +] +}, +"annotation":{ +"bigg.reaction":[ +"MALt2_2" +], +"biocyc":[ +"META:TRANS-RXN-121A" +], +"metanetx.reaction":[ +"MNXR101370" +], +"rhea":[ +"29341", +"29340", +"29342", +"29339" +], +"sbo":"SBO:0000185", +"seed.reaction":[ +"rxn08865", +"rxn10153" +] +} +}, +{ +"id":"MDH", +"name":"Malate dehydrogenase", +"metabolites":{ +"h_c":1.0, +"mal__L_c":-1.0, +"nad_c":-1.0, +"nadh_c":1.0, +"oaa_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b3236", +"subsystem":"Citric Acid Cycle", +"notes":{ +"original_bigg_ids":[ +"MDH" +] +}, +"annotation":{ +"bigg.reaction":[ +"MDH" +], +"biocyc":[ +"META:MALATE-DEH-RXN" +], +"ec-code":[ +"1.1.1.37", +"1.1.1.299" +], +"kegg.reaction":[ +"R00342" +], +"metanetx.reaction":[ +"MNXR101439" +], +"reactome.reaction":[ +"R-BTA-70979", +"R-BTA-198508", +"R-SCE-70979", +"R-GGA-70979", +"R-MMU-71783", +"R-RNO-71783", +"R-DDI-198508", +"R-CFA-71783", +"R-CFA-198508", +"R-ATH-70979", +"R-DME-198508", +"R-TGU-71783", +"R-HSA-71783", +"R-BTA-71783", +"R-DRE-198508", +"R-SPO-70979", +"R-GGA-71783", +"R-TGU-198508", +"R-GGA-372422", +"R-CEL-71783", +"R-XTR-70979", +"R-RNO-198508", +"R-MMU-70979", +"R-SPO-71783", +"R-ATH-71783", +"R-MMU-198508", +"R-DME-70979", +"R-TGU-70979", +"R-CEL-198508", +"R-DME-71783", +"R-DRE-70979", +"R-OSA-71783", +"R-SSC-198508", +"R-GGA-372855", +"R-SSC-70979", +"R-OSA-70979", +"R-GGA-373047", +"R-GGA-198508", +"R-SSC-71783", +"R-HSA-70979", +"R-CFA-70979", +"R-XTR-71783", +"R-HSA-198508", +"R-XTR-198508", +"R-SCE-71783", +"R-RNO-70979", +"R-DRE-71783", +"R-CEL-70979" +], +"rhea":[ +"21432", +"21433", +"21434", +"21435" +], +"sabiork":[ +"113" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn00248" +] +} +}, +{ +"id":"ME1", +"name":"Malic enzyme (NAD)", +"metabolites":{ +"co2_c":1.0, +"mal__L_c":-1.0, +"nad_c":-1.0, +"nadh_c":1.0, +"pyr_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b1479", +"subsystem":"Anaplerotic reactions", +"notes":{ +"original_bigg_ids":[ +"ME1" +] +}, +"annotation":{ +"bigg.reaction":[ +"ME1" +], +"biocyc":[ +"META:1.1.1.39-RXN" +], +"ec-code":[ +"1.1.1.38", +"1.1.1.39" +], +"kegg.reaction":[ +"R00214" +], +"metanetx.reaction":[ +"MNXR101446" +], +"rhea":[ +"12655", +"12654", +"12653", +"12656" +], +"sabiork":[ +"141" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn00159" +] +} +}, +{ +"id":"ME2", +"name":"Malic enzyme (NADP)", +"metabolites":{ +"co2_c":1.0, +"mal__L_c":-1.0, +"nadp_c":-1.0, +"nadph_c":1.0, +"pyr_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b2463", +"subsystem":"Anaplerotic reactions", +"notes":{ +"original_bigg_ids":[ +"ME2" +] +}, +"annotation":{ +"bigg.reaction":[ +"ME2" +], +"biocyc":[ +"META:MALIC-NADP-RXN" +], +"ec-code":[ +"1.1.1.40" +], +"kegg.reaction":[ +"R00216" +], +"metanetx.reaction":[ +"MNXR101443" +], +"rhea":[ +"18255", +"18256", +"18254", +"18253" +], +"sabiork":[ +"142" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn00161" +] +} +}, +{ +"id":"NADH16", +"name":"NADH dehydrogenase (ubiquinone-8 & 3 protons)", +"metabolites":{ +"h_c":-4.0, +"h_e":3.0, +"nad_c":1.0, +"nadh_c":-1.0, +"q8_c":-1.0, +"q8h2_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b2276 and b2277 and b2278 and b2279 and b2280 and b2281 and b2282 and b2283 and b2284 and b2285 and b2286 and b2287 and b2288", +"subsystem":"Oxidative Phosphorylation", +"notes":{ +"original_bigg_ids":[ +"NADH16" +] +}, +"annotation":{ +"bigg.reaction":[ +"NADH16" +], +"ec-code":[ +"1.6.5.3" +], +"metanetx.reaction":[ +"MNXR101864" +], +"sbo":"SBO:0000185", +"seed.reaction":[ +"rxn08972" +] +} +}, +{ +"id":"NADTRHD", +"name":"NAD transhydrogenase", +"metabolites":{ +"nad_c":-1.0, +"nadh_c":1.0, +"nadp_c":1.0, +"nadph_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b3962 or (b1602 and b1603)", +"subsystem":"Oxidative Phosphorylation", +"notes":{ +"original_bigg_ids":[ +"NADTRHD" +] +}, +"annotation":{ +"bigg.reaction":[ +"NADTRHD" +], +"biocyc":[ +"META:PYRNUTRANSHYDROGEN-RXN" +], +"ec-code":[ +"1.6.1.3", +"1.6.1.2", +"1.6.1.1" +], +"kegg.reaction":[ +"R00112" +], +"metanetx.reaction":[ +"MNXR101898" +], +"rhea":[ +"11692", +"11695", +"11694", +"11693" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn00083" +] +} +}, +{ +"id":"NH4t", +"name":"Ammonia reversible transport", +"metabolites":{ +"nh4_c":1.0, +"nh4_e":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"s0001 or b0451", +"subsystem":"Inorganic Ion Transport and Metabolism", +"notes":{ +"original_bigg_ids":[ +"NH4t" +] +}, +"annotation":{ +"bigg.reaction":[ +"NH4t" +], +"biocyc":[ +"META:TRANS-RXN0-206", +"META:RXN-9615", +"META:TRANS-RXN0-544" +], +"metanetx.reaction":[ +"MNXR101950" +], +"reactome.reaction":[ +"R-CEL-444416", +"R-SSC-444416", +"R-DDI-444416", +"R-MMU-444416", +"R-DRE-444416", +"R-GGA-444416", +"R-CFA-444416", +"R-HSA-444416", +"R-XTR-444416", +"R-BTA-444416", +"R-RNO-444416", +"R-TGU-444416", +"R-DME-444416" +], +"rhea":[ +"28749", +"28748", +"28750", +"28747" +], +"sabiork":[ +"11683" +], +"sbo":"SBO:0000185", +"seed.reaction":[ +"rxn13364", +"rxn09835", +"rxn05466", +"rxn08987", +"rxn08986", +"rxn09736" +] +} +}, +{ +"id":"O2t", +"name":"O2 transport diffusion ", +"metabolites":{ +"o2_c":1.0, +"o2_e":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"s0001", +"subsystem":"Transport, Extracellular", +"notes":{ +"original_bigg_ids":[ +"O2t" +] +}, +"annotation":{ +"bigg.reaction":[ +"O2t" +], +"biocyc":[ +"META:TRANS-RXN0-474" +], +"metanetx.reaction":[ +"MNXR102090" +], +"sbo":"SBO:0000185", +"seed.reaction":[ +"rxn09641", +"rxn05468", +"rxn09031", +"rxn09032", +"rxn09734" +] +} +}, +{ +"id":"PDH", +"name":"Pyruvate dehydrogenase", +"metabolites":{ +"accoa_c":1.0, +"co2_c":1.0, +"coa_c":-1.0, +"nad_c":-1.0, +"nadh_c":1.0, +"pyr_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"b0114 and b0115 and b0116", +"subsystem":"Glycolysis/Gluconeogenesis", +"notes":{ +"original_bigg_ids":[ +"PDH" +] +}, +"annotation":{ +"bigg.reaction":[ +"PDH" +], +"biocyc":[ +"META:PYRUVDEH-RXN" +], +"ec-code":[ +"1.2.1", +"1.8.1.4", +"1.2.1.51", +"1.2.4.1", +"2.3.1.12" +], +"kegg.reaction":[ +"R00209" +], +"metanetx.reaction":[ +"MNXR102425" +], +"reactome.reaction":[ +"R-RNO-71397", +"R-OSA-71397", +"R-GGA-373177", +"R-DME-71397", +"R-TGU-71397", +"R-XTR-71397", +"R-CFA-71397", +"R-BTA-71397", +"R-HSA-71397", +"R-GGA-71397", +"R-SPO-71397", +"R-CEL-71397", +"R-DDI-71397", +"R-DRE-71397", +"R-SSC-71397", +"R-SCE-71397", +"R-ATH-71397", +"R-MMU-71397" +], +"rhea":[ +"28043", +"28045", +"28044", +"28042" +], +"sabiork":[ +"523" +], +"sbo":"SBO:0000176", +"seed.reaction":[ +"rxn00154" +] +} +} +], +"genes":[ +{ +"id":"b1241", +"name":"adhE", +"notes":{ +"original_bigg_ids":[ +"b1241" +] +}, +"annotation":{ +"asap":[ +"ABE-0004164" +], +"ecogene":[ +"EG10031" +], +"ncbigene":[ +"945837" +], +"ncbigi":[ +"16129202" +], +"refseq_locus_tag":[ +"b1241" +], +"refseq_name":[ +"adhE" +], +"refseq_synonym":[ +"JW1228", +"ECK1235", +"adhC", +"ana" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0A9Q7" +] +} +}, +{ +"id":"b0351", +"name":"mhpF", +"notes":{ +"original_bigg_ids":[ +"b0351" +] +}, +"annotation":{ +"asap":[ +"ABE-0001207" +], +"ecogene":[ +"EG13625" +], +"ncbigene":[ +"945008" +], +"ncbigi":[ +"16128336" +], +"refseq_locus_tag":[ +"b0351" +], +"refseq_name":[ +"mhpF" +], +"refseq_synonym":[ +"JW0342", +"ECK0348" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P77580" +] +} +}, +{ +"id":"s0001", +"name":"", +"notes":{ +"original_bigg_ids":[ +"s0001" +] +}, +"annotation":{ +"sbo":"SBO:0000243" +} +}, +{ +"id":"b1849", +"name":"purT", +"notes":{ +"original_bigg_ids":[ +"b1849" +] +}, +"annotation":{ +"asap":[ +"ABE-0006162" +], +"ecogene":[ +"EG11809" +], +"ncbigene":[ +"946368" +], +"ncbigi":[ +"16129802" +], +"refseq_locus_tag":[ +"b1849" +], +"refseq_name":[ +"purT" +], +"refseq_synonym":[ +"JW1838", +"ECK1850" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P33221" +] +} +}, +{ +"id":"b3115", +"name":"tdcD", +"notes":{ +"original_bigg_ids":[ +"b3115" +] +}, +"annotation":{ +"asap":[ +"ABE-0010245" +], +"ecogene":[ +"EG11172" +], +"ncbigene":[ +"947635" +], +"ncbigi":[ +"145698313" +], +"refseq_locus_tag":[ +"b3115" +], +"refseq_name":[ +"tdcD" +], +"refseq_synonym":[ +"JW5806", +"ECK3104", +"yhaA" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P11868" +] +} +}, +{ +"id":"b2296", +"name":"ackA", +"notes":{ +"original_bigg_ids":[ +"b2296" +] +}, +"annotation":{ +"asap":[ +"ABE-0007579" +], +"ecogene":[ +"EG10027" +], +"ncbigene":[ +"946775" +], +"ncbigi":[ +"16130231" +], +"refseq_locus_tag":[ +"b2296" +], +"refseq_name":[ +"ackA" +], +"refseq_synonym":[ +"JW2293", +"ECK2290" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0A6A3" +] +} +}, +{ +"id":"b1276", +"name":"acnA", +"notes":{ +"original_bigg_ids":[ +"b1276" +] +}, +"annotation":{ +"asap":[ +"ABE-0004283" +], +"ecogene":[ +"EG11325" +], +"ncbigene":[ +"946724" +], +"ncbigi":[ +"16129237" +], +"refseq_locus_tag":[ +"b1276" +], +"refseq_name":[ +"acnA" +], +"refseq_synonym":[ +"JW1268", +"ECK1271", +"acn" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P25516" +] +} +}, +{ +"id":"b0118", +"name":"acnB", +"notes":{ +"original_bigg_ids":[ +"b0118" +] +}, +"annotation":{ +"asap":[ +"ABE-0000411" +], +"ecogene":[ +"EG12316" +], +"ncbigene":[ +"944864" +], +"ncbigi":[ +"16128111" +], +"refseq_locus_tag":[ +"b0118" +], +"refseq_name":[ +"acnB" +], +"refseq_synonym":[ +"ECK0117", +"JW0114", +"yacJ", +"yacI" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P36683" +] +} +}, +{ +"id":"b0474", +"name":"adk", +"notes":{ +"original_bigg_ids":[ +"b0474" +] +}, +"annotation":{ +"asap":[ +"ABE-0001645" +], +"ecogene":[ +"EG10032" +], +"ncbigene":[ +"945097" +], +"ncbigi":[ +"16128458" +], +"refseq_locus_tag":[ +"b0474" +], +"refseq_name":[ +"adk" +], +"refseq_synonym":[ +"plsA", +"JW0463", +"ECK0468", +"dnaW" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P69441" +] +} +}, +{ +"id":"b0116", +"name":"lpd", +"notes":{ +"original_bigg_ids":[ +"b0116" +] +}, +"annotation":{ +"asap":[ +"ABE-0000404" +], +"ecogene":[ +"EG10543" +], +"ncbigene":[ +"944854" +], +"ncbigi":[ +"16128109" +], +"refseq_locus_tag":[ +"b0116" +], +"refseq_name":[ +"lpd" +], +"refseq_synonym":[ +"dhl", +"lpdA", +"ECK0115", +"JW0112" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0A9P0" +] +} +}, +{ +"id":"b0727", +"name":"sucB", +"notes":{ +"original_bigg_ids":[ +"b0727" +] +}, +"annotation":{ +"asap":[ +"ABE-0002480" +], +"ecogene":[ +"EG10980" +], +"ncbigene":[ +"945307" +], +"ncbigi":[ +"16128702" +], +"refseq_locus_tag":[ +"b0727" +], +"refseq_name":[ +"sucB" +], +"refseq_synonym":[ +"JW0716", +"ECK0715" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0AFG6" +] +} +}, +{ +"id":"b0726", +"name":"sucA", +"notes":{ +"original_bigg_ids":[ +"b0726" +] +}, +"annotation":{ +"asap":[ +"ABE-0002478" +], +"ecogene":[ +"EG10979" +], +"ncbigene":[ +"945303" +], +"ncbigi":[ +"16128701" +], +"refseq_locus_tag":[ +"b0726" +], +"refseq_name":[ +"sucA" +], +"refseq_synonym":[ +"lys", +"JW0715", +"ECK0714" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0AFG3" +] +} +}, +{ +"id":"b2587", +"name":"kgtP", +"notes":{ +"original_bigg_ids":[ +"b2587" +] +}, +"annotation":{ +"asap":[ +"ABE-0008515" +], +"ecogene":[ +"EG10522" +], +"ncbigene":[ +"947069" +], +"ncbigi":[ +"16130512" +], +"refseq_locus_tag":[ +"b2587" +], +"refseq_name":[ +"kgtP" +], +"refseq_synonym":[ +"ECK2585", +"JW2571", +"witA" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0AEX3" +] +} +}, +{ +"id":"b0356", +"name":"frmA", +"notes":{ +"original_bigg_ids":[ +"b0356" +] +}, +"annotation":{ +"asap":[ +"ABE-0001221" +], +"ecogene":[ +"EG50010" +], +"ncbigene":[ +"944988" +], +"ncbigi":[ +"16128341" +], +"refseq_locus_tag":[ +"b0356" +], +"refseq_name":[ +"frmA" +], +"refseq_synonym":[ +"ECK0353", +"adhC", +"JW0347" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P25437" +] +} +}, +{ +"id":"b1478", +"name":"adhP", +"notes":{ +"original_bigg_ids":[ +"b1478" +] +}, +"annotation":{ +"asap":[ +"ABE-0004928" +], +"ecogene":[ +"EG12622" +], +"ncbigene":[ +"946036" +], +"ncbigi":[ +"90111280" +], +"refseq_locus_tag":[ +"b1478" +], +"refseq_name":[ +"adhP" +], +"refseq_synonym":[ +"yddN", +"ECK1472", +"JW1474" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P39451" +] +} +}, +{ +"id":"b3734", +"name":"atpA", +"notes":{ +"original_bigg_ids":[ +"b3734" +] +}, +"annotation":{ +"asap":[ +"ABE-0012213" +], +"ecogene":[ +"EG10098" +], +"ncbigene":[ +"948242" +], +"ncbigi":[ +"16131602" +], +"refseq_locus_tag":[ +"b3734" +], +"refseq_name":[ +"atpA" +], +"refseq_synonym":[ +"uncA", +"papA", +"ECK3727", +"JW3712" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0ABB0" +] +} +}, +{ +"id":"b3733", +"name":"atpG", +"notes":{ +"original_bigg_ids":[ +"b3733" +] +}, +"annotation":{ +"asap":[ +"ABE-0012211" +], +"ecogene":[ +"EG10104" +], +"ncbigene":[ +"948243" +], +"ncbigi":[ +"16131601" +], +"refseq_locus_tag":[ +"b3733" +], +"refseq_name":[ +"atpG" +], +"refseq_synonym":[ +"uncG", +"ECK3726", +"papC", +"JW3711" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0ABA6" +] +} +}, +{ +"id":"b3736", +"name":"atpF", +"notes":{ +"original_bigg_ids":[ +"b3736" +] +}, +"annotation":{ +"asap":[ +"ABE-0012217" +], +"ecogene":[ +"EG10103" +], +"ncbigene":[ +"948247" +], +"ncbigi":[ +"16131604" +], +"refseq_locus_tag":[ +"b3736" +], +"refseq_name":[ +"atpF" +], +"refseq_synonym":[ +"uncF", +"JW3714", +"papF", +"ECK3729" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0ABA0" +] +} +}, +{ +"id":"b3737", +"name":"atpE", +"notes":{ +"original_bigg_ids":[ +"b3737" +] +}, +"annotation":{ +"asap":[ +"ABE-0012220" +], +"ecogene":[ +"EG10102" +], +"ncbigene":[ +"948253" +], +"ncbigi":[ +"16131605" +], +"refseq_locus_tag":[ +"b3737" +], +"refseq_name":[ +"atpE" +], +"refseq_synonym":[ +"uncE", +"JW3715", +"ECK3730", +"papH" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P68699" +] +} +}, +{ +"id":"b3739", +"name":"atpI", +"notes":{ +"original_bigg_ids":[ +"b3739" +] +}, +"annotation":{ +"asap":[ +"ABE-0012224" +], +"ecogene":[ +"EG10106" +], +"ncbigene":[ +"948251" +], +"ncbigi":[ +"90111645" +], +"refseq_locus_tag":[ +"b3739" +], +"refseq_name":[ +"atpI" +], +"refseq_synonym":[ +"uncI", +"JW5611", +"ECK3732" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0ABC0" +] +} +}, +{ +"id":"b3738", +"name":"atpB", +"notes":{ +"original_bigg_ids":[ +"b3738" +] +}, +"annotation":{ +"asap":[ +"ABE-0012222" +], +"ecogene":[ +"EG10099" +], +"ncbigene":[ +"948252" +], +"ncbigi":[ +"16131606" +], +"refseq_locus_tag":[ +"b3738" +], +"refseq_name":[ +"atpB" +], +"refseq_synonym":[ +"JW3716", +"ECK3731", +"uncB", +"papD" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0AB98" +] +} +}, +{ +"id":"b3735", +"name":"atpH", +"notes":{ +"original_bigg_ids":[ +"b3735" +] +}, +"annotation":{ +"asap":[ +"ABE-0012215" +], +"ecogene":[ +"EG10105" +], +"ncbigene":[ +"948254" +], +"ncbigi":[ +"16131603" +], +"refseq_locus_tag":[ +"b3735" +], +"refseq_name":[ +"atpH" +], +"refseq_synonym":[ +"JW3713", +"papE", +"ECK3728", +"uncH" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0ABA4" +] +} +}, +{ +"id":"b3731", +"name":"atpC", +"notes":{ +"original_bigg_ids":[ +"b3731" +] +}, +"annotation":{ +"asap":[ +"ABE-0012206" +], +"ecogene":[ +"EG10100" +], +"ncbigene":[ +"948245" +], +"ncbigi":[ +"16131599" +], +"refseq_locus_tag":[ +"b3731" +], +"refseq_name":[ +"atpC" +], +"refseq_synonym":[ +"uncC", +"ECK3724", +"papG", +"JW3709" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0A6E6" +] +} +}, +{ +"id":"b3732", +"name":"atpD", +"notes":{ +"original_bigg_ids":[ +"b3732" +] +}, +"annotation":{ +"asap":[ +"ABE-0012208" +], +"ecogene":[ +"EG10101" +], +"ncbigene":[ +"948244" +], +"ncbigi":[ +"16131600" +], +"refseq_locus_tag":[ +"b3732" +], +"refseq_name":[ +"atpD" +], +"refseq_synonym":[ +"papB", +"ECK3725", +"JW3710", +"uncD" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0ABB4" +] +} +}, +{ +"id":"b0720", +"name":"gltA", +"notes":{ +"original_bigg_ids":[ +"b0720" +] +}, +"annotation":{ +"asap":[ +"ABE-0002451" +], +"ecogene":[ +"EG10402" +], +"ncbigene":[ +"945323" +], +"ncbigi":[ +"16128695" +], +"refseq_locus_tag":[ +"b0720" +], +"refseq_name":[ +"gltA" +], +"refseq_synonym":[ +"JW0710", +"gluT", +"ECK0709", +"icdB" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0ABH7" +] +} +}, +{ +"id":"b0733", +"name":"cydA", +"notes":{ +"original_bigg_ids":[ +"b0733" +] +}, +"annotation":{ +"asap":[ +"ABE-0002499" +], +"ecogene":[ +"EG10173" +], +"ncbigene":[ +"945341" +], +"ncbigi":[ +"90111166" +], +"refseq_locus_tag":[ +"b0733" +], +"refseq_name":[ +"cydA" +], +"refseq_synonym":[ +"ECK0721", +"JW0722" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0ABJ9" +] +} +}, +{ +"id":"b0734", +"name":"cydB", +"notes":{ +"original_bigg_ids":[ +"b0734" +] +}, +"annotation":{ +"asap":[ +"ABE-0002501" +], +"ecogene":[ +"EG10174" +], +"ncbigene":[ +"945347" +], +"ncbigi":[ +"16128709" +], +"refseq_locus_tag":[ +"b0734" +], +"refseq_name":[ +"cydB" +], +"refseq_synonym":[ +"ECK0722", +"JW0723" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0ABK2" +] +} +}, +{ +"id":"b0979", +"name":"cbdB", +"notes":{ +"original_bigg_ids":[ +"b0979" +] +}, +"annotation":{ +"asap":[ +"ABE-0003302" +], +"ecogene":[ +"EG11379" +], +"ncbigene":[ +"947547" +], +"ncbigi":[ +"16128945" +], +"refseq_locus_tag":[ +"b0979" +], +"refseq_name":[ +"cbdB" +], +"refseq_synonym":[ +"JW0961", +"appB", +"cyxB", +"ECK0970" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P26458" +] +} +}, +{ +"id":"b0978", +"name":"cbdA", +"notes":{ +"original_bigg_ids":[ +"b0978" +] +}, +"annotation":{ +"asap":[ +"ABE-0003300" +], +"ecogene":[ +"EG11380" +], +"ncbigene":[ +"945585" +], +"ncbigi":[ +"16128944" +], +"refseq_locus_tag":[ +"b0978" +], +"refseq_name":[ +"cbdA" +], +"refseq_synonym":[ +"JW0960", +"ECK0969", +"cyxA", +"appC" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P26459" +] +} +}, +{ +"id":"b3603", +"name":"lldP", +"notes":{ +"original_bigg_ids":[ +"b3603" +] +}, +"annotation":{ +"asap":[ +"ABE-0011777" +], +"ecogene":[ +"EG11961" +], +"ncbigene":[ +"948114" +], +"ncbigi":[ +"16131474" +], +"refseq_locus_tag":[ +"b3603" +], +"refseq_name":[ +"lldP" +], +"refseq_synonym":[ +"JW3578", +"ECK3593", +"lct", +"lctP" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P33231" +] +} +}, +{ +"id":"b2975", +"name":"glcA", +"notes":{ +"original_bigg_ids":[ +"b2975" +] +}, +"annotation":{ +"asap":[ +"ABE-0009763" +], +"ecogene":[ +"EG12995" +], +"ncbigene":[ +"947259" +], +"ncbigi":[ +"16130875" +], +"refseq_locus_tag":[ +"b2975" +], +"refseq_name":[ +"glcA" +], +"refseq_synonym":[ +"ECK2969", +"JW2942", +"yghK" +], +"sbo":"SBO:0000243", +"uniprot":[ +"Q46839" +] +} +}, +{ +"id":"b2779", +"name":"eno", +"notes":{ +"original_bigg_ids":[ +"b2779" +] +}, +"annotation":{ +"asap":[ +"ABE-0009110" +], +"ecogene":[ +"EG10258" +], +"ncbigene":[ +"945032" +], +"ncbigi":[ +"16130686" +], +"refseq_locus_tag":[ +"b2779" +], +"refseq_name":[ +"eno" +], +"refseq_synonym":[ +"JW2750", +"ECK2773" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0A6P9" +] +} +}, +{ +"id":"b2925", +"name":"fbaA", +"notes":{ +"original_bigg_ids":[ +"b2925" +] +}, +"annotation":{ +"asap":[ +"ABE-0009600" +], +"ecogene":[ +"EG10282" +], +"ncbigene":[ +"947415" +], +"ncbigi":[ +"16130826" +], +"refseq_locus_tag":[ +"b2925" +], +"refseq_name":[ +"fbaA" +], +"refseq_synonym":[ +"fba", +"ald", +"fda", +"ECK2921", +"JW2892" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0AB71" +] +} +}, +{ +"id":"b1773", +"name":"ydjI", +"notes":{ +"original_bigg_ids":[ +"b1773" +] +}, +"annotation":{ +"asap":[ +"ABE-0005906" +], +"ecogene":[ +"EG13485" +], +"ncbigene":[ +"946291" +], +"ncbigi":[ +"16129727" +], +"refseq_locus_tag":[ +"b1773" +], +"refseq_name":[ +"ydjI" +], +"refseq_synonym":[ +"ECK1771", +"JW1762" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P77704" +] +} +}, +{ +"id":"b2097", +"name":"fbaB", +"notes":{ +"original_bigg_ids":[ +"b2097" +] +}, +"annotation":{ +"asap":[ +"ABE-0006941" +], +"ecogene":[ +"EG14062" +], +"ncbigene":[ +"946632" +], +"ncbigi":[ +"90111385" +], +"refseq_locus_tag":[ +"b2097" +], +"refseq_name":[ +"fbaB" +], +"refseq_synonym":[ +"dhnA", +"JW5344", +"ECK2090" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0A991" +] +} +}, +{ +"id":"b3925", +"name":"glpX", +"notes":{ +"original_bigg_ids":[ +"b3925" +] +}, +"annotation":{ +"asap":[ +"ABE-0012821" +], +"ecogene":[ +"EG11517" +], +"ncbigene":[ +"948424" +], +"ncbigi":[ +"16131763" +], +"refseq_locus_tag":[ +"b3925" +], +"refseq_name":[ +"glpX" +], +"refseq_synonym":[ +"JW3896", +"ECK3917" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0A9C9" +] +} +}, +{ +"id":"b4232", +"name":"fbp", +"notes":{ +"original_bigg_ids":[ +"b4232" +] +}, +"annotation":{ +"asap":[ +"ABE-0013842" +], +"ecogene":[ +"EG10283" +], +"ncbigene":[ +"948753" +], +"ncbigi":[ +"16132054" +], +"refseq_locus_tag":[ +"b4232" +], +"refseq_name":[ +"fbp" +], +"refseq_synonym":[ +"JW4191", +"ECK4227", +"fdp" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0A993" +] +} +}, +{ +"id":"b2492", +"name":"focB", +"notes":{ +"original_bigg_ids":[ +"b2492" +] +}, +"annotation":{ +"asap":[ +"ABE-0008206" +], +"ecogene":[ +"EG14220" +], +"ncbigene":[ +"949032" +], +"ncbigi":[ +"16130417" +], +"refseq_locus_tag":[ +"b2492" +], +"refseq_name":[ +"focB" +], +"refseq_synonym":[ +"JW2477", +"ECK2488" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P77733" +] +} +}, +{ +"id":"b0904", +"name":"focA", +"notes":{ +"original_bigg_ids":[ +"b0904" +] +}, +"annotation":{ +"asap":[ +"ABE-0003073" +], +"ecogene":[ +"EG11258" +], +"ncbigene":[ +"945513" +], +"ncbigi":[ +"16128871" +], +"refseq_locus_tag":[ +"b0904" +], +"refseq_name":[ +"focA" +], +"refseq_synonym":[ +"ycaE", +"ECK0895", +"JW0887" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0AC23" +] +} +}, +{ +"id":"b4152", +"name":"frdC", +"notes":{ +"original_bigg_ids":[ +"b4152" +] +}, +"annotation":{ +"asap":[ +"ABE-0013598" +], +"ecogene":[ +"EG10332" +], +"ncbigene":[ +"948680" +], +"ncbigi":[ +"16131977" +], +"refseq_locus_tag":[ +"b4152" +], +"refseq_name":[ +"frdC" +], +"refseq_synonym":[ +"ECK4148", +"JW4113" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0A8Q0" +] +} +}, +{ +"id":"b4154", +"name":"frdA", +"notes":{ +"original_bigg_ids":[ +"b4154" +] +}, +"annotation":{ +"asap":[ +"ABE-0013604" +], +"ecogene":[ +"EG10330" +], +"ncbigene":[ +"948667" +], +"ncbigi":[ +"16131979" +], +"refseq_locus_tag":[ +"b4154" +], +"refseq_name":[ +"frdA" +], +"refseq_synonym":[ +"ECK4150", +"JW4115" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P00363" +] +} +}, +{ +"id":"b4153", +"name":"frdB", +"notes":{ +"original_bigg_ids":[ +"b4153" +] +}, +"annotation":{ +"asap":[ +"ABE-0013602" +], +"ecogene":[ +"EG10331" +], +"ncbigene":[ +"948666" +], +"ncbigi":[ +"16131978" +], +"refseq_locus_tag":[ +"b4153" +], +"refseq_name":[ +"frdB" +], +"refseq_synonym":[ +"JW4114", +"ECK4149" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0AC47" +] +} +}, +{ +"id":"b4151", +"name":"frdD", +"notes":{ +"original_bigg_ids":[ +"b4151" +] +}, +"annotation":{ +"asap":[ +"ABE-0013595" +], +"ecogene":[ +"EG10333" +], +"ncbigene":[ +"948668" +], +"ncbigi":[ +"16131976" +], +"refseq_locus_tag":[ +"b4151" +], +"refseq_name":[ +"frdD" +], +"refseq_synonym":[ +"JW4112", +"ECK4147" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0A8Q3" +] +} +}, +{ +"id":"b1819", +"name":"manZ", +"notes":{ +"original_bigg_ids":[ +"b1819" +] +}, +"annotation":{ +"asap":[ +"ABE-0006058" +], +"ecogene":[ +"EG10569" +], +"ncbigene":[ +"946342" +], +"ncbigi":[ +"345452720" +], +"refseq_locus_tag":[ +"b1819" +], +"refseq_name":[ +"manZ" +], +"refseq_synonym":[ +"ptsM", +"ECK1817", +"ptsX", +"gptB", +"mpt", +"JW1808" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P69805" +] +} +}, +{ +"id":"b1817", +"name":"manX", +"notes":{ +"original_bigg_ids":[ +"b1817" +] +}, +"annotation":{ +"asap":[ +"ABE-0006054" +], +"ecogene":[ +"EG10567" +], +"ncbigene":[ +"946334" +], +"ncbigi":[ +"16129771" +], +"refseq_locus_tag":[ +"b1817" +], +"refseq_name":[ +"manX" +], +"refseq_synonym":[ +"ECK1815", +"ptsX", +"gptB", +"mpt", +"JW1806", +"ptsL" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P69797" +] +} +}, +{ +"id":"b2416", +"name":"ptsI", +"notes":{ +"original_bigg_ids":[ +"b2416" +] +}, +"annotation":{ +"asap":[ +"ABE-0007967" +], +"ecogene":[ +"EG10789" +], +"ncbigene":[ +"946879" +], +"ncbigi":[ +"16130342" +], +"refseq_locus_tag":[ +"b2416" +], +"refseq_name":[ +"ptsI" +], +"refseq_synonym":[ +"ECK2411", +"ctr", +"JW2409" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P08839" +] +} +}, +{ +"id":"b2415", +"name":"ptsH", +"notes":{ +"original_bigg_ids":[ +"b2415" +] +}, +"annotation":{ +"asap":[ +"ABE-0007962" +], +"ecogene":[ +"EG10788" +], +"ncbigene":[ +"946886" +], +"ncbigi":[ +"16130341" +], +"refseq_locus_tag":[ +"b2415" +], +"refseq_name":[ +"ptsH" +], +"refseq_synonym":[ +"ctr", +"hpr", +"JW2408", +"ECK2410", +"iex?" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0AA04" +] +} +}, +{ +"id":"b1818", +"name":"manY", +"notes":{ +"original_bigg_ids":[ +"b1818" +] +}, +"annotation":{ +"asap":[ +"ABE-0006056" +], +"ecogene":[ +"EG10568" +], +"ncbigene":[ +"946332" +], +"ncbigi":[ +"16129772" +], +"refseq_locus_tag":[ +"b1818" +], +"refseq_name":[ +"manY" +], +"refseq_synonym":[ +"ptsX", +"pel", +"ECK1816", +"JW1807", +"ptsP" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P69801" +] +} +}, +{ +"id":"b1611", +"name":"fumC", +"notes":{ +"original_bigg_ids":[ +"b1611" +] +}, +"annotation":{ +"asap":[ +"ABE-0005380" +], +"ecogene":[ +"EG10358" +], +"ncbigene":[ +"946147" +], +"ncbigi":[ +"16129569" +], +"refseq_locus_tag":[ +"b1611" +], +"refseq_name":[ +"fumC" +], +"refseq_synonym":[ +"JW1603", +"ECK1606" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P05042" +] +} +}, +{ +"id":"b4122", +"name":"fumB", +"notes":{ +"original_bigg_ids":[ +"b4122" +] +}, +"annotation":{ +"asap":[ +"ABE-0013501" +], +"ecogene":[ +"EG10357" +], +"ncbigene":[ +"948642" +], +"ncbigi":[ +"16131948" +], +"refseq_locus_tag":[ +"b4122" +], +"refseq_name":[ +"fumB" +], +"refseq_synonym":[ +"JW4083", +"ECK4115" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P14407" +] +} +}, +{ +"id":"b1612", +"name":"fumA", +"notes":{ +"original_bigg_ids":[ +"b1612" +] +}, +"annotation":{ +"asap":[ +"ABE-0005392" +], +"ecogene":[ +"EG10356" +], +"ncbigene":[ +"946826" +], +"ncbigi":[ +"16129570" +], +"refseq_locus_tag":[ +"b1612" +], +"refseq_name":[ +"fumA" +], +"refseq_synonym":[ +"JW1604", +"ECK1607" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0AC33" +] +} +}, +{ +"id":"b3528", +"name":"dctA", +"notes":{ +"original_bigg_ids":[ +"b3528" +] +}, +"annotation":{ +"asap":[ +"ABE-0011527" +], +"ecogene":[ +"EG20044" +], +"ncbigene":[ +"948039" +], +"ncbigi":[ +"16131400" +], +"refseq_locus_tag":[ +"b3528" +], +"refseq_name":[ +"dctA" +], +"refseq_synonym":[ +"JW3496", +"ECK3513", +"out" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0A830" +] +} +}, +{ +"id":"b1852", +"name":"zwf", +"notes":{ +"original_bigg_ids":[ +"b1852" +] +}, +"annotation":{ +"asap":[ +"ABE-0006171" +], +"ecogene":[ +"EG11221" +], +"ncbigene":[ +"946370" +], +"ncbigi":[ +"16129805" +], +"refseq_locus_tag":[ +"b1852" +], +"refseq_name":[ +"zwf" +], +"refseq_synonym":[ +"JW1841", +"ECK1853" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0AC53" +] +} +}, +{ +"id":"b1779", +"name":"gapA", +"notes":{ +"original_bigg_ids":[ +"b1779" +] +}, +"annotation":{ +"asap":[ +"ABE-0005920" +], +"ecogene":[ +"EG10367" +], +"ncbigene":[ +"947679" +], +"ncbigi":[ +"16129733" +], +"refseq_locus_tag":[ +"b1779" +], +"refseq_name":[ +"gapA" +], +"refseq_synonym":[ +"ECK1777", +"JW1768" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0A9B2" +] +} +}, +{ +"id":"b1101", +"name":"ptsG", +"notes":{ +"original_bigg_ids":[ +"b1101" +] +}, +"annotation":{ +"asap":[ +"ABE-0003722" +], +"ecogene":[ +"EG10787" +], +"ncbigene":[ +"945651" +], +"ncbigi":[ +"16129064" +], +"refseq_locus_tag":[ +"b1101" +], +"refseq_name":[ +"ptsG" +], +"refseq_synonym":[ +"car", +"JW1087", +"umg", +"glcA", +"umgC", +"cat", +"CR", +"tgl", +"ECK1087" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P69786" +] +} +}, +{ +"id":"b2417", +"name":"crr", +"notes":{ +"original_bigg_ids":[ +"b2417" +] +}, +"annotation":{ +"asap":[ +"ABE-0007971" +], +"ecogene":[ +"EG10165" +], +"ncbigene":[ +"946880" +], +"ncbigi":[ +"16130343" +], +"refseq_locus_tag":[ +"b2417" +], +"refseq_name":[ +"crr" +], +"refseq_synonym":[ +"gsr", +"JW2410", +"ECK2412", +"treD", +"tgs", +"iex" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P69783" +] +} +}, +{ +"id":"b1621", +"name":"malX", +"notes":{ +"original_bigg_ids":[ +"b1621" +] +}, +"annotation":{ +"asap":[ +"ABE-0005429" +], +"ecogene":[ +"EG10563" +], +"ncbigene":[ +"946009" +], +"ncbigi":[ +"16129579" +], +"refseq_locus_tag":[ +"b1621" +], +"refseq_name":[ +"malX" +], +"refseq_synonym":[ +"ECK1616", +"JW1613" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P19642" +] +} +}, +{ +"id":"b1297", +"name":"puuA", +"notes":{ +"original_bigg_ids":[ +"b1297" +] +}, +"annotation":{ +"asap":[ +"ABE-0004365" +], +"ecogene":[ +"EG13908" +], +"ncbigene":[ +"946202" +], +"ncbigi":[ +"90111244" +], +"refseq_locus_tag":[ +"b1297" +], +"refseq_name":[ +"puuA" +], +"refseq_synonym":[ +"ECK1292", +"JW5201", +"ycjK" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P78061" +] +} +}, +{ +"id":"b3870", +"name":"glnA", +"notes":{ +"original_bigg_ids":[ +"b3870" +] +}, +"annotation":{ +"asap":[ +"ABE-0012640" +], +"ecogene":[ +"EG10383" +], +"ncbigene":[ +"948370" +], +"ncbigi":[ +"16131710" +], +"refseq_locus_tag":[ +"b3870" +], +"refseq_name":[ +"glnA" +], +"refseq_synonym":[ +"ECK3863", +"JW3841" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0A9C5" +] +} +}, +{ +"id":"b0809", +"name":"glnQ", +"notes":{ +"original_bigg_ids":[ +"b0809" +] +}, +"annotation":{ +"asap":[ +"ABE-0002764" +], +"ecogene":[ +"EG10389" +], +"ncbigene":[ +"945435" +], +"ncbigi":[ +"16128777" +], +"refseq_locus_tag":[ +"b0809" +], +"refseq_name":[ +"glnQ" +], +"refseq_synonym":[ +"JW0794", +"ECK0798" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P10346" +] +} +}, +{ +"id":"b0811", +"name":"glnH", +"notes":{ +"original_bigg_ids":[ +"b0811" +] +}, +"annotation":{ +"asap":[ +"ABE-0002771" +], +"ecogene":[ +"EG10386" +], +"ncbigene":[ +"944872" +], +"ncbigi":[ +"16128779" +], +"refseq_locus_tag":[ +"b0811" +], +"refseq_name":[ +"glnH" +], +"refseq_synonym":[ +"JW0796", +"ECK0800" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0AEQ3" +] +} +}, +{ +"id":"b0810", +"name":"glnP", +"notes":{ +"original_bigg_ids":[ +"b0810" +] +}, +"annotation":{ +"asap":[ +"ABE-0002766" +], +"ecogene":[ +"EG10388" +], +"ncbigene":[ +"945621" +], +"ncbigi":[ +"16128778" +], +"refseq_locus_tag":[ +"b0810" +], +"refseq_name":[ +"glnP" +], +"refseq_synonym":[ +"JW0795", +"ECK0799" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0AEQ6" +] +} +}, +{ +"id":"b1761", +"name":"gdhA", +"notes":{ +"original_bigg_ids":[ +"b1761" +] +}, +"annotation":{ +"asap":[ +"ABE-0005865" +], +"ecogene":[ +"EG10372" +], +"ncbigene":[ +"946802" +], +"ncbigi":[ +"16129715" +], +"refseq_locus_tag":[ +"b1761" +], +"refseq_name":[ +"gdhA" +], +"refseq_synonym":[ +"ECK1759", +"JW1750" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P00370" +] +} +}, +{ +"id":"b1524", +"name":"glsB", +"notes":{ +"original_bigg_ids":[ +"b1524" +] +}, +"annotation":{ +"asap":[ +"ABE-0005086" +], +"ecogene":[ +"EG13816" +], +"ncbigene":[ +"944973" +], +"ncbigi":[ +"16129483" +], +"refseq_locus_tag":[ +"b1524" +], +"refseq_name":[ +"glsB" +], +"refseq_synonym":[ +"glsA2", +"yneH", +"JW1517", +"ECK1517" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0A6W0" +] +} +}, +{ +"id":"b0485", +"name":"glsA", +"notes":{ +"original_bigg_ids":[ +"b0485" +] +}, +"annotation":{ +"asap":[ +"ABE-0001688" +], +"ecogene":[ +"EG13247" +], +"ncbigene":[ +"946187" +], +"ncbigi":[ +"16128469" +], +"refseq_locus_tag":[ +"b0485" +], +"refseq_name":[ +"glsA" +], +"refseq_synonym":[ +"glsA1", +"ECK0479", +"ybaS", +"JW0474" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P77454" +] +} +}, +{ +"id":"b1812", +"name":"pabB", +"notes":{ +"original_bigg_ids":[ +"b1812" +] +}, +"annotation":{ +"asap":[ +"ABE-0006031" +], +"ecogene":[ +"EG10683" +], +"ncbigene":[ +"946337" +], +"ncbigi":[ +"16129766" +], +"refseq_locus_tag":[ +"b1812" +], +"refseq_name":[ +"pabB" +], +"refseq_synonym":[ +"ECK1810", +"JW1801" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P05041" +] +} +}, +{ +"id":"b3213", +"name":"gltD", +"notes":{ +"original_bigg_ids":[ +"b3213" +] +}, +"annotation":{ +"asap":[ +"ABE-0010547" +], +"ecogene":[ +"EG10404" +], +"ncbigene":[ +"947723" +], +"ncbigi":[ +"16131103" +], +"refseq_locus_tag":[ +"b3213" +], +"refseq_name":[ +"gltD" +], +"refseq_synonym":[ +"psiQ", +"aspB", +"ossB", +"JW3180", +"ECK3203" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P09832" +] +} +}, +{ +"id":"b3212", +"name":"gltB", +"notes":{ +"original_bigg_ids":[ +"b3212" +] +}, +"annotation":{ +"asap":[ +"ABE-0010545" +], +"ecogene":[ +"EG10403" +], +"ncbigene":[ +"947724" +], +"ncbigi":[ +"308209621" +], +"refseq_locus_tag":[ +"b3212" +], +"refseq_name":[ +"gltB" +], +"refseq_synonym":[ +"psiQ", +"aspB", +"ECK3202", +"ossB", +"JW3179" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P09831" +] +} +}, +{ +"id":"b4077", +"name":"gltP", +"notes":{ +"original_bigg_ids":[ +"b4077" +] +}, +"annotation":{ +"asap":[ +"ABE-0013357" +], +"ecogene":[ +"EG10405" +], +"ncbigene":[ +"948591" +], +"ncbigi":[ +"16131903" +], +"refseq_locus_tag":[ +"b4077" +], +"refseq_name":[ +"gltP" +], +"refseq_synonym":[ +"ECK4070", +"JW4038" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P21345" +] +} +}, +{ +"id":"b2029", +"name":"gnd", +"notes":{ +"original_bigg_ids":[ +"b2029" +] +}, +"annotation":{ +"asap":[ +"ABE-0006737" +], +"ecogene":[ +"EG10411" +], +"ncbigene":[ +"946554" +], +"ncbigi":[ +"16129970" +], +"refseq_locus_tag":[ +"b2029" +], +"refseq_name":[ +"gnd" +], +"refseq_synonym":[ +"JW2011", +"ECK2024" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P00350" +] +} +}, +{ +"id":"b0875", +"name":"aqpZ", +"notes":{ +"original_bigg_ids":[ +"b0875" +] +}, +"annotation":{ +"asap":[ +"ABE-0002976" +], +"ecogene":[ +"EG13270" +], +"ncbigene":[ +"945497" +], +"ncbigi":[ +"16128843" +], +"refseq_locus_tag":[ +"b0875" +], +"refseq_name":[ +"aqpZ" +], +"refseq_synonym":[ +"bniP", +"JW0859", +"ECK0866" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P60844" +] +} +}, +{ +"id":"b1136", +"name":"icd", +"notes":{ +"original_bigg_ids":[ +"b1136" +] +}, +"annotation":{ +"asap":[ +"ABE-0003823" +], +"ecogene":[ +"EG10489" +], +"ncbigene":[ +"945702" +], +"ncbigi":[ +"16129099" +], +"refseq_locus_tag":[ +"b1136" +], +"refseq_name":[ +"icd" +], +"refseq_synonym":[ +"icdA", +"icdE", +"JW1122", +"ECK1122" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P08200" +] +} +}, +{ +"id":"b4015", +"name":"aceA", +"notes":{ +"original_bigg_ids":[ +"b4015" +] +}, +"annotation":{ +"asap":[ +"ABE-0013128" +], +"ecogene":[ +"EG10022" +], +"ncbigene":[ +"948517" +], +"ncbigi":[ +"16131841" +], +"refseq_locus_tag":[ +"b4015" +], +"refseq_name":[ +"aceA" +], +"refseq_synonym":[ +"JW3975", +"icl", +"ECK4007" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0A9G6" +] +} +}, +{ +"id":"b1380", +"name":"ldhA", +"notes":{ +"original_bigg_ids":[ +"b1380" +] +}, +"annotation":{ +"asap":[ +"ABE-0004619" +], +"ecogene":[ +"EG13186" +], +"ncbigene":[ +"946315" +], +"ncbigi":[ +"16129341" +], +"refseq_locus_tag":[ +"b1380" +], +"refseq_name":[ +"ldhA" +], +"refseq_synonym":[ +"ECK1377", +"JW1375", +"hslI", +"htpH", +"hslF" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P52643" +] +} +}, +{ +"id":"b2133", +"name":"dld", +"notes":{ +"original_bigg_ids":[ +"b2133" +] +}, +"annotation":{ +"asap":[ +"ABE-0007048" +], +"ecogene":[ +"EG10231" +], +"ncbigene":[ +"946653" +], +"ncbigi":[ +"16130071" +], +"refseq_locus_tag":[ +"b2133" +], +"refseq_name":[ +"dld" +], +"refseq_synonym":[ +"JW2121", +"ECK2126" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P06149" +] +} +}, +{ +"id":"b4014", +"name":"aceB", +"notes":{ +"original_bigg_ids":[ +"b4014" +] +}, +"annotation":{ +"asap":[ +"ABE-0013125" +], +"ecogene":[ +"EG10023" +], +"ncbigene":[ +"948512" +], +"ncbigi":[ +"16131840" +], +"refseq_locus_tag":[ +"b4014" +], +"refseq_name":[ +"aceB" +], +"refseq_synonym":[ +"ECK4006", +"mas", +"JW3974" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P08997" +] +} +}, +{ +"id":"b2976", +"name":"glcB", +"notes":{ +"original_bigg_ids":[ +"b2976" +] +}, +"annotation":{ +"asap":[ +"ABE-0009767" +], +"ecogene":[ +"EG20080" +], +"ncbigene":[ +"948857" +], +"ncbigi":[ +"16130876" +], +"refseq_locus_tag":[ +"b2976" +], +"refseq_name":[ +"glcB" +], +"refseq_synonym":[ +"JW2943", +"glc", +"ECK2970" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P37330" +] +} +}, +{ +"id":"b3236", +"name":"mdh", +"notes":{ +"original_bigg_ids":[ +"b3236" +] +}, +"annotation":{ +"asap":[ +"ABE-0010613" +], +"ecogene":[ +"EG10576" +], +"ncbigene":[ +"947854" +], +"ncbigi":[ +"16131126" +], +"refseq_locus_tag":[ +"b3236" +], +"refseq_name":[ +"mdh" +], +"refseq_synonym":[ +"ECK3225", +"JW3205" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P61889" +] +} +}, +{ +"id":"b1479", +"name":"maeA", +"notes":{ +"original_bigg_ids":[ +"b1479" +] +}, +"annotation":{ +"asap":[ +"ABE-0004931" +], +"ecogene":[ +"EG10948" +], +"ncbigene":[ +"946031" +], +"ncbigi":[ +"90111281" +], +"refseq_locus_tag":[ +"b1479" +], +"refseq_name":[ +"maeA" +], +"refseq_synonym":[ +"JW5238", +"sfcA", +"ECK1473" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P26616" +] +} +}, +{ +"id":"b2463", +"name":"maeB", +"notes":{ +"original_bigg_ids":[ +"b2463" +] +}, +"annotation":{ +"asap":[ +"ABE-0008111" +], +"ecogene":[ +"EG14193" +], +"ncbigene":[ +"946947" +], +"ncbigi":[ +"16130388" +], +"refseq_locus_tag":[ +"b2463" +], +"refseq_name":[ +"maeB" +], +"refseq_synonym":[ +"ECK2458", +"JW2447", +"ypfF" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P76558" +] +} +}, +{ +"id":"b2281", +"name":"nuoI", +"notes":{ +"original_bigg_ids":[ +"b2281" +] +}, +"annotation":{ +"asap":[ +"ABE-0007539" +], +"ecogene":[ +"EG12089" +], +"ncbigene":[ +"946757" +], +"ncbigi":[ +"16130216" +], +"refseq_locus_tag":[ +"b2281" +], +"refseq_name":[ +"nuoI" +], +"refseq_synonym":[ +"ECK2275", +"JW2276" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0AFD6" +] +} +}, +{ +"id":"b2277", +"name":"nuoM", +"notes":{ +"original_bigg_ids":[ +"b2277" +] +}, +"annotation":{ +"asap":[ +"ABE-0007529" +], +"ecogene":[ +"EG11773" +], +"ncbigene":[ +"947731" +], +"ncbigi":[ +"16130212" +], +"refseq_locus_tag":[ +"b2277" +], +"refseq_name":[ +"nuoM" +], +"refseq_synonym":[ +"JW2272", +"nuoA", +"ECK2271" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0AFE8" +] +} +}, +{ +"id":"b2280", +"name":"nuoJ", +"notes":{ +"original_bigg_ids":[ +"b2280" +] +}, +"annotation":{ +"asap":[ +"ABE-0007536" +], +"ecogene":[ +"EG12090" +], +"ncbigene":[ +"946756" +], +"ncbigi":[ +"16130215" +], +"refseq_locus_tag":[ +"b2280" +], +"refseq_name":[ +"nuoJ" +], +"refseq_synonym":[ +"ECK2274", +"JW2275" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0AFE0" +] +} +}, +{ +"id":"b2286", +"name":"nuoC", +"notes":{ +"original_bigg_ids":[ +"b2286" +] +}, +"annotation":{ +"asap":[ +"ABE-0007549" +], +"ecogene":[ +"EG12084" +], +"ncbigene":[ +"946759" +], +"ncbigi":[ +"145698291" +], +"refseq_locus_tag":[ +"b2286" +], +"refseq_name":[ +"nuoC" +], +"refseq_synonym":[ +"ECK2280", +"nuoD", +"nuoCD", +"JW5375" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P33599" +] +} +}, +{ +"id":"b2287", +"name":"nuoB", +"notes":{ +"original_bigg_ids":[ +"b2287" +] +}, +"annotation":{ +"asap":[ +"ABE-0007551" +], +"ecogene":[ +"EG12083" +], +"ncbigene":[ +"946738" +], +"ncbigi":[ +"16130222" +], +"refseq_locus_tag":[ +"b2287" +], +"refseq_name":[ +"nuoB" +], +"refseq_synonym":[ +"JW5875", +"ECK2281" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0AFC7" +] +} +}, +{ +"id":"b2284", +"name":"nuoF", +"notes":{ +"original_bigg_ids":[ +"b2284" +] +}, +"annotation":{ +"asap":[ +"ABE-0007545" +], +"ecogene":[ +"EG11774" +], +"ncbigene":[ +"946753" +], +"ncbigi":[ +"16130219" +], +"refseq_locus_tag":[ +"b2284" +], +"refseq_name":[ +"nuoF" +], +"refseq_synonym":[ +"ECK2278", +"nuoB", +"JW2279" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P31979" +] +} +}, +{ +"id":"b2276", +"name":"nuoN", +"notes":{ +"original_bigg_ids":[ +"b2276" +] +}, +"annotation":{ +"asap":[ +"ABE-0007526" +], +"ecogene":[ +"EG12093" +], +"ncbigene":[ +"945136" +], +"ncbigi":[ +"145698289" +], +"refseq_locus_tag":[ +"b2276" +], +"refseq_name":[ +"nuoN" +], +"refseq_synonym":[ +"JW2271", +"ECK2270" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0AFF0" +] +} +}, +{ +"id":"b2282", +"name":"nuoH", +"notes":{ +"original_bigg_ids":[ +"b2282" +] +}, +"annotation":{ +"asap":[ +"ABE-0007541" +], +"ecogene":[ +"EG12088" +], +"ncbigene":[ +"946761" +], +"ncbigi":[ +"16130217" +], +"refseq_locus_tag":[ +"b2282" +], +"refseq_name":[ +"nuoH" +], +"refseq_synonym":[ +"JW2277", +"ECK2276" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0AFD4" +] +} +}, +{ +"id":"b2279", +"name":"nuoK", +"notes":{ +"original_bigg_ids":[ +"b2279" +] +}, +"annotation":{ +"asap":[ +"ABE-0007534" +], +"ecogene":[ +"EG12091" +], +"ncbigene":[ +"947580" +], +"ncbigi":[ +"16130214" +], +"refseq_locus_tag":[ +"b2279" +], +"refseq_name":[ +"nuoK" +], +"refseq_synonym":[ +"JW2274", +"ECK2273" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0AFE4" +] +} +}, +{ +"id":"b2283", +"name":"nuoG", +"notes":{ +"original_bigg_ids":[ +"b2283" +] +}, +"annotation":{ +"asap":[ +"ABE-0007543" +], +"ecogene":[ +"EG12087" +], +"ncbigene":[ +"946762" +], +"ncbigi":[ +"145698290" +], +"refseq_locus_tag":[ +"b2283" +], +"refseq_name":[ +"nuoG" +], +"refseq_synonym":[ +"JW2278", +"ECK2277" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P33602" +] +} +}, +{ +"id":"b2285", +"name":"nuoE", +"notes":{ +"original_bigg_ids":[ +"b2285" +] +}, +"annotation":{ +"asap":[ +"ABE-0007547" +], +"ecogene":[ +"EG12086" +], +"ncbigene":[ +"946746" +], +"ncbigi":[ +"16130220" +], +"refseq_locus_tag":[ +"b2285" +], +"refseq_name":[ +"nuoE" +], +"refseq_synonym":[ +"JW2280", +"ECK2279" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0AFD1" +] +} +}, +{ +"id":"b2288", +"name":"nuoA", +"notes":{ +"original_bigg_ids":[ +"b2288" +] +}, +"annotation":{ +"asap":[ +"ABE-0007553" +], +"ecogene":[ +"EG12082" +], +"ncbigene":[ +"946764" +], +"ncbigi":[ +"49176207" +], +"refseq_locus_tag":[ +"b2288" +], +"refseq_name":[ +"nuoA" +], +"refseq_synonym":[ +"JW2283", +"ECK2282" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0AFC3" +] +} +}, +{ +"id":"b2278", +"name":"nuoL", +"notes":{ +"original_bigg_ids":[ +"b2278" +] +}, +"annotation":{ +"asap":[ +"ABE-0007532" +], +"ecogene":[ +"EG12092" +], +"ncbigene":[ +"945540" +], +"ncbigi":[ +"16130213" +], +"refseq_locus_tag":[ +"b2278" +], +"refseq_name":[ +"nuoL" +], +"refseq_synonym":[ +"ECK2272", +"JW2273" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P33607" +] +} +}, +{ +"id":"b1603", +"name":"pntA", +"notes":{ +"original_bigg_ids":[ +"b1603" +] +}, +"annotation":{ +"asap":[ +"ABE-0005354" +], +"ecogene":[ +"EG10744" +], +"ncbigene":[ +"946628" +], +"ncbigi":[ +"16129561" +], +"refseq_locus_tag":[ +"b1603" +], +"refseq_name":[ +"pntA" +], +"refseq_synonym":[ +"JW1595", +"ECK1598" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P07001" +] +} +}, +{ +"id":"b3962", +"name":"sthA", +"notes":{ +"original_bigg_ids":[ +"b3962" +] +}, +"annotation":{ +"asap":[ +"ABE-0012975" +], +"ecogene":[ +"EG11428" +], +"ncbigene":[ +"948461" +], +"ncbigi":[ +"90111670" +], +"refseq_locus_tag":[ +"b3962" +], +"refseq_name":[ +"sthA" +], +"refseq_synonym":[ +"ECK3954", +"udhA", +"JW5551", +"sth" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P27306" +] +} +}, +{ +"id":"b1602", +"name":"pntB", +"notes":{ +"original_bigg_ids":[ +"b1602" +] +}, +"annotation":{ +"asap":[ +"ABE-0005352" +], +"ecogene":[ +"EG10745" +], +"ncbigene":[ +"946144" +], +"ncbigi":[ +"16129560" +], +"refseq_locus_tag":[ +"b1602" +], +"refseq_name":[ +"pntB" +], +"refseq_synonym":[ +"ECK1597", +"JW1594" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0AB67" +] +} +}, +{ +"id":"b0451", +"name":"amtB", +"notes":{ +"original_bigg_ids":[ +"b0451" +] +}, +"annotation":{ +"asap":[ +"ABE-0001564" +], +"ecogene":[ +"EG11821" +], +"ncbigene":[ +"945084" +], +"ncbigi":[ +"16128436" +], +"refseq_locus_tag":[ +"b0451" +], +"refseq_name":[ +"amtB" +], +"refseq_synonym":[ +"JW0441", +"ECK0445", +"ybaG" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P69681" +] +} +}, +{ +"id":"b0114", +"name":"aceE", +"notes":{ +"original_bigg_ids":[ +"b0114" +] +}, +"annotation":{ +"asap":[ +"ABE-0000397" +], +"ecogene":[ +"EG10024" +], +"ncbigene":[ +"944834" +], +"ncbigi":[ +"16128107" +], +"refseq_locus_tag":[ +"b0114" +], +"refseq_name":[ +"aceE" +], +"refseq_synonym":[ +"ECK0113", +"JW0110" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0AFG8" +] +} +}, +{ +"id":"b0115", +"name":"aceF", +"notes":{ +"original_bigg_ids":[ +"b0115" +] +}, +"annotation":{ +"asap":[ +"ABE-0000400" +], +"ecogene":[ +"EG10025" +], +"ncbigene":[ +"944794" +], +"ncbigi":[ +"16128108" +], +"refseq_locus_tag":[ +"b0115" +], +"refseq_name":[ +"aceF" +], +"refseq_synonym":[ +"ECK0114", +"JW0111" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P06959" +] +} +}, +{ +"id":"b3916", +"name":"pfkA", +"notes":{ +"original_bigg_ids":[ +"b3916" +] +}, +"annotation":{ +"asap":[ +"ABE-0012789" +], +"ecogene":[ +"EG10699" +], +"ncbigene":[ +"948412" +], +"ncbigi":[ +"16131754" +], +"refseq_locus_tag":[ +"b3916" +], +"refseq_name":[ +"pfkA" +], +"refseq_synonym":[ +"JW3887", +"ECK3908" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0A796" +] +} +}, +{ +"id":"b1723", +"name":"pfkB", +"notes":{ +"original_bigg_ids":[ +"b1723" +] +}, +"annotation":{ +"asap":[ +"ABE-0005748" +], +"ecogene":[ +"EG10700" +], +"ncbigene":[ +"946230" +], +"ncbigi":[ +"49176138" +], +"refseq_locus_tag":[ +"b1723" +], +"refseq_name":[ +"pfkB" +], +"refseq_synonym":[ +"JW5280", +"ECK1721" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P06999" +] +} +}, +{ +"id":"b3114", +"name":"tdcE", +"notes":{ +"original_bigg_ids":[ +"b3114" +] +}, +"annotation":{ +"asap":[ +"ABE-0010242" +], +"ecogene":[ +"EG12758" +], +"ncbigene":[ +"947623" +], +"ncbigi":[ +"49176316" +], +"refseq_locus_tag":[ +"b3114" +], +"refseq_name":[ +"tdcE" +], +"refseq_synonym":[ +"JW5522", +"ECK3103", +"yhaS" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P42632" +] +} +}, +{ +"id":"b2579", +"name":"grcA", +"notes":{ +"original_bigg_ids":[ +"b2579" +] +}, +"annotation":{ +"asap":[ +"ABE-0008489" +], +"ecogene":[ +"EG11784" +], +"ncbigene":[ +"947068" +], +"ncbigi":[ +"16130504" +], +"refseq_locus_tag":[ +"b2579" +], +"refseq_name":[ +"grcA" +], +"refseq_synonym":[ +"ECK2577", +"yfiD", +"JW2563" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P68066" +] +} +}, +{ +"id":"b3951", +"name":"pflD", +"notes":{ +"original_bigg_ids":[ +"b3951" +] +}, +"annotation":{ +"asap":[ +"ABE-0012934" +], +"ecogene":[ +"EG11910" +], +"ncbigene":[ +"948454" +], +"ncbigi":[ +"16131789" +], +"refseq_locus_tag":[ +"b3951" +], +"refseq_name":[ +"pflD" +], +"refseq_synonym":[ +"ECK3942", +"yijL", +"JW3923" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P32674" +] +} +}, +{ +"id":"b0902", +"name":"pflA", +"notes":{ +"original_bigg_ids":[ +"b0902" +] +}, +"annotation":{ +"asap":[ +"ABE-0003068" +], +"ecogene":[ +"EG10028" +], +"ncbigene":[ +"945517" +], +"ncbigi":[ +"16128869" +], +"refseq_locus_tag":[ +"b0902" +], +"refseq_name":[ +"pflA" +], +"refseq_synonym":[ +"ECK0893", +"JW0885", +"act" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0A9N4" +] +} +}, +{ +"id":"b3952", +"name":"pflC", +"notes":{ +"original_bigg_ids":[ +"b3952" +] +}, +"annotation":{ +"asap":[ +"ABE-0012937" +], +"ecogene":[ +"EG11911" +], +"ncbigene":[ +"948453" +], +"ncbigi":[ +"49176447" +], +"refseq_locus_tag":[ +"b3952" +], +"refseq_name":[ +"pflC" +], +"refseq_synonym":[ +"ECK3943", +"JW3924", +"yijM" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P32675" +] +} +}, +{ +"id":"b0903", +"name":"pflB", +"notes":{ +"original_bigg_ids":[ +"b0903" +] +}, +"annotation":{ +"asap":[ +"ABE-0003071" +], +"ecogene":[ +"EG10701" +], +"ncbigene":[ +"945514" +], +"ncbigi":[ +"16128870" +], +"refseq_locus_tag":[ +"b0903" +], +"refseq_name":[ +"pflB" +], +"refseq_synonym":[ +"pfl", +"ECK0894", +"JW0886" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P09373" +] +} +}, +{ +"id":"b4025", +"name":"pgi", +"notes":{ +"original_bigg_ids":[ +"b4025" +] +}, +"annotation":{ +"asap":[ +"ABE-0013163" +], +"ecogene":[ +"EG10702" +], +"ncbigene":[ +"948535" +], +"ncbigi":[ +"16131851" +], +"refseq_locus_tag":[ +"b4025" +], +"refseq_name":[ +"pgi" +], +"refseq_synonym":[ +"JW3985", +"ECK4017" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0A6T1" +] +} +}, +{ +"id":"b2926", +"name":"pgk", +"notes":{ +"original_bigg_ids":[ +"b2926" +] +}, +"annotation":{ +"asap":[ +"ABE-0009605" +], +"ecogene":[ +"EG10703" +], +"ncbigene":[ +"947414" +], +"ncbigi":[ +"16130827" +], +"refseq_locus_tag":[ +"b2926" +], +"refseq_name":[ +"pgk" +], +"refseq_synonym":[ +"ECK2922", +"JW2893" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0A799" +] +} +}, +{ +"id":"b0767", +"name":"pgl", +"notes":{ +"original_bigg_ids":[ +"b0767" +] +}, +"annotation":{ +"asap":[ +"ABE-0002611" +], +"ecogene":[ +"EG13231" +], +"ncbigene":[ +"946398" +], +"ncbigi":[ +"16128735" +], +"refseq_locus_tag":[ +"b0767" +], +"refseq_name":[ +"pgl" +], +"refseq_synonym":[ +"JW0750", +"ybhE", +"ECK0756", +"blu" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P52697" +] +} +}, +{ +"id":"b3612", +"name":"gpmM", +"notes":{ +"original_bigg_ids":[ +"b3612" +] +}, +"annotation":{ +"asap":[ +"ABE-0011818" +], +"ecogene":[ +"EG12296" +], +"ncbigene":[ +"948130" +], +"ncbigi":[ +"16131483" +], +"refseq_locus_tag":[ +"b3612" +], +"refseq_name":[ +"gpmM" +], +"refseq_synonym":[ +"JW3587", +"yibO", +"ECK3602", +"pgmI", +"gpmC", +"gpmI" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P37689" +] +} +}, +{ +"id":"b4395", +"name":"ytjC", +"notes":{ +"original_bigg_ids":[ +"b4395" +] +}, +"annotation":{ +"asap":[ +"ABE-0014416" +], +"ecogene":[ +"EG12164" +], +"ncbigene":[ +"948918" +], +"ncbigi":[ +"16132212" +], +"refseq_locus_tag":[ +"b4395" +], +"refseq_name":[ +"ytjC" +], +"refseq_synonym":[ +"gpmB", +"JW4358", +"ECK4387" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0A7A2" +] +} +}, +{ +"id":"b0755", +"name":"gpmA", +"notes":{ +"original_bigg_ids":[ +"b0755" +] +}, +"annotation":{ +"asap":[ +"ABE-0002563" +], +"ecogene":[ +"EG11699" +], +"ncbigene":[ +"945068" +], +"ncbigi":[ +"16128723" +], +"refseq_locus_tag":[ +"b0755" +], +"refseq_name":[ +"gpmA" +], +"refseq_synonym":[ +"JW0738", +"gpm", +"ECK0744" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P62707" +] +} +}, +{ +"id":"b3493", +"name":"pitA", +"notes":{ +"original_bigg_ids":[ +"b3493" +] +}, +"annotation":{ +"asap":[ +"ABE-0011407" +], +"ecogene":[ +"EG12230" +], +"ncbigene":[ +"948009" +], +"ncbigi":[ +"16131365" +], +"refseq_locus_tag":[ +"b3493" +], +"refseq_name":[ +"pitA" +], +"refseq_synonym":[ +"pit", +"ECK3478", +"JW3460" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0AFJ7" +] +} +}, +{ +"id":"b2987", +"name":"pitB", +"notes":{ +"original_bigg_ids":[ +"b2987" +] +}, +"annotation":{ +"asap":[ +"ABE-0009800" +], +"ecogene":[ +"EG12883" +], +"ncbigene":[ +"947475" +], +"ncbigi":[ +"16130887" +], +"refseq_locus_tag":[ +"b2987" +], +"refseq_name":[ +"pitB" +], +"refseq_synonym":[ +"ECK2981", +"JW2955" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P43676" +] +} +}, +{ +"id":"b3956", +"name":"ppc", +"notes":{ +"original_bigg_ids":[ +"b3956" +] +}, +"annotation":{ +"asap":[ +"ABE-0012950" +], +"ecogene":[ +"EG10756" +], +"ncbigene":[ +"948457" +], +"ncbigi":[ +"16131794" +], +"refseq_locus_tag":[ +"b3956" +], +"refseq_name":[ +"ppc" +], +"refseq_synonym":[ +"glu", +"ECK3947", +"asp", +"JW3928" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P00864" +] +} +}, +{ +"id":"b3403", +"name":"pck", +"notes":{ +"original_bigg_ids":[ +"b3403" +] +}, +"annotation":{ +"asap":[ +"ABE-0011106" +], +"ecogene":[ +"EG10688" +], +"ncbigene":[ +"945667" +], +"ncbigi":[ +"16131280" +], +"refseq_locus_tag":[ +"b3403" +], +"refseq_name":[ +"pck" +], +"refseq_synonym":[ +"JW3366", +"pckA", +"ECK3390" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P22259" +] +} +}, +{ +"id":"b1702", +"name":"ppsA", +"notes":{ +"original_bigg_ids":[ +"b1702" +] +}, +"annotation":{ +"asap":[ +"ABE-0005678" +], +"ecogene":[ +"EG10759" +], +"ncbigene":[ +"946209" +], +"ncbigi":[ +"16129658" +], +"refseq_locus_tag":[ +"b1702" +], +"refseq_name":[ +"ppsA" +], +"refseq_synonym":[ +"pps", +"ECK1700", +"JW1692" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P23538" +] +} +}, +{ +"id":"b2297", +"name":"pta", +"notes":{ +"original_bigg_ids":[ +"b2297" +] +}, +"annotation":{ +"asap":[ +"ABE-0007582" +], +"ecogene":[ +"EG20173" +], +"ncbigene":[ +"946778" +], +"ncbigi":[ +"16130232" +], +"refseq_locus_tag":[ +"b2297" +], +"refseq_name":[ +"pta" +], +"refseq_synonym":[ +"JW2294", +"ECK2291" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0A9M8" +] +} +}, +{ +"id":"b2458", +"name":"eutD", +"notes":{ +"original_bigg_ids":[ +"b2458" +] +}, +"annotation":{ +"asap":[ +"ABE-0008097" +], +"ecogene":[ +"EG14188" +], +"ncbigene":[ +"946940" +], +"ncbigi":[ +"16130383" +], +"refseq_locus_tag":[ +"b2458" +], +"refseq_name":[ +"eutD" +], +"refseq_synonym":[ +"eutI", +"ypfA", +"ECK2453", +"JW2442" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P77218" +] +} +}, +{ +"id":"b1676", +"name":"pykF", +"notes":{ +"original_bigg_ids":[ +"b1676" +] +}, +"annotation":{ +"asap":[ +"ABE-0005600" +], +"ecogene":[ +"EG10804" +], +"ncbigene":[ +"946179" +], +"ncbigi":[ +"16129632" +], +"refseq_locus_tag":[ +"b1676" +], +"refseq_name":[ +"pykF" +], +"refseq_synonym":[ +"ECK1672", +"JW1666" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0AD61" +] +} +}, +{ +"id":"b1854", +"name":"pykA", +"notes":{ +"original_bigg_ids":[ +"b1854" +] +}, +"annotation":{ +"asap":[ +"ABE-0006182" +], +"ecogene":[ +"EG10803" +], +"ncbigene":[ +"946527" +], +"ncbigi":[ +"16129807" +], +"refseq_locus_tag":[ +"b1854" +], +"refseq_name":[ +"pykA" +], +"refseq_synonym":[ +"JW1843", +"ECK1855" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P21599" +] +} +}, +{ +"id":"b3386", +"name":"rpe", +"notes":{ +"original_bigg_ids":[ +"b3386" +] +}, +"annotation":{ +"asap":[ +"ABE-0011061" +], +"ecogene":[ +"EG11960" +], +"ncbigene":[ +"947896" +], +"ncbigi":[ +"16131264" +], +"refseq_locus_tag":[ +"b3386" +], +"refseq_name":[ +"rpe" +], +"refseq_synonym":[ +"yhfD", +"ECK3373", +"JW3349", +"dod" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0AG07" +] +} +}, +{ +"id":"b4301", +"name":"sgcE", +"notes":{ +"original_bigg_ids":[ +"b4301" +] +}, +"annotation":{ +"asap":[ +"ABE-0014097" +], +"ecogene":[ +"EG12553" +], +"ncbigene":[ +"948829" +], +"ncbigi":[ +"16132122" +], +"refseq_locus_tag":[ +"b4301" +], +"refseq_name":[ +"sgcE" +], +"refseq_synonym":[ +"JW4263", +"ECK4290", +"yjhK" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P39362" +] +} +}, +{ +"id":"b2914", +"name":"rpiA", +"notes":{ +"original_bigg_ids":[ +"b2914" +] +}, +"annotation":{ +"asap":[ +"ABE-0009567" +], +"ecogene":[ +"EG11443" +], +"ncbigene":[ +"947407" +], +"ncbigi":[ +"16130815" +], +"refseq_locus_tag":[ +"b2914" +], +"refseq_name":[ +"rpiA" +], +"refseq_synonym":[ +"ECK2910", +"JW5475", +"ygfC" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0A7Z0" +] +} +}, +{ +"id":"b4090", +"name":"rpiB", +"notes":{ +"original_bigg_ids":[ +"b4090" +] +}, +"annotation":{ +"asap":[ +"ABE-0013405" +], +"ecogene":[ +"EG11827" +], +"ncbigene":[ +"948602" +], +"ncbigi":[ +"16131916" +], +"refseq_locus_tag":[ +"b4090" +], +"refseq_name":[ +"rpiB" +], +"refseq_synonym":[ +"JW4051", +"alsB", +"alsI", +"yjcA", +"ECK4083" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P37351" +] +} +}, +{ +"id":"b0721", +"name":"sdhC", +"notes":{ +"original_bigg_ids":[ +"b0721" +] +}, +"annotation":{ +"asap":[ +"ABE-0002460" +], +"ecogene":[ +"EG10933" +], +"ncbigene":[ +"945316" +], +"ncbigi":[ +"16128696" +], +"refseq_locus_tag":[ +"b0721" +], +"refseq_name":[ +"sdhC" +], +"refseq_synonym":[ +"JW0711", +"ECK0710", +"cybA" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P69054" +] +} +}, +{ +"id":"b0722", +"name":"sdhD", +"notes":{ +"original_bigg_ids":[ +"b0722" +] +}, +"annotation":{ +"asap":[ +"ABE-0002464" +], +"ecogene":[ +"EG10934" +], +"ncbigene":[ +"945322" +], +"ncbigi":[ +"16128697" +], +"refseq_locus_tag":[ +"b0722" +], +"refseq_name":[ +"sdhD" +], +"refseq_synonym":[ +"JW0712", +"ECK0711" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0AC44" +] +} +}, +{ +"id":"b0724", +"name":"sdhB", +"notes":{ +"original_bigg_ids":[ +"b0724" +] +}, +"annotation":{ +"asap":[ +"ABE-0002468" +], +"ecogene":[ +"EG10932" +], +"ncbigene":[ +"945300" +], +"ncbigi":[ +"16128699" +], +"refseq_locus_tag":[ +"b0724" +], +"refseq_name":[ +"sdhB" +], +"refseq_synonym":[ +"ECK0713", +"JW0714" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P07014" +] +} +}, +{ +"id":"b0723", +"name":"sdhA", +"notes":{ +"original_bigg_ids":[ +"b0723" +] +}, +"annotation":{ +"asap":[ +"ABE-0002466" +], +"ecogene":[ +"EG10931" +], +"ncbigene":[ +"945402" +], +"ncbigi":[ +"16128698" +], +"refseq_locus_tag":[ +"b0723" +], +"refseq_name":[ +"sdhA" +], +"refseq_synonym":[ +"JW0713", +"ECK0712" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0AC41" +] +} +}, +{ +"id":"b0729", +"name":"sucD", +"notes":{ +"original_bigg_ids":[ +"b0729" +] +}, +"annotation":{ +"asap":[ +"ABE-0002485" +], +"ecogene":[ +"EG10982" +], +"ncbigene":[ +"945314" +], +"ncbigi":[ +"16128704" +], +"refseq_locus_tag":[ +"b0729" +], +"refseq_name":[ +"sucD" +], +"refseq_synonym":[ +"JW0718", +"ECK0717" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0AGE9" +] +} +}, +{ +"id":"b0728", +"name":"sucC", +"notes":{ +"original_bigg_ids":[ +"b0728" +] +}, +"annotation":{ +"asap":[ +"ABE-0002483" +], +"ecogene":[ +"EG10981" +], +"ncbigene":[ +"945312" +], +"ncbigi":[ +"16128703" +], +"refseq_locus_tag":[ +"b0728" +], +"refseq_name":[ +"sucC" +], +"refseq_synonym":[ +"JW0717", +"ECK0716" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0A836" +] +} +}, +{ +"id":"b0008", +"name":"talB", +"notes":{ +"original_bigg_ids":[ +"b0008" +] +}, +"annotation":{ +"asap":[ +"ABE-0000027" +], +"ecogene":[ +"EG11556" +], +"ncbigene":[ +"944748" +], +"ncbigi":[ +"16128002" +], +"refseq_locus_tag":[ +"b0008" +], +"refseq_name":[ +"talB" +], +"refseq_synonym":[ +"yaaK", +"JW0007", +"ECK0008" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0A870" +] +} +}, +{ +"id":"b2464", +"name":"talA", +"notes":{ +"original_bigg_ids":[ +"b2464" +] +}, +"annotation":{ +"asap":[ +"ABE-0008115" +], +"ecogene":[ +"EG11797" +], +"ncbigene":[ +"947006" +], +"ncbigi":[ +"16130389" +], +"refseq_locus_tag":[ +"b2464" +], +"refseq_name":[ +"talA" +], +"refseq_synonym":[ +"ECK2459", +"JW2448" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0A867" +] +} +}, +{ +"id":"b2465", +"name":"tktB", +"notes":{ +"original_bigg_ids":[ +"b2465" +] +}, +"annotation":{ +"asap":[ +"ABE-0008117" +], +"ecogene":[ +"EG12100" +], +"ncbigene":[ +"945865" +], +"ncbigi":[ +"16130390" +], +"refseq_locus_tag":[ +"b2465" +], +"refseq_name":[ +"tktB" +], +"refseq_synonym":[ +"JW2449", +"ECK2460" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P33570" +] +} +}, +{ +"id":"b2935", +"name":"tktA", +"notes":{ +"original_bigg_ids":[ +"b2935" +] +}, +"annotation":{ +"asap":[ +"ABE-0009625" +], +"ecogene":[ +"EG11427" +], +"ncbigene":[ +"947420" +], +"ncbigi":[ +"49176286" +], +"refseq_locus_tag":[ +"b2935" +], +"refseq_name":[ +"tktA" +], +"refseq_synonym":[ +"JW5478", +"tkt", +"ECK2930" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P27302" +] +} +}, +{ +"id":"b3919", +"name":"tpiA", +"notes":{ +"original_bigg_ids":[ +"b3919" +] +}, +"annotation":{ +"asap":[ +"ABE-0012799" +], +"ecogene":[ +"EG11015" +], +"ncbigene":[ +"948409" +], +"ncbigi":[ +"16131757" +], +"refseq_locus_tag":[ +"b3919" +], +"refseq_name":[ +"tpiA" +], +"refseq_synonym":[ +"JW3890", +"ECK3911", +"tpi" +], +"sbo":"SBO:0000243", +"uniprot":[ +"P0A858" +] +} +} +], +"id":"e_coli_core", +"compartments":{ +"c":"cytosol", +"e":"extracellular space" +}, +"version":"1" +} \ No newline at end of file diff --git a/src/cobra/test/data/e_coli_core_for_annotation.xml b/src/cobra/test/data/e_coli_core_for_annotation.xml new file mode 100644 index 000000000..fa87d46cb --- /dev/null +++ b/src/cobra/test/data/e_coli_core_for_annotation.xml @@ -0,0 +1,8342 @@ + + + + + +
+

Key1 : Value1

+
+

+
e_coli_core - Escherichia coli str. K-12 substr. MG1655
+

+
+
+ +
+ + + +

Description

+
+

This is a metabolism model of Escherichia coli str. K-12 substr. MG1655 in + SBML format.

+
+
The content of this model has been carefully created in a manual research effort. This file has been exported from the software + COBRApy and further processed with the + JSBML-based + ModelPolisher application.
+
This file has been produced by the + Systems Biology Research Group using + BiGG Models knowledge-base version of Feb 24, 2018, where it is currently hosted and + identified by: + e_coli_core.
+

Terms of use

+
Copyright © 2017 The Regents of the University of California.
+
+

Redistribution and use of any part of this model from BiGG Models knowledge-base, with or without modification, are permitted provided that the following conditions are met: +

    +
  1. Redistributions of this SBML file must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. +
  3. Redistributions in a different form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided + with the distribution.
  4. +
This model is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

+

For specific licensing terms about this particular model and regulations of commercial use, see + this model in BiGG Models knowledge-base.

+
+

References

When using content from BiGG Models knowledge-base in your research works, please cite +
+
King ZA, Lu JS, Dräger A, Miller PC, Federowicz S, Lerman JA, Ebrahim A, Palsson BO, and Lewis NE. (2015). +
BiGG Models: A platform for integrating, standardizing, and sharing genome-scale models. + Nucl Acids Res. + doi:10.1093/nar/gkv1049
+
+
+ + + + + + + + Koenig + Matthias + + koenigmx@hu-berlin.de + + Humboldt-University Berlin, Institute for Theoretical Biology + + + + + + 2019-03-06T14:40:55Z + + + 2019-03-06T14:40:55Z + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Key1 : Value1

+

Key2 : Value2

+
+

A Heading

+
e_coli_core - Escherichia coli str. K-12 substr. MG1655
+
+

Key3 : Value3

+
+ +
+ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
diff --git a/src/cobra/test/data/e_coli_new_format.json b/src/cobra/test/data/e_coli_new_format.json new file mode 100644 index 000000000..6f87f65d6 --- /dev/null +++ b/src/cobra/test/data/e_coli_new_format.json @@ -0,0 +1,9168 @@ +{ + "annotation": { + "cvterms": { + "bqb_hasTaxon": [ + { + "resources": [ + "http://identifiers.org/taxonomy/511145" + ] + } + ], + "bqm_is": [ + { + "nested_data": { + "bqb_isDescribedBy": [ + { + "resources": [ + "https://identifiers.org/pubmed/1111111" + ] + }, + { + "resources": [ + "https://identifiers.org/eco/ECO:0000004" + ] + } + ] + }, + "resources": [ + "http://identifiers.org/bigg.model/e_coli_core" + ] + } + ], + "bqm_isDescribedBy": [ + { + "resources": [ + "http://identifiers.org/doi/10.1128/ecosalplus.10.2.1" + ] + }, + { + "resources": [ + "http://identifiers.org/ncbigi/gi:16128336" + ] + } + ] + }, + "history": { + "created_date": "2019-03-06T14:40:55Z", + "creators": [ + { + "email": "koenigmx@hu-berlin.de", + "first_name": "Matthias", + "last_name": "Koenig", + "organization_name": "Humboldt-University Berlin, Institute for Theoretical Biology" + } + ], + "modified_dates": [ + "2019-03-06T14:40:55Z" + ] + } + }, + "compartments": { + "c": "cytosol", + "e": "extracellular space" + }, + "genes": [ + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P77580" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0001207", + "http://identifiers.org/ecogene/EG13625", + "http://identifiers.org/ncbigene/945008", + "http://identifiers.org/ncbigi/gi:16128336" + ] + } + ] + } + }, + "id": "G_b0351", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0A9Q7" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0004164", + "http://identifiers.org/ecogene/EG10031", + "http://identifiers.org/ncbigene/945837", + "http://identifiers.org/ncbigi/gi:16129202" + ] + } + ] + } + }, + "id": "G_b1241", + "name": "" + }, + { + "id": "G_s0001", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0A6A3" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0007579", + "http://identifiers.org/ecogene/EG10027", + "http://identifiers.org/ncbigene/946775", + "http://identifiers.org/ncbigi/gi:16130231" + ] + } + ] + } + }, + "id": "G_b2296", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P11868" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0010245", + "http://identifiers.org/ecogene/EG11172", + "http://identifiers.org/ncbigene/947635", + "http://identifiers.org/ncbigi/gi:145698313" + ] + } + ] + } + }, + "id": "G_b3115", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P33221" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0006162", + "http://identifiers.org/ecogene/EG11809", + "http://identifiers.org/ncbigene/946368", + "http://identifiers.org/ncbigi/gi:16129802" + ] + } + ] + } + }, + "id": "G_b1849", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P25516" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0004283", + "http://identifiers.org/ecogene/EG11325", + "http://identifiers.org/ncbigene/946724", + "http://identifiers.org/ncbigi/gi:16129237" + ] + } + ] + } + }, + "id": "G_b1276", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P36683" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0000411", + "http://identifiers.org/ecogene/EG12316", + "http://identifiers.org/ncbigene/944864", + "http://identifiers.org/ncbigi/gi:16128111" + ] + } + ] + } + }, + "id": "G_b0118", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P69441" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0001645", + "http://identifiers.org/ecogene/EG10032", + "http://identifiers.org/ncbigene/945097", + "http://identifiers.org/ncbigi/gi:16128458" + ] + } + ] + } + }, + "id": "G_b0474", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0AFG3" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0002478", + "http://identifiers.org/ecogene/EG10979", + "http://identifiers.org/ncbigene/945303", + "http://identifiers.org/ncbigi/gi:16128701" + ] + } + ] + } + }, + "id": "G_b0726", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0A9P0" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0000404", + "http://identifiers.org/ecogene/EG10543", + "http://identifiers.org/ncbigene/944854", + "http://identifiers.org/ncbigi/gi:16128109" + ] + } + ] + } + }, + "id": "G_b0116", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0AFG6" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0002480", + "http://identifiers.org/ecogene/EG10980", + "http://identifiers.org/ncbigene/945307", + "http://identifiers.org/ncbigi/gi:16128702" + ] + } + ] + } + }, + "id": "G_b0727", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0AEX3" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0008515", + "http://identifiers.org/ecogene/EG10522", + "http://identifiers.org/ncbigene/947069", + "http://identifiers.org/ncbigi/gi:16130512" + ] + } + ] + } + }, + "id": "G_b2587", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P25437" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0001221", + "http://identifiers.org/ecogene/EG50010", + "http://identifiers.org/ncbigene/944988", + "http://identifiers.org/ncbigi/gi:16128341" + ] + } + ] + } + }, + "id": "G_b0356", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P39451" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0004928", + "http://identifiers.org/ecogene/EG12622", + "http://identifiers.org/ncbigene/946036", + "http://identifiers.org/ncbigi/gi:90111280" + ] + } + ] + } + }, + "id": "G_b1478", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0ABA0" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0012217", + "http://identifiers.org/ecogene/EG10103", + "http://identifiers.org/ncbigene/948247", + "http://identifiers.org/ncbigi/gi:16131604" + ] + } + ] + } + }, + "id": "G_b3736", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0A6E6" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0012206", + "http://identifiers.org/ecogene/EG10100", + "http://identifiers.org/ncbigene/948245", + "http://identifiers.org/ncbigi/gi:16131599" + ] + } + ] + } + }, + "id": "G_b3731", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0ABB4" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0012208", + "http://identifiers.org/ecogene/EG10101", + "http://identifiers.org/ncbigene/948244", + "http://identifiers.org/ncbigi/gi:16131600" + ] + } + ] + } + }, + "id": "G_b3732", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P68699" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0012220", + "http://identifiers.org/ecogene/EG10102", + "http://identifiers.org/ncbigene/948253", + "http://identifiers.org/ncbigi/gi:16131605" + ] + } + ] + } + }, + "id": "G_b3737", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0ABB0" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0012213", + "http://identifiers.org/ecogene/EG10098", + "http://identifiers.org/ncbigene/948242", + "http://identifiers.org/ncbigi/gi:16131602" + ] + } + ] + } + }, + "id": "G_b3734", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0ABA4" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0012215", + "http://identifiers.org/ecogene/EG10105", + "http://identifiers.org/ncbigene/948254", + "http://identifiers.org/ncbigi/gi:16131603" + ] + } + ] + } + }, + "id": "G_b3735", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0AB98" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0012222", + "http://identifiers.org/ecogene/EG10099", + "http://identifiers.org/ncbigene/948252", + "http://identifiers.org/ncbigi/gi:16131606" + ] + } + ] + } + }, + "id": "G_b3738", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0ABC0" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0012224", + "http://identifiers.org/ecogene/EG10106", + "http://identifiers.org/ncbigene/948251", + "http://identifiers.org/ncbigi/gi:90111645" + ] + } + ] + } + }, + "id": "G_b3739", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0ABA6" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0012211", + "http://identifiers.org/ecogene/EG10104", + "http://identifiers.org/ncbigene/948243", + "http://identifiers.org/ncbigi/gi:16131601" + ] + } + ] + } + }, + "id": "G_b3733", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0ABH7" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0002451", + "http://identifiers.org/ecogene/EG10402", + "http://identifiers.org/ncbigene/945323", + "http://identifiers.org/ncbigi/gi:16128695" + ] + } + ] + } + }, + "id": "G_b0720", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P26458" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0003302", + "http://identifiers.org/ecogene/EG11379", + "http://identifiers.org/ncbigene/947547", + "http://identifiers.org/ncbigi/gi:16128945" + ] + } + ] + } + }, + "id": "G_b0979", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P26459" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0003300", + "http://identifiers.org/ecogene/EG11380", + "http://identifiers.org/ncbigene/945585", + "http://identifiers.org/ncbigi/gi:16128944" + ] + } + ] + } + }, + "id": "G_b0978", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0ABJ9" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0002499", + "http://identifiers.org/ecogene/EG10173", + "http://identifiers.org/ncbigene/945341", + "http://identifiers.org/ncbigi/gi:90111166" + ] + } + ] + } + }, + "id": "G_b0733", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0ABK2" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0002501", + "http://identifiers.org/ecogene/EG10174", + "http://identifiers.org/ncbigene/945347", + "http://identifiers.org/ncbigi/gi:16128709" + ] + } + ] + } + }, + "id": "G_b0734", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/Q46839" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0009763", + "http://identifiers.org/ecogene/EG12995", + "http://identifiers.org/ncbigene/947259", + "http://identifiers.org/ncbigi/gi:16130875" + ] + } + ] + } + }, + "id": "G_b2975", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P33231" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0011777", + "http://identifiers.org/ecogene/EG11961", + "http://identifiers.org/ncbigene/948114", + "http://identifiers.org/ncbigi/gi:16131474" + ] + } + ] + } + }, + "id": "G_b3603", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0A6P9" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0009110", + "http://identifiers.org/ecogene/EG10258", + "http://identifiers.org/ncbigene/945032", + "http://identifiers.org/ncbigi/gi:16130686" + ] + } + ] + } + }, + "id": "G_b2779", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0A991" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0006941", + "http://identifiers.org/ecogene/EG14062", + "http://identifiers.org/ncbigene/946632", + "http://identifiers.org/ncbigi/gi:90111385" + ] + } + ] + } + }, + "id": "G_b2097", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P77704" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0005906", + "http://identifiers.org/ecogene/EG13485", + "http://identifiers.org/ncbigene/946291", + "http://identifiers.org/ncbigi/gi:16129727" + ] + } + ] + } + }, + "id": "G_b1773", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0AB71" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0009600", + "http://identifiers.org/ecogene/EG10282", + "http://identifiers.org/ncbigene/947415", + "http://identifiers.org/ncbigi/gi:16130826" + ] + } + ] + } + }, + "id": "G_b2925", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0A993" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0013842", + "http://identifiers.org/ecogene/EG10283", + "http://identifiers.org/ncbigene/948753", + "http://identifiers.org/ncbigi/gi:16132054" + ] + } + ] + } + }, + "id": "G_b4232", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0A9C9" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0012821", + "http://identifiers.org/ecogene/EG11517", + "http://identifiers.org/ncbigene/948424", + "http://identifiers.org/ncbigi/gi:16131763" + ] + } + ] + } + }, + "id": "G_b3925", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P77733" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0008206", + "http://identifiers.org/ecogene/EG14220", + "http://identifiers.org/ncbigene/949032", + "http://identifiers.org/ncbigi/gi:16130417" + ] + } + ] + } + }, + "id": "G_b2492", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0AC23" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0003073", + "http://identifiers.org/ecogene/EG11258", + "http://identifiers.org/ncbigene/945513", + "http://identifiers.org/ncbigi/gi:16128871" + ] + } + ] + } + }, + "id": "G_b0904", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0A8Q3" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0013595", + "http://identifiers.org/ecogene/EG10333", + "http://identifiers.org/ncbigene/948668", + "http://identifiers.org/ncbigi/gi:16131976" + ] + } + ] + } + }, + "id": "G_b4151", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0A8Q0" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0013598", + "http://identifiers.org/ecogene/EG10332", + "http://identifiers.org/ncbigene/948680", + "http://identifiers.org/ncbigi/gi:16131977" + ] + } + ] + } + }, + "id": "G_b4152", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P00363" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0013604", + "http://identifiers.org/ecogene/EG10330", + "http://identifiers.org/ncbigene/948667", + "http://identifiers.org/ncbigi/gi:16131979" + ] + } + ] + } + }, + "id": "G_b4154", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0AC47" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0013602", + "http://identifiers.org/ecogene/EG10331", + "http://identifiers.org/ncbigene/948666", + "http://identifiers.org/ncbigi/gi:16131978" + ] + } + ] + } + }, + "id": "G_b4153", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P08839" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0007967", + "http://identifiers.org/ecogene/EG10789", + "http://identifiers.org/ncbigene/946879", + "http://identifiers.org/ncbigi/gi:16130342" + ] + } + ] + } + }, + "id": "G_b2416", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0AA04" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0007962", + "http://identifiers.org/ecogene/EG10788", + "http://identifiers.org/ncbigene/946886", + "http://identifiers.org/ncbigi/gi:16130341" + ] + } + ] + } + }, + "id": "G_b2415", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P69797" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0006054", + "http://identifiers.org/ecogene/EG10567", + "http://identifiers.org/ncbigene/946334", + "http://identifiers.org/ncbigi/gi:16129771" + ] + } + ] + } + }, + "id": "G_b1817", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P69801" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0006056", + "http://identifiers.org/ecogene/EG10568", + "http://identifiers.org/ncbigene/946332", + "http://identifiers.org/ncbigi/gi:16129772" + ] + } + ] + } + }, + "id": "G_b1818", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P69805" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0006058", + "http://identifiers.org/ecogene/EG10569", + "http://identifiers.org/ncbigene/946342", + "http://identifiers.org/ncbigi/gi:345452720" + ] + } + ] + } + }, + "id": "G_b1819", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P05042" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0005380", + "http://identifiers.org/ecogene/EG10358", + "http://identifiers.org/ncbigene/946147", + "http://identifiers.org/ncbigi/gi:16129569" + ] + } + ] + } + }, + "id": "G_b1611", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P14407" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0013501", + "http://identifiers.org/ecogene/EG10357", + "http://identifiers.org/ncbigene/948642", + "http://identifiers.org/ncbigi/gi:16131948" + ] + } + ] + } + }, + "id": "G_b4122", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0AC33" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0005392", + "http://identifiers.org/ecogene/EG10356", + "http://identifiers.org/ncbigene/946826", + "http://identifiers.org/ncbigi/gi:16129570" + ] + } + ] + } + }, + "id": "G_b1612", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0A830" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0011527", + "http://identifiers.org/ecogene/EG20044", + "http://identifiers.org/ncbigene/948039", + "http://identifiers.org/ncbigi/gi:16131400" + ] + } + ] + } + }, + "id": "G_b3528", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0AC53" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0006171", + "http://identifiers.org/ecogene/EG11221", + "http://identifiers.org/ncbigene/946370", + "http://identifiers.org/ncbigi/gi:16129805" + ] + } + ] + } + }, + "id": "G_b1852", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0A9B2" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0005920", + "http://identifiers.org/ecogene/EG10367", + "http://identifiers.org/ncbigene/947679", + "http://identifiers.org/ncbigi/gi:16129733" + ] + } + ] + } + }, + "id": "G_b1779", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P69786" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0003722", + "http://identifiers.org/ecogene/EG10787", + "http://identifiers.org/ncbigene/945651", + "http://identifiers.org/ncbigi/gi:16129064" + ] + } + ] + } + }, + "id": "G_b1101", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P69783" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0007971", + "http://identifiers.org/ecogene/EG10165", + "http://identifiers.org/ncbigene/946880", + "http://identifiers.org/ncbigi/gi:16130343" + ] + } + ] + } + }, + "id": "G_b2417", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P19642" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0005429", + "http://identifiers.org/ecogene/EG10563", + "http://identifiers.org/ncbigene/946009", + "http://identifiers.org/ncbigi/gi:16129579" + ] + } + ] + } + }, + "id": "G_b1621", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P78061" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0004365", + "http://identifiers.org/ecogene/EG13908", + "http://identifiers.org/ncbigene/946202", + "http://identifiers.org/ncbigi/gi:90111244" + ] + } + ] + } + }, + "id": "G_b1297", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0A9C5" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0012640", + "http://identifiers.org/ecogene/EG10383", + "http://identifiers.org/ncbigene/948370", + "http://identifiers.org/ncbigi/gi:16131710" + ] + } + ] + } + }, + "id": "G_b3870", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0AEQ3" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0002771", + "http://identifiers.org/ecogene/EG10386", + "http://identifiers.org/ncbigene/944872", + "http://identifiers.org/ncbigi/gi:16128779" + ] + } + ] + } + }, + "id": "G_b0811", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0AEQ6" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0002766", + "http://identifiers.org/ecogene/EG10388", + "http://identifiers.org/ncbigene/945621", + "http://identifiers.org/ncbigi/gi:16128778" + ] + } + ] + } + }, + "id": "G_b0810", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P10346" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0002764", + "http://identifiers.org/ecogene/EG10389", + "http://identifiers.org/ncbigene/945435", + "http://identifiers.org/ncbigi/gi:16128777" + ] + } + ] + } + }, + "id": "G_b0809", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P00370" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0005865", + "http://identifiers.org/ecogene/EG10372", + "http://identifiers.org/ncbigene/946802", + "http://identifiers.org/ncbigi/gi:16129715" + ] + } + ] + } + }, + "id": "G_b1761", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P77454" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0001688", + "http://identifiers.org/ecogene/EG13247", + "http://identifiers.org/ncbigene/946187", + "http://identifiers.org/ncbigi/gi:16128469" + ] + } + ] + } + }, + "id": "G_b0485", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0A6W0" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0005086", + "http://identifiers.org/ecogene/EG13816", + "http://identifiers.org/ncbigene/944973", + "http://identifiers.org/ncbigi/gi:16129483" + ] + } + ] + } + }, + "id": "G_b1524", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P05041" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0006031", + "http://identifiers.org/ecogene/EG10683", + "http://identifiers.org/ncbigene/946337", + "http://identifiers.org/ncbigi/gi:16129766" + ] + } + ] + } + }, + "id": "G_b1812", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P09831" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0010545", + "http://identifiers.org/ecogene/EG10403", + "http://identifiers.org/ncbigene/947724", + "http://identifiers.org/ncbigi/gi:308209621" + ] + } + ] + } + }, + "id": "G_b3212", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P09832" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0010547", + "http://identifiers.org/ecogene/EG10404", + "http://identifiers.org/ncbigene/947723", + "http://identifiers.org/ncbigi/gi:16131103" + ] + } + ] + } + }, + "id": "G_b3213", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P21345" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0013357", + "http://identifiers.org/ecogene/EG10405", + "http://identifiers.org/ncbigene/948591", + "http://identifiers.org/ncbigi/gi:16131903" + ] + } + ] + } + }, + "id": "G_b4077", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P00350" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0006737", + "http://identifiers.org/ecogene/EG10411", + "http://identifiers.org/ncbigene/946554", + "http://identifiers.org/ncbigi/gi:16129970" + ] + } + ] + } + }, + "id": "G_b2029", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P60844" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0002976", + "http://identifiers.org/ecogene/EG13270", + "http://identifiers.org/ncbigene/945497", + "http://identifiers.org/ncbigi/gi:16128843" + ] + } + ] + } + }, + "id": "G_b0875", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P08200" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0003823", + "http://identifiers.org/ecogene/EG10489", + "http://identifiers.org/ncbigene/945702", + "http://identifiers.org/ncbigi/gi:16129099" + ] + } + ] + } + }, + "id": "G_b1136", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0A9G6" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0013128", + "http://identifiers.org/ecogene/EG10022", + "http://identifiers.org/ncbigene/948517", + "http://identifiers.org/ncbigi/gi:16131841" + ] + } + ] + } + }, + "id": "G_b4015", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P06149" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0007048", + "http://identifiers.org/ecogene/EG10231", + "http://identifiers.org/ncbigene/946653", + "http://identifiers.org/ncbigi/gi:16130071" + ] + } + ] + } + }, + "id": "G_b2133", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P52643" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0004619", + "http://identifiers.org/ecogene/EG13186", + "http://identifiers.org/ncbigene/946315", + "http://identifiers.org/ncbigi/gi:16129341" + ] + } + ] + } + }, + "id": "G_b1380", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P37330" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0009767", + "http://identifiers.org/ecogene/EG20080", + "http://identifiers.org/ncbigene/948857", + "http://identifiers.org/ncbigi/gi:16130876" + ] + } + ] + } + }, + "id": "G_b2976", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P08997" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0013125", + "http://identifiers.org/ecogene/EG10023", + "http://identifiers.org/ncbigene/948512", + "http://identifiers.org/ncbigi/gi:16131840" + ] + } + ] + } + }, + "id": "G_b4014", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P61889" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0010613", + "http://identifiers.org/ecogene/EG10576", + "http://identifiers.org/ncbigene/947854", + "http://identifiers.org/ncbigi/gi:16131126" + ] + } + ] + } + }, + "id": "G_b3236", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P26616" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0004931", + "http://identifiers.org/ecogene/EG10948", + "http://identifiers.org/ncbigene/946031", + "http://identifiers.org/ncbigi/gi:90111281" + ] + } + ] + } + }, + "id": "G_b1479", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P76558" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0008111", + "http://identifiers.org/ecogene/EG14193", + "http://identifiers.org/ncbigene/946947", + "http://identifiers.org/ncbigi/gi:16130388" + ] + } + ] + } + }, + "id": "G_b2463", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0AFF0" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0007526", + "http://identifiers.org/ecogene/EG12093", + "http://identifiers.org/ncbigene/945136", + "http://identifiers.org/ncbigi/gi:145698289" + ] + } + ] + } + }, + "id": "G_b2276", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0AFE4" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0007534", + "http://identifiers.org/ecogene/EG12091", + "http://identifiers.org/ncbigene/947580", + "http://identifiers.org/ncbigi/gi:16130214" + ] + } + ] + } + }, + "id": "G_b2279", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0AFC3" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0007553", + "http://identifiers.org/ecogene/EG12082", + "http://identifiers.org/ncbigene/946764", + "http://identifiers.org/ncbigi/gi:49176207" + ] + } + ] + } + }, + "id": "G_b2288", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P33607" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0007532", + "http://identifiers.org/ecogene/EG12092", + "http://identifiers.org/ncbigene/945540", + "http://identifiers.org/ncbigi/gi:16130213" + ] + } + ] + } + }, + "id": "G_b2278", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P33599" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0007549", + "http://identifiers.org/ecogene/EG12084", + "http://identifiers.org/ncbigene/946759", + "http://identifiers.org/ncbigi/gi:145698291" + ] + } + ] + } + }, + "id": "G_b2286", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0AFD1" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0007547", + "http://identifiers.org/ecogene/EG12086", + "http://identifiers.org/ncbigene/946746", + "http://identifiers.org/ncbigi/gi:16130220" + ] + } + ] + } + }, + "id": "G_b2285", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P33602" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0007543", + "http://identifiers.org/ecogene/EG12087", + "http://identifiers.org/ncbigene/946762", + "http://identifiers.org/ncbigi/gi:145698290" + ] + } + ] + } + }, + "id": "G_b2283", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0AFC7" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0007551", + "http://identifiers.org/ecogene/EG12083", + "http://identifiers.org/ncbigene/946738", + "http://identifiers.org/ncbigi/gi:16130222" + ] + } + ] + } + }, + "id": "G_b2287", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P31979" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0007545", + "http://identifiers.org/ecogene/EG11774", + "http://identifiers.org/ncbigene/946753", + "http://identifiers.org/ncbigi/gi:16130219" + ] + } + ] + } + }, + "id": "G_b2284", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0AFD6" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0007539", + "http://identifiers.org/ecogene/EG12089", + "http://identifiers.org/ncbigene/946757", + "http://identifiers.org/ncbigi/gi:16130216" + ] + } + ] + } + }, + "id": "G_b2281", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0AFE8" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0007529", + "http://identifiers.org/ecogene/EG11773", + "http://identifiers.org/ncbigene/947731", + "http://identifiers.org/ncbigi/gi:16130212" + ] + } + ] + } + }, + "id": "G_b2277", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0AFD4" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0007541", + "http://identifiers.org/ecogene/EG12088", + "http://identifiers.org/ncbigene/946761", + "http://identifiers.org/ncbigi/gi:16130217" + ] + } + ] + } + }, + "id": "G_b2282", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0AFE0" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0007536", + "http://identifiers.org/ecogene/EG12090", + "http://identifiers.org/ncbigene/946756", + "http://identifiers.org/ncbigi/gi:16130215" + ] + } + ] + } + }, + "id": "G_b2280", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P07001" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0005354", + "http://identifiers.org/ecogene/EG10744", + "http://identifiers.org/ncbigene/946628", + "http://identifiers.org/ncbigi/gi:16129561" + ] + } + ] + } + }, + "id": "G_b1603", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0AB67" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0005352", + "http://identifiers.org/ecogene/EG10745", + "http://identifiers.org/ncbigene/946144", + "http://identifiers.org/ncbigi/gi:16129560" + ] + } + ] + } + }, + "id": "G_b1602", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P27306" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0012975", + "http://identifiers.org/ecogene/EG11428", + "http://identifiers.org/ncbigene/948461", + "http://identifiers.org/ncbigi/gi:90111670" + ] + } + ] + } + }, + "id": "G_b3962", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P69681" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0001564", + "http://identifiers.org/ecogene/EG11821", + "http://identifiers.org/ncbigene/945084", + "http://identifiers.org/ncbigi/gi:16128436" + ] + } + ] + } + }, + "id": "G_b0451", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0AFG8" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0000397", + "http://identifiers.org/ecogene/EG10024", + "http://identifiers.org/ncbigene/944834", + "http://identifiers.org/ncbigi/gi:16128107" + ] + } + ] + } + }, + "id": "G_b0114", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P06959" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0000400", + "http://identifiers.org/ecogene/EG10025", + "http://identifiers.org/ncbigene/944794", + "http://identifiers.org/ncbigi/gi:16128108" + ] + } + ] + } + }, + "id": "G_b0115", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P06999" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0005748", + "http://identifiers.org/ecogene/EG10700", + "http://identifiers.org/ncbigene/946230", + "http://identifiers.org/ncbigi/gi:49176138" + ] + } + ] + } + }, + "id": "G_b1723", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0A796" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0012789", + "http://identifiers.org/ecogene/EG10699", + "http://identifiers.org/ncbigene/948412", + "http://identifiers.org/ncbigi/gi:16131754" + ] + } + ] + } + }, + "id": "G_b3916", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P42632" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0010242", + "http://identifiers.org/ecogene/EG12758", + "http://identifiers.org/ncbigene/947623", + "http://identifiers.org/ncbigi/gi:49176316" + ] + } + ] + } + }, + "id": "G_b3114", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P32675" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0012937", + "http://identifiers.org/ecogene/EG11911", + "http://identifiers.org/ncbigene/948453", + "http://identifiers.org/ncbigi/gi:49176447" + ] + } + ] + } + }, + "id": "G_b3952", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P32674" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0012934", + "http://identifiers.org/ecogene/EG11910", + "http://identifiers.org/ncbigene/948454", + "http://identifiers.org/ncbigi/gi:16131789" + ] + } + ] + } + }, + "id": "G_b3951", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0A9N4" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0003068", + "http://identifiers.org/ecogene/EG10028", + "http://identifiers.org/ncbigene/945517", + "http://identifiers.org/ncbigi/gi:16128869" + ] + } + ] + } + }, + "id": "G_b0902", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P09373" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0003071", + "http://identifiers.org/ecogene/EG10701", + "http://identifiers.org/ncbigene/945514", + "http://identifiers.org/ncbigi/gi:16128870" + ] + } + ] + } + }, + "id": "G_b0903", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P68066" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0008489", + "http://identifiers.org/ecogene/EG11784", + "http://identifiers.org/ncbigene/947068", + "http://identifiers.org/ncbigi/gi:16130504" + ] + } + ] + } + }, + "id": "G_b2579", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0A6T1" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0013163", + "http://identifiers.org/ecogene/EG10702", + "http://identifiers.org/ncbigene/948535", + "http://identifiers.org/ncbigi/gi:16131851" + ] + } + ] + } + }, + "id": "G_b4025", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0A799" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0009605", + "http://identifiers.org/ecogene/EG10703", + "http://identifiers.org/ncbigene/947414", + "http://identifiers.org/ncbigi/gi:16130827" + ] + } + ] + } + }, + "id": "G_b2926", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P52697" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0002611", + "http://identifiers.org/ecogene/EG13231", + "http://identifiers.org/ncbigene/946398", + "http://identifiers.org/ncbigi/gi:16128735" + ] + } + ] + } + }, + "id": "G_b0767", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P62707" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0002563", + "http://identifiers.org/ecogene/EG11699", + "http://identifiers.org/ncbigene/945068", + "http://identifiers.org/ncbigi/gi:16128723" + ] + } + ] + } + }, + "id": "G_b0755", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0A7A2" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0014416", + "http://identifiers.org/ecogene/EG12164", + "http://identifiers.org/ncbigene/948918", + "http://identifiers.org/ncbigi/gi:16132212" + ] + } + ] + } + }, + "id": "G_b4395", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P37689" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0011818", + "http://identifiers.org/ecogene/EG12296", + "http://identifiers.org/ncbigene/948130", + "http://identifiers.org/ncbigi/gi:16131483" + ] + } + ] + } + }, + "id": "G_b3612", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P43676" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0009800", + "http://identifiers.org/ecogene/EG12883", + "http://identifiers.org/ncbigene/947475", + "http://identifiers.org/ncbigi/gi:16130887" + ] + } + ] + } + }, + "id": "G_b2987", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0AFJ7" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0011407", + "http://identifiers.org/ecogene/EG12230", + "http://identifiers.org/ncbigene/948009", + "http://identifiers.org/ncbigi/gi:16131365" + ] + } + ] + } + }, + "id": "G_b3493", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P00864" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0012950", + "http://identifiers.org/ecogene/EG10756", + "http://identifiers.org/ncbigene/948457", + "http://identifiers.org/ncbigi/gi:16131794" + ] + } + ] + } + }, + "id": "G_b3956", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P22259" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0011106", + "http://identifiers.org/ecogene/EG10688", + "http://identifiers.org/ncbigene/945667", + "http://identifiers.org/ncbigi/gi:16131280" + ] + } + ] + } + }, + "id": "G_b3403", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P23538" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0005678", + "http://identifiers.org/ecogene/EG10759", + "http://identifiers.org/ncbigene/946209", + "http://identifiers.org/ncbigi/gi:16129658" + ] + } + ] + } + }, + "id": "G_b1702", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0A9M8" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0007582", + "http://identifiers.org/ecogene/EG20173", + "http://identifiers.org/ncbigene/946778", + "http://identifiers.org/ncbigi/gi:16130232" + ] + } + ] + } + }, + "id": "G_b2297", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P77218" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0008097", + "http://identifiers.org/ecogene/EG14188", + "http://identifiers.org/ncbigene/946940", + "http://identifiers.org/ncbigi/gi:16130383" + ] + } + ] + } + }, + "id": "G_b2458", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0AD61" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0005600", + "http://identifiers.org/ecogene/EG10804", + "http://identifiers.org/ncbigene/946179", + "http://identifiers.org/ncbigi/gi:16129632" + ] + } + ] + } + }, + "id": "G_b1676", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P21599" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0006182", + "http://identifiers.org/ecogene/EG10803", + "http://identifiers.org/ncbigene/946527", + "http://identifiers.org/ncbigi/gi:16129807" + ] + } + ] + } + }, + "id": "G_b1854", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P39362" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0014097", + "http://identifiers.org/ecogene/EG12553", + "http://identifiers.org/ncbigene/948829", + "http://identifiers.org/ncbigi/gi:16132122" + ] + } + ] + } + }, + "id": "G_b4301", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0AG07" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0011061", + "http://identifiers.org/ecogene/EG11960", + "http://identifiers.org/ncbigene/947896", + "http://identifiers.org/ncbigi/gi:16131264" + ] + } + ] + } + }, + "id": "G_b3386", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0A7Z0" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0009567", + "http://identifiers.org/ecogene/EG11443", + "http://identifiers.org/ncbigene/947407", + "http://identifiers.org/ncbigi/gi:16130815" + ] + } + ] + } + }, + "id": "G_b2914", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P37351" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0013405", + "http://identifiers.org/ecogene/EG11827", + "http://identifiers.org/ncbigene/948602", + "http://identifiers.org/ncbigi/gi:16131916" + ] + } + ] + } + }, + "id": "G_b4090", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0AC41" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0002466", + "http://identifiers.org/ecogene/EG10931", + "http://identifiers.org/ncbigene/945402", + "http://identifiers.org/ncbigi/gi:16128698" + ] + } + ] + } + }, + "id": "G_b0723", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P07014" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0002468", + "http://identifiers.org/ecogene/EG10932", + "http://identifiers.org/ncbigene/945300", + "http://identifiers.org/ncbigi/gi:16128699" + ] + } + ] + } + }, + "id": "G_b0724", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0AC44" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0002464", + "http://identifiers.org/ecogene/EG10934", + "http://identifiers.org/ncbigene/945322", + "http://identifiers.org/ncbigi/gi:16128697" + ] + } + ] + } + }, + "id": "G_b0722", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P69054" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0002460", + "http://identifiers.org/ecogene/EG10933", + "http://identifiers.org/ncbigene/945316", + "http://identifiers.org/ncbigi/gi:16128696" + ] + } + ] + } + }, + "id": "G_b0721", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0AGE9" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0002485", + "http://identifiers.org/ecogene/EG10982", + "http://identifiers.org/ncbigene/945314", + "http://identifiers.org/ncbigi/gi:16128704" + ] + } + ] + } + }, + "id": "G_b0729", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0A836" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0002483", + "http://identifiers.org/ecogene/EG10981", + "http://identifiers.org/ncbigene/945312", + "http://identifiers.org/ncbigi/gi:16128703" + ] + } + ] + } + }, + "id": "G_b0728", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0A870" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0000027", + "http://identifiers.org/ecogene/EG11556", + "http://identifiers.org/ncbigene/944748", + "http://identifiers.org/ncbigi/gi:16128002" + ] + } + ] + } + }, + "id": "G_b0008", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0A867" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0008115", + "http://identifiers.org/ecogene/EG11797", + "http://identifiers.org/ncbigene/947006", + "http://identifiers.org/ncbigi/gi:16130389" + ] + } + ] + } + }, + "id": "G_b2464", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P27302" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0009625", + "http://identifiers.org/ecogene/EG11427", + "http://identifiers.org/ncbigene/947420", + "http://identifiers.org/ncbigi/gi:49176286" + ] + } + ] + } + }, + "id": "G_b2935", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P33570" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0008117", + "http://identifiers.org/ecogene/EG12100", + "http://identifiers.org/ncbigene/945865", + "http://identifiers.org/ncbigi/gi:16130390" + ] + } + ] + } + }, + "id": "G_b2465", + "name": "" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/uniprot/P0A858" + ] + } + ], + "bqb_isEncodedBy": [ + { + "resources": [ + "http://identifiers.org/asap/ABE-0012799", + "http://identifiers.org/ecogene/EG11015", + "http://identifiers.org/ncbigene/948409", + "http://identifiers.org/ncbigi/gi:16131757" + ] + } + ] + } + }, + "id": "G_b3919", + "name": "" + } + ], + "groups": [ + { + "annotation": { + "sbo": "SBO:0000633" + }, + "id": "G_g1", + "kind": "partonomy", + "members": [ + { + "idRef": "R_ACALD", + "type": "Reaction" + }, + { + "idRef": "R_ACKr", + "type": "Reaction" + }, + { + "idRef": "R_ALCD2x", + "type": "Reaction" + }, + { + "idRef": "R_LDH_D", + "type": "Reaction" + }, + { + "idRef": "R_PFL", + "type": "Reaction" + }, + { + "idRef": "R_PTAr", + "type": "Reaction" + } + ], + "name": "Pyruvate Metabolism" + }, + { + "annotation": { + "sbo": "SBO:0000633" + }, + "id": "G_g2", + "kind": "partonomy", + "members": [ + { + "idRef": "R_ACALDt", + "type": "Reaction" + }, + { + "idRef": "R_ACt2r", + "type": "Reaction" + }, + { + "idRef": "R_AKGt2r", + "type": "Reaction" + }, + { + "idRef": "R_CO2t", + "type": "Reaction" + }, + { + "idRef": "R_D_LACt2", + "type": "Reaction" + }, + { + "idRef": "R_ETOHt2r", + "type": "Reaction" + }, + { + "idRef": "R_FORt2", + "type": "Reaction" + }, + { + "idRef": "R_FORt", + "type": "Reaction" + }, + { + "idRef": "R_FRUpts2", + "type": "Reaction" + }, + { + "idRef": "R_FUMt2_2", + "type": "Reaction" + }, + { + "idRef": "R_GLCpts", + "type": "Reaction" + }, + { + "idRef": "R_GLNabc", + "type": "Reaction" + }, + { + "idRef": "R_GLUt2r", + "type": "Reaction" + }, + { + "idRef": "R_H2Ot", + "type": "Reaction" + }, + { + "idRef": "R_MALt2_2", + "type": "Reaction" + }, + { + "idRef": "R_O2t", + "type": "Reaction" + }, + { + "idRef": "R_PYRt2", + "type": "Reaction" + }, + { + "idRef": "R_SUCCt2_2", + "type": "Reaction" + }, + { + "idRef": "R_SUCCt3", + "type": "Reaction" + } + ], + "name": "Transport, Extracellular" + }, + { + "annotation": { + "sbo": "SBO:0000633" + }, + "id": "G_g3", + "kind": "partonomy", + "members": [ + { + "idRef": "R_ACONTa", + "type": "Reaction" + }, + { + "idRef": "R_ACONTb", + "type": "Reaction" + }, + { + "idRef": "R_AKGDH", + "type": "Reaction" + }, + { + "idRef": "R_CS", + "type": "Reaction" + }, + { + "idRef": "R_FUM", + "type": "Reaction" + }, + { + "idRef": "R_ICDHyr", + "type": "Reaction" + }, + { + "idRef": "R_MDH", + "type": "Reaction" + }, + { + "idRef": "R_SUCOAS", + "type": "Reaction" + } + ], + "name": "Citric Acid Cycle" + }, + { + "annotation": { + "sbo": "SBO:0000633" + }, + "id": "G_g4", + "kind": "partonomy", + "members": [ + { + "idRef": "R_ADK1", + "type": "Reaction" + }, + { + "idRef": "R_ATPS4r", + "type": "Reaction" + }, + { + "idRef": "R_CYTBD", + "type": "Reaction" + }, + { + "idRef": "R_FRD7", + "type": "Reaction" + }, + { + "idRef": "R_NADH16", + "type": "Reaction" + }, + { + "idRef": "R_NADTRHD", + "type": "Reaction" + }, + { + "idRef": "R_SUCDi", + "type": "Reaction" + }, + { + "idRef": "R_THD2", + "type": "Reaction" + } + ], + "name": "Oxidative Phosphorylation" + }, + { + "annotation": { + "sbo": "SBO:0000633" + }, + "id": "G_g5", + "kind": "partonomy", + "members": [ + { + "idRef": "R_ATPM", + "type": "Reaction" + } + ], + "name": "Biomass and maintenance functions" + }, + { + "annotation": { + "sbo": "SBO:0000633" + }, + "id": "G_g6", + "kind": "partonomy", + "members": [ + { + "idRef": "R_ENO", + "type": "Reaction" + }, + { + "idRef": "R_FBA", + "type": "Reaction" + }, + { + "idRef": "R_FBP", + "type": "Reaction" + }, + { + "idRef": "R_GAPD", + "type": "Reaction" + }, + { + "idRef": "R_PDH", + "type": "Reaction" + }, + { + "idRef": "R_PFK", + "type": "Reaction" + }, + { + "idRef": "R_PGI", + "type": "Reaction" + }, + { + "idRef": "R_PGK", + "type": "Reaction" + }, + { + "idRef": "R_PGM", + "type": "Reaction" + }, + { + "idRef": "R_PPS", + "type": "Reaction" + }, + { + "idRef": "R_PYK", + "type": "Reaction" + }, + { + "idRef": "R_TPI", + "type": "Reaction" + } + ], + "name": "Glycolysis/Gluconeogenesis" + }, + { + "annotation": { + "sbo": "SBO:0000633" + }, + "id": "G_g7", + "kind": "partonomy", + "members": [ + { + "idRef": "R_G6PDH2r", + "type": "Reaction" + }, + { + "idRef": "R_GND", + "type": "Reaction" + }, + { + "idRef": "R_PGL", + "type": "Reaction" + }, + { + "idRef": "R_RPE", + "type": "Reaction" + }, + { + "idRef": "R_RPI", + "type": "Reaction" + }, + { + "idRef": "R_TALA", + "type": "Reaction" + }, + { + "idRef": "R_TKT1", + "type": "Reaction" + }, + { + "idRef": "R_TKT2", + "type": "Reaction" + } + ], + "name": "Pentose Phosphate Pathway" + }, + { + "annotation": { + "sbo": "SBO:0000633" + }, + "id": "G_g8", + "kind": "partonomy", + "members": [ + { + "idRef": "R_GLNS", + "type": "Reaction" + }, + { + "idRef": "R_GLUDy", + "type": "Reaction" + }, + { + "idRef": "R_GLUN", + "type": "Reaction" + }, + { + "idRef": "R_GLUSy", + "type": "Reaction" + } + ], + "name": "Glutamate Metabolism" + }, + { + "annotation": { + "sbo": "SBO:0000633" + }, + "id": "G_g9", + "kind": "partonomy", + "members": [ + { + "idRef": "R_ICL", + "type": "Reaction" + }, + { + "idRef": "R_MALS", + "type": "Reaction" + }, + { + "idRef": "R_ME1", + "type": "Reaction" + }, + { + "idRef": "R_ME2", + "type": "Reaction" + }, + { + "idRef": "R_PPC", + "type": "Reaction" + }, + { + "idRef": "R_PPCK", + "type": "Reaction" + } + ], + "name": "Anaplerotic reactions" + }, + { + "annotation": { + "sbo": "SBO:0000633" + }, + "id": "G_g10", + "kind": "partonomy", + "members": [ + { + "idRef": "R_NH4t", + "type": "Reaction" + }, + { + "idRef": "R_PIt2r", + "type": "Reaction" + } + ], + "name": "Inorganic Ion Transport and Metabolism" + } + ], + "id": "e_coli_core", + "metabolites": [ + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/13dpg", + "http://identifiers.org/biocyc/META:DPG", + "http://identifiers.org/chebi/CHEBI:11881", + "http://identifiers.org/chebi/CHEBI:16001", + "http://identifiers.org/chebi/CHEBI:1658", + "http://identifiers.org/chebi/CHEBI:20189", + "http://identifiers.org/chebi/CHEBI:57604", + "http://identifiers.org/hmdb/HMDB62758", + "http://identifiers.org/kegg.compound/C00236", + "http://identifiers.org/metanetx.chemical/MNXM261", + "http://identifiers.org/seed.compound/cpd00203" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C3H4O10P2", + "id": "M_13dpg_c", + "name": "3-Phospho-D-glyceroyl phosphate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/2pg", + "http://identifiers.org/biocyc/META:2-PG", + "http://identifiers.org/chebi/CHEBI:11651", + "http://identifiers.org/chebi/CHEBI:1267", + "http://identifiers.org/chebi/CHEBI:12986", + "http://identifiers.org/chebi/CHEBI:17835", + "http://identifiers.org/chebi/CHEBI:21028", + "http://identifiers.org/chebi/CHEBI:24344", + "http://identifiers.org/chebi/CHEBI:39868", + "http://identifiers.org/chebi/CHEBI:58289", + "http://identifiers.org/chebi/CHEBI:88350", + "http://identifiers.org/hmdb/HMDB03391", + "http://identifiers.org/hmdb/HMDB62707", + "http://identifiers.org/kegg.compound/C00631", + "http://identifiers.org/metanetx.chemical/MNXM275", + "http://identifiers.org/seed.compound/cpd00482" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C3H4O7P", + "id": "M_2pg_c", + "name": "D-Glycerate 2-phosphate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/3pg", + "http://identifiers.org/biocyc/META:G3P", + "http://identifiers.org/chebi/CHEBI:11879", + "http://identifiers.org/chebi/CHEBI:11880", + "http://identifiers.org/chebi/CHEBI:12987", + "http://identifiers.org/chebi/CHEBI:1657", + "http://identifiers.org/chebi/CHEBI:17794", + "http://identifiers.org/chebi/CHEBI:21029", + "http://identifiers.org/chebi/CHEBI:58272", + "http://identifiers.org/kegg.compound/C00197", + "http://identifiers.org/metanetx.chemical/MNXM126", + "http://identifiers.org/seed.compound/cpd00169" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C3H4O7P", + "id": "M_3pg_c", + "name": "3-Phospho-D-glycerate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/6pgc", + "http://identifiers.org/biocyc/META:CPD-2961", + "http://identifiers.org/chebi/CHEBI:12232", + "http://identifiers.org/chebi/CHEBI:16863", + "http://identifiers.org/chebi/CHEBI:2231", + "http://identifiers.org/chebi/CHEBI:33851", + "http://identifiers.org/chebi/CHEBI:40282", + "http://identifiers.org/chebi/CHEBI:48928", + "http://identifiers.org/chebi/CHEBI:58759", + "http://identifiers.org/hmdb/HMDB01316", + "http://identifiers.org/hmdb/HMDB62800", + "http://identifiers.org/kegg.compound/C00345", + "http://identifiers.org/metanetx.chemical/MNXM325", + "http://identifiers.org/seed.compound/cpd00284" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C6H10O10P", + "id": "M_6pgc_c", + "name": "6-Phospho-D-gluconate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/6pgl", + "http://identifiers.org/biocyc/META:D-6-P-GLUCONO-DELTA-LACTONE", + "http://identifiers.org/chebi/CHEBI:12233", + "http://identifiers.org/chebi/CHEBI:12958", + "http://identifiers.org/chebi/CHEBI:16938", + "http://identifiers.org/chebi/CHEBI:20989", + "http://identifiers.org/chebi/CHEBI:4160", + "http://identifiers.org/chebi/CHEBI:57955", + "http://identifiers.org/hmdb/HMDB62628", + "http://identifiers.org/kegg.compound/C01236", + "http://identifiers.org/metanetx.chemical/MNXM429", + "http://identifiers.org/seed.compound/cpd00911" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C6H9O9P", + "id": "M_6pgl_c", + "name": "6-phospho-D-glucono-1,5-lactone" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/ac", + "http://identifiers.org/biocyc/META:ACET", + "http://identifiers.org/chebi/CHEBI:13704", + "http://identifiers.org/chebi/CHEBI:15366", + "http://identifiers.org/chebi/CHEBI:22165", + "http://identifiers.org/chebi/CHEBI:22169", + "http://identifiers.org/chebi/CHEBI:2387", + "http://identifiers.org/chebi/CHEBI:30089", + "http://identifiers.org/chebi/CHEBI:40480", + "http://identifiers.org/chebi/CHEBI:40486", + "http://identifiers.org/hmdb/HMDB00042", + "http://identifiers.org/kegg.compound/C00033", + "http://identifiers.org/kegg.drug/D00010", + "http://identifiers.org/lipidmaps/LMFA01010002", + "http://identifiers.org/metanetx.chemical/MNXM26", + "http://identifiers.org/seed.compound/cpd00029" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C2H3O2", + "id": "M_ac_c", + "name": "Acetate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/ac", + "http://identifiers.org/biocyc/META:ACET", + "http://identifiers.org/chebi/CHEBI:13704", + "http://identifiers.org/chebi/CHEBI:15366", + "http://identifiers.org/chebi/CHEBI:22165", + "http://identifiers.org/chebi/CHEBI:22169", + "http://identifiers.org/chebi/CHEBI:2387", + "http://identifiers.org/chebi/CHEBI:30089", + "http://identifiers.org/chebi/CHEBI:40480", + "http://identifiers.org/chebi/CHEBI:40486", + "http://identifiers.org/hmdb/HMDB00042", + "http://identifiers.org/kegg.compound/C00033", + "http://identifiers.org/kegg.drug/D00010", + "http://identifiers.org/lipidmaps/LMFA01010002", + "http://identifiers.org/metanetx.chemical/MNXM26", + "http://identifiers.org/seed.compound/cpd00029" + ] + } + ] + } + }, + "charge": 0, + "compartment": "e", + "formula": "C2H3O2", + "id": "M_ac_e", + "name": "Acetate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/acald", + "http://identifiers.org/biocyc/META:ACETALD", + "http://identifiers.org/chebi/CHEBI:13703", + "http://identifiers.org/chebi/CHEBI:15343", + "http://identifiers.org/chebi/CHEBI:22158", + "http://identifiers.org/chebi/CHEBI:2383", + "http://identifiers.org/chebi/CHEBI:40533", + "http://identifiers.org/hmdb/HMDB00990", + "http://identifiers.org/kegg.compound/C00084", + "http://identifiers.org/metanetx.chemical/MNXM75", + "http://identifiers.org/seed.compound/cpd00071" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C2H4O", + "id": "M_acald_c", + "name": "Acetaldehyde" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/acald", + "http://identifiers.org/biocyc/META:ACETALD", + "http://identifiers.org/chebi/CHEBI:13703", + "http://identifiers.org/chebi/CHEBI:15343", + "http://identifiers.org/chebi/CHEBI:22158", + "http://identifiers.org/chebi/CHEBI:2383", + "http://identifiers.org/chebi/CHEBI:40533", + "http://identifiers.org/hmdb/HMDB00990", + "http://identifiers.org/kegg.compound/C00084", + "http://identifiers.org/metanetx.chemical/MNXM75", + "http://identifiers.org/seed.compound/cpd00071" + ] + } + ] + } + }, + "charge": 0, + "compartment": "e", + "formula": "C2H4O", + "id": "M_acald_e", + "name": "Acetaldehyde" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/accoa", + "http://identifiers.org/biocyc/META:ACETYL-COA", + "http://identifiers.org/chebi/CHEBI:13712", + "http://identifiers.org/chebi/CHEBI:15351", + "http://identifiers.org/chebi/CHEBI:22192", + "http://identifiers.org/chebi/CHEBI:2408", + "http://identifiers.org/chebi/CHEBI:40470", + "http://identifiers.org/chebi/CHEBI:57288", + "http://identifiers.org/hmdb/HMDB01206", + "http://identifiers.org/kegg.compound/C00024", + "http://identifiers.org/lipidmaps/LMFA07050029", + "http://identifiers.org/lipidmaps/LMFA07050281", + "http://identifiers.org/metanetx.chemical/MNXM21", + "http://identifiers.org/seed.compound/cpd00022" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C23H34N7O17P3S", + "id": "M_accoa_c", + "name": "Acetyl-CoA" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/acon_C", + "http://identifiers.org/biocyc/META:CIS-ACONITATE", + "http://identifiers.org/chebi/CHEBI:10482", + "http://identifiers.org/chebi/CHEBI:12798", + "http://identifiers.org/chebi/CHEBI:16383", + "http://identifiers.org/chebi/CHEBI:23306", + "http://identifiers.org/chebi/CHEBI:23308", + "http://identifiers.org/chebi/CHEBI:32805", + "http://identifiers.org/hmdb/HMDB00072", + "http://identifiers.org/hmdb/HMDB00461", + "http://identifiers.org/kegg.compound/C00417", + "http://identifiers.org/metanetx.chemical/MNXM813", + "http://identifiers.org/seed.compound/cpd00331" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C6H3O6", + "id": "M_acon_C_c", + "name": "Cis-Aconitate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/actp", + "http://identifiers.org/biocyc/META:ACETYL-P", + "http://identifiers.org/chebi/CHEBI:13711", + "http://identifiers.org/chebi/CHEBI:15350", + "http://identifiers.org/chebi/CHEBI:22191", + "http://identifiers.org/chebi/CHEBI:2407", + "http://identifiers.org/chebi/CHEBI:46262", + "http://identifiers.org/hmdb/HMDB01494", + "http://identifiers.org/kegg.compound/C00227", + "http://identifiers.org/metanetx.chemical/MNXM280", + "http://identifiers.org/seed.compound/cpd00196" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C2H3O5P", + "id": "M_actp_c", + "name": "Acetyl phosphate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/adp", + "http://identifiers.org/biocyc/META:ADP", + "http://identifiers.org/biocyc/META:CPD0-1651", + "http://identifiers.org/chebi/CHEBI:13222", + "http://identifiers.org/chebi/CHEBI:16761", + "http://identifiers.org/chebi/CHEBI:22244", + "http://identifiers.org/chebi/CHEBI:2342", + "http://identifiers.org/chebi/CHEBI:40553", + "http://identifiers.org/chebi/CHEBI:456216", + "http://identifiers.org/chebi/CHEBI:87518", + "http://identifiers.org/hmdb/HMDB01341", + "http://identifiers.org/kegg.compound/C00008", + "http://identifiers.org/kegg.glycan/G11113", + "http://identifiers.org/metanetx.chemical/MNXM7", + "http://identifiers.org/seed.compound/cpd00008" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C10H12N5O10P2", + "id": "M_adp_c", + "name": "ADP C10H12N5O10P2" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/akg", + "http://identifiers.org/biocyc/META:2-KETOGLUTARATE", + "http://identifiers.org/biocyc/META:CPD-16852", + "http://identifiers.org/chebi/CHEBI:11638", + "http://identifiers.org/chebi/CHEBI:1253", + "http://identifiers.org/chebi/CHEBI:16810", + "http://identifiers.org/chebi/CHEBI:19748", + "http://identifiers.org/chebi/CHEBI:19749", + "http://identifiers.org/chebi/CHEBI:30915", + "http://identifiers.org/chebi/CHEBI:30916", + "http://identifiers.org/chebi/CHEBI:40661", + "http://identifiers.org/hmdb/HMDB62781", + "http://identifiers.org/kegg.compound/C00026", + "http://identifiers.org/metanetx.chemical/MNXM20", + "http://identifiers.org/seed.compound/cpd00024" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C5H4O5", + "id": "M_akg_c", + "name": "2-Oxoglutarate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/akg", + "http://identifiers.org/biocyc/META:2-KETOGLUTARATE", + "http://identifiers.org/biocyc/META:CPD-16852", + "http://identifiers.org/chebi/CHEBI:11638", + "http://identifiers.org/chebi/CHEBI:1253", + "http://identifiers.org/chebi/CHEBI:16810", + "http://identifiers.org/chebi/CHEBI:19748", + "http://identifiers.org/chebi/CHEBI:19749", + "http://identifiers.org/chebi/CHEBI:30915", + "http://identifiers.org/chebi/CHEBI:30916", + "http://identifiers.org/chebi/CHEBI:40661", + "http://identifiers.org/hmdb/HMDB62781", + "http://identifiers.org/kegg.compound/C00026", + "http://identifiers.org/metanetx.chemical/MNXM20", + "http://identifiers.org/seed.compound/cpd00024" + ] + } + ] + } + }, + "charge": 0, + "compartment": "e", + "formula": "C5H4O5", + "id": "M_akg_e", + "name": "2-Oxoglutarate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/amp", + "http://identifiers.org/biocyc/META:AMP", + "http://identifiers.org/biocyc/META:AMP-GROUP", + "http://identifiers.org/chebi/CHEBI:12056", + "http://identifiers.org/chebi/CHEBI:13234", + "http://identifiers.org/chebi/CHEBI:13235", + "http://identifiers.org/chebi/CHEBI:13736", + "http://identifiers.org/chebi/CHEBI:13740", + "http://identifiers.org/chebi/CHEBI:16027", + "http://identifiers.org/chebi/CHEBI:22242", + "http://identifiers.org/chebi/CHEBI:22245", + "http://identifiers.org/chebi/CHEBI:2356", + "http://identifiers.org/chebi/CHEBI:40510", + "http://identifiers.org/chebi/CHEBI:40721", + "http://identifiers.org/chebi/CHEBI:40726", + "http://identifiers.org/chebi/CHEBI:40786", + "http://identifiers.org/chebi/CHEBI:40826", + "http://identifiers.org/chebi/CHEBI:456215", + "http://identifiers.org/chebi/CHEBI:47222", + "http://identifiers.org/kegg.compound/C00020", + "http://identifiers.org/kegg.drug/D02769", + "http://identifiers.org/metanetx.chemical/MNXM14", + "http://identifiers.org/seed.compound/cpd00018", + "http://identifiers.org/seed.compound/cpd22272" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C10H12N5O7P", + "id": "M_amp_c", + "name": "AMP C10H12N5O7P" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/atp", + "http://identifiers.org/biocyc/META:ATP", + "http://identifiers.org/biocyc/META:CPD0-1634", + "http://identifiers.org/chebi/CHEBI:10789", + "http://identifiers.org/chebi/CHEBI:10841", + "http://identifiers.org/chebi/CHEBI:13236", + "http://identifiers.org/chebi/CHEBI:15422", + "http://identifiers.org/chebi/CHEBI:22249", + "http://identifiers.org/chebi/CHEBI:2359", + "http://identifiers.org/chebi/CHEBI:237958", + "http://identifiers.org/chebi/CHEBI:30616", + "http://identifiers.org/chebi/CHEBI:40938", + "http://identifiers.org/chebi/CHEBI:57299", + "http://identifiers.org/kegg.compound/C00002", + "http://identifiers.org/kegg.drug/D08646", + "http://identifiers.org/metanetx.chemical/MNXM3", + "http://identifiers.org/seed.compound/cpd00002" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C10H12N5O13P3", + "id": "M_atp_c", + "name": "ATP C10H12N5O13P3" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/cit", + "http://identifiers.org/biocyc/META:CIT", + "http://identifiers.org/chebi/CHEBI:132362", + "http://identifiers.org/chebi/CHEBI:133748", + "http://identifiers.org/chebi/CHEBI:13999", + "http://identifiers.org/chebi/CHEBI:16947", + "http://identifiers.org/chebi/CHEBI:23321", + "http://identifiers.org/chebi/CHEBI:23322", + "http://identifiers.org/chebi/CHEBI:30769", + "http://identifiers.org/chebi/CHEBI:35802", + "http://identifiers.org/chebi/CHEBI:35804", + "http://identifiers.org/chebi/CHEBI:35806", + "http://identifiers.org/chebi/CHEBI:35808", + "http://identifiers.org/chebi/CHEBI:35809", + "http://identifiers.org/chebi/CHEBI:35810", + "http://identifiers.org/chebi/CHEBI:3727", + "http://identifiers.org/chebi/CHEBI:41523", + "http://identifiers.org/chebi/CHEBI:42563", + "http://identifiers.org/chebi/CHEBI:76049", + "http://identifiers.org/chebi/CHEBI:79399", + "http://identifiers.org/hmdb/HMDB00094", + "http://identifiers.org/kegg.compound/C00158", + "http://identifiers.org/kegg.compound/C13660", + "http://identifiers.org/kegg.drug/D00037", + "http://identifiers.org/metanetx.chemical/MNXM131", + "http://identifiers.org/seed.compound/cpd00137" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C6H5O7", + "id": "M_cit_c", + "name": "Citrate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/co2", + "http://identifiers.org/biocyc/META:CARBON-DIOXIDE", + "http://identifiers.org/chebi/CHEBI:13282", + "http://identifiers.org/chebi/CHEBI:13283", + "http://identifiers.org/chebi/CHEBI:13284", + "http://identifiers.org/chebi/CHEBI:13285", + "http://identifiers.org/chebi/CHEBI:16526", + "http://identifiers.org/chebi/CHEBI:23011", + "http://identifiers.org/chebi/CHEBI:3283", + "http://identifiers.org/chebi/CHEBI:48829", + "http://identifiers.org/hmdb/HMDB01967", + "http://identifiers.org/kegg.compound/C00011", + "http://identifiers.org/kegg.drug/D00004", + "http://identifiers.org/metanetx.chemical/MNXM13", + "http://identifiers.org/seed.compound/cpd00011" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "CO2", + "id": "M_co2_c", + "name": "CO2 CO2" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/co2", + "http://identifiers.org/biocyc/META:CARBON-DIOXIDE", + "http://identifiers.org/chebi/CHEBI:13282", + "http://identifiers.org/chebi/CHEBI:13283", + "http://identifiers.org/chebi/CHEBI:13284", + "http://identifiers.org/chebi/CHEBI:13285", + "http://identifiers.org/chebi/CHEBI:16526", + "http://identifiers.org/chebi/CHEBI:23011", + "http://identifiers.org/chebi/CHEBI:3283", + "http://identifiers.org/chebi/CHEBI:48829", + "http://identifiers.org/hmdb/HMDB01967", + "http://identifiers.org/kegg.compound/C00011", + "http://identifiers.org/kegg.drug/D00004", + "http://identifiers.org/metanetx.chemical/MNXM13", + "http://identifiers.org/seed.compound/cpd00011" + ] + } + ] + } + }, + "charge": 0, + "compartment": "e", + "formula": "CO2", + "id": "M_co2_e", + "name": "CO2 CO2" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/coa", + "http://identifiers.org/biocyc/META:CO-A", + "http://identifiers.org/biocyc/META:COA-GROUP", + "http://identifiers.org/chebi/CHEBI:13294", + "http://identifiers.org/chebi/CHEBI:13295", + "http://identifiers.org/chebi/CHEBI:13298", + "http://identifiers.org/chebi/CHEBI:15346", + "http://identifiers.org/chebi/CHEBI:23355", + "http://identifiers.org/chebi/CHEBI:3771", + "http://identifiers.org/chebi/CHEBI:41597", + "http://identifiers.org/chebi/CHEBI:41631", + "http://identifiers.org/chebi/CHEBI:57287", + "http://identifiers.org/chebi/CHEBI:741566", + "http://identifiers.org/hmdb/HMDB01423", + "http://identifiers.org/kegg.compound/C00010", + "http://identifiers.org/metanetx.chemical/MNXM12", + "http://identifiers.org/seed.compound/cpd00010", + "http://identifiers.org/seed.compound/cpd22528" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C21H32N7O16P3S", + "id": "M_coa_c", + "name": "Coenzyme A" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/dhap", + "http://identifiers.org/biocyc/META:DIHYDROXY-ACETONE-PHOSPHATE", + "http://identifiers.org/chebi/CHEBI:14341", + "http://identifiers.org/chebi/CHEBI:14342", + "http://identifiers.org/chebi/CHEBI:16108", + "http://identifiers.org/chebi/CHEBI:24355", + "http://identifiers.org/chebi/CHEBI:39571", + "http://identifiers.org/chebi/CHEBI:5454", + "http://identifiers.org/chebi/CHEBI:57642", + "http://identifiers.org/hmdb/HMDB01473", + "http://identifiers.org/hmdb/HMDB11735", + "http://identifiers.org/kegg.compound/C00111", + "http://identifiers.org/metanetx.chemical/MNXM77", + "http://identifiers.org/seed.compound/cpd00095" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C3H5O6P", + "id": "M_dhap_c", + "name": "Dihydroxyacetone phosphate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/e4p", + "http://identifiers.org/biocyc/META:ERYTHROSE-4P", + "http://identifiers.org/chebi/CHEBI:12921", + "http://identifiers.org/chebi/CHEBI:16897", + "http://identifiers.org/chebi/CHEBI:20927", + "http://identifiers.org/chebi/CHEBI:4114", + "http://identifiers.org/chebi/CHEBI:42349", + "http://identifiers.org/chebi/CHEBI:48153", + "http://identifiers.org/hmdb/HMDB01321", + "http://identifiers.org/kegg.compound/C00279", + "http://identifiers.org/metanetx.chemical/MNXM258", + "http://identifiers.org/seed.compound/cpd00236" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C4H7O7P", + "id": "M_e4p_c", + "name": "D-Erythrose 4-phosphate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/etoh", + "http://identifiers.org/biocyc/META:ETOH", + "http://identifiers.org/chebi/CHEBI:14222", + "http://identifiers.org/chebi/CHEBI:16236", + "http://identifiers.org/chebi/CHEBI:23978", + "http://identifiers.org/chebi/CHEBI:30878", + "http://identifiers.org/chebi/CHEBI:30880", + "http://identifiers.org/chebi/CHEBI:42377", + "http://identifiers.org/chebi/CHEBI:44594", + "http://identifiers.org/chebi/CHEBI:4879", + "http://identifiers.org/chebi/CHEBI:52092", + "http://identifiers.org/hmdb/HMDB00108", + "http://identifiers.org/kegg.compound/C00469", + "http://identifiers.org/kegg.drug/D00068", + "http://identifiers.org/kegg.drug/D02798", + "http://identifiers.org/kegg.drug/D04855", + "http://identifiers.org/kegg.drug/D06542", + "http://identifiers.org/metanetx.chemical/MNXM303", + "http://identifiers.org/seed.compound/cpd00363" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C2H6O", + "id": "M_etoh_c", + "name": "Ethanol" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/etoh", + "http://identifiers.org/biocyc/META:ETOH", + "http://identifiers.org/chebi/CHEBI:14222", + "http://identifiers.org/chebi/CHEBI:16236", + "http://identifiers.org/chebi/CHEBI:23978", + "http://identifiers.org/chebi/CHEBI:30878", + "http://identifiers.org/chebi/CHEBI:30880", + "http://identifiers.org/chebi/CHEBI:42377", + "http://identifiers.org/chebi/CHEBI:44594", + "http://identifiers.org/chebi/CHEBI:4879", + "http://identifiers.org/chebi/CHEBI:52092", + "http://identifiers.org/hmdb/HMDB00108", + "http://identifiers.org/kegg.compound/C00469", + "http://identifiers.org/kegg.drug/D00068", + "http://identifiers.org/kegg.drug/D02798", + "http://identifiers.org/kegg.drug/D04855", + "http://identifiers.org/kegg.drug/D06542", + "http://identifiers.org/metanetx.chemical/MNXM303", + "http://identifiers.org/seed.compound/cpd00363" + ] + } + ] + } + }, + "charge": 0, + "compartment": "e", + "formula": "C2H6O", + "id": "M_etoh_e", + "name": "Ethanol" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/f6p", + "http://identifiers.org/biocyc/META:FRUCTOSE-6P", + "http://identifiers.org/chebi/CHEBI:10375", + "http://identifiers.org/chebi/CHEBI:12352", + "http://identifiers.org/chebi/CHEBI:16084", + "http://identifiers.org/chebi/CHEBI:22768", + "http://identifiers.org/chebi/CHEBI:42378", + "http://identifiers.org/chebi/CHEBI:57634", + "http://identifiers.org/hmdb/HMDB03971", + "http://identifiers.org/kegg.compound/C05345", + "http://identifiers.org/metanetx.chemical/MNXM89621", + "http://identifiers.org/seed.compound/cpd19035" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C6H11O9P", + "id": "M_f6p_c", + "name": "D-Fructose 6-phosphate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/fdp", + "http://identifiers.org/chebi/CHEBI:37736", + "http://identifiers.org/chebi/CHEBI:49299", + "http://identifiers.org/kegg.compound/C00354", + "http://identifiers.org/metanetx.chemical/MNXM417", + "http://identifiers.org/seed.compound/cpd00290" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C6H10O12P2", + "id": "M_fdp_c", + "name": "D-Fructose 1,6-bisphosphate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/for", + "http://identifiers.org/biocyc/META:CARBOXYL-GROUP", + "http://identifiers.org/biocyc/META:CPD-9845", + "http://identifiers.org/biocyc/META:CPD1G-1532", + "http://identifiers.org/biocyc/META:CPD1G-1533", + "http://identifiers.org/biocyc/META:CPD1G-1534", + "http://identifiers.org/biocyc/META:CPD1G-1535", + "http://identifiers.org/biocyc/META:FORMATE", + "http://identifiers.org/chebi/CHEBI:14276", + "http://identifiers.org/chebi/CHEBI:15740", + "http://identifiers.org/chebi/CHEBI:24081", + "http://identifiers.org/chebi/CHEBI:24082", + "http://identifiers.org/chebi/CHEBI:30751", + "http://identifiers.org/chebi/CHEBI:42460", + "http://identifiers.org/chebi/CHEBI:5145", + "http://identifiers.org/hmdb/HMDB00142", + "http://identifiers.org/kegg.compound/C00058", + "http://identifiers.org/metanetx.chemical/MNXM39", + "http://identifiers.org/seed.compound/cpd00047", + "http://identifiers.org/seed.compound/cpd22511" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "CH1O2", + "id": "M_for_c", + "name": "Formate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/for", + "http://identifiers.org/biocyc/META:CARBOXYL-GROUP", + "http://identifiers.org/biocyc/META:CPD-9845", + "http://identifiers.org/biocyc/META:CPD1G-1532", + "http://identifiers.org/biocyc/META:CPD1G-1533", + "http://identifiers.org/biocyc/META:CPD1G-1534", + "http://identifiers.org/biocyc/META:CPD1G-1535", + "http://identifiers.org/biocyc/META:FORMATE", + "http://identifiers.org/chebi/CHEBI:14276", + "http://identifiers.org/chebi/CHEBI:15740", + "http://identifiers.org/chebi/CHEBI:24081", + "http://identifiers.org/chebi/CHEBI:24082", + "http://identifiers.org/chebi/CHEBI:30751", + "http://identifiers.org/chebi/CHEBI:42460", + "http://identifiers.org/chebi/CHEBI:5145", + "http://identifiers.org/hmdb/HMDB00142", + "http://identifiers.org/kegg.compound/C00058", + "http://identifiers.org/metanetx.chemical/MNXM39", + "http://identifiers.org/seed.compound/cpd00047", + "http://identifiers.org/seed.compound/cpd22511" + ] + } + ] + } + }, + "charge": 0, + "compartment": "e", + "formula": "CH1O2", + "id": "M_for_e", + "name": "Formate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/fru", + "http://identifiers.org/biocyc/META:CPD-15382", + "http://identifiers.org/biocyc/META:D-Fructopyranose", + "http://identifiers.org/biocyc/META:FRU", + "http://identifiers.org/biocyc/META:Fructofuranose", + "http://identifiers.org/chebi/CHEBI:12923", + "http://identifiers.org/chebi/CHEBI:15824", + "http://identifiers.org/chebi/CHEBI:20929", + "http://identifiers.org/chebi/CHEBI:24104", + "http://identifiers.org/chebi/CHEBI:24110", + "http://identifiers.org/chebi/CHEBI:28757", + "http://identifiers.org/chebi/CHEBI:37714", + "http://identifiers.org/chebi/CHEBI:37721", + "http://identifiers.org/chebi/CHEBI:4118", + "http://identifiers.org/chebi/CHEBI:4119", + "http://identifiers.org/chebi/CHEBI:47424", + "http://identifiers.org/chebi/CHEBI:48095", + "http://identifiers.org/chebi/CHEBI:5172", + "http://identifiers.org/hmdb/HMDB62538", + "http://identifiers.org/kegg.compound/C00095", + "http://identifiers.org/kegg.compound/C01496", + "http://identifiers.org/kegg.compound/C05003", + "http://identifiers.org/kegg.compound/C10906", + "http://identifiers.org/kegg.drug/D00114", + "http://identifiers.org/metanetx.chemical/MNXM175", + "http://identifiers.org/seed.compound/cpd00082", + "http://identifiers.org/seed.compound/cpd19015", + "http://identifiers.org/seed.compound/cpd27040" + ] + } + ] + } + }, + "charge": 0, + "compartment": "e", + "formula": "C6H12O6", + "id": "M_fru_e", + "name": "D-Fructose" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/fum", + "http://identifiers.org/biocyc/META:FUM", + "http://identifiers.org/chebi/CHEBI:14284", + "http://identifiers.org/chebi/CHEBI:18012", + "http://identifiers.org/chebi/CHEBI:22956", + "http://identifiers.org/chebi/CHEBI:22957", + "http://identifiers.org/chebi/CHEBI:22958", + "http://identifiers.org/chebi/CHEBI:24122", + "http://identifiers.org/chebi/CHEBI:24124", + "http://identifiers.org/chebi/CHEBI:29806", + "http://identifiers.org/chebi/CHEBI:36180", + "http://identifiers.org/chebi/CHEBI:37154", + "http://identifiers.org/chebi/CHEBI:37155", + "http://identifiers.org/chebi/CHEBI:42511", + "http://identifiers.org/chebi/CHEBI:42743", + "http://identifiers.org/chebi/CHEBI:5190", + "http://identifiers.org/hmdb/HMDB00134", + "http://identifiers.org/kegg.compound/C00122", + "http://identifiers.org/kegg.drug/D02308", + "http://identifiers.org/metanetx.chemical/MNXM93", + "http://identifiers.org/seed.compound/cpd00106" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C4H2O4", + "id": "M_fum_c", + "name": "Fumarate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/fum", + "http://identifiers.org/biocyc/META:FUM", + "http://identifiers.org/chebi/CHEBI:14284", + "http://identifiers.org/chebi/CHEBI:18012", + "http://identifiers.org/chebi/CHEBI:22956", + "http://identifiers.org/chebi/CHEBI:22957", + "http://identifiers.org/chebi/CHEBI:22958", + "http://identifiers.org/chebi/CHEBI:24122", + "http://identifiers.org/chebi/CHEBI:24124", + "http://identifiers.org/chebi/CHEBI:29806", + "http://identifiers.org/chebi/CHEBI:36180", + "http://identifiers.org/chebi/CHEBI:37154", + "http://identifiers.org/chebi/CHEBI:37155", + "http://identifiers.org/chebi/CHEBI:42511", + "http://identifiers.org/chebi/CHEBI:42743", + "http://identifiers.org/chebi/CHEBI:5190", + "http://identifiers.org/hmdb/HMDB00134", + "http://identifiers.org/kegg.compound/C00122", + "http://identifiers.org/kegg.drug/D02308", + "http://identifiers.org/metanetx.chemical/MNXM93", + "http://identifiers.org/seed.compound/cpd00106" + ] + } + ] + } + }, + "charge": 0, + "compartment": "e", + "formula": "C4H2O4", + "id": "M_fum_e", + "name": "Fumarate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/g3p", + "http://identifiers.org/biocyc/META:GAP", + "http://identifiers.org/chebi/CHEBI:12983", + "http://identifiers.org/chebi/CHEBI:12984", + "http://identifiers.org/chebi/CHEBI:14333", + "http://identifiers.org/chebi/CHEBI:17138", + "http://identifiers.org/chebi/CHEBI:181", + "http://identifiers.org/chebi/CHEBI:18324", + "http://identifiers.org/chebi/CHEBI:21026", + "http://identifiers.org/chebi/CHEBI:29052", + "http://identifiers.org/chebi/CHEBI:5446", + "http://identifiers.org/chebi/CHEBI:58027", + "http://identifiers.org/chebi/CHEBI:59776", + "http://identifiers.org/hmdb/HMDB01112", + "http://identifiers.org/kegg.compound/C00118", + "http://identifiers.org/kegg.compound/C00661", + "http://identifiers.org/metanetx.chemical/MNXM74", + "http://identifiers.org/seed.compound/cpd00102", + "http://identifiers.org/seed.compound/cpd19005" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C3H5O6P", + "id": "M_g3p_c", + "name": "Glyceraldehyde 3-phosphate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/g6p", + "http://identifiers.org/biocyc/META:D-glucopyranose-6-phosphate", + "http://identifiers.org/chebi/CHEBI:14314", + "http://identifiers.org/chebi/CHEBI:4170", + "http://identifiers.org/chebi/CHEBI:61548", + "http://identifiers.org/hmdb/HMDB01401", + "http://identifiers.org/hmdb/HMDB01549", + "http://identifiers.org/hmdb/HMDB06793", + "http://identifiers.org/kegg.compound/C00092", + "http://identifiers.org/metanetx.chemical/MNXM160", + "http://identifiers.org/seed.compound/cpd00079", + "http://identifiers.org/seed.compound/cpd26836" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C6H11O9P", + "id": "M_g6p_c", + "name": "D-Glucose 6-phosphate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/glc__D", + "http://identifiers.org/biocyc/META:Glucopyranose", + "http://identifiers.org/chebi/CHEBI:12965", + "http://identifiers.org/chebi/CHEBI:17634", + "http://identifiers.org/chebi/CHEBI:20999", + "http://identifiers.org/chebi/CHEBI:4167", + "http://identifiers.org/hmdb/HMDB00122", + "http://identifiers.org/hmdb/HMDB06564", + "http://identifiers.org/kegg.compound/C00031", + "http://identifiers.org/kegg.drug/D00009", + "http://identifiers.org/metanetx.chemical/MNXM41", + "http://identifiers.org/seed.compound/cpd00027", + "http://identifiers.org/seed.compound/cpd26821" + ] + } + ] + } + }, + "charge": 0, + "compartment": "e", + "formula": "C6H12O6", + "id": "M_glc__D_e", + "name": "D-Glucose" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/gln__L", + "http://identifiers.org/biocyc/META:GLN", + "http://identifiers.org/chebi/CHEBI:13110", + "http://identifiers.org/chebi/CHEBI:18050", + "http://identifiers.org/chebi/CHEBI:21308", + "http://identifiers.org/chebi/CHEBI:24316", + "http://identifiers.org/chebi/CHEBI:28300", + "http://identifiers.org/chebi/CHEBI:32665", + "http://identifiers.org/chebi/CHEBI:32666", + "http://identifiers.org/chebi/CHEBI:32678", + "http://identifiers.org/chebi/CHEBI:32679", + "http://identifiers.org/chebi/CHEBI:42812", + "http://identifiers.org/chebi/CHEBI:42814", + "http://identifiers.org/chebi/CHEBI:42899", + "http://identifiers.org/chebi/CHEBI:42943", + "http://identifiers.org/chebi/CHEBI:5432", + "http://identifiers.org/chebi/CHEBI:58359", + "http://identifiers.org/chebi/CHEBI:6227", + "http://identifiers.org/hmdb/HMDB00641", + "http://identifiers.org/kegg.compound/C00064", + "http://identifiers.org/kegg.compound/C00303", + "http://identifiers.org/kegg.drug/D00015", + "http://identifiers.org/metanetx.chemical/MNXM37", + "http://identifiers.org/seed.compound/cpd00053", + "http://identifiers.org/seed.compound/cpd00253" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C5H10N2O3", + "id": "M_gln__L_c", + "name": "L-Glutamine" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/gln__L", + "http://identifiers.org/biocyc/META:GLN", + "http://identifiers.org/chebi/CHEBI:13110", + "http://identifiers.org/chebi/CHEBI:18050", + "http://identifiers.org/chebi/CHEBI:21308", + "http://identifiers.org/chebi/CHEBI:24316", + "http://identifiers.org/chebi/CHEBI:28300", + "http://identifiers.org/chebi/CHEBI:32665", + "http://identifiers.org/chebi/CHEBI:32666", + "http://identifiers.org/chebi/CHEBI:32678", + "http://identifiers.org/chebi/CHEBI:32679", + "http://identifiers.org/chebi/CHEBI:42812", + "http://identifiers.org/chebi/CHEBI:42814", + "http://identifiers.org/chebi/CHEBI:42899", + "http://identifiers.org/chebi/CHEBI:42943", + "http://identifiers.org/chebi/CHEBI:5432", + "http://identifiers.org/chebi/CHEBI:58359", + "http://identifiers.org/chebi/CHEBI:6227", + "http://identifiers.org/hmdb/HMDB00641", + "http://identifiers.org/kegg.compound/C00064", + "http://identifiers.org/kegg.compound/C00303", + "http://identifiers.org/kegg.drug/D00015", + "http://identifiers.org/metanetx.chemical/MNXM37", + "http://identifiers.org/seed.compound/cpd00053", + "http://identifiers.org/seed.compound/cpd00253" + ] + } + ] + } + }, + "charge": 0, + "compartment": "e", + "formula": "C5H10N2O3", + "id": "M_gln__L_e", + "name": "L-Glutamine" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/glu__L", + "http://identifiers.org/biocyc/META:GLT", + "http://identifiers.org/biocyc/META:Glutamates", + "http://identifiers.org/chebi/CHEBI:13107", + "http://identifiers.org/chebi/CHEBI:14321", + "http://identifiers.org/chebi/CHEBI:16015", + "http://identifiers.org/chebi/CHEBI:18237", + "http://identifiers.org/chebi/CHEBI:21301", + "http://identifiers.org/chebi/CHEBI:21304", + "http://identifiers.org/chebi/CHEBI:24314", + "http://identifiers.org/chebi/CHEBI:29985", + "http://identifiers.org/chebi/CHEBI:29987", + "http://identifiers.org/chebi/CHEBI:29988", + "http://identifiers.org/chebi/CHEBI:42825", + "http://identifiers.org/chebi/CHEBI:5431", + "http://identifiers.org/chebi/CHEBI:6224", + "http://identifiers.org/chebi/CHEBI:76051", + "http://identifiers.org/hmdb/HMDB00148", + "http://identifiers.org/hmdb/HMDB60475", + "http://identifiers.org/kegg.compound/C00025", + "http://identifiers.org/kegg.compound/C00302", + "http://identifiers.org/kegg.drug/D00007", + "http://identifiers.org/kegg.drug/D04341", + "http://identifiers.org/metanetx.chemical/MNXM89557", + "http://identifiers.org/seed.compound/cpd00023", + "http://identifiers.org/seed.compound/cpd19002", + "http://identifiers.org/seed.compound/cpd27177" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C5H8NO4", + "id": "M_glu__L_c", + "name": "L-Glutamate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/glu__L", + "http://identifiers.org/biocyc/META:GLT", + "http://identifiers.org/biocyc/META:Glutamates", + "http://identifiers.org/chebi/CHEBI:13107", + "http://identifiers.org/chebi/CHEBI:14321", + "http://identifiers.org/chebi/CHEBI:16015", + "http://identifiers.org/chebi/CHEBI:18237", + "http://identifiers.org/chebi/CHEBI:21301", + "http://identifiers.org/chebi/CHEBI:21304", + "http://identifiers.org/chebi/CHEBI:24314", + "http://identifiers.org/chebi/CHEBI:29985", + "http://identifiers.org/chebi/CHEBI:29987", + "http://identifiers.org/chebi/CHEBI:29988", + "http://identifiers.org/chebi/CHEBI:42825", + "http://identifiers.org/chebi/CHEBI:5431", + "http://identifiers.org/chebi/CHEBI:6224", + "http://identifiers.org/chebi/CHEBI:76051", + "http://identifiers.org/hmdb/HMDB00148", + "http://identifiers.org/hmdb/HMDB60475", + "http://identifiers.org/kegg.compound/C00025", + "http://identifiers.org/kegg.compound/C00302", + "http://identifiers.org/kegg.drug/D00007", + "http://identifiers.org/kegg.drug/D04341", + "http://identifiers.org/metanetx.chemical/MNXM89557", + "http://identifiers.org/seed.compound/cpd00023", + "http://identifiers.org/seed.compound/cpd19002", + "http://identifiers.org/seed.compound/cpd27177" + ] + } + ] + } + }, + "charge": 0, + "compartment": "e", + "formula": "C5H8NO4", + "id": "M_glu__L_e", + "name": "L-Glutamate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/glx", + "http://identifiers.org/biocyc/META:GLYOX", + "http://identifiers.org/chebi/CHEBI:14368", + "http://identifiers.org/chebi/CHEBI:16891", + "http://identifiers.org/chebi/CHEBI:24420", + "http://identifiers.org/chebi/CHEBI:24421", + "http://identifiers.org/chebi/CHEBI:35977", + "http://identifiers.org/chebi/CHEBI:36655", + "http://identifiers.org/chebi/CHEBI:42767", + "http://identifiers.org/chebi/CHEBI:5509", + "http://identifiers.org/hmdb/HMDB00119", + "http://identifiers.org/kegg.compound/C00048", + "http://identifiers.org/metanetx.chemical/MNXM69", + "http://identifiers.org/seed.compound/cpd00040" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C2H1O3", + "id": "M_glx_c", + "name": "Glyoxylate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/h2o", + "http://identifiers.org/biocyc/META:CPD-15815", + "http://identifiers.org/biocyc/META:HYDROXYL-GROUP", + "http://identifiers.org/biocyc/META:OH", + "http://identifiers.org/biocyc/META:OXONIUM", + "http://identifiers.org/biocyc/META:WATER", + "http://identifiers.org/chebi/CHEBI:10743", + "http://identifiers.org/chebi/CHEBI:13352", + "http://identifiers.org/chebi/CHEBI:13365", + "http://identifiers.org/chebi/CHEBI:13419", + "http://identifiers.org/chebi/CHEBI:15377", + "http://identifiers.org/chebi/CHEBI:16234", + "http://identifiers.org/chebi/CHEBI:27313", + "http://identifiers.org/chebi/CHEBI:29356", + "http://identifiers.org/chebi/CHEBI:29373", + "http://identifiers.org/chebi/CHEBI:29374", + "http://identifiers.org/chebi/CHEBI:29375", + "http://identifiers.org/chebi/CHEBI:29412", + "http://identifiers.org/chebi/CHEBI:30490", + "http://identifiers.org/chebi/CHEBI:33806", + "http://identifiers.org/chebi/CHEBI:33811", + "http://identifiers.org/chebi/CHEBI:33813", + "http://identifiers.org/chebi/CHEBI:41979", + "http://identifiers.org/chebi/CHEBI:41981", + "http://identifiers.org/chebi/CHEBI:42043", + "http://identifiers.org/chebi/CHEBI:42857", + "http://identifiers.org/chebi/CHEBI:43228", + "http://identifiers.org/chebi/CHEBI:44292", + "http://identifiers.org/chebi/CHEBI:44641", + "http://identifiers.org/chebi/CHEBI:44701", + "http://identifiers.org/chebi/CHEBI:44819", + "http://identifiers.org/chebi/CHEBI:5585", + "http://identifiers.org/chebi/CHEBI:5594", + "http://identifiers.org/hmdb/HMDB02111", + "http://identifiers.org/kegg.compound/C00001", + "http://identifiers.org/kegg.compound/C01328", + "http://identifiers.org/kegg.compound/C18714", + "http://identifiers.org/kegg.drug/D00001", + "http://identifiers.org/kegg.drug/D03703", + "http://identifiers.org/kegg.drug/D06322", + "http://identifiers.org/metanetx.chemical/MNXM2", + "http://identifiers.org/seed.compound/cpd00001", + "http://identifiers.org/seed.compound/cpd15275", + "http://identifiers.org/seed.compound/cpd27222" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "H2O", + "id": "M_h2o_c", + "name": "H2O H2O" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/h2o", + "http://identifiers.org/biocyc/META:CPD-15815", + "http://identifiers.org/biocyc/META:HYDROXYL-GROUP", + "http://identifiers.org/biocyc/META:OH", + "http://identifiers.org/biocyc/META:OXONIUM", + "http://identifiers.org/biocyc/META:WATER", + "http://identifiers.org/chebi/CHEBI:10743", + "http://identifiers.org/chebi/CHEBI:13352", + "http://identifiers.org/chebi/CHEBI:13365", + "http://identifiers.org/chebi/CHEBI:13419", + "http://identifiers.org/chebi/CHEBI:15377", + "http://identifiers.org/chebi/CHEBI:16234", + "http://identifiers.org/chebi/CHEBI:27313", + "http://identifiers.org/chebi/CHEBI:29356", + "http://identifiers.org/chebi/CHEBI:29373", + "http://identifiers.org/chebi/CHEBI:29374", + "http://identifiers.org/chebi/CHEBI:29375", + "http://identifiers.org/chebi/CHEBI:29412", + "http://identifiers.org/chebi/CHEBI:30490", + "http://identifiers.org/chebi/CHEBI:33806", + "http://identifiers.org/chebi/CHEBI:33811", + "http://identifiers.org/chebi/CHEBI:33813", + "http://identifiers.org/chebi/CHEBI:41979", + "http://identifiers.org/chebi/CHEBI:41981", + "http://identifiers.org/chebi/CHEBI:42043", + "http://identifiers.org/chebi/CHEBI:42857", + "http://identifiers.org/chebi/CHEBI:43228", + "http://identifiers.org/chebi/CHEBI:44292", + "http://identifiers.org/chebi/CHEBI:44641", + "http://identifiers.org/chebi/CHEBI:44701", + "http://identifiers.org/chebi/CHEBI:44819", + "http://identifiers.org/chebi/CHEBI:5585", + "http://identifiers.org/chebi/CHEBI:5594", + "http://identifiers.org/hmdb/HMDB02111", + "http://identifiers.org/kegg.compound/C00001", + "http://identifiers.org/kegg.compound/C01328", + "http://identifiers.org/kegg.compound/C18714", + "http://identifiers.org/kegg.drug/D00001", + "http://identifiers.org/kegg.drug/D03703", + "http://identifiers.org/kegg.drug/D06322", + "http://identifiers.org/metanetx.chemical/MNXM2", + "http://identifiers.org/seed.compound/cpd00001", + "http://identifiers.org/seed.compound/cpd15275", + "http://identifiers.org/seed.compound/cpd27222" + ] + } + ] + } + }, + "charge": 0, + "compartment": "e", + "formula": "H2O", + "id": "M_h2o_e", + "name": "H2O H2O" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/h", + "http://identifiers.org/biocyc/META:PROTON", + "http://identifiers.org/chebi/CHEBI:10744", + "http://identifiers.org/chebi/CHEBI:13357", + "http://identifiers.org/chebi/CHEBI:15378", + "http://identifiers.org/chebi/CHEBI:24636", + "http://identifiers.org/chebi/CHEBI:29233", + "http://identifiers.org/chebi/CHEBI:29234", + "http://identifiers.org/chebi/CHEBI:5584", + "http://identifiers.org/hmdb/HMDB59597", + "http://identifiers.org/kegg.compound/C00080", + "http://identifiers.org/metanetx.chemical/MNXM1", + "http://identifiers.org/seed.compound/cpd00067" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "H", + "id": "M_h_c", + "name": "H+" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/h", + "http://identifiers.org/biocyc/META:PROTON", + "http://identifiers.org/chebi/CHEBI:10744", + "http://identifiers.org/chebi/CHEBI:13357", + "http://identifiers.org/chebi/CHEBI:15378", + "http://identifiers.org/chebi/CHEBI:24636", + "http://identifiers.org/chebi/CHEBI:29233", + "http://identifiers.org/chebi/CHEBI:29234", + "http://identifiers.org/chebi/CHEBI:5584", + "http://identifiers.org/hmdb/HMDB59597", + "http://identifiers.org/kegg.compound/C00080", + "http://identifiers.org/metanetx.chemical/MNXM1", + "http://identifiers.org/seed.compound/cpd00067" + ] + } + ] + } + }, + "charge": 0, + "compartment": "e", + "formula": "H", + "id": "M_h_e", + "name": "H+" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/icit", + "http://identifiers.org/chebi/CHEBI:14465", + "http://identifiers.org/chebi/CHEBI:16087", + "http://identifiers.org/chebi/CHEBI:24884", + "http://identifiers.org/chebi/CHEBI:24886", + "http://identifiers.org/chebi/CHEBI:30887", + "http://identifiers.org/chebi/CHEBI:36453", + "http://identifiers.org/chebi/CHEBI:36454", + "http://identifiers.org/chebi/CHEBI:5998", + "http://identifiers.org/hmdb/HMDB00193", + "http://identifiers.org/kegg.compound/C00311", + "http://identifiers.org/metanetx.chemical/MNXM89661", + "http://identifiers.org/seed.compound/cpd00260" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C6H5O7", + "id": "M_icit_c", + "name": "Isocitrate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/lac__D", + "http://identifiers.org/biocyc/META:D-LACTATE", + "http://identifiers.org/chebi/CHEBI:11001", + "http://identifiers.org/chebi/CHEBI:16004", + "http://identifiers.org/chebi/CHEBI:18684", + "http://identifiers.org/chebi/CHEBI:341", + "http://identifiers.org/chebi/CHEBI:42105", + "http://identifiers.org/chebi/CHEBI:42111", + "http://identifiers.org/chebi/CHEBI:43701", + "http://identifiers.org/hmdb/HMDB00171", + "http://identifiers.org/hmdb/HMDB01311", + "http://identifiers.org/kegg.compound/C00256", + "http://identifiers.org/metanetx.chemical/MNXM285", + "http://identifiers.org/seed.compound/cpd00221" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C3H5O3", + "id": "M_lac__D_c", + "name": "D-Lactate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/lac__D", + "http://identifiers.org/biocyc/META:D-LACTATE", + "http://identifiers.org/chebi/CHEBI:11001", + "http://identifiers.org/chebi/CHEBI:16004", + "http://identifiers.org/chebi/CHEBI:18684", + "http://identifiers.org/chebi/CHEBI:341", + "http://identifiers.org/chebi/CHEBI:42105", + "http://identifiers.org/chebi/CHEBI:42111", + "http://identifiers.org/chebi/CHEBI:43701", + "http://identifiers.org/hmdb/HMDB00171", + "http://identifiers.org/hmdb/HMDB01311", + "http://identifiers.org/kegg.compound/C00256", + "http://identifiers.org/metanetx.chemical/MNXM285", + "http://identifiers.org/seed.compound/cpd00221" + ] + } + ] + } + }, + "charge": 0, + "compartment": "e", + "formula": "C3H5O3", + "id": "M_lac__D_e", + "name": "D-Lactate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/mal__L", + "http://identifiers.org/biocyc/META:MAL", + "http://identifiers.org/chebi/CHEBI:11066", + "http://identifiers.org/chebi/CHEBI:13140", + "http://identifiers.org/chebi/CHEBI:15589", + "http://identifiers.org/chebi/CHEBI:18784", + "http://identifiers.org/chebi/CHEBI:18785", + "http://identifiers.org/chebi/CHEBI:30797", + "http://identifiers.org/chebi/CHEBI:423", + "http://identifiers.org/hmdb/HMDB00156", + "http://identifiers.org/kegg.compound/C00149", + "http://identifiers.org/metanetx.chemical/MNXM98", + "http://identifiers.org/seed.compound/cpd00130" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C4H4O5", + "id": "M_mal__L_c", + "name": "L-Malate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/mal__L", + "http://identifiers.org/biocyc/META:MAL", + "http://identifiers.org/chebi/CHEBI:11066", + "http://identifiers.org/chebi/CHEBI:13140", + "http://identifiers.org/chebi/CHEBI:15589", + "http://identifiers.org/chebi/CHEBI:18784", + "http://identifiers.org/chebi/CHEBI:18785", + "http://identifiers.org/chebi/CHEBI:30797", + "http://identifiers.org/chebi/CHEBI:423", + "http://identifiers.org/hmdb/HMDB00156", + "http://identifiers.org/kegg.compound/C00149", + "http://identifiers.org/metanetx.chemical/MNXM98", + "http://identifiers.org/seed.compound/cpd00130" + ] + } + ] + } + }, + "charge": 0, + "compartment": "e", + "formula": "C4H4O5", + "id": "M_mal__L_e", + "name": "L-Malate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/nad", + "http://identifiers.org/biocyc/META:NAD", + "http://identifiers.org/chebi/CHEBI:13393", + "http://identifiers.org/chebi/CHEBI:13394", + "http://identifiers.org/chebi/CHEBI:15846", + "http://identifiers.org/chebi/CHEBI:21901", + "http://identifiers.org/chebi/CHEBI:29867", + "http://identifiers.org/chebi/CHEBI:44214", + "http://identifiers.org/chebi/CHEBI:44215", + "http://identifiers.org/chebi/CHEBI:44281", + "http://identifiers.org/chebi/CHEBI:57540", + "http://identifiers.org/chebi/CHEBI:7422", + "http://identifiers.org/kegg.compound/C00003", + "http://identifiers.org/kegg.drug/D00002", + "http://identifiers.org/metanetx.chemical/MNXM8", + "http://identifiers.org/seed.compound/cpd00003" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C21H26N7O14P2", + "id": "M_nad_c", + "name": "Nicotinamide adenine dinucleotide" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/nadh", + "http://identifiers.org/biocyc/META:NADH", + "http://identifiers.org/chebi/CHEBI:13395", + "http://identifiers.org/chebi/CHEBI:13396", + "http://identifiers.org/chebi/CHEBI:16908", + "http://identifiers.org/chebi/CHEBI:21902", + "http://identifiers.org/chebi/CHEBI:44216", + "http://identifiers.org/chebi/CHEBI:57945", + "http://identifiers.org/chebi/CHEBI:7423", + "http://identifiers.org/hmdb/HMDB01487", + "http://identifiers.org/kegg.compound/C00004", + "http://identifiers.org/metanetx.chemical/MNXM10", + "http://identifiers.org/seed.compound/cpd00004" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C21H27N7O14P2", + "id": "M_nadh_c", + "name": "Nicotinamide adenine dinucleotide - reduced" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/nadp", + "http://identifiers.org/biocyc/META:NADP", + "http://identifiers.org/chebi/CHEBI:13397", + "http://identifiers.org/chebi/CHEBI:13398", + "http://identifiers.org/chebi/CHEBI:18009", + "http://identifiers.org/chebi/CHEBI:21903", + "http://identifiers.org/chebi/CHEBI:25523", + "http://identifiers.org/chebi/CHEBI:29868", + "http://identifiers.org/chebi/CHEBI:44405", + "http://identifiers.org/chebi/CHEBI:44409", + "http://identifiers.org/chebi/CHEBI:58349", + "http://identifiers.org/chebi/CHEBI:7424", + "http://identifiers.org/kegg.compound/C00006", + "http://identifiers.org/metanetx.chemical/MNXM5", + "http://identifiers.org/seed.compound/cpd00006" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C21H25N7O17P3", + "id": "M_nadp_c", + "name": "Nicotinamide adenine dinucleotide phosphate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/nadph", + "http://identifiers.org/biocyc/META:NADPH", + "http://identifiers.org/chebi/CHEBI:13399", + "http://identifiers.org/chebi/CHEBI:13400", + "http://identifiers.org/chebi/CHEBI:16474", + "http://identifiers.org/chebi/CHEBI:21904", + "http://identifiers.org/chebi/CHEBI:44286", + "http://identifiers.org/chebi/CHEBI:57783", + "http://identifiers.org/chebi/CHEBI:7425", + "http://identifiers.org/hmdb/HMDB00221", + "http://identifiers.org/hmdb/HMDB00799", + "http://identifiers.org/hmdb/HMDB06341", + "http://identifiers.org/kegg.compound/C00005", + "http://identifiers.org/metanetx.chemical/MNXM6", + "http://identifiers.org/seed.compound/cpd00005" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C21H26N7O17P3", + "id": "M_nadph_c", + "name": "Nicotinamide adenine dinucleotide phosphate - reduced" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/nh4", + "http://identifiers.org/biocyc/META:AMMONIA", + "http://identifiers.org/biocyc/META:AMMONIUM", + "http://identifiers.org/chebi/CHEBI:13405", + "http://identifiers.org/chebi/CHEBI:13406", + "http://identifiers.org/chebi/CHEBI:13407", + "http://identifiers.org/chebi/CHEBI:135980", + "http://identifiers.org/chebi/CHEBI:13771", + "http://identifiers.org/chebi/CHEBI:16134", + "http://identifiers.org/chebi/CHEBI:22533", + "http://identifiers.org/chebi/CHEBI:22534", + "http://identifiers.org/chebi/CHEBI:28938", + "http://identifiers.org/chebi/CHEBI:29337", + "http://identifiers.org/chebi/CHEBI:29340", + "http://identifiers.org/chebi/CHEBI:44269", + "http://identifiers.org/chebi/CHEBI:44284", + "http://identifiers.org/chebi/CHEBI:44404", + "http://identifiers.org/chebi/CHEBI:49783", + "http://identifiers.org/chebi/CHEBI:7434", + "http://identifiers.org/chebi/CHEBI:7435", + "http://identifiers.org/hmdb/HMDB00051", + "http://identifiers.org/hmdb/HMDB41827", + "http://identifiers.org/kegg.compound/C00014", + "http://identifiers.org/kegg.compound/C01342", + "http://identifiers.org/kegg.drug/D02915", + "http://identifiers.org/kegg.drug/D02916", + "http://identifiers.org/metanetx.chemical/MNXM15", + "http://identifiers.org/seed.compound/cpd00013", + "http://identifiers.org/seed.compound/cpd19013" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "H4N", + "id": "M_nh4_c", + "name": "Ammonium" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/nh4", + "http://identifiers.org/biocyc/META:AMMONIA", + "http://identifiers.org/biocyc/META:AMMONIUM", + "http://identifiers.org/chebi/CHEBI:13405", + "http://identifiers.org/chebi/CHEBI:13406", + "http://identifiers.org/chebi/CHEBI:13407", + "http://identifiers.org/chebi/CHEBI:135980", + "http://identifiers.org/chebi/CHEBI:13771", + "http://identifiers.org/chebi/CHEBI:16134", + "http://identifiers.org/chebi/CHEBI:22533", + "http://identifiers.org/chebi/CHEBI:22534", + "http://identifiers.org/chebi/CHEBI:28938", + "http://identifiers.org/chebi/CHEBI:29337", + "http://identifiers.org/chebi/CHEBI:29340", + "http://identifiers.org/chebi/CHEBI:44269", + "http://identifiers.org/chebi/CHEBI:44284", + "http://identifiers.org/chebi/CHEBI:44404", + "http://identifiers.org/chebi/CHEBI:49783", + "http://identifiers.org/chebi/CHEBI:7434", + "http://identifiers.org/chebi/CHEBI:7435", + "http://identifiers.org/hmdb/HMDB00051", + "http://identifiers.org/hmdb/HMDB41827", + "http://identifiers.org/kegg.compound/C00014", + "http://identifiers.org/kegg.compound/C01342", + "http://identifiers.org/kegg.drug/D02915", + "http://identifiers.org/kegg.drug/D02916", + "http://identifiers.org/metanetx.chemical/MNXM15", + "http://identifiers.org/seed.compound/cpd00013", + "http://identifiers.org/seed.compound/cpd19013" + ] + } + ] + } + }, + "charge": 0, + "compartment": "e", + "formula": "H4N", + "id": "M_nh4_e", + "name": "Ammonium" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/o2", + "http://identifiers.org/biocyc/META:OXYGEN-MOLECULE", + "http://identifiers.org/chebi/CHEBI:10745", + "http://identifiers.org/chebi/CHEBI:13416", + "http://identifiers.org/chebi/CHEBI:15379", + "http://identifiers.org/chebi/CHEBI:23833", + "http://identifiers.org/chebi/CHEBI:25366", + "http://identifiers.org/chebi/CHEBI:26689", + "http://identifiers.org/chebi/CHEBI:27140", + "http://identifiers.org/chebi/CHEBI:29097", + "http://identifiers.org/chebi/CHEBI:29793", + "http://identifiers.org/chebi/CHEBI:30491", + "http://identifiers.org/chebi/CHEBI:44742", + "http://identifiers.org/chebi/CHEBI:7860", + "http://identifiers.org/hmdb/HMDB01377", + "http://identifiers.org/kegg.compound/C00007", + "http://identifiers.org/kegg.drug/D00003", + "http://identifiers.org/metanetx.chemical/MNXM4", + "http://identifiers.org/seed.compound/cpd00007" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "O2", + "id": "M_o2_c", + "name": "O2 O2" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/o2", + "http://identifiers.org/biocyc/META:OXYGEN-MOLECULE", + "http://identifiers.org/chebi/CHEBI:10745", + "http://identifiers.org/chebi/CHEBI:13416", + "http://identifiers.org/chebi/CHEBI:15379", + "http://identifiers.org/chebi/CHEBI:23833", + "http://identifiers.org/chebi/CHEBI:25366", + "http://identifiers.org/chebi/CHEBI:26689", + "http://identifiers.org/chebi/CHEBI:27140", + "http://identifiers.org/chebi/CHEBI:29097", + "http://identifiers.org/chebi/CHEBI:29793", + "http://identifiers.org/chebi/CHEBI:30491", + "http://identifiers.org/chebi/CHEBI:44742", + "http://identifiers.org/chebi/CHEBI:7860", + "http://identifiers.org/hmdb/HMDB01377", + "http://identifiers.org/kegg.compound/C00007", + "http://identifiers.org/kegg.drug/D00003", + "http://identifiers.org/metanetx.chemical/MNXM4", + "http://identifiers.org/seed.compound/cpd00007" + ] + } + ] + } + }, + "charge": 0, + "compartment": "e", + "formula": "O2", + "id": "M_o2_e", + "name": "O2 O2" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/oaa", + "http://identifiers.org/biocyc/META:ENOL-OXALOACETATE", + "http://identifiers.org/biocyc/META:OXALACETIC_ACID", + "http://identifiers.org/chebi/CHEBI:12820", + "http://identifiers.org/chebi/CHEBI:14703", + "http://identifiers.org/chebi/CHEBI:16452", + "http://identifiers.org/chebi/CHEBI:24958", + "http://identifiers.org/chebi/CHEBI:24959", + "http://identifiers.org/chebi/CHEBI:25731", + "http://identifiers.org/chebi/CHEBI:25734", + "http://identifiers.org/chebi/CHEBI:29049", + "http://identifiers.org/chebi/CHEBI:30744", + "http://identifiers.org/chebi/CHEBI:7812", + "http://identifiers.org/hmdb/HMDB00223", + "http://identifiers.org/kegg.compound/C00036", + "http://identifiers.org/kegg.compound/C03981", + "http://identifiers.org/lipidmaps/LMFA01170061", + "http://identifiers.org/lipidmaps/LMFA01170120", + "http://identifiers.org/metanetx.chemical/MNXM46", + "http://identifiers.org/seed.compound/cpd00032", + "http://identifiers.org/seed.compound/cpd02469" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C4H2O5", + "id": "M_oaa_c", + "name": "Oxaloacetate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/pep", + "http://identifiers.org/biocyc/META:PHOSPHO-ENOL-PYRUVATE", + "http://identifiers.org/chebi/CHEBI:14812", + "http://identifiers.org/chebi/CHEBI:18021", + "http://identifiers.org/chebi/CHEBI:26054", + "http://identifiers.org/chebi/CHEBI:26055", + "http://identifiers.org/chebi/CHEBI:44894", + "http://identifiers.org/chebi/CHEBI:44897", + "http://identifiers.org/chebi/CHEBI:58702", + "http://identifiers.org/chebi/CHEBI:8147", + "http://identifiers.org/hmdb/HMDB00263", + "http://identifiers.org/kegg.compound/C00074", + "http://identifiers.org/metanetx.chemical/MNXM73", + "http://identifiers.org/seed.compound/cpd00061" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C3H2O6P", + "id": "M_pep_c", + "name": "Phosphoenolpyruvate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/pi", + "http://identifiers.org/biocyc/META:CPD-16459", + "http://identifiers.org/biocyc/META:CPD-9010", + "http://identifiers.org/biocyc/META:PHOSPHATE-GROUP", + "http://identifiers.org/biocyc/META:Pi", + "http://identifiers.org/chebi/CHEBI:14791", + "http://identifiers.org/chebi/CHEBI:18367", + "http://identifiers.org/chebi/CHEBI:26078", + "http://identifiers.org/chebi/CHEBI:29137", + "http://identifiers.org/chebi/CHEBI:29139", + "http://identifiers.org/chebi/CHEBI:35780", + "http://identifiers.org/chebi/CHEBI:39739", + "http://identifiers.org/chebi/CHEBI:39745", + "http://identifiers.org/chebi/CHEBI:43470", + "http://identifiers.org/chebi/CHEBI:43474", + "http://identifiers.org/chebi/CHEBI:45024", + "http://identifiers.org/chebi/CHEBI:7793", + "http://identifiers.org/hmdb/HMDB00973", + "http://identifiers.org/hmdb/HMDB01429", + "http://identifiers.org/hmdb/HMDB02105", + "http://identifiers.org/hmdb/HMDB02142", + "http://identifiers.org/hmdb/HMDB05947", + "http://identifiers.org/kegg.compound/C00009", + "http://identifiers.org/kegg.compound/C13558", + "http://identifiers.org/kegg.drug/D05467", + "http://identifiers.org/metanetx.chemical/MNXM9", + "http://identifiers.org/seed.compound/cpd00009", + "http://identifiers.org/seed.compound/cpd27787" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "HO4P", + "id": "M_pi_c", + "name": "Phosphate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/pi", + "http://identifiers.org/biocyc/META:CPD-16459", + "http://identifiers.org/biocyc/META:CPD-9010", + "http://identifiers.org/biocyc/META:PHOSPHATE-GROUP", + "http://identifiers.org/biocyc/META:Pi", + "http://identifiers.org/chebi/CHEBI:14791", + "http://identifiers.org/chebi/CHEBI:18367", + "http://identifiers.org/chebi/CHEBI:26078", + "http://identifiers.org/chebi/CHEBI:29137", + "http://identifiers.org/chebi/CHEBI:29139", + "http://identifiers.org/chebi/CHEBI:35780", + "http://identifiers.org/chebi/CHEBI:39739", + "http://identifiers.org/chebi/CHEBI:39745", + "http://identifiers.org/chebi/CHEBI:43470", + "http://identifiers.org/chebi/CHEBI:43474", + "http://identifiers.org/chebi/CHEBI:45024", + "http://identifiers.org/chebi/CHEBI:7793", + "http://identifiers.org/hmdb/HMDB00973", + "http://identifiers.org/hmdb/HMDB01429", + "http://identifiers.org/hmdb/HMDB02105", + "http://identifiers.org/hmdb/HMDB02142", + "http://identifiers.org/hmdb/HMDB05947", + "http://identifiers.org/kegg.compound/C00009", + "http://identifiers.org/kegg.compound/C13558", + "http://identifiers.org/kegg.drug/D05467", + "http://identifiers.org/metanetx.chemical/MNXM9", + "http://identifiers.org/seed.compound/cpd00009", + "http://identifiers.org/seed.compound/cpd27787" + ] + } + ] + } + }, + "charge": 0, + "compartment": "e", + "formula": "HO4P", + "id": "M_pi_e", + "name": "Phosphate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/pyr", + "http://identifiers.org/biocyc/META:PYRUVATE", + "http://identifiers.org/chebi/CHEBI:14987", + "http://identifiers.org/chebi/CHEBI:15361", + "http://identifiers.org/chebi/CHEBI:26462", + "http://identifiers.org/chebi/CHEBI:26466", + "http://identifiers.org/chebi/CHEBI:32816", + "http://identifiers.org/chebi/CHEBI:45253", + "http://identifiers.org/chebi/CHEBI:86354", + "http://identifiers.org/chebi/CHEBI:8685", + "http://identifiers.org/hmdb/HMDB00243", + "http://identifiers.org/hmdb/HMDB62676", + "http://identifiers.org/kegg.compound/C00022", + "http://identifiers.org/lipidmaps/LMFA01060077", + "http://identifiers.org/metanetx.chemical/MNXM23", + "http://identifiers.org/seed.compound/cpd00020" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C3H3O3", + "id": "M_pyr_c", + "name": "Pyruvate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/pyr", + "http://identifiers.org/biocyc/META:PYRUVATE", + "http://identifiers.org/chebi/CHEBI:14987", + "http://identifiers.org/chebi/CHEBI:15361", + "http://identifiers.org/chebi/CHEBI:26462", + "http://identifiers.org/chebi/CHEBI:26466", + "http://identifiers.org/chebi/CHEBI:32816", + "http://identifiers.org/chebi/CHEBI:45253", + "http://identifiers.org/chebi/CHEBI:86354", + "http://identifiers.org/chebi/CHEBI:8685", + "http://identifiers.org/hmdb/HMDB00243", + "http://identifiers.org/hmdb/HMDB62676", + "http://identifiers.org/kegg.compound/C00022", + "http://identifiers.org/lipidmaps/LMFA01060077", + "http://identifiers.org/metanetx.chemical/MNXM23", + "http://identifiers.org/seed.compound/cpd00020" + ] + } + ] + } + }, + "charge": 0, + "compartment": "e", + "formula": "C3H3O3", + "id": "M_pyr_e", + "name": "Pyruvate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/q8", + "http://identifiers.org/biocyc/META:UBIQUINONE-8", + "http://identifiers.org/chebi/CHEBI:61683", + "http://identifiers.org/kegg.compound/C17569", + "http://identifiers.org/lipidmaps/LMPR02010005", + "http://identifiers.org/metanetx.chemical/MNXM232", + "http://identifiers.org/seed.compound/cpd15560" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C49H74O4", + "id": "M_q8_c", + "name": "Ubiquinone-8" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/q8h2", + "http://identifiers.org/biocyc/META:CPD-9956", + "http://identifiers.org/chebi/CHEBI:61682", + "http://identifiers.org/hmdb/HMDB01060", + "http://identifiers.org/metanetx.chemical/MNXM191", + "http://identifiers.org/seed.compound/cpd15561", + "http://identifiers.org/seed.compound/cpd29608" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C49H76O4", + "id": "M_q8h2_c", + "name": "Ubiquinol-8" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/r5p", + "http://identifiers.org/biocyc/META:CPD-15318", + "http://identifiers.org/chebi/CHEBI:10270", + "http://identifiers.org/chebi/CHEBI:12331", + "http://identifiers.org/chebi/CHEBI:18189", + "http://identifiers.org/chebi/CHEBI:22413", + "http://identifiers.org/kegg.compound/C03736", + "http://identifiers.org/metanetx.chemical/MNXM15900", + "http://identifiers.org/seed.compound/cpd19028" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C5H9O8P", + "id": "M_r5p_c", + "name": "Alpha-D-Ribose 5-phosphate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/ru5p__D", + "http://identifiers.org/biocyc/META:RIBULOSE-5P", + "http://identifiers.org/chebi/CHEBI:13018", + "http://identifiers.org/chebi/CHEBI:13040", + "http://identifiers.org/chebi/CHEBI:17363", + "http://identifiers.org/chebi/CHEBI:21088", + "http://identifiers.org/chebi/CHEBI:26572", + "http://identifiers.org/chebi/CHEBI:37455", + "http://identifiers.org/chebi/CHEBI:40192", + "http://identifiers.org/chebi/CHEBI:4243", + "http://identifiers.org/chebi/CHEBI:58121", + "http://identifiers.org/hmdb/HMDB00618", + "http://identifiers.org/hmdb/HMDB02033", + "http://identifiers.org/hmdb/HMDB02694", + "http://identifiers.org/kegg.compound/C00199", + "http://identifiers.org/metanetx.chemical/MNXM145", + "http://identifiers.org/seed.compound/cpd00171" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C5H9O8P", + "id": "M_ru5p__D_c", + "name": "D-Ribulose 5-phosphate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/s7p", + "http://identifiers.org/biocyc/META:D-SEDOHEPTULOSE-7-P", + "http://identifiers.org/chebi/CHEBI:15073", + "http://identifiers.org/chebi/CHEBI:15074", + "http://identifiers.org/chebi/CHEBI:15721", + "http://identifiers.org/chebi/CHEBI:26621", + "http://identifiers.org/chebi/CHEBI:4244", + "http://identifiers.org/chebi/CHEBI:57483", + "http://identifiers.org/chebi/CHEBI:9083", + "http://identifiers.org/hmdb/HMDB01068", + "http://identifiers.org/hmdb/HMDB62754", + "http://identifiers.org/kegg.compound/C05382", + "http://identifiers.org/metanetx.chemical/MNXM271", + "http://identifiers.org/seed.compound/cpd00238" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C7H13O10P", + "id": "M_s7p_c", + "name": "Sedoheptulose 7-phosphate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/succ", + "http://identifiers.org/biocyc/META:SUC", + "http://identifiers.org/chebi/CHEBI:132287", + "http://identifiers.org/chebi/CHEBI:15125", + "http://identifiers.org/chebi/CHEBI:15741", + "http://identifiers.org/chebi/CHEBI:22941", + "http://identifiers.org/chebi/CHEBI:22943", + "http://identifiers.org/chebi/CHEBI:26803", + "http://identifiers.org/chebi/CHEBI:26807", + "http://identifiers.org/chebi/CHEBI:30031", + "http://identifiers.org/chebi/CHEBI:30779", + "http://identifiers.org/chebi/CHEBI:45639", + "http://identifiers.org/chebi/CHEBI:90372", + "http://identifiers.org/chebi/CHEBI:9304", + "http://identifiers.org/hmdb/HMDB00254", + "http://identifiers.org/kegg.compound/C00042", + "http://identifiers.org/lipidmaps/LMFA01170043", + "http://identifiers.org/metanetx.chemical/MNXM25", + "http://identifiers.org/seed.compound/cpd00036" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C4H4O4", + "id": "M_succ_c", + "name": "Succinate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/succ", + "http://identifiers.org/biocyc/META:SUC", + "http://identifiers.org/chebi/CHEBI:132287", + "http://identifiers.org/chebi/CHEBI:15125", + "http://identifiers.org/chebi/CHEBI:15741", + "http://identifiers.org/chebi/CHEBI:22941", + "http://identifiers.org/chebi/CHEBI:22943", + "http://identifiers.org/chebi/CHEBI:26803", + "http://identifiers.org/chebi/CHEBI:26807", + "http://identifiers.org/chebi/CHEBI:30031", + "http://identifiers.org/chebi/CHEBI:30779", + "http://identifiers.org/chebi/CHEBI:45639", + "http://identifiers.org/chebi/CHEBI:90372", + "http://identifiers.org/chebi/CHEBI:9304", + "http://identifiers.org/hmdb/HMDB00254", + "http://identifiers.org/kegg.compound/C00042", + "http://identifiers.org/lipidmaps/LMFA01170043", + "http://identifiers.org/metanetx.chemical/MNXM25", + "http://identifiers.org/seed.compound/cpd00036" + ] + } + ] + } + }, + "charge": 0, + "compartment": "e", + "formula": "C4H4O4", + "id": "M_succ_e", + "name": "Succinate" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/succoa", + "http://identifiers.org/biocyc/META:SUC-COA", + "http://identifiers.org/chebi/CHEBI:10746", + "http://identifiers.org/chebi/CHEBI:15127", + "http://identifiers.org/chebi/CHEBI:15380", + "http://identifiers.org/chebi/CHEBI:26811", + "http://identifiers.org/chebi/CHEBI:45541", + "http://identifiers.org/chebi/CHEBI:57292", + "http://identifiers.org/chebi/CHEBI:9310", + "http://identifiers.org/hmdb/HMDB01022", + "http://identifiers.org/kegg.compound/C00091", + "http://identifiers.org/lipidmaps/LMFA07050370", + "http://identifiers.org/metanetx.chemical/MNXM92", + "http://identifiers.org/seed.compound/cpd00078" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C25H35N7O19P3S", + "id": "M_succoa_c", + "name": "Succinyl-CoA" + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.metabolite/xu5p__D", + "http://identifiers.org/biocyc/META:XYLULOSE-5-PHOSPHATE", + "http://identifiers.org/chebi/CHEBI:13036", + "http://identifiers.org/chebi/CHEBI:16332", + "http://identifiers.org/chebi/CHEBI:21121", + "http://identifiers.org/chebi/CHEBI:27354", + "http://identifiers.org/chebi/CHEBI:4269", + "http://identifiers.org/chebi/CHEBI:57737", + "http://identifiers.org/hmdb/HMDB00868", + "http://identifiers.org/hmdb/HMDB06212", + "http://identifiers.org/kegg.compound/C00231", + "http://identifiers.org/metanetx.chemical/MNXM186", + "http://identifiers.org/seed.compound/cpd00198" + ] + } + ] + } + }, + "charge": 0, + "compartment": "c", + "formula": "C5H9O8P", + "id": "M_xu5p__D_c", + "name": "D-Xylulose 5-phosphate" + } + ], + "name": "Escherichia coli str. K-12 substr. MG1655", + "notes": "\n \n

Description

\n
\n

This is a metabolism model of Escherichia coli str. K-12 substr. MG1655 in\n SBML\u00a0format.

\n
\n
The content of this model has been carefully created in a manual research effort. This file has been exported from the software\n COBRApy\u00a0and further processed with the\n JSBML-based\n ModelPolisher\u00a0application.
\n
This file has been produced by the\n Systems Biology Research Group\u00a0using\n BiGG Models knowledge-base\u00a0version of Feb 24, 2018, where it is currently hosted and\n identified by:\n e_coli_core.
\n

Terms of use

\n
Copyright \u00a9 2017 The Regents of the University of California.
\n
\n

Redistribution and use of any part of this model from BiGG Models knowledge-base, with or without modification, are permitted provided that the following conditions are met:\n

    \n
  1. Redistributions of this SBML file must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. \n
  3. Redistributions in a different form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided\n with the distribution.
  4. \n
This model is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

\n

For specific licensing terms about this particular model and regulations of commercial use, see\n this model in BiGG Models knowledge-base.

\n
\n

References

When using content from BiGG Models knowledge-base in your research works, please cite\n
\n
King ZA, Lu JS, Dr\u00e4ger A, Miller PC, Federowicz S, Lerman JA, Ebrahim A, Palsson BO, and\u00a0Lewis NE. (2015).\n
BiGG Models: A platform for integrating, standardizing, and sharing genome-scale models.\n Nucl Acids Res.\n doi:10.1093/nar/gkv1049
\n
\n
", + "reactions": [ + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/ACALD", + "http://identifiers.org/biocyc/META:ACETALD-DEHYDROG-RXN", + "http://identifiers.org/ec-code/1.2.1.10", + "http://identifiers.org/kegg.reaction/R00228", + "http://identifiers.org/metanetx.reaction/MNXR95210", + "http://identifiers.org/rhea/23288", + "http://identifiers.org/rhea/23289", + "http://identifiers.org/rhea/23290", + "http://identifiers.org/rhea/23291" + ] + } + ] + } + }, + "gene_reaction_rule": "b0351 or b1241", + "id": "R_ACALD", + "lower_bound": -1000.0, + "metabolites": { + "M_acald_c": -1.0, + "M_accoa_c": 1.0, + "M_coa_c": -1.0, + "M_h_c": 1.0, + "M_nad_c": -1.0, + "M_nadh_c": 1.0 + }, + "name": "Acetaldehyde dehydrogenase (acetylating)", + "notes": "\n \n
\n

Key1 : Value1

\n

Key2 : Value2

\n
\n

A Heading

\n
e_coli_core - Escherichia coli str. K-12 substr. MG1655
\n
\n

Key3 : Value3

\n
\n \n
", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/ACALDt", + "http://identifiers.org/metanetx.reaction/MNXR95212" + ] + } + ] + } + }, + "gene_reaction_rule": "s0001", + "id": "R_ACALDt", + "lower_bound": -1000.0, + "metabolites": { + "M_acald_c": 1.0, + "M_acald_e": -1.0 + }, + "name": "Acetaldehyde reversible transport", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/ACKr", + "http://identifiers.org/biocyc/META:ACETATEKIN-RXN", + "http://identifiers.org/ec-code/2.7.2.1", + "http://identifiers.org/ec-code/2.7.2.15", + "http://identifiers.org/kegg.reaction/R00315", + "http://identifiers.org/metanetx.reaction/MNXR95269", + "http://identifiers.org/rhea/11352", + "http://identifiers.org/rhea/11353", + "http://identifiers.org/rhea/11354", + "http://identifiers.org/rhea/11355" + ] + } + ] + } + }, + "gene_reaction_rule": "b2296 or b3115 or b1849", + "id": "R_ACKr", + "lower_bound": -1000.0, + "metabolites": { + "M_ac_c": -1.0, + "M_actp_c": 1.0, + "M_adp_c": 1.0, + "M_atp_c": -1.0 + }, + "name": "Acetate kinase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/ACONTa", + "http://identifiers.org/biocyc/META:ACONITATEDEHYDR-RXN", + "http://identifiers.org/ec-code/4.2.1.3", + "http://identifiers.org/kegg.reaction/R01325", + "http://identifiers.org/metanetx.reaction/MNXR95386", + "http://identifiers.org/rhea/10228", + "http://identifiers.org/rhea/10229", + "http://identifiers.org/rhea/10230", + "http://identifiers.org/rhea/10231" + ] + } + ] + } + }, + "gene_reaction_rule": "b0118 or b1276", + "id": "R_ACONTa", + "lower_bound": -1000.0, + "metabolites": { + "M_acon_C_c": 1.0, + "M_cit_c": -1.0, + "M_h2o_c": 1.0 + }, + "name": "Aconitase (half-reaction A, Citrate hydro-lyase)", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/ACONTb", + "http://identifiers.org/ec-code/4.2.1.3", + "http://identifiers.org/kegg.reaction/R01900", + "http://identifiers.org/metanetx.reaction/MNXR95387", + "http://identifiers.org/rhea/22144", + "http://identifiers.org/rhea/22145", + "http://identifiers.org/rhea/22146", + "http://identifiers.org/rhea/22147" + ] + } + ] + } + }, + "gene_reaction_rule": "b0118 or b1276", + "id": "R_ACONTb", + "lower_bound": -1000.0, + "metabolites": { + "M_acon_C_c": -1.0, + "M_h2o_c": -1.0, + "M_icit_c": 1.0 + }, + "name": "Aconitase (half-reaction B, Isocitrate hydro-lyase)", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/ACt2r", + "http://identifiers.org/biocyc/META:TRANS-RXN0-571", + "http://identifiers.org/metanetx.reaction/MNXR95429" + ] + } + ] + } + }, + "gene_reaction_rule": "", + "id": "R_ACt2r", + "lower_bound": -1000.0, + "metabolites": { + "M_ac_c": 1.0, + "M_ac_e": -1.0, + "M_h_c": 1.0, + "M_h_e": -1.0 + }, + "name": "Acetate reversible transport via proton symport", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/ADK1", + "http://identifiers.org/biocyc/META:ADENYL-KIN-RXN", + "http://identifiers.org/ec-code/2.7.4.3", + "http://identifiers.org/kegg.reaction/R00127", + "http://identifiers.org/metanetx.reaction/MNXR95450", + "http://identifiers.org/rhea/12973", + "http://identifiers.org/rhea/12974", + "http://identifiers.org/rhea/12975", + "http://identifiers.org/rhea/12976" + ] + } + ] + } + }, + "gene_reaction_rule": "b0474", + "id": "R_ADK1", + "lower_bound": -1000.0, + "metabolites": { + "M_adp_c": 2.0, + "M_amp_c": -1.0, + "M_atp_c": -1.0 + }, + "name": "Adenylate kinase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/AKGDH", + "http://identifiers.org/biocyc/META:2OXOGLUTARATEDEH-RXN", + "http://identifiers.org/ec-code/1.2.1.52", + "http://identifiers.org/ec-code/1.2.4.2", + "http://identifiers.org/ec-code/1.8.1.4", + "http://identifiers.org/ec-code/2.3.1.61", + "http://identifiers.org/kegg.reaction/R08549", + "http://identifiers.org/metanetx.reaction/MNXR95655", + "http://identifiers.org/rhea/27786", + "http://identifiers.org/rhea/27787", + "http://identifiers.org/rhea/27788", + "http://identifiers.org/rhea/27789" + ] + } + ] + } + }, + "gene_reaction_rule": "b0726 and b0116 and b0727", + "id": "R_AKGDH", + "lower_bound": 0.0, + "metabolites": { + "M_akg_c": -1.0, + "M_co2_c": 1.0, + "M_coa_c": -1.0, + "M_nad_c": -1.0, + "M_nadh_c": 1.0, + "M_succoa_c": 1.0 + }, + "name": "2-Oxogluterate dehydrogenase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/AKGt2r", + "http://identifiers.org/biocyc/META:TRANS-RXN-23", + "http://identifiers.org/metanetx.reaction/MNXR95661", + "http://identifiers.org/rhea/29011", + "http://identifiers.org/rhea/29012", + "http://identifiers.org/rhea/29013", + "http://identifiers.org/rhea/29014" + ] + } + ] + } + }, + "gene_reaction_rule": "b2587", + "id": "R_AKGt2r", + "lower_bound": -1000.0, + "metabolites": { + "M_akg_c": 1.0, + "M_akg_e": -1.0, + "M_h_c": 1.0, + "M_h_e": -1.0 + }, + "name": "2 oxoglutarate reversible transport via symport", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/ALCD2x", + "http://identifiers.org/biocyc/META:ALCOHOL-DEHYDROG-RXN", + "http://identifiers.org/ec-code/1.1.1.1", + "http://identifiers.org/ec-code/1.1.1.71", + "http://identifiers.org/kegg.reaction/R00754", + "http://identifiers.org/metanetx.reaction/MNXR95725", + "http://identifiers.org/rhea/25290", + "http://identifiers.org/rhea/25291", + "http://identifiers.org/rhea/25292", + "http://identifiers.org/rhea/25293" + ] + } + ] + } + }, + "gene_reaction_rule": "b1478 or b0356 or b1241", + "id": "R_ALCD2x", + "lower_bound": -1000.0, + "metabolites": { + "M_acald_c": 1.0, + "M_etoh_c": -1.0, + "M_h_c": 1.0, + "M_nad_c": -1.0, + "M_nadh_c": 1.0 + }, + "name": "Alcohol dehydrogenase (ethanol)", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/ATPM", + "http://identifiers.org/biocyc/META:ATPASE-RXN", + "http://identifiers.org/ec-code/3.6.1.15", + "http://identifiers.org/ec-code/3.6.1.3", + "http://identifiers.org/ec-code/3.6.1.5", + "http://identifiers.org/ec-code/3.6.1.8", + "http://identifiers.org/ec-code/3.6.3.1", + "http://identifiers.org/ec-code/3.6.3.10", + "http://identifiers.org/ec-code/3.6.3.11", + "http://identifiers.org/ec-code/3.6.3.12", + "http://identifiers.org/ec-code/3.6.3.14", + "http://identifiers.org/ec-code/3.6.3.15", + "http://identifiers.org/ec-code/3.6.3.16", + "http://identifiers.org/ec-code/3.6.3.17", + "http://identifiers.org/ec-code/3.6.3.18", + "http://identifiers.org/ec-code/3.6.3.19", + "http://identifiers.org/ec-code/3.6.3.2", + "http://identifiers.org/ec-code/3.6.3.20", + "http://identifiers.org/ec-code/3.6.3.21", + "http://identifiers.org/ec-code/3.6.3.22", + "http://identifiers.org/ec-code/3.6.3.23", + "http://identifiers.org/ec-code/3.6.3.24", + "http://identifiers.org/ec-code/3.6.3.25", + "http://identifiers.org/ec-code/3.6.3.26", + "http://identifiers.org/ec-code/3.6.3.27", + "http://identifiers.org/ec-code/3.6.3.28", + "http://identifiers.org/ec-code/3.6.3.29", + "http://identifiers.org/ec-code/3.6.3.3", + "http://identifiers.org/ec-code/3.6.3.30", + "http://identifiers.org/ec-code/3.6.3.31", + "http://identifiers.org/ec-code/3.6.3.32", + "http://identifiers.org/ec-code/3.6.3.33", + "http://identifiers.org/ec-code/3.6.3.34", + "http://identifiers.org/ec-code/3.6.3.35", + "http://identifiers.org/ec-code/3.6.3.36", + "http://identifiers.org/ec-code/3.6.3.37", + "http://identifiers.org/ec-code/3.6.3.38", + "http://identifiers.org/ec-code/3.6.3.39", + "http://identifiers.org/ec-code/3.6.3.4", + "http://identifiers.org/ec-code/3.6.3.40", + "http://identifiers.org/ec-code/3.6.3.41", + "http://identifiers.org/ec-code/3.6.3.42", + "http://identifiers.org/ec-code/3.6.3.43", + "http://identifiers.org/ec-code/3.6.3.44", + "http://identifiers.org/ec-code/3.6.3.46", + "http://identifiers.org/ec-code/3.6.3.47", + "http://identifiers.org/ec-code/3.6.3.48", + "http://identifiers.org/ec-code/3.6.3.49", + "http://identifiers.org/ec-code/3.6.3.5", + "http://identifiers.org/ec-code/3.6.3.50", + "http://identifiers.org/ec-code/3.6.3.51", + "http://identifiers.org/ec-code/3.6.3.52", + "http://identifiers.org/ec-code/3.6.3.53", + "http://identifiers.org/ec-code/3.6.3.54", + "http://identifiers.org/ec-code/3.6.3.6", + "http://identifiers.org/ec-code/3.6.3.7", + "http://identifiers.org/ec-code/3.6.3.8", + "http://identifiers.org/ec-code/3.6.3.9", + "http://identifiers.org/ec-code/3.6.4.1", + "http://identifiers.org/ec-code/3.6.4.10", + "http://identifiers.org/ec-code/3.6.4.11", + "http://identifiers.org/ec-code/3.6.4.12", + "http://identifiers.org/ec-code/3.6.4.13", + "http://identifiers.org/ec-code/3.6.4.2", + "http://identifiers.org/ec-code/3.6.4.3", + "http://identifiers.org/ec-code/3.6.4.4", + "http://identifiers.org/ec-code/3.6.4.5", + "http://identifiers.org/ec-code/3.6.4.6", + "http://identifiers.org/ec-code/3.6.4.7", + "http://identifiers.org/ec-code/3.6.4.8", + "http://identifiers.org/ec-code/3.6.4.9", + "http://identifiers.org/kegg.reaction/R00086", + "http://identifiers.org/metanetx.reaction/MNXR96131", + "http://identifiers.org/rhea/13065", + "http://identifiers.org/rhea/13066", + "http://identifiers.org/rhea/13067", + "http://identifiers.org/rhea/13068" + ] + } + ] + } + }, + "gene_reaction_rule": "", + "id": "R_ATPM", + "lower_bound": 8.39, + "metabolites": { + "M_adp_c": 1.0, + "M_atp_c": -1.0, + "M_h2o_c": -1.0, + "M_h_c": 1.0, + "M_pi_c": 1.0 + }, + "name": "ATP maintenance requirement", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/ATPS4r", + "http://identifiers.org/biocyc/META:ATPSYN-RXN", + "http://identifiers.org/ec-code/3.6.3.14", + "http://identifiers.org/metanetx.reaction/MNXR96136" + ] + } + ] + } + }, + "gene_reaction_rule": "( b3738 and b3736 and b3737 and b3735 and b3733 and b3731 and b3732 and b3734 ) or ( b3734 and b3732 and b3731 and b3733 and b3735 and b3737 and b3736 and b3738 and b3739 )", + "id": "R_ATPS4r", + "lower_bound": -1000.0, + "metabolites": { + "M_adp_c": -1.0, + "M_atp_c": 1.0, + "M_h2o_c": 1.0, + "M_h_c": 3.0, + "M_h_e": -4.0, + "M_pi_c": -1.0 + }, + "name": "ATP synthase (four protons for one ATP)", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/Ecoli_core_w_GAM" + ] + } + ] + } + }, + "gene_reaction_rule": "", + "id": "R_BIOMASS_Ecoli_core_w_GAM", + "lower_bound": 0.0, + "metabolites": { + "M_3pg_c": -1.496, + "M_accoa_c": -3.7478, + "M_adp_c": 59.81, + "M_akg_c": 4.1182, + "M_atp_c": -59.81, + "M_coa_c": 3.7478, + "M_e4p_c": -0.361, + "M_f6p_c": -0.0709, + "M_g3p_c": -0.129, + "M_g6p_c": -0.205, + "M_gln__L_c": -0.2557, + "M_glu__L_c": -4.9414, + "M_h2o_c": -59.81, + "M_h_c": 59.81, + "M_nad_c": -3.547, + "M_nadh_c": 3.547, + "M_nadp_c": 13.0279, + "M_nadph_c": -13.0279, + "M_oaa_c": -1.7867, + "M_pep_c": -0.5191, + "M_pi_c": 59.81, + "M_pyr_c": -2.8328, + "M_r5p_c": -0.8977 + }, + "name": "Biomass Objective Function with GAM", + "objective_coefficient": 1.0, + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/CO2t", + "http://identifiers.org/biocyc/META:TRANS-RXN0-545", + "http://identifiers.org/metanetx.reaction/MNXR96810" + ] + } + ] + } + }, + "gene_reaction_rule": "s0001", + "id": "R_CO2t", + "lower_bound": -1000.0, + "metabolites": { + "M_co2_c": 1.0, + "M_co2_e": -1.0 + }, + "name": "CO2 transporter via diffusion", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/CS", + "http://identifiers.org/biocyc/META:CITSYN-RXN", + "http://identifiers.org/biocyc/META:RXN-14905", + "http://identifiers.org/ec-code/2.3.3.1", + "http://identifiers.org/ec-code/2.3.3.16", + "http://identifiers.org/ec-code/2.3.3.3", + "http://identifiers.org/kegg.reaction/R00351", + "http://identifiers.org/metanetx.reaction/MNXR96920", + "http://identifiers.org/rhea/16845", + "http://identifiers.org/rhea/16846", + "http://identifiers.org/rhea/16847", + "http://identifiers.org/rhea/16848" + ] + } + ] + } + }, + "gene_reaction_rule": "b0720", + "id": "R_CS", + "lower_bound": 0.0, + "metabolites": { + "M_accoa_c": -1.0, + "M_cit_c": 1.0, + "M_coa_c": 1.0, + "M_h2o_c": -1.0, + "M_h_c": 1.0, + "M_oaa_c": -1.0 + }, + "name": "Citrate synthase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/CYTBD", + "http://identifiers.org/metanetx.reaction/MNXR97031" + ] + } + ] + } + }, + "gene_reaction_rule": "( b0978 and b0979 ) or ( b0733 and b0734 )", + "id": "R_CYTBD", + "lower_bound": 0.0, + "metabolites": { + "M_h2o_c": 1.0, + "M_h_c": -2.0, + "M_h_e": 2.0, + "M_o2_c": -0.5, + "M_q8_c": 1.0, + "M_q8h2_c": -1.0 + }, + "name": "Cytochrome oxidase bd (ubiquinol-8: 2 protons)", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/D_LACt2", + "http://identifiers.org/biocyc/META:TRANS-RXN0-515", + "http://identifiers.org/metanetx.reaction/MNXR97838" + ] + } + ] + } + }, + "gene_reaction_rule": "b2975 or b3603", + "id": "R_D_LACt2", + "lower_bound": -1000.0, + "metabolites": { + "M_h_c": 1.0, + "M_h_e": -1.0, + "M_lac__D_c": 1.0, + "M_lac__D_e": -1.0 + }, + "name": "D lactate transport via proton symport", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/ENO", + "http://identifiers.org/biocyc/META:2PGADEHYDRAT-RXN", + "http://identifiers.org/ec-code/4.2.1.11", + "http://identifiers.org/kegg.reaction/R00658", + "http://identifiers.org/metanetx.reaction/MNXR97932", + "http://identifiers.org/rhea/10164", + "http://identifiers.org/rhea/10165", + "http://identifiers.org/rhea/10166", + "http://identifiers.org/rhea/10167" + ] + } + ] + } + }, + "gene_reaction_rule": "b2779", + "id": "R_ENO", + "lower_bound": -1000.0, + "metabolites": { + "M_2pg_c": -1.0, + "M_h2o_c": 1.0, + "M_pep_c": 1.0 + }, + "name": "Enolase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/ETOHt2r", + "http://identifiers.org/metanetx.reaction/MNXR97981" + ] + } + ] + } + }, + "gene_reaction_rule": "", + "id": "R_ETOHt2r", + "lower_bound": -1000.0, + "metabolites": { + "M_etoh_c": 1.0, + "M_etoh_e": -1.0, + "M_h_c": 1.0, + "M_h_e": -1.0 + }, + "name": "Ethanol reversible transport via proton symport", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/ac" + ] + } + ] + } + }, + "gene_reaction_rule": "", + "id": "R_EX_ac_e", + "lower_bound": 0.0, + "metabolites": { + "M_ac_e": -1.0 + }, + "name": "Acetate exchange", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/acald" + ] + } + ] + } + }, + "gene_reaction_rule": "", + "id": "R_EX_acald_e", + "lower_bound": 0.0, + "metabolites": { + "M_acald_e": -1.0 + }, + "name": "Acetaldehyde exchange", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/akg" + ] + } + ] + } + }, + "gene_reaction_rule": "", + "id": "R_EX_akg_e", + "lower_bound": 0.0, + "metabolites": { + "M_akg_e": -1.0 + }, + "name": "2-Oxoglutarate exchange", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/co2" + ] + } + ] + } + }, + "gene_reaction_rule": "", + "id": "R_EX_co2_e", + "lower_bound": -1000.0, + "metabolites": { + "M_co2_e": -1.0 + }, + "name": "CO2 exchange", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/etoh" + ] + } + ] + } + }, + "gene_reaction_rule": "", + "id": "R_EX_etoh_e", + "lower_bound": 0.0, + "metabolites": { + "M_etoh_e": -1.0 + }, + "name": "Ethanol exchange", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/for" + ] + } + ] + } + }, + "gene_reaction_rule": "", + "id": "R_EX_for_e", + "lower_bound": 0.0, + "metabolites": { + "M_for_e": -1.0 + }, + "name": "Formate exchange", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/fru" + ] + } + ] + } + }, + "gene_reaction_rule": "", + "id": "R_EX_fru_e", + "lower_bound": 0.0, + "metabolites": { + "M_fru_e": -1.0 + }, + "name": "D-Fructose exchange", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/fum" + ] + } + ] + } + }, + "gene_reaction_rule": "", + "id": "R_EX_fum_e", + "lower_bound": 0.0, + "metabolites": { + "M_fum_e": -1.0 + }, + "name": "Fumarate exchange", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/glc__D" + ] + } + ] + } + }, + "gene_reaction_rule": "", + "id": "R_EX_glc__D_e", + "lower_bound": -10.0, + "metabolites": { + "M_glc__D_e": -1.0 + }, + "name": "D-Glucose exchange", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/gln__L" + ] + } + ] + } + }, + "gene_reaction_rule": "", + "id": "R_EX_gln__L_e", + "lower_bound": 0.0, + "metabolites": { + "M_gln__L_e": -1.0 + }, + "name": "L-Glutamine exchange", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/glu__L" + ] + } + ] + } + }, + "gene_reaction_rule": "", + "id": "R_EX_glu__L_e", + "lower_bound": 0.0, + "metabolites": { + "M_glu__L_e": -1.0 + }, + "name": "L-Glutamate exchange", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/h" + ] + } + ] + } + }, + "gene_reaction_rule": "", + "id": "R_EX_h_e", + "lower_bound": -1000.0, + "metabolites": { + "M_h_e": -1.0 + }, + "name": "H+ exchange", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/h2o" + ] + } + ] + } + }, + "gene_reaction_rule": "", + "id": "R_EX_h2o_e", + "lower_bound": -1000.0, + "metabolites": { + "M_h2o_e": -1.0 + }, + "name": "H2O exchange", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/lac__D" + ] + } + ] + } + }, + "gene_reaction_rule": "", + "id": "R_EX_lac__D_e", + "lower_bound": 0.0, + "metabolites": { + "M_lac__D_e": -1.0 + }, + "name": "D-lactate exchange", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/mal__L" + ] + } + ] + } + }, + "gene_reaction_rule": "", + "id": "R_EX_mal__L_e", + "lower_bound": 0.0, + "metabolites": { + "M_mal__L_e": -1.0 + }, + "name": "L-Malate exchange", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/nh4" + ] + } + ] + } + }, + "gene_reaction_rule": "", + "id": "R_EX_nh4_e", + "lower_bound": -1000.0, + "metabolites": { + "M_nh4_e": -1.0 + }, + "name": "Ammonia exchange", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/o2" + ] + } + ] + } + }, + "gene_reaction_rule": "", + "id": "R_EX_o2_e", + "lower_bound": -1000.0, + "metabolites": { + "M_o2_e": -1.0 + }, + "name": "O2 exchange", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/pi" + ] + } + ] + } + }, + "gene_reaction_rule": "", + "id": "R_EX_pi_e", + "lower_bound": -1000.0, + "metabolites": { + "M_pi_e": -1.0 + }, + "name": "Phosphate exchange", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/pyr" + ] + } + ] + } + }, + "gene_reaction_rule": "", + "id": "R_EX_pyr_e", + "lower_bound": 0.0, + "metabolites": { + "M_pyr_e": -1.0 + }, + "name": "Pyruvate exchange", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/succ" + ] + } + ] + } + }, + "gene_reaction_rule": "", + "id": "R_EX_succ_e", + "lower_bound": 0.0, + "metabolites": { + "M_succ_e": -1.0 + }, + "name": "Succinate exchange", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/FBA", + "http://identifiers.org/ec-code/4.1.2.13", + "http://identifiers.org/kegg.reaction/R01068", + "http://identifiers.org/metanetx.reaction/MNXR99459", + "http://identifiers.org/rhea/14729", + "http://identifiers.org/rhea/14730", + "http://identifiers.org/rhea/14731", + "http://identifiers.org/rhea/14732" + ] + } + ] + } + }, + "gene_reaction_rule": "b1773 or b2097 or b2925", + "id": "R_FBA", + "lower_bound": -1000.0, + "metabolites": { + "M_dhap_c": 1.0, + "M_fdp_c": -1.0, + "M_g3p_c": 1.0 + }, + "name": "Fructose-bisphosphate aldolase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/FBP", + "http://identifiers.org/ec-code/3.1.3.11", + "http://identifiers.org/metanetx.reaction/MNXR99465", + "http://identifiers.org/rhea/11064", + "http://identifiers.org/rhea/11065", + "http://identifiers.org/rhea/11066", + "http://identifiers.org/rhea/11067" + ] + } + ] + } + }, + "gene_reaction_rule": "b3925 or b4232", + "id": "R_FBP", + "lower_bound": 0.0, + "metabolites": { + "M_f6p_c": 1.0, + "M_fdp_c": -1.0, + "M_h2o_c": -1.0, + "M_pi_c": 1.0 + }, + "name": "Fructose-bisphosphatase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/FORt2", + "http://identifiers.org/metanetx.reaction/MNXR99621" + ] + } + ] + } + }, + "gene_reaction_rule": "b0904 or b2492", + "id": "R_FORt2", + "lower_bound": 0.0, + "metabolites": { + "M_for_c": 1.0, + "M_for_e": -1.0, + "M_h_c": 1.0, + "M_h_e": -1.0 + }, + "name": "Formate transport in via proton symport", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/FORt", + "http://identifiers.org/biocyc/META:TRANS-RXN-1", + "http://identifiers.org/metanetx.reaction/MNXR99620", + "http://identifiers.org/rhea/29679", + "http://identifiers.org/rhea/29680", + "http://identifiers.org/rhea/29681", + "http://identifiers.org/rhea/29682" + ] + } + ] + } + }, + "gene_reaction_rule": "b0904 or b2492", + "id": "R_FORt", + "lower_bound": -1000.0, + "metabolites": { + "M_for_c": 1.0, + "M_for_e": -1.0 + }, + "name": "Formate transport via diffusion", + "upper_bound": 0.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/FRD7", + "http://identifiers.org/metanetx.reaction/MNXR99641", + "http://identifiers.org/rhea/29187", + "http://identifiers.org/rhea/29188", + "http://identifiers.org/rhea/29189", + "http://identifiers.org/rhea/29190" + ] + } + ] + } + }, + "gene_reaction_rule": "b4153 and b4151 and b4152 and b4154", + "id": "R_FRD7", + "lower_bound": 0.0, + "metabolites": { + "M_fum_c": -1.0, + "M_q8_c": 1.0, + "M_q8h2_c": -1.0, + "M_succ_c": 1.0 + }, + "name": "Fumarate reductase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/FRUpts2", + "http://identifiers.org/metanetx.reaction/MNXR99662" + ] + } + ] + } + }, + "gene_reaction_rule": "b2415 and b1818 and b1817 and b1819 and b2416", + "id": "R_FRUpts2", + "lower_bound": 0.0, + "metabolites": { + "M_f6p_c": 1.0, + "M_fru_e": -1.0, + "M_pep_c": -1.0, + "M_pyr_c": 1.0 + }, + "name": "Fructose transport via PEP:Pyr PTS (f6p generating)", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/FUM", + "http://identifiers.org/biocyc/META:FUMHYDR-RXN", + "http://identifiers.org/ec-code/4.2.1.2", + "http://identifiers.org/kegg.reaction/R01082", + "http://identifiers.org/metanetx.reaction/MNXR99705", + "http://identifiers.org/rhea/12460", + "http://identifiers.org/rhea/12461", + "http://identifiers.org/rhea/12462", + "http://identifiers.org/rhea/12463" + ] + } + ] + } + }, + "gene_reaction_rule": "b4122 or b1612 or b1611", + "id": "R_FUM", + "lower_bound": -1000.0, + "metabolites": { + "M_fum_c": -1.0, + "M_h2o_c": -1.0, + "M_mal__L_c": 1.0 + }, + "name": "Fumarase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/FUMt2_2", + "http://identifiers.org/biocyc/META:TRANS-RXN-121B", + "http://identifiers.org/metanetx.reaction/MNXR99711", + "http://identifiers.org/rhea/29331", + "http://identifiers.org/rhea/29332", + "http://identifiers.org/rhea/29333", + "http://identifiers.org/rhea/29334" + ] + } + ] + } + }, + "gene_reaction_rule": "b3528", + "id": "R_FUMt2_2", + "lower_bound": 0.0, + "metabolites": { + "M_fum_c": 1.0, + "M_fum_e": -1.0, + "M_h_c": 2.0, + "M_h_e": -2.0 + }, + "name": "Fumarate transport via proton symport (2 H)", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/G6PDH2r", + "http://identifiers.org/biocyc/META:GLU6PDEHYDROG-RXN", + "http://identifiers.org/ec-code/1.1.1.363", + "http://identifiers.org/ec-code/1.1.1.49", + "http://identifiers.org/kegg.reaction/R00835", + "http://identifiers.org/metanetx.reaction/MNXR99907", + "http://identifiers.org/rhea/15841", + "http://identifiers.org/rhea/15842", + "http://identifiers.org/rhea/15843", + "http://identifiers.org/rhea/15844" + ] + } + ] + } + }, + "gene_reaction_rule": "b1852", + "id": "R_G6PDH2r", + "lower_bound": -1000.0, + "metabolites": { + "M_6pgl_c": 1.0, + "M_g6p_c": -1.0, + "M_h_c": 1.0, + "M_nadp_c": -1.0, + "M_nadph_c": 1.0 + }, + "name": "Glucose 6-phosphate dehydrogenase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/GAPD", + "http://identifiers.org/biocyc/META:GAPOXNPHOSPHN-RXN", + "http://identifiers.org/ec-code/1.2.1.12", + "http://identifiers.org/ec-code/1.2.1.59", + "http://identifiers.org/kegg.reaction/R01061", + "http://identifiers.org/metanetx.reaction/MNXR100040", + "http://identifiers.org/rhea/10300", + "http://identifiers.org/rhea/10301", + "http://identifiers.org/rhea/10302", + "http://identifiers.org/rhea/10303" + ] + } + ] + } + }, + "gene_reaction_rule": "b1779", + "id": "R_GAPD", + "lower_bound": -1000.0, + "metabolites": { + "M_13dpg_c": 1.0, + "M_g3p_c": -1.0, + "M_h_c": 1.0, + "M_nad_c": -1.0, + "M_nadh_c": 1.0, + "M_pi_c": -1.0 + }, + "name": "Glyceraldehyde-3-phosphate dehydrogenase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/GLCpts", + "http://identifiers.org/metanetx.reaction/MNXR100237" + ] + } + ] + } + }, + "gene_reaction_rule": "( b2415 and b1818 and b1817 and b1819 and b2416 ) or ( b2415 and b2417 and b1101 and b2416 ) or ( b2415 and b2417 and b1621 and b2416 )", + "id": "R_GLCpts", + "lower_bound": 0.0, + "metabolites": { + "M_g6p_c": 1.0, + "M_glc__D_e": -1.0, + "M_pep_c": -1.0, + "M_pyr_c": 1.0 + }, + "name": "D-glucose transport via PEP:Pyr PTS", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/GLNS", + "http://identifiers.org/biocyc/META:GLUTAMINESYN-RXN", + "http://identifiers.org/ec-code/6.3.1.2", + "http://identifiers.org/kegg.reaction/R00253", + "http://identifiers.org/metanetx.reaction/MNXR100024", + "http://identifiers.org/rhea/16169", + "http://identifiers.org/rhea/16170", + "http://identifiers.org/rhea/16171", + "http://identifiers.org/rhea/16172" + ] + } + ] + } + }, + "gene_reaction_rule": "b3870 or b1297", + "id": "R_GLNS", + "lower_bound": 0.0, + "metabolites": { + "M_adp_c": 1.0, + "M_atp_c": -1.0, + "M_gln__L_c": 1.0, + "M_glu__L_c": -1.0, + "M_h_c": 1.0, + "M_nh4_c": -1.0, + "M_pi_c": 1.0 + }, + "name": "Glutamine synthetase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/GLNabc", + "http://identifiers.org/biocyc/META:ABC-12-RXN", + "http://identifiers.org/ec-code/3.6.3.21", + "http://identifiers.org/metanetx.reaction/MNXR100258", + "http://identifiers.org/rhea/29895#1", + "http://identifiers.org/rhea/29896#1", + "http://identifiers.org/rhea/29897#1", + "http://identifiers.org/rhea/29898#1" + ] + } + ] + } + }, + "gene_reaction_rule": "b0810 and b0811 and b0809", + "id": "R_GLNabc", + "lower_bound": 0.0, + "metabolites": { + "M_adp_c": 1.0, + "M_atp_c": -1.0, + "M_gln__L_c": 1.0, + "M_gln__L_e": -1.0, + "M_h2o_c": -1.0, + "M_h_c": 1.0, + "M_pi_c": 1.0 + }, + "name": "L-glutamine transport via ABC system", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/GLUDy", + "http://identifiers.org/biocyc/META:GLUTDEHYD-RXN", + "http://identifiers.org/ec-code/1.4.1.13", + "http://identifiers.org/ec-code/1.4.1.3", + "http://identifiers.org/ec-code/1.4.1.4", + "http://identifiers.org/kegg.reaction/R00248", + "http://identifiers.org/metanetx.reaction/MNXR100086", + "http://identifiers.org/rhea/11612", + "http://identifiers.org/rhea/11613", + "http://identifiers.org/rhea/11614", + "http://identifiers.org/rhea/11615" + ] + } + ] + } + }, + "gene_reaction_rule": "b1761", + "id": "R_GLUDy", + "lower_bound": -1000.0, + "metabolites": { + "M_akg_c": 1.0, + "M_glu__L_c": -1.0, + "M_h2o_c": -1.0, + "M_h_c": 1.0, + "M_nadp_c": -1.0, + "M_nadph_c": 1.0, + "M_nh4_c": 1.0 + }, + "name": "Glutamate dehydrogenase (NADP)", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/GLUN", + "http://identifiers.org/biocyc/META:GLUTAMIN-RXN", + "http://identifiers.org/ec-code/1.4.1.13", + "http://identifiers.org/ec-code/1.4.7.1", + "http://identifiers.org/ec-code/3.5.1.2", + "http://identifiers.org/ec-code/3.5.1.38", + "http://identifiers.org/ec-code/4.3.3.6", + "http://identifiers.org/ec-code/6.3.4.2", + "http://identifiers.org/ec-code/6.3.5.2", + "http://identifiers.org/ec-code/6.3.5.4", + "http://identifiers.org/ec-code/6.3.5.5", + "http://identifiers.org/kegg.reaction/R00256", + "http://identifiers.org/metanetx.reaction/MNXR100030", + "http://identifiers.org/rhea/15889", + "http://identifiers.org/rhea/15890", + "http://identifiers.org/rhea/15891", + "http://identifiers.org/rhea/15892" + ] + } + ] + } + }, + "gene_reaction_rule": "b0485 or b1812 or b1524", + "id": "R_GLUN", + "lower_bound": 0.0, + "metabolites": { + "M_gln__L_c": -1.0, + "M_glu__L_c": 1.0, + "M_h2o_c": -1.0, + "M_nh4_c": 1.0 + }, + "name": "Glutaminase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/GLUSy", + "http://identifiers.org/biocyc/META:GLUTAMATESYN-RXN", + "http://identifiers.org/ec-code/1.4.1.13", + "http://identifiers.org/kegg.reaction/R00114", + "http://identifiers.org/metanetx.reaction/MNXR100291", + "http://identifiers.org/rhea/15501", + "http://identifiers.org/rhea/15502", + "http://identifiers.org/rhea/15503", + "http://identifiers.org/rhea/15504" + ] + } + ] + } + }, + "gene_reaction_rule": "b3212 and b3213", + "id": "R_GLUSy", + "lower_bound": 0.0, + "metabolites": { + "M_akg_c": -1.0, + "M_gln__L_c": -1.0, + "M_glu__L_c": 2.0, + "M_h_c": -1.0, + "M_nadp_c": 1.0, + "M_nadph_c": -1.0 + }, + "name": "Glutamate synthase (NADPH)", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/GLUt2r", + "http://identifiers.org/metanetx.reaction/MNXR100300" + ] + } + ] + } + }, + "gene_reaction_rule": "b4077", + "id": "R_GLUt2r", + "lower_bound": -1000.0, + "metabolites": { + "M_glu__L_c": 1.0, + "M_glu__L_e": -1.0, + "M_h_c": 1.0, + "M_h_e": -1.0 + }, + "name": "L glutamate transport via proton symport reversible", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/GND", + "http://identifiers.org/biocyc/META:RXN-9952", + "http://identifiers.org/ec-code/1.1.1.351", + "http://identifiers.org/ec-code/1.1.1.44", + "http://identifiers.org/kegg.reaction/R01528", + "http://identifiers.org/metanetx.reaction/MNXR100389", + "http://identifiers.org/rhea/10116", + "http://identifiers.org/rhea/10117", + "http://identifiers.org/rhea/10118", + "http://identifiers.org/rhea/10119" + ] + } + ] + } + }, + "gene_reaction_rule": "b2029", + "id": "R_GND", + "lower_bound": 0.0, + "metabolites": { + "M_6pgc_c": -1.0, + "M_co2_c": 1.0, + "M_nadp_c": -1.0, + "M_nadph_c": 1.0, + "M_ru5p__D_c": 1.0 + }, + "name": "Phosphogluconate dehydrogenase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/H2Ot", + "http://identifiers.org/biocyc/META:TRANS-RXN-145", + "http://identifiers.org/biocyc/META:TRANS-RXN0-547", + "http://identifiers.org/metanetx.reaction/MNXR98641", + "http://identifiers.org/rhea/29667", + "http://identifiers.org/rhea/29668", + "http://identifiers.org/rhea/29669", + "http://identifiers.org/rhea/29670" + ] + } + ] + } + }, + "gene_reaction_rule": "b0875 or s0001", + "id": "R_H2Ot", + "lower_bound": -1000.0, + "metabolites": { + "M_h2o_c": 1.0, + "M_h2o_e": -1.0 + }, + "name": "H2O transport via diffusion", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/ICDHyr", + "http://identifiers.org/ec-code/1.1.1.42", + "http://identifiers.org/kegg.reaction/R00267", + "http://identifiers.org/metanetx.reaction/MNXR100781", + "http://identifiers.org/rhea/19629", + "http://identifiers.org/rhea/19630", + "http://identifiers.org/rhea/19631", + "http://identifiers.org/rhea/19632" + ] + } + ] + } + }, + "gene_reaction_rule": "b1136", + "id": "R_ICDHyr", + "lower_bound": -1000.0, + "metabolites": { + "M_akg_c": 1.0, + "M_co2_c": 1.0, + "M_icit_c": -1.0, + "M_nadp_c": -1.0, + "M_nadph_c": 1.0 + }, + "name": "Isocitrate dehydrogenase (NADP)", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/ICL", + "http://identifiers.org/ec-code/4.1.3.1", + "http://identifiers.org/kegg.reaction/R00479", + "http://identifiers.org/metanetx.reaction/MNXR100789", + "http://identifiers.org/rhea/13245", + "http://identifiers.org/rhea/13246", + "http://identifiers.org/rhea/13247", + "http://identifiers.org/rhea/13248" + ] + } + ] + } + }, + "gene_reaction_rule": "b4015", + "id": "R_ICL", + "lower_bound": 0.0, + "metabolites": { + "M_glx_c": 1.0, + "M_icit_c": -1.0, + "M_succ_c": 1.0 + }, + "name": "Isocitrate lyase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/LDH_D", + "http://identifiers.org/biocyc/META:DLACTDEHYDROGNAD-RXN", + "http://identifiers.org/ec-code/1.1.1.28", + "http://identifiers.org/kegg.reaction/R00704", + "http://identifiers.org/metanetx.reaction/MNXR101037", + "http://identifiers.org/rhea/16369", + "http://identifiers.org/rhea/16370", + "http://identifiers.org/rhea/16371", + "http://identifiers.org/rhea/16372" + ] + } + ] + } + }, + "gene_reaction_rule": "b2133 or b1380", + "id": "R_LDH_D", + "lower_bound": -1000.0, + "metabolites": { + "M_h_c": 1.0, + "M_lac__D_c": -1.0, + "M_nad_c": -1.0, + "M_nadh_c": 1.0, + "M_pyr_c": 1.0 + }, + "name": "D-lactate dehydrogenase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/MALS", + "http://identifiers.org/biocyc/META:MALSYN-RXN", + "http://identifiers.org/ec-code/2.3.3.9", + "http://identifiers.org/kegg.reaction/R00472", + "http://identifiers.org/metanetx.reaction/MNXR101347", + "http://identifiers.org/rhea/18181", + "http://identifiers.org/rhea/18182", + "http://identifiers.org/rhea/18183", + "http://identifiers.org/rhea/18184" + ] + } + ] + } + }, + "gene_reaction_rule": "b4014 or b2976", + "id": "R_MALS", + "lower_bound": 0.0, + "metabolites": { + "M_accoa_c": -1.0, + "M_coa_c": 1.0, + "M_glx_c": -1.0, + "M_h2o_c": -1.0, + "M_h_c": 1.0, + "M_mal__L_c": 1.0 + }, + "name": "Malate synthase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/MALt2_2", + "http://identifiers.org/biocyc/META:TRANS-RXN-121A", + "http://identifiers.org/metanetx.reaction/MNXR101370", + "http://identifiers.org/rhea/29339", + "http://identifiers.org/rhea/29340", + "http://identifiers.org/rhea/29341", + "http://identifiers.org/rhea/29342" + ] + } + ] + } + }, + "gene_reaction_rule": "b3528", + "id": "R_MALt2_2", + "lower_bound": 0.0, + "metabolites": { + "M_h_c": 2.0, + "M_h_e": -2.0, + "M_mal__L_c": 1.0, + "M_mal__L_e": -1.0 + }, + "name": "Malate transport via proton symport (2 H)", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/MDH", + "http://identifiers.org/biocyc/META:MALATE-DEH-RXN", + "http://identifiers.org/ec-code/1.1.1.299", + "http://identifiers.org/ec-code/1.1.1.37", + "http://identifiers.org/kegg.reaction/R00342", + "http://identifiers.org/metanetx.reaction/MNXR101439", + "http://identifiers.org/rhea/21432", + "http://identifiers.org/rhea/21433", + "http://identifiers.org/rhea/21434", + "http://identifiers.org/rhea/21435" + ] + } + ] + } + }, + "gene_reaction_rule": "b3236", + "id": "R_MDH", + "lower_bound": -1000.0, + "metabolites": { + "M_h_c": 1.0, + "M_mal__L_c": -1.0, + "M_nad_c": -1.0, + "M_nadh_c": 1.0, + "M_oaa_c": 1.0 + }, + "name": "Malate dehydrogenase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/ME1", + "http://identifiers.org/biocyc/META:1.1.1.39-RXN", + "http://identifiers.org/ec-code/1.1.1.38", + "http://identifiers.org/ec-code/1.1.1.39", + "http://identifiers.org/kegg.reaction/R00214", + "http://identifiers.org/metanetx.reaction/MNXR101446", + "http://identifiers.org/rhea/12653", + "http://identifiers.org/rhea/12654", + "http://identifiers.org/rhea/12655", + "http://identifiers.org/rhea/12656" + ] + } + ] + } + }, + "gene_reaction_rule": "b1479", + "id": "R_ME1", + "lower_bound": 0.0, + "metabolites": { + "M_co2_c": 1.0, + "M_mal__L_c": -1.0, + "M_nad_c": -1.0, + "M_nadh_c": 1.0, + "M_pyr_c": 1.0 + }, + "name": "Malic enzyme (NAD)", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/ME2", + "http://identifiers.org/biocyc/META:MALIC-NADP-RXN", + "http://identifiers.org/ec-code/1.1.1.40", + "http://identifiers.org/kegg.reaction/R00216", + "http://identifiers.org/metanetx.reaction/MNXR101443", + "http://identifiers.org/rhea/18253", + "http://identifiers.org/rhea/18254", + "http://identifiers.org/rhea/18255", + "http://identifiers.org/rhea/18256" + ] + } + ] + } + }, + "gene_reaction_rule": "b2463", + "id": "R_ME2", + "lower_bound": 0.0, + "metabolites": { + "M_co2_c": 1.0, + "M_mal__L_c": -1.0, + "M_nadp_c": -1.0, + "M_nadph_c": 1.0, + "M_pyr_c": 1.0 + }, + "name": "Malic enzyme (NADP)", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/NADH16", + "http://identifiers.org/ec-code/1.6.5.3", + "http://identifiers.org/metanetx.reaction/MNXR101864" + ] + } + ] + } + }, + "gene_reaction_rule": "b2287 and b2285 and b2283 and b2281 and b2279 and b2277 and b2276 and b2278 and b2280 and b2282 and b2284 and b2286 and b2288", + "id": "R_NADH16", + "lower_bound": 0.0, + "metabolites": { + "M_h_c": -4.0, + "M_h_e": 3.0, + "M_nad_c": 1.0, + "M_nadh_c": -1.0, + "M_q8_c": -1.0, + "M_q8h2_c": 1.0 + }, + "name": "NADH dehydrogenase (ubiquinone-8 & 3 protons)", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/NADTRHD", + "http://identifiers.org/biocyc/META:PYRNUTRANSHYDROGEN-RXN", + "http://identifiers.org/ec-code/1.6.1.1", + "http://identifiers.org/ec-code/1.6.1.2", + "http://identifiers.org/ec-code/1.6.1.3", + "http://identifiers.org/kegg.reaction/R00112", + "http://identifiers.org/metanetx.reaction/MNXR101898", + "http://identifiers.org/rhea/11692", + "http://identifiers.org/rhea/11693", + "http://identifiers.org/rhea/11694", + "http://identifiers.org/rhea/11695" + ] + } + ] + } + }, + "gene_reaction_rule": "b3962 or ( b1602 and b1603 )", + "id": "R_NADTRHD", + "lower_bound": 0.0, + "metabolites": { + "M_nad_c": -1.0, + "M_nadh_c": 1.0, + "M_nadp_c": 1.0, + "M_nadph_c": -1.0 + }, + "name": "NAD transhydrogenase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/NH4t", + "http://identifiers.org/biocyc/META:RXN-9615", + "http://identifiers.org/biocyc/META:TRANS-RXN0-206", + "http://identifiers.org/biocyc/META:TRANS-RXN0-544", + "http://identifiers.org/metanetx.reaction/MNXR101950", + "http://identifiers.org/rhea/28747", + "http://identifiers.org/rhea/28748", + "http://identifiers.org/rhea/28749", + "http://identifiers.org/rhea/28750" + ] + } + ] + } + }, + "gene_reaction_rule": "s0001 or b0451", + "id": "R_NH4t", + "lower_bound": -1000.0, + "metabolites": { + "M_nh4_c": 1.0, + "M_nh4_e": -1.0 + }, + "name": "Ammonia reversible transport", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/O2t", + "http://identifiers.org/biocyc/META:TRANS-RXN0-474", + "http://identifiers.org/metanetx.reaction/MNXR102090" + ] + } + ] + } + }, + "gene_reaction_rule": "s0001", + "id": "R_O2t", + "lower_bound": -1000.0, + "metabolites": { + "M_o2_c": 1.0, + "M_o2_e": -1.0 + }, + "name": "O2 transport diffusion ", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/PDH", + "http://identifiers.org/biocyc/META:PYRUVDEH-RXN", + "http://identifiers.org/ec-code/1.2.1.-", + "http://identifiers.org/ec-code/1.2.1.51", + "http://identifiers.org/ec-code/1.2.4.1", + "http://identifiers.org/ec-code/1.8.1.4", + "http://identifiers.org/ec-code/2.3.1.12", + "http://identifiers.org/kegg.reaction/R00209", + "http://identifiers.org/metanetx.reaction/MNXR102425", + "http://identifiers.org/rhea/28042", + "http://identifiers.org/rhea/28043", + "http://identifiers.org/rhea/28044", + "http://identifiers.org/rhea/28045" + ] + } + ] + } + }, + "gene_reaction_rule": "b0115 and b0114 and b0116", + "id": "R_PDH", + "lower_bound": 0.0, + "metabolites": { + "M_accoa_c": 1.0, + "M_co2_c": 1.0, + "M_coa_c": -1.0, + "M_nad_c": -1.0, + "M_nadh_c": 1.0, + "M_pyr_c": -1.0 + }, + "name": "Pyruvate dehydrogenase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/PFK", + "http://identifiers.org/ec-code/2.7.1.11", + "http://identifiers.org/metanetx.reaction/MNXR102507", + "http://identifiers.org/rhea/16109", + "http://identifiers.org/rhea/16110", + "http://identifiers.org/rhea/16111", + "http://identifiers.org/rhea/16112" + ] + } + ] + } + }, + "gene_reaction_rule": "b3916 or b1723", + "id": "R_PFK", + "lower_bound": 0.0, + "metabolites": { + "M_adp_c": 1.0, + "M_atp_c": -1.0, + "M_f6p_c": -1.0, + "M_fdp_c": 1.0, + "M_h_c": 1.0 + }, + "name": "Phosphofructokinase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/PFL", + "http://identifiers.org/biocyc/META:PYRUVFORMLY-RXN", + "http://identifiers.org/ec-code/2.3.1.54", + "http://identifiers.org/kegg.reaction/R00212", + "http://identifiers.org/metanetx.reaction/MNXR102514", + "http://identifiers.org/rhea/11844", + "http://identifiers.org/rhea/11845", + "http://identifiers.org/rhea/11846", + "http://identifiers.org/rhea/11847" + ] + } + ] + } + }, + "gene_reaction_rule": "( b0902 and b3114 ) or ( b0903 and b0902 and b2579 ) or ( b0902 and b0903 ) or ( b3951 and b3952 )", + "id": "R_PFL", + "lower_bound": 0.0, + "metabolites": { + "M_accoa_c": 1.0, + "M_coa_c": -1.0, + "M_for_c": 1.0, + "M_pyr_c": -1.0 + }, + "name": "Pyruvate formate lyase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/PGI", + "http://identifiers.org/biocyc/META:PGLUCISOM-RXN", + "http://identifiers.org/ec-code/5.3.1.9", + "http://identifiers.org/metanetx.reaction/MNXR102535" + ] + } + ] + } + }, + "gene_reaction_rule": "b4025", + "id": "R_PGI", + "lower_bound": -1000.0, + "metabolites": { + "M_f6p_c": 1.0, + "M_g6p_c": -1.0 + }, + "name": "Glucose-6-phosphate isomerase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/PGK", + "http://identifiers.org/biocyc/META:PHOSGLYPHOS-RXN", + "http://identifiers.org/ec-code/2.7.2.3", + "http://identifiers.org/kegg.reaction/R01512", + "http://identifiers.org/metanetx.reaction/MNXR102538", + "http://identifiers.org/rhea/14801", + "http://identifiers.org/rhea/14802", + "http://identifiers.org/rhea/14803", + "http://identifiers.org/rhea/14804" + ] + } + ] + } + }, + "gene_reaction_rule": "b2926", + "id": "R_PGK", + "lower_bound": -1000.0, + "metabolites": { + "M_13dpg_c": 1.0, + "M_3pg_c": -1.0, + "M_adp_c": 1.0, + "M_atp_c": -1.0 + }, + "name": "Phosphoglycerate kinase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/PGL", + "http://identifiers.org/biocyc/META:6PGLUCONOLACT-RXN", + "http://identifiers.org/ec-code/3.1.1.31", + "http://identifiers.org/kegg.reaction/R02035", + "http://identifiers.org/metanetx.reaction/MNXR102539", + "http://identifiers.org/rhea/12556", + "http://identifiers.org/rhea/12557", + "http://identifiers.org/rhea/12558", + "http://identifiers.org/rhea/12559" + ] + } + ] + } + }, + "gene_reaction_rule": "b0767", + "id": "R_PGL", + "lower_bound": 0.0, + "metabolites": { + "M_6pgc_c": 1.0, + "M_6pgl_c": -1.0, + "M_h2o_c": -1.0, + "M_h_c": 1.0 + }, + "name": "6-phosphogluconolactonase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/PGM", + "http://identifiers.org/biocyc/META:3PGAREARR-RXN", + "http://identifiers.org/biocyc/META:RXN-15513", + "http://identifiers.org/ec-code/5.4.2.1", + "http://identifiers.org/ec-code/5.4.2.11", + "http://identifiers.org/ec-code/5.4.2.12", + "http://identifiers.org/kegg.reaction/R01518", + "http://identifiers.org/metanetx.reaction/MNXR102547", + "http://identifiers.org/rhea/15901", + "http://identifiers.org/rhea/15902", + "http://identifiers.org/rhea/15903", + "http://identifiers.org/rhea/15904" + ] + } + ] + } + }, + "gene_reaction_rule": "b4395 or b3612 or b0755", + "id": "R_PGM", + "lower_bound": -1000.0, + "metabolites": { + "M_2pg_c": -1.0, + "M_3pg_c": 1.0 + }, + "name": "Phosphoglycerate mutase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/PIt2r", + "http://identifiers.org/biocyc/META:TRANS-RXN-114", + "http://identifiers.org/metanetx.reaction/MNXR102872", + "http://identifiers.org/rhea/29939", + "http://identifiers.org/rhea/29940", + "http://identifiers.org/rhea/29941", + "http://identifiers.org/rhea/29942" + ] + } + ] + } + }, + "gene_reaction_rule": "b2987 or b3493", + "id": "R_PIt2r", + "lower_bound": -1000.0, + "metabolites": { + "M_h_c": 1.0, + "M_h_e": -1.0, + "M_pi_c": 1.0, + "M_pi_e": -1.0 + }, + "name": "Phosphate reversible transport via symport", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/PPC", + "http://identifiers.org/ec-code/4.1.1.31", + "http://identifiers.org/kegg.reaction/R00345", + "http://identifiers.org/metanetx.reaction/MNXR103096", + "http://identifiers.org/rhea/23072", + "http://identifiers.org/rhea/23073", + "http://identifiers.org/rhea/23074", + "http://identifiers.org/rhea/23075" + ] + } + ] + } + }, + "gene_reaction_rule": "b3956", + "id": "R_PPC", + "lower_bound": 0.0, + "metabolites": { + "M_co2_c": -1.0, + "M_h2o_c": -1.0, + "M_h_c": 1.0, + "M_oaa_c": 1.0, + "M_pep_c": -1.0, + "M_pi_c": 1.0 + }, + "name": "Phosphoenolpyruvate carboxylase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/PPCK", + "http://identifiers.org/biocyc/META:PEPCARBOXYKIN-RXN", + "http://identifiers.org/ec-code/4.1.1.49", + "http://identifiers.org/kegg.reaction/R00341", + "http://identifiers.org/metanetx.reaction/MNXR103099", + "http://identifiers.org/rhea/18617", + "http://identifiers.org/rhea/18618", + "http://identifiers.org/rhea/18619", + "http://identifiers.org/rhea/18620" + ] + } + ] + } + }, + "gene_reaction_rule": "b3403", + "id": "R_PPCK", + "lower_bound": 0.0, + "metabolites": { + "M_adp_c": 1.0, + "M_atp_c": -1.0, + "M_co2_c": 1.0, + "M_oaa_c": -1.0, + "M_pep_c": 1.0 + }, + "name": "Phosphoenolpyruvate carboxykinase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/PPS", + "http://identifiers.org/biocyc/META:PEPSYNTH-RXN", + "http://identifiers.org/ec-code/2.7.9.2", + "http://identifiers.org/kegg.reaction/R00199", + "http://identifiers.org/metanetx.reaction/MNXR103140", + "http://identifiers.org/rhea/11364", + "http://identifiers.org/rhea/11365", + "http://identifiers.org/rhea/11366", + "http://identifiers.org/rhea/11367" + ] + } + ] + } + }, + "gene_reaction_rule": "b1702", + "id": "R_PPS", + "lower_bound": 0.0, + "metabolites": { + "M_amp_c": 1.0, + "M_atp_c": -1.0, + "M_h2o_c": -1.0, + "M_h_c": 2.0, + "M_pep_c": 1.0, + "M_pi_c": 1.0, + "M_pyr_c": -1.0 + }, + "name": "Phosphoenolpyruvate synthase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/PTAr", + "http://identifiers.org/biocyc/META:PHOSACETYLTRANS-RXN", + "http://identifiers.org/ec-code/2.3.1.8", + "http://identifiers.org/kegg.reaction/R00230", + "http://identifiers.org/metanetx.reaction/MNXR103319", + "http://identifiers.org/rhea/19521", + "http://identifiers.org/rhea/19522", + "http://identifiers.org/rhea/19523", + "http://identifiers.org/rhea/19524" + ] + } + ] + } + }, + "gene_reaction_rule": "b2297 or b2458", + "id": "R_PTAr", + "lower_bound": -1000.0, + "metabolites": { + "M_accoa_c": -1.0, + "M_actp_c": 1.0, + "M_coa_c": 1.0, + "M_pi_c": -1.0 + }, + "name": "Phosphotransacetylase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/PYK", + "http://identifiers.org/biocyc/META:PEPDEPHOS-RXN", + "http://identifiers.org/ec-code/2.7.1.40", + "http://identifiers.org/kegg.reaction/R00200", + "http://identifiers.org/metanetx.reaction/MNXR103371", + "http://identifiers.org/rhea/18157", + "http://identifiers.org/rhea/18158", + "http://identifiers.org/rhea/18159", + "http://identifiers.org/rhea/18160" + ] + } + ] + } + }, + "gene_reaction_rule": "b1854 or b1676", + "id": "R_PYK", + "lower_bound": 0.0, + "metabolites": { + "M_adp_c": -1.0, + "M_atp_c": 1.0, + "M_h_c": -1.0, + "M_pep_c": -1.0, + "M_pyr_c": 1.0 + }, + "name": "Pyruvate kinase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/PYRt2", + "http://identifiers.org/metanetx.reaction/MNXR103385" + ] + } + ] + } + }, + "gene_reaction_rule": "", + "id": "R_PYRt2", + "lower_bound": -1000.0, + "metabolites": { + "M_h_c": 1.0, + "M_h_e": -1.0, + "M_pyr_c": 1.0, + "M_pyr_e": -1.0 + }, + "name": "Pyruvate transport in via proton symport", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/RPE", + "http://identifiers.org/biocyc/META:RIBULP3EPIM-RXN", + "http://identifiers.org/ec-code/5.1.3.1", + "http://identifiers.org/kegg.reaction/R01529", + "http://identifiers.org/metanetx.reaction/MNXR104083", + "http://identifiers.org/rhea/13677", + "http://identifiers.org/rhea/13678", + "http://identifiers.org/rhea/13679", + "http://identifiers.org/rhea/13680" + ] + } + ] + } + }, + "gene_reaction_rule": "b3386 or b4301", + "id": "R_RPE", + "lower_bound": -1000.0, + "metabolites": { + "M_ru5p__D_c": -1.0, + "M_xu5p__D_c": 1.0 + }, + "name": "Ribulose 5-phosphate 3-epimerase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/RPI", + "http://identifiers.org/ec-code/5.3.1.6", + "http://identifiers.org/metanetx.reaction/MNXR104084" + ] + } + ] + } + }, + "gene_reaction_rule": "b2914 or b4090", + "id": "R_RPI", + "lower_bound": -1000.0, + "metabolites": { + "M_r5p_c": -1.0, + "M_ru5p__D_c": 1.0 + }, + "name": "Ribose-5-phosphate isomerase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/SUCCt2_2", + "http://identifiers.org/biocyc/META:TRANS-RXN-121", + "http://identifiers.org/metanetx.reaction/MNXR104620", + "http://identifiers.org/rhea/29303", + "http://identifiers.org/rhea/29304", + "http://identifiers.org/rhea/29305", + "http://identifiers.org/rhea/29306" + ] + } + ] + } + }, + "gene_reaction_rule": "b3528", + "id": "R_SUCCt2_2", + "lower_bound": 0.0, + "metabolites": { + "M_h_c": 2.0, + "M_h_e": -2.0, + "M_succ_c": 1.0, + "M_succ_e": -1.0 + }, + "name": "Succinate transport via proton symport (2 H)", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/SUCCt3", + "http://identifiers.org/metanetx.reaction/MNXR104623" + ] + } + ] + } + }, + "gene_reaction_rule": "", + "id": "R_SUCCt3", + "lower_bound": 0.0, + "metabolites": { + "M_h_c": 1.0, + "M_h_e": -1.0, + "M_succ_c": -1.0, + "M_succ_e": 1.0 + }, + "name": "Succinate transport out via proton antiport", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/SUCDi", + "http://identifiers.org/metanetx.reaction/MNXR99641", + "http://identifiers.org/rhea/29187", + "http://identifiers.org/rhea/29188", + "http://identifiers.org/rhea/29189", + "http://identifiers.org/rhea/29190" + ] + } + ] + } + }, + "gene_reaction_rule": "b0723 and b0721 and b0722 and b0724", + "id": "R_SUCDi", + "lower_bound": 0.0, + "metabolites": { + "M_fum_c": 1.0, + "M_q8_c": -1.0, + "M_q8h2_c": 1.0, + "M_succ_c": -1.0 + }, + "name": "Succinate dehydrogenase (irreversible)", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/SUCOAS", + "http://identifiers.org/biocyc/META:SUCCCOASYN-RXN", + "http://identifiers.org/ec-code/6.2.1.5", + "http://identifiers.org/kegg.reaction/R00405", + "http://identifiers.org/metanetx.reaction/MNXR104635", + "http://identifiers.org/rhea/17661", + "http://identifiers.org/rhea/17662", + "http://identifiers.org/rhea/17663", + "http://identifiers.org/rhea/17664" + ] + } + ] + } + }, + "gene_reaction_rule": "b0728 and b0729", + "id": "R_SUCOAS", + "lower_bound": -1000.0, + "metabolites": { + "M_adp_c": 1.0, + "M_atp_c": -1.0, + "M_coa_c": -1.0, + "M_pi_c": 1.0, + "M_succ_c": -1.0, + "M_succoa_c": 1.0 + }, + "name": "Succinyl-CoA synthetase (ADP-forming)", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/TALA", + "http://identifiers.org/biocyc/META:TRANSALDOL-RXN", + "http://identifiers.org/ec-code/2.2.1.2", + "http://identifiers.org/kegg.reaction/R01827", + "http://identifiers.org/metanetx.reaction/MNXR104715", + "http://identifiers.org/rhea/17053", + "http://identifiers.org/rhea/17054", + "http://identifiers.org/rhea/17055", + "http://identifiers.org/rhea/17056" + ] + } + ] + } + }, + "gene_reaction_rule": "b2464 or b0008", + "id": "R_TALA", + "lower_bound": -1000.0, + "metabolites": { + "M_e4p_c": 1.0, + "M_f6p_c": 1.0, + "M_g3p_c": -1.0, + "M_s7p_c": -1.0 + }, + "name": "Transaldolase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/THD2", + "http://identifiers.org/ec-code/1.6.1.1", + "http://identifiers.org/metanetx.reaction/MNXR104805" + ] + } + ] + } + }, + "gene_reaction_rule": "b1602 and b1603", + "id": "R_THD2", + "lower_bound": 0.0, + "metabolites": { + "M_h_c": 2.0, + "M_h_e": -2.0, + "M_nad_c": 1.0, + "M_nadh_c": -1.0, + "M_nadp_c": -1.0, + "M_nadph_c": 1.0 + }, + "name": "NAD(P) transhydrogenase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/TKT1", + "http://identifiers.org/ec-code/2.2.1.1", + "http://identifiers.org/metanetx.reaction/MNXR104868" + ] + } + ] + } + }, + "gene_reaction_rule": "b2935 or b2465", + "id": "R_TKT1", + "lower_bound": -1000.0, + "metabolites": { + "M_g3p_c": 1.0, + "M_r5p_c": -1.0, + "M_s7p_c": 1.0, + "M_xu5p__D_c": -1.0 + }, + "name": "Transketolase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/TKT2", + "http://identifiers.org/biocyc/META:2TRANSKETO-RXN", + "http://identifiers.org/ec-code/2.2.1.1", + "http://identifiers.org/kegg.reaction/R01830", + "http://identifiers.org/metanetx.reaction/MNXR104869", + "http://identifiers.org/rhea/27626", + "http://identifiers.org/rhea/27627", + "http://identifiers.org/rhea/27628", + "http://identifiers.org/rhea/27629" + ] + } + ] + } + }, + "gene_reaction_rule": "b2935 or b2465", + "id": "R_TKT2", + "lower_bound": -1000.0, + "metabolites": { + "M_e4p_c": -1.0, + "M_f6p_c": 1.0, + "M_g3p_c": 1.0, + "M_xu5p__D_c": -1.0 + }, + "name": "Transketolase", + "upper_bound": 1000.0 + }, + { + "annotation": { + "cvterms": { + "bqb_is": [ + { + "resources": [ + "http://identifiers.org/bigg.reaction/TPI", + "http://identifiers.org/biocyc/META:TRIOSEPISOMERIZATION-RXN", + "http://identifiers.org/ec-code/5.3.1.1", + "http://identifiers.org/kegg.reaction/R01015", + "http://identifiers.org/metanetx.reaction/MNXR104918", + "http://identifiers.org/rhea/18585", + "http://identifiers.org/rhea/18586", + "http://identifiers.org/rhea/18587", + "http://identifiers.org/rhea/18588" + ] + } + ] + } + }, + "gene_reaction_rule": "b3919", + "id": "R_TPI", + "lower_bound": -1000.0, + "metabolites": { + "M_dhap_c": -1.0, + "M_g3p_c": 1.0 + }, + "name": "Triose-phosphate isomerase", + "upper_bound": 1000.0 + } + ], + "sbml_info": { + "annotation": { + "sbo": "SBO:0000624" + }, + "info": " SBML L3V1, fbc-v2, groups-v1", + "level": 3, + "model.id": "e_coli_core", + "notes": "\n \n
\n

Key1 : Value1

\n
\n

\n
e_coli_core - Escherichia coli str. K-12 substr. MG1655
\n

\n
\n
\n \n
", + "packages": { + "fbc": 2, + "groups": 1 + }, + "version": 1 + }, + "user_defined_constraints": [], + "version": "1" +} \ No newline at end of file diff --git a/src/cobra/test/data/mini.pickle b/src/cobra/test/data/mini.pickle index 2942d27db..26d3ad9d5 100644 Binary files a/src/cobra/test/data/mini.pickle and b/src/cobra/test/data/mini.pickle differ diff --git a/src/cobra/test/data/salmonella.pickle b/src/cobra/test/data/salmonella.pickle index 6c605f5c1..f9b84b8ca 100644 Binary files a/src/cobra/test/data/salmonella.pickle and b/src/cobra/test/data/salmonella.pickle differ diff --git a/src/cobra/test/data/salmonella_old.pickle b/src/cobra/test/data/salmonella_old.pickle new file mode 100644 index 000000000..33b1e8f7a Binary files /dev/null and b/src/cobra/test/data/salmonella_old.pickle differ diff --git a/src/cobra/test/data/userConstraint.xml b/src/cobra/test/data/userConstraint.xml new file mode 100644 index 000000000..3a193edc7 --- /dev/null +++ b/src/cobra/test/data/userConstraint.xml @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/cobra/test/data/valid_annotation_format.json b/src/cobra/test/data/valid_annotation_format.json index 8bbb6a38c..84107b755 100644 --- a/src/cobra/test/data/valid_annotation_format.json +++ b/src/cobra/test/data/valid_annotation_format.json @@ -5,9 +5,9 @@ "name":"", "compartment":"c", "annotation": { - "bigg.reaction": [["is", "PFK26"]], - "kegg.reaction": [["is", "R02732"]], - "rhea": [["is", "15656"]] + "bigg.reaction": [["bqb_is", "PFK26"]], + "kegg.reaction": [["bqb_is", "R02732"]], + "rhea": [["bqb_is", "15656"]] } } ], diff --git a/src/cobra/test/test_core/test_group.py b/src/cobra/test/test_core/test_group.py index d877826ee..a99aeca76 100644 --- a/src/cobra/test/test_core/test_group.py +++ b/src/cobra/test/test_core/test_group.py @@ -2,10 +2,12 @@ """Test functions of model.py""" +from os.path import join import pytest from cobra.core import Group +from cobra.io import load_json_model, read_sbml_model, save_json_model, write_sbml_model def test_group_add_elements(model): @@ -37,3 +39,17 @@ def test_group_kind(): group.kind = "collection" assert group.kind == "collection" + + +def test_read_write_json(data_directory, tmp_path): + model = read_sbml_model(join(data_directory, "e_coli_core.xml")) + assert model.groups is not None + assert len(model.groups) == 10 + assert len(model.groups[0].members) == 6 + + path_to_file = join(tmp_path, "group_ecoli.json") + save_json_model(model, path_to_file) + model_from_json = load_json_model(path_to_file) + assert model_from_json.groups is not None + assert len(model_from_json.groups) == 10 + assert len(model_from_json.groups[0].members) == 6 diff --git a/src/cobra/test/test_core/test_metadata/__init__.py b/src/cobra/test/test_core/test_metadata/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/cobra/test/test_core/test_metadata/test_history.py b/src/cobra/test/test_core/test_metadata/test_history.py new file mode 100644 index 000000000..9fcbc03e4 --- /dev/null +++ b/src/cobra/test/test_core/test_metadata/test_history.py @@ -0,0 +1,91 @@ +import os +from datetime import datetime + +import pytest + +from cobra.core.metadata.history import Creator, History, HistoryDatetime +from cobra.io import read_sbml_model + + +def _read_ecoli_annotation_model(data_directory): + """Helper function to read model with history elements.""" + test_xml = os.path.join(data_directory, "e_coli_core_for_annotation.xml") + model = read_sbml_model(test_xml) + return model + + +def test_create_history(): + history = History( + creators=[ + Creator( + first_name="Matthias", + last_name="Koenig", + organization_name="HU", + email="test@test.com", + ), + Creator( + first_name="Andreas", + last_name="Draeger", + organization_name="University of Tübingen", + email="test2@test2.com", + ), + ], + created_date=HistoryDatetime("2020-06-26T02:34:30+05:30"), + modified_dates=[ + HistoryDatetime("2020-06-26T12:34:11+00:00"), + HistoryDatetime("2020-06-26T00:34:11+05:30"), + ], + ) + assert len(history.creators) == 2 + assert isinstance(history.created_date, HistoryDatetime) + assert history.created_date.datetime == "2020-06-26T02:34:30+05:30" + assert len(history.modified_dates) == 2 + + +def test_history_from_ecoli_xml(data_directory): + model = _read_ecoli_annotation_model(data_directory) + history = History( + creators=[ + Creator( + first_name="Matthias", + last_name="Koenig", + email="koenigmx@hu-berlin.de", + organization_name="Humboldt-University Berlin, " + "Institute for Theoretical Biology", + ) + ], + created_date=HistoryDatetime("2019-03-06T14:40:55Z"), + modified_dates=[HistoryDatetime("2019-03-06T14:40:55Z")], + ) + assert model.annotation.history == history + + +def test_create_creator(): + creator = Creator( + first_name="Matthias", + last_name="König", + organization_name="HU", + email="test@test.com", + ) + assert creator is not None + assert creator.first_name == "Matthias" + assert creator.last_name == "König" + assert creator.organization_name == "HU" + assert creator.email == "test@test.com" + + +def test_historydatetime(): + # valid date + dt_str1 = "2020-06-26T02:34:11+05:30" + datetime_obj = HistoryDatetime(dt_str1) + assert datetime_obj.datetime == dt_str1 + + # valid date + datetime_obj.datetime = "2020-06-26T12:34:11+00:00" + assert datetime_obj.datetime == "2020-06-26T12:34:11+00:00" + datetime_obj.datetime = None + assert datetime_obj.datetime is None + + # create from python datetime + datetime_obj.datetime = datetime.now() + assert datetime_obj.datetime is not None diff --git a/src/cobra/test/test_core/test_metadata/test_keyvaluepair.py b/src/cobra/test/test_core/test_metadata/test_keyvaluepair.py new file mode 100644 index 000000000..7a4dddb9a --- /dev/null +++ b/src/cobra/test/test_core/test_metadata/test_keyvaluepair.py @@ -0,0 +1,46 @@ +from cobra.core.metadata.keyvaluepairs import KeyValueEntry, KeyValuePairs + + +def test_keyvalueentry(): + keyvaluedict = KeyValueEntry.from_data( + { + "id": "KV_id", + "name": "abc_xyz", + "key": "keyX", + "value": "45", + "uri": "https://tinyurl.com/ybyr7b62", + } + ) + assert isinstance(keyvaluedict, KeyValueEntry) + assert keyvaluedict.id == "KV_id" + assert keyvaluedict.name == "abc_xyz" + assert keyvaluedict.key == "keyX" + assert keyvaluedict.value == "45" + assert keyvaluedict.uri == "https://tinyurl.com/ybyr7b62" + + +def test_keyvaluepairs(): + entry1 = { + "id": "id1", + "name": "abc_xyz", + "key": "key1", + "value": "45", + "uri": "https://tinyurl.com/ybyr7b62", + } + entry2 = KeyValueEntry.from_data( + { + "id": "id2", + "name": "abc_xyz2", + "key": "key2", + "value": "48", + "uri": "https://tinyurl2.com/ybyr7b62", + } + ) + + kvp = KeyValuePairs(entries=[entry1, entry2]) + print(kvp) + assert len(kvp) == 2 + for key in ["key1", "key2"]: + print("***", key, "***") + assert key in kvp + assert kvp["key2"] == entry2 diff --git a/src/cobra/test/test_core/test_metadata/test_metadata.py b/src/cobra/test/test_core/test_metadata/test_metadata.py new file mode 100644 index 000000000..bad589fdd --- /dev/null +++ b/src/cobra/test/test_core/test_metadata/test_metadata.py @@ -0,0 +1,220 @@ +""" +Tests for the metadata structures +""" + +import json +import os +from os.path import join +from pathlib import Path + +from cobra.core.metadata import CVTerms +from cobra.core.species import Species +from cobra.io import load_json_model, read_sbml_model, save_json_model, write_sbml_model + + +ecoli_model_annotation = { + "bqb_hasTaxon": [{"resources": ["http://identifiers.org/taxonomy/511145"]}], + "bqm_is": [ + { + "nested_data": { + "bqb_isDescribedBy": [ + {"resources": ["https://identifiers.org/pubmed/1111111"]}, + {"resources": ["https://identifiers.org/eco/ECO:0000004"]}, + ] + }, + "resources": ["http://identifiers.org/bigg.model/e_coli_core"], + } + ], + "bqm_isDescribedBy": [ + {"resources": ["http://identifiers.org/doi/10.1128/ecosalplus.10.2.1"]}, + {"resources": ["http://identifiers.org/ncbigi/gi:16128336"]}, + ], +} + + +def test_annotation(): + # a cobra component + s = Species() + assert s.annotation == {} # nothing set for annotation, so empty dict + + # setting annotation via old annotation format + s.annotation["chebi"] = ["CHEBI:43215", "CHEBI:11881"] + + # checking old (fixed) annotation format + assert s.annotation == {"chebi": ["CHEBI:43215", "CHEBI:11881"]} + + # checking new cvterms + cvt = CVTerms( + { + "bqb_is": [ + { + "resources": [ + "https://identifiers.org/chebi/CHEBI:43215", + "https://identifiers.org/chebi/CHEBI:11881", + ] + } + ] + } + ) + assert s.annotation.cvterms == cvt + + # adding an SBO term + s.annotation["sbo"] = ["SBO:0000123"] + assert "chebi" in s.annotation + assert "sbo" in s.annotation + assert s.annotation == { + "chebi": ["CHEBI:43215", "CHEBI:11881"], + "sbo": ["SBO:0000123"], + } + + +def test_nested_annotation(data_directory): + # testing via cvterms + with open(join(data_directory, "cvterms_nested.json"), "r") as f_cvterms: + cvterms_data = json.load(f_cvterms) + + s = Species() + s.annotation.add_cvterms(cvterms_data) + assert s.annotation == { + "uniprot": ["P69905", "P68871", "P69905"], + "kegg.compound": ["C00032"], + "chebi": ["CHEBI:17627"], + } + # check cvterms + main_cvt = CVTerms( + { + "bqb_hasPart": [ + { + "resources": [ + "https://identifiers.org/uniprot/P69905", + "https://identifiers.org/uniprot/P68871", + "https://identifiers.org/kegg.compound/C00032", + ] + }, + { + "resources": [ + "https://identifiers.org/uniprot/P69905", + "https://www.uniprot.org/uniprot/P68871", + "https://identifiers.org/chebi/CHEBI:17627", + ], + "bqb_isDescribedBy": [ + {"resources": ["https://identifiers.org/pubmed/1111111"]}, + {"resources": ["https://identifiers.org/eco/000000"]}, + ], + }, + ] + } + ) + nested_cvt = CVTerms( + { + "bqb_isDescribedBy": [ + {"resources": ["https://identifiers.org/pubmed/1111111"]}, + {"resources": ["https://identifiers.org/eco/000000"]}, + ] + } + ) + assert s.annotation.cvterms == main_cvt + nested_data = s.annotation.cvterms["bqb_hasPart"][1].nested_data + assert nested_data == nested_cvt + + +def _read_ecoli_annotation_model(data_directory): + test_xml = os.path.join(data_directory, "e_coli_core_for_annotation.xml") + model = read_sbml_model(test_xml) + return model + + +def test_cvterms_from_ecoli_xml(data_directory): + model = _read_ecoli_annotation_model(data_directory) + qualifier_list = ["bqb_hasTaxon", "bqm_is", "bqm_isDescribedBy"] + nested_cvt = CVTerms( + { + "bqb_isDescribedBy": [ + {"resources": ["https://identifiers.org/pubmed/1111111"]}, + {"resources": ["https://identifiers.org/eco/ECO:0000004"]}, + ] + } + ) + ecoli_model_cvterm = CVTerms(ecoli_model_annotation) + for key in qualifier_list: + assert key in model.annotation.cvterms + assert model.annotation.cvterms == ecoli_model_cvterm + assert len(model.annotation.cvterms["bqm_isDescribedBy"]) == 2 + nested_data = model.annotation.cvterms["bqm_is"][0].nested_data + assert nested_data == nested_cvt + + # check backwards compatibility + assert model.annotation == { + "taxonomy": ["511145"], + "bigg.model": ["e_coli_core"], + "doi": ["10.1128/ecosalplus.10.2.1"], + "ncbigi": ["gi:16128336"], + } + + +def test_writing_xml(data_directory, tmp_path): + model = _read_ecoli_annotation_model(data_directory) + assert write_sbml_model(model, tmp_path, "e_coli_core_writing.xml") is None + + +def test_read_write_json(data_directory, tmp_path): + model = _read_ecoli_annotation_model(data_directory) + json_path = join(tmp_path, "e_coli_core_json_writing.json") + assert save_json_model(model, json_path, sort=False, pretty=True) is None + + model = load_json_model(json_path) + assert model.annotation == { + "taxonomy": ["511145"], + "bigg.model": ["e_coli_core"], + "doi": ["10.1128/ecosalplus.10.2.1"], + "ncbigi": ["gi:16128336"], + } + assert model.annotation.cvterms == CVTerms(ecoli_model_annotation) + + +def test_read_old_json_model(data_directory): + model = load_json_model(Path(data_directory) / "mini.json") + meta = model.metabolites[0] + assert meta.annotation == { + "bigg.metabolite": ["13dpg"], + "biocyc": ["DPG"], + "chebi": [ + "CHEBI:16001", + "CHEBI:1658", + "CHEBI:20189", + "CHEBI:57604", + "CHEBI:11881", + ], + "hmdb": ["HMDB01270"], + "kegg.compound": ["C00236"], + "pubchem.substance": ["3535"], + "reactome": ["REACT_29800"], + "seed.compound": ["cpd00203"], + "unipathway.compound": ["UPC00236"], + } + + # testing cvterms + expected_cvterms = CVTerms( + { + "bqb_is": [ + { + "resources": [ + "https://identifiers.org/bigg.metabolite/13dpg", + "https://identifiers.org/biocyc/DPG", + "https://identifiers.org/chebi/CHEBI:16001", + "https://identifiers.org/chebi/CHEBI:1658", + "https://identifiers.org/chebi/CHEBI:20189", + "https://identifiers.org/chebi/CHEBI:57604", + "https://identifiers.org/chebi/CHEBI:11881", + "https://identifiers.org/hmdb/HMDB01270", + "https://identifiers.org/kegg.compound/C00236", + "https://identifiers.org/pubchem.substance/3535", + "https://identifiers.org/reactome/REACT_29800", + "https://identifiers.org/seed.compound/cpd00203", + "https://identifiers.org/unipathway.compound/UPC00236", + ] + } + ] + } + ) + assert meta.annotation.cvterms == expected_cvterms diff --git a/src/cobra/test/test_core/test_metadata/test_notes.py b/src/cobra/test/test_core/test_metadata/test_notes.py new file mode 100644 index 000000000..669df48a5 --- /dev/null +++ b/src/cobra/test/test_core/test_metadata/test_notes.py @@ -0,0 +1,114 @@ +import os + +import pytest + +from cobra.core.metadata import Notes +from cobra.io import load_json_model, read_sbml_model, save_json_model, write_sbml_model + + +incoming_notes_str = ( + '\ +\n\ + \n\ +
\n\ +

Key1 : Value1

\n\ +

Key2 : Value2

\n\ +
\n\ +

A Heading

\n\ +
e_coli_core - Escherichia coli ' + "str. K-12 substr. MG1655
\n\ +
\n\ +

Key3 : Value3

\n\ +
\n\ + \n\ +
" +) + +modified_notes_str = ( + '\ +\n\ + \n\ +
\n\ +

Key1 : New Value 1

\n\ +

Key2 : Value2

\n\ +
\n\ +

A Heading

\n\ +
e_coli_core - Escherichia coli ' + "str. K-12 substr. MG1655
\n\ +
\n\ +

Key3 : New Value 3

\n\ +
\n\ + \n\ +
" +) + + +def test_notes(data_directory, tmp_path): + """reading notes from SBML to cobra model""" + model_path = os.path.join(data_directory, "e_coli_core_for_annotation.xml") + assert os.path.exists(model_path) + model = read_sbml_model(model_path) + rx1 = model.reactions[0] + # making notes object to test equality check of + # two notes object + notes = Notes(incoming_notes_str) + + assert rx1.notes.notes_xhtml == incoming_notes_str + assert rx1.notes == notes + + # keys inside notes dict + list_of_keys = ["Key1", "Key2", "Key3"] + + for key in list_of_keys: + assert key in rx1.notes + + assert rx1.notes["Key1"] == "Value1" + assert rx1.notes["Key2"] == "Value2" + assert rx1.notes["Key3"] == "Value3" + + # modifying already present key-value + rx1.notes["Key1"] = "New Value 1" + rx1.notes["Key3"] = "New Value 3" + + # trying to insert a new key-value + with pytest.raises(ValueError): + rx1.notes["Key4"] = "New Value 3" + + # checking modified notes dict and string + assert rx1.notes.notes_xhtml == modified_notes_str + assert rx1.notes["Key1"] == "New Value 1" + assert rx1.notes["Key2"] == "Value2" + assert rx1.notes["Key3"] == "New Value 3" + + # writing and reading back the model + path_to_file = os.path.join(tmp_path, "model_notes.xml") + write_sbml_model(model, path_to_file) + + model_after_reading = read_sbml_model(path_to_file) + rx1_after_reading = model_after_reading.reactions[0] + + # checks after reading model back again + assert rx1_after_reading.notes.notes_xhtml == modified_notes_str + assert rx1_after_reading.notes["Key1"] == "New Value 1" + assert rx1_after_reading.notes["Key2"] == "Value2" + assert rx1_after_reading.notes["Key3"] == "New Value 3" + + +def test_reading_writing_notes(data_directory, tmp_path): + # reading model with notes + model = read_sbml_model( + os.path.join(data_directory, "e_coli_core_for_annotation.xml") + ) + + # checking notes data + rx1 = model.reactions[0] + assert rx1.notes.notes_xhtml == incoming_notes_str + + # reading and writing in json format + path_to_json = os.path.join(str(tmp_path), "json_notes.json") + save_json_model(model, path_to_json) + model_from_json = load_json_model(path_to_json) + rx1_from_json = model_from_json.reactions[0] + assert rx1_from_json.notes.notes_xhtml == incoming_notes_str diff --git a/src/cobra/test/test_core/test_udconstraints.py b/src/cobra/test/test_core/test_udconstraints.py new file mode 100644 index 000000000..29b46eb79 --- /dev/null +++ b/src/cobra/test/test_core/test_udconstraints.py @@ -0,0 +1,216 @@ +""" +Some documentation: + +Reactions: v1; v2; v3; +Stochiometric Contraints (metabolic nework, SBML Reactions): +v1 - v2 = 0 + +UserDefinedConstraints: +v1 + v2 < 2 + +Non-constant parameters (x1: not reactions; ) + +expression =: v1 + v2 + 1.2 x1 < 2 +v1 + v2 + 1.2 x1*x1 < 2 + +-> examples: +-> optimize: (v1, v2, x1); how to access the optimal solution? + +Test Cases: +------------ +1. add user constraint to simple model +A -v1-> B -v2-> C +optimize: v2; bounds v1[0; 10]; v2[0, 5] +optimal value: 5; + +UserConstraint: v1 + v2 <= 4 +optimal value: 2; + +2. only user constraint; +empty cobra model + +x1 <= 2 +maximize: x1 +flux distribution optimal: x1=2 +""" + +from os.path import join + +import pytest + +from cobra.core.model import Model +from cobra.core.udconstraints import ConstraintComponent, UserDefinedConstraint +from cobra.io import load_json_model, read_sbml_model, save_json_model + + +def ex_model(data_directory): + model = read_sbml_model(join(data_directory, "userConstraint.xml")) + return model + + +def textbook_model(data_directory): + model = read_sbml_model(join(data_directory, "textbook.xml.gz")) + return model + + +def test_user_defined_constraints(data_directory): + cons_model = ex_model(data_directory) + solution1 = cons_model.optimize() + assert solution1.objective_value == pytest.approx(5.0) + + cons_comp_1 = ConstraintComponent(variable="v1") + cons_comp_2 = ConstraintComponent(variable="v2") + const_1 = UserDefinedConstraint( + lower_bound=0, upper_bound=4, const_comps=[cons_comp_1, cons_comp_2] + ) + cons_model.add_user_defined_constraints([const_1]) + solution2 = cons_model.optimize() + assert solution2.objective_value == pytest.approx(2.00) + + +def test_user_defined_constraints_on_single_flux(data_directory): + cons_model = ex_model(data_directory) + solution1 = cons_model.optimize() + assert solution1.objective_value == pytest.approx(5.0) + + cons_comp_1 = ConstraintComponent(variable="v2") + const_1 = UserDefinedConstraint( + lower_bound=0, upper_bound=3, const_comps=[cons_comp_1] + ) + cons_model.add_user_defined_constraints([const_1]) + solution2 = cons_model.optimize() + assert solution2.objective_value == pytest.approx(3.00) + + +def test_user_defined_constraints_on_single_variable(): + # an empty model + model = Model("model_abc") + cc1 = ConstraintComponent(variable="new_var") + c1 = UserDefinedConstraint(id="c1", lower_bound=0, upper_bound=2, const_comps=[cc1]) + model.add_user_defined_constraints([c1]) + + model.objective = model.variables.new_var + solution = model.optimize() + assert solution.objective_value == pytest.approx(2.00) + + +def test_ast_tree(): + # an expression containing variable in different possible styles + expr = "-(2/8+ 1)*a+(4/2+5%2) * b * b- (5 * c * c + (-d+e*e))" + constraint = UserDefinedConstraint.constraint_from_expression( + expression=expr, lower_bound=0, upper_bound=20 + ) + assert len(constraint.constraint_comps) == 5 + + assert constraint.constraint_comps[0].coefficient == pytest.approx(-1.25) + assert constraint.constraint_comps[0].variable == "a" + assert constraint.constraint_comps[0].variable_type == "linear" + + assert constraint.constraint_comps[1].coefficient == pytest.approx(3.00) + assert constraint.constraint_comps[1].variable == "b" + assert constraint.constraint_comps[1].variable_type == "quadratic" + + assert constraint.constraint_comps[2].coefficient == -5 + assert constraint.constraint_comps[2].variable == "c" + assert constraint.constraint_comps[2].variable_type == "quadratic" + + assert constraint.constraint_comps[3].coefficient == 1 + assert constraint.constraint_comps[3].variable == "d" + assert constraint.constraint_comps[3].variable_type == "linear" + + assert constraint.constraint_comps[4].coefficient == -1 + assert constraint.constraint_comps[4].variable == "e" + assert constraint.constraint_comps[4].variable_type == "quadratic" + + +def test_helper_function(data_directory): + cons_model = ex_model(data_directory) + solution1 = cons_model.optimize() + assert solution1.objective_value == pytest.approx(5.0) + + const = UserDefinedConstraint.constraint_from_expression( + expression="3/3*v1 + v2", lower_bound=0, upper_bound=4 + ) + cons_model.add_user_defined_constraints([const]) + solution2 = cons_model.optimize() + assert solution2.objective_value == pytest.approx(2.00) + + +def test_json_reading_writing(model, tmp_path): + cc1 = ConstraintComponent(id="cc1", variable="FBA") + cc2 = ConstraintComponent(variable="NH4t", coefficient=-1) + cc3 = ConstraintComponent(id="cc3", variable="difference", coefficient=-1) + c1 = UserDefinedConstraint( + id="c1", lower_bound=0, upper_bound=0, const_comps=[cc1, cc2, cc3] + ) + + cc4 = ConstraintComponent(variable="FBA") + cc5 = ConstraintComponent(variable="NH4t") + c2 = UserDefinedConstraint(lower_bound=0, upper_bound=10, const_comps=[cc4, cc5]) + model.add_user_defined_constraints([c1, c2]) + + path_to_json = join(tmp_path, "userConstraint.json") + save_json_model(model, path_to_json) + + model = load_json_model(path_to_json) + assert model.user_defined_const is not None + assert len(model.user_defined_const) == 2 + const_1 = model.user_defined_const[0] + assert const_1.id == "c1" + assert len(const_1.constraint_comps) == 3 + assert const_1.constraint_comps[0].variable == "FBA" + + +def test_user_defined_constraints_documented(model): + solution1 = model.optimize() + assert solution1.objective_value == pytest.approx(0.87392, 0.0001) + + cc1 = ConstraintComponent(variable="FBA") + cc2 = ConstraintComponent(variable="NH4t", coefficient=-1) + c1 = UserDefinedConstraint(lower_bound=0, upper_bound=0, const_comps=[cc1, cc2]) + model.add_user_defined_constraints([c1]) + solution2 = model.optimize() + assert solution2.fluxes["FBA"] == pytest.approx(4.66274, 0.0001) + assert solution2.fluxes["NH4t"] == pytest.approx(4.66274, 0.0001) + assert solution2.objective_value == pytest.approx(0.85511, 0.0001) + + +def test_user_defined_constraints_with_variable_documented(data_directory): + model = textbook_model(data_directory) + solution1 = model.optimize() + assert solution1.objective_value == pytest.approx(0.87392, 0.0001) + + cc1 = ConstraintComponent(variable="EX_glc__D_e") + cc2 = ConstraintComponent(variable="EX_nh4_e", coefficient=-1) + cc3 = ConstraintComponent(variable="difference", coefficient=-1) + c1 = UserDefinedConstraint( + lower_bound=0, upper_bound=0, const_comps=[cc1, cc2, cc3] + ) + model.add_user_defined_constraints([c1]) + solution2 = model.optimize() + assert solution2.objective_value == pytest.approx(0.87392, 0.0001) + + reaction1 = model.reactions[0] + reaction1.knock_out() + model.optimize() + assert model.solver.variables.difference.primal == pytest.approx(-5.23468, 0.0001) + + reaction2 = model.reactions[1] + reaction2.knock_out() + model.optimize() + assert model.solver.variables.difference.primal == pytest.approx(-5.23468, 0.0001) + + reaction3 = model.reactions[2] + reaction3.knock_out() + model.optimize() + assert model.solver.variables.difference.primal == pytest.approx(-5.23468, 0.0001) + + reaction4 = model.reactions[3] + reaction4.knock_out() + model.optimize() + assert model.solver.variables.difference.primal == pytest.approx(-1.86444, 0.0001) + + reaction5 = model.reactions[4] + reaction5.knock_out() + model.optimize() + assert model.solver.variables.difference.primal == pytest.approx(-1.86444, 0.0001) diff --git a/src/cobra/test/test_io/conftest.py b/src/cobra/test/test_io/conftest.py index 5c4a91334..f3ddc22c9 100644 --- a/src/cobra/test/test_io/conftest.py +++ b/src/cobra/test/test_io/conftest.py @@ -2,8 +2,6 @@ """Contains module level fixtures and utility functions.""" -from __future__ import absolute_import - from os.path import join from pickle import dump, load diff --git a/src/cobra/test/test_io/test_annotation.py b/src/cobra/test/test_io/test_annotation.py index 9067ef29e..301adc9ef 100644 --- a/src/cobra/test/test_io/test_annotation.py +++ b/src/cobra/test/test_io/test_annotation.py @@ -15,9 +15,9 @@ def _check_sbml_annotations(model): assert len(annotation) == 3 for key in ["bigg.model", "doi", "taxonomy"]: assert key in annotation - assert annotation["bigg.model"] == "e_coli_core" - assert annotation["doi"] == "10.1128/ecosalplus.10.2.1" - assert annotation["taxonomy"] == "511145" + assert annotation["bigg.model"] == ["e_coli_core"] + assert annotation["doi"] == ["10.1128/ecosalplus.10.2.1"] + assert annotation["taxonomy"] == ["511145"] # gene annotation # {'asap': 'ABE-0006162', 'ncbigene': '946368', 'uniprot': 'P33221', @@ -26,11 +26,11 @@ def _check_sbml_annotations(model): assert len(annotation) == 5 for key in ["asap", "ncbigene", "uniprot", "ncbigi", "ecogene"]: assert key in annotation - assert annotation["asap"] == "ABE-0006162" - assert annotation["ncbigene"] == "946368" - assert annotation["uniprot"] == "P33221" - assert annotation["ncbigi"] == "gi:16129802" - assert annotation["ecogene"] == "EG11809" + assert annotation["asap"] == ["ABE-0006162"] + assert annotation["ncbigene"] == ["946368"] + assert annotation["uniprot"] == ["P33221"] + assert annotation["ncbigi"] == ["gi:16129802"] + assert annotation["ecogene"] == ["EG11809"] # compartment annotation # FIXME: add tests with first class compartment model @@ -60,9 +60,9 @@ def _check_sbml_annotations(model): "biocyc", ]: assert key in annotation - assert ( - annotation["inchi"] == "InChI=1S/C3H8O2/c1-3(5)2-4/h3-5H,2H2,1H3/t3-/m0/s1" - ) # noqa: E501 + assert annotation["inchi"] == [ + "InChI=1S/C3H8O2/c1-3(5)2-4/h3-5H,2H2,1H3/t3-/m0/s1" + ] # noqa: E501 # reaction annotation # {'kegg.reaction': 'R00228', 'sbo': 'SBO:0000375', @@ -80,7 +80,7 @@ def _check_sbml_annotations(model): "biocyc", ]: assert key in annotation - assert annotation["biocyc"] == "META:ACETALD-DEHYDROG-RXN" + assert annotation["biocyc"] == ["META:ACETALD-DEHYDROG-RXN"] def test_read_sbml_annotations(data_directory): diff --git a/src/cobra/test/test_io/test_annotation_format.py b/src/cobra/test/test_io/test_annotation_format.py index 6e87a2fd3..650c22e89 100644 --- a/src/cobra/test/test_io/test_annotation_format.py +++ b/src/cobra/test/test_io/test_annotation_format.py @@ -1,7 +1,5 @@ from os.path import join -import pytest - from cobra.io import load_json_model, write_sbml_model @@ -10,9 +8,9 @@ def test_load_json_model_valid(data_directory, tmp_path): path_to_file = join(data_directory, "valid_annotation_format.json") model = load_json_model(path_to_file) expected = { - "bigg.reaction": [["is", "PFK26"]], - "kegg.reaction": [["is", "R02732"]], - "rhea": [["is", "15656"]], + "bigg.reaction": ["PFK26"], + "kegg.reaction": ["R02732"], + "rhea": ["15656"], } for metabolite in model.metabolites: assert metabolite.annotation == expected @@ -23,5 +21,12 @@ def test_load_json_model_valid(data_directory, tmp_path): def test_load_json_model_invalid(data_directory): """Test that loading an invalid annotation from JSON raises TypeError""" path = join(data_directory, "invalid_annotation_format.json") - with pytest.raises(TypeError): - model = load_json_model(path) + # with pytest.raises(TypeError): + # model = load_json_model(path) + + # the issue of reading annotation when it is in the form of + # of list of list has been resolved. When such type of annotation + # are encountered, they will be first fixed and then added + model = load_json_model(path) + anno = model.metabolites[0].annotation + assert anno == {"kegg.compound": ["C01468"], "chebi": ["CHEBI:11981"]} diff --git a/src/cobra/test/test_io/test_io_order.py b/src/cobra/test/test_io/test_io_order.py index 82bcc7c07..9b8a4d38f 100644 --- a/src/cobra/test/test_io/test_io_order.py +++ b/src/cobra/test/test_io/test_io_order.py @@ -1,7 +1,5 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import - import logging from operator import attrgetter from os.path import join diff --git a/src/cobra/test/test_io/test_json.py b/src/cobra/test/test_io/test_json.py index 41efaccd0..ee77da677 100644 --- a/src/cobra/test/test_io/test_json.py +++ b/src/cobra/test/test_io/test_json.py @@ -1,32 +1,30 @@ -# -*- coding: utf-8 -*- - """Test functionalities of json.py""" -from __future__ import absolute_import - -import json from os.path import join -import pytest -from importlib_resources import open_text - from cobra import io as cio from cobra.test.test_io.conftest import compare_models -@pytest.fixture(scope="module") -def json_schema_v1(): - with open_text(cio, "schema_v1.json") as handle: - schema_v1 = json.load(handle) - return schema_v1 +def test_validate_json(data_directory): + """Validate file according to JSON-schema.""" + path_old_format = join(data_directory, "e_coli_core.json") + # validate the model using JSON schema v1 + list_errors = cio.validate_json_model( + filename=path_old_format, json_schema_version=1 + ) + assert len(list_errors) == 0 + path_new_format = join(data_directory, "e_coli_new_format.json") + # validate the model using JSON schema v2 + errors = cio.validate_json_model(filename=path_new_format, json_schema_version=2) + assert len(errors) == 0 -def test_validate_json(data_directory, json_schema_v1): - """Validate file according to JSON-schema.""" - jsonschema = pytest.importorskip("jsonschema") - with open(join(data_directory, "mini.json"), "r", encoding="utf-8") as infile: - loaded = json.load(infile) - assert jsonschema.validate(loaded, json_schema_v1) is None + # test for invalid json model according to schema + errors_invalid = cio.validate_json_model( + filename=path_old_format, json_schema_version=2 + ) + assert len(errors_invalid) == 309 def test_load_json_model(data_directory, mini_model): @@ -35,15 +33,13 @@ def test_load_json_model(data_directory, mini_model): assert compare_models(mini_model, json_model) is None -def test_save_json_model(tmpdir, mini_model, json_schema_v1): +def test_save_json_model(tmpdir, mini_model): """Test the writing of JSON model.""" - jsonschema = pytest.importorskip("jsonschema") output_file = tmpdir.join("mini.json") cio.save_json_model(mini_model, output_file.strpath, pretty=True) # validate against JSONSchema - with open(str(output_file), "r") as infile: - loaded = json.load(infile) - assert jsonschema.validate(loaded, json_schema_v1) is None + errors = cio.validate_json_model(output_file, 1) + assert len(errors) == 0 def test_reaction_bounds_json(data_directory, tmp_path): diff --git a/src/cobra/test/test_io/test_mat.py b/src/cobra/test/test_io/test_mat.py index 9b9bee4a3..b18c9ccce 100644 --- a/src/cobra/test/test_io/test_mat.py +++ b/src/cobra/test/test_io/test_mat.py @@ -2,8 +2,6 @@ """Test functionalities provided by mat.py""" -from __future__ import absolute_import - from os.path import join from pickle import load diff --git a/src/cobra/test/test_io/test_notes.py b/src/cobra/test/test_io/test_notes.py deleted file mode 100644 index c57494a59..000000000 --- a/src/cobra/test/test_io/test_notes.py +++ /dev/null @@ -1,36 +0,0 @@ -from os.path import join - -import pytest - -import cobra -from cobra.io import read_sbml_model, write_sbml_model - - -def test_notes(tmp_path): - """Testing if model notes are written in SBML""" - path_to_file = join(str(tmp_path), "model_notes.xml") - - # making a minimal cobra model to test notes - model = cobra.Model("e_coli_core") - model.notes["Remark"] = "...Model Notes..." - met = cobra.Metabolite("pyr_c", compartment="c") - model.add_metabolites([met]) - met.notes["Remark"] = "Note with \n newline" - rxn = cobra.Reaction("R_ATPM") - model.add_reactions([rxn]) - rxn.notes["Remark"] = "What about me?" - model.objective_direction = "max" - model.objective = rxn - write_sbml_model(model, path_to_file) - - # reading the model back - model_after_reading = read_sbml_model(path_to_file) - met_after_reading = model_after_reading.metabolites.get_by_id("pyr_c") - reaction_after_reading = model_after_reading.reactions.get_by_id("R_ATPM") - - # checking if notes are written to model - assert model_after_reading.notes["Remark"] == "...Model Notes..." - - # checking notes for metabolite and reaction - assert met_after_reading.notes["Remark"] == "Note with \n newline" - assert reaction_after_reading.notes["Remark"] == "What about me?" diff --git a/src/cobra/test/test_io/test_pickle.py b/src/cobra/test/test_io/test_pickle.py index 56e1c5e59..fa2621b54 100644 --- a/src/cobra/test/test_io/test_pickle.py +++ b/src/cobra/test/test_io/test_pickle.py @@ -2,8 +2,6 @@ """Test data storage and recovery using pickle.""" -from __future__ import absolute_import - from os.path import join from pickle import dump, load @@ -13,10 +11,10 @@ try: - import cPickle + import pickle - cload = cPickle.load - cdump = cPickle.dump + cload = pickle.load + cdump = pickle.dump except ImportError: cload = None cdump = None diff --git a/src/cobra/test/test_io/test_sbml.py b/src/cobra/test/test_io/test_sbml.py index b76a07674..dcc20736f 100644 --- a/src/cobra/test/test_io/test_sbml.py +++ b/src/cobra/test/test_io/test_sbml.py @@ -3,8 +3,6 @@ Testing SBML functionality based on libsbml. """ -from __future__ import absolute_import - from collections import namedtuple from os import unlink from os.path import join, split @@ -15,6 +13,7 @@ import cobra from cobra import Model +from cobra.core.metadata import MetaData from cobra.io import read_sbml_model, validate_sbml_model, write_sbml_model @@ -235,20 +234,23 @@ def test_from_sbml_string(data_directory): TestCobraIO.compare_models(name="read from string", model1=model1, model2=model2) -@pytest.mark.skip(reason="Model history currently not written") def test_model_history(tmp_path): """Testing reading and writing of ModelHistory.""" model = Model("test") - model._sbml = { + history = { "creators": [ { - "familyName": "Mustermann", - "givenName": "Max", - "organisation": "Muster University", + "last_name": "Mustermann", + "first_name": "Max", + "organization_name": "Muster University", "email": "muster@university.com", } - ] + ], + "created_date": "2019-10-20T12:34:32Z", + "modified_dates": ["2019-10-20T12:35:32Z"], } + annotation = MetaData(history=history) + model._sbml = {"annotation": annotation} sbml_path = join(str(tmp_path), "test.xml") with open(sbml_path, "w") as f_out: @@ -257,13 +259,23 @@ def test_model_history(tmp_path): with open(sbml_path, "r") as f_in: model2 = read_sbml_model(f_in) - assert "creators" in model2._sbml - assert len(model2._sbml["creators"]) is 1 - c = model2._sbml["creators"][0] - assert c["familyName"] == "Mustermann" - assert c["givenName"] == "Max" - assert c["organisation"] == "Muster University" - assert c["email"] == "muster@university.com" + assert "annotation" in model2._sbml + assert len(model2._sbml["annotation"].history.creators) is 1 + c = model2._sbml["annotation"].history.creators[0] + assert c.last_name == "Mustermann" + assert c.first_name == "Max" + assert c.organization_name == "Muster University" + assert c.email == "muster@university.com" + + assert ( + model2._sbml["annotation"].history.created_date.datetime + == "2019-10-20T12:34:32Z" + ) + assert len(model2._sbml["annotation"].history._modified_dates) == 1 + assert ( + model2._sbml["annotation"].history._modified_dates[0].datetime + == "2019-10-20T12:35:32Z" + ) def test_groups(data_directory, tmp_path): @@ -450,41 +462,45 @@ def test_smbl_with_notes(data_directory, tmp_path): } metabolite_annotations = { "2hb_e": { - "sbo": "SBO:0000247", - "inchi": "InChI=1S/C4H8O3/c1-2-3(5)4(6)7/h3,5H,2H2,1H3," "(H,6,7)", - "chebi": "CHEBI:1148", + "sbo": ["SBO:0000247"], + "inchi": ["InChI=1S/C4H8O3/c1-2-3(5)4(6)7/h3,5H,2H2,1H3," "(H,6,7)"], + "chebi": ["CHEBI:1148"], }, "nad_e": { - "sbo": "SBO:0000247", - "inchi": "InChI=1S/C21H27N7O14P2/c22-17-12-19(" - "25-7-24-17)28(8-26-12)21-16(32)14(30)11(" - "41-21)6-39-44(36,37)42-43(34,35)38-5-10-13(29)15(" - "31)20(40-10)27-3-1-2-9(4-27)18(" - "23)33/h1-4,7-8,10-11,13-16,20-21,29-32H,5-6H2," - "(H5-,22,23,24,25,33,34,35,36,37)/p-1/t10-," - "11-,13-,14-,15-,16-,20-,21-/m1/s1", - "chebi": "CHEBI:57540", + "sbo": ["SBO:0000247"], + "inchi": [ + "InChI=1S/C21H27N7O14P2/c22-17-12-19(" + "25-7-24-17)28(8-26-12)21-16(32)14(30)11(" + "41-21)6-39-44(36,37)42-43(34,35)38-5-10-13(29)15(" + "31)20(40-10)27-3-1-2-9(4-27)18(" + "23)33/h1-4,7-8,10-11,13-16,20-21,29-32H,5-6H2," + "(H5-,22,23,24,25,33,34,35,36,37)/p-1/t10-," + "11-,13-,14-,15-,16-,20-,21-/m1/s1" + ], + "chebi": ["CHEBI:57540"], }, "h_e": { - "sbo": "SBO:0000247", - "inchi": "InChI=1S/p+1/i/hH", - "chebi": "CHEBI:24636", + "sbo": ["SBO:0000247"], + "inchi": ["InChI=1S/p+1/i/hH"], + "chebi": ["CHEBI:24636"], }, "2obut_e": { - "sbo": "SBO:0000247", - "inchi": "InChI=1S/C4H6O3/c1-2-3(5)4(6)7/h2H2,1H3,(H,6," "7)/p-1", - "chebi": "CHEBI:16763", + "sbo": ["SBO:0000247"], + "inchi": ["InChI=1S/C4H6O3/c1-2-3(5)4(6)7/h2H2,1H3,(H,6," "7)/p-1"], + "chebi": ["CHEBI:16763"], }, "nadh_e": { - "sbo": "SBO:0000247", - "inchi": "InChI=1S/C21H29N7O14P2/c22-17-12-19(" - "25-7-24-17)28(8-26-12)21-16(32)14(30)11(" - "41-21)6-39-44(36,37)42-43(34,35)38-5-10-13(" - "29)15(31)20(40-10)27-3-1-2-9(4-27)18(" - "23)33/h1,3-4,7-8,10-11,13-16,20-21,29-32H,2," - "5-6H2,(H2,23,33)(H,34,35)(H,36,37)(H2,22,24," - "25)/p-2/t10-,11-,13-,14-,15-,16-,20-,21-/m1/s1", - "chebi": "CHEBI:57945", + "sbo": ["SBO:0000247"], + "inchi": [ + "InChI=1S/C21H29N7O14P2/c22-17-12-19(" + "25-7-24-17)28(8-26-12)21-16(32)14(30)11(" + "41-21)6-39-44(36,37)42-43(34,35)38-5-10-13(" + "29)15(31)20(40-10)27-3-1-2-9(4-27)18(" + "23)33/h1,3-4,7-8,10-11,13-16,20-21,29-32H,2," + "5-6H2,(H2,23,33)(H,34,35)(H,36,37)(H2,22,24," + "25)/p-2/t10-,11-,13-,14-,15-,16-,20-,21-/m1/s1" + ], + "chebi": ["CHEBI:57945"], }, } reaction_notes = { @@ -494,8 +510,8 @@ def test_smbl_with_notes(data_directory, tmp_path): "GENE_ASSOCIATION": "(HGNC:8546 and HGNC:8548) or" " (HGNC:8547 and HGNC:8548)", } reaction_annotations = { - "sbo": "SBO:0000176", - "ec-code": "1.1.1.27", + "sbo": ["SBO:0000176"], + "ec-code": ["1.1.1.27"], "pubmed": ["10108", "21765"], } diff --git a/src/cobra/test/test_io/test_yaml.py b/src/cobra/test/test_io/test_yaml.py index 1cf42a7f3..10dad8314 100644 --- a/src/cobra/test/test_io/test_yaml.py +++ b/src/cobra/test/test_io/test_yaml.py @@ -2,12 +2,9 @@ """Test functionalities provided by yaml.py""" -from __future__ import absolute_import - import json from os.path import join -import pytest from ruamel.yaml import YAML from cobra import io as cio @@ -20,9 +17,7 @@ def test_load_yaml_model(data_directory, mini_model): assert compare_models(mini_model, yaml_model) is None -@pytest.mark.xfail(reason="schema outdated") def test_save_yaml_model(tmpdir, mini_model): - jsonschema = pytest.importorskip("jsonschema") """Test the writing of YAML model.""" output_file = tmpdir.join("mini.yml") cio.save_yaml_model(mini_model, output_file.strpath, sort=True) @@ -31,5 +26,5 @@ def test_save_yaml_model(tmpdir, mini_model): with open(output_file.strpath, "r") as infile: yaml_to_dict = yaml.load(infile) dict_to_json = json.dumps(yaml_to_dict) - loaded = json.loads(dict_to_json) - assert jsonschema.validate(loaded, cio.json.json_schema) + errors = cio.validate_json_model(filename=dict_to_json, json_schema_version=1) + assert len(errors) == 0 diff --git a/src/cobra/test/test_manipulation.py b/src/cobra/test/test_manipulation.py index 6c7a72e63..701c70107 100644 --- a/src/cobra/test/test_manipulation.py +++ b/src/cobra/test/test_manipulation.py @@ -172,11 +172,11 @@ def test_sbo_annotation(self, model): fake_DM.add_metabolites({model.metabolites.get_by_id("h_c"): -1}) # this exchange will be set wrong. The function should not overwrite # an existing SBO annotation - rxns.get_by_id("EX_h_e").annotation["sbo"] = "SBO:0000628" + rxns.get_by_id("EX_h_e").annotation["sbo"] = ["SBO:0000628"] add_SBO(model) - assert rxns.EX_o2_e.annotation["sbo"] == "SBO:0000627" - assert rxns.DM_h_c.annotation["sbo"] == "SBO:0000628" - assert rxns.EX_h_e.annotation["sbo"] == "SBO:0000628" + assert rxns.EX_o2_e.annotation["sbo"] == ["SBO:0000627"] + assert rxns.DM_h_c.annotation["sbo"] == ["SBO:0000628"] + assert rxns.EX_h_e.annotation["sbo"] == ["SBO:0000628"] def test_validate_formula_compartment(self, model): model.metabolites[1].formula = "(a*.bcde)" diff --git a/src/cobra/test/test_summary/test_metabolite_summary.py b/src/cobra/test/test_summary/test_metabolite_summary.py index 1f543bfd0..5b49005ac 100644 --- a/src/cobra/test/test_summary/test_metabolite_summary.py +++ b/src/cobra/test/test_summary/test_metabolite_summary.py @@ -12,18 +12,13 @@ def test_metabolite_summary_interface(model, opt_solver): model.solver = opt_solver metabolite = model.metabolites.get_by_id("q8_c") MetaboliteSummary( - metabolite=metabolite, - model=model, + metabolite=metabolite, model=model, ) MetaboliteSummary( - metabolite=metabolite, - model=model, - solution=pfba(model), + metabolite=metabolite, model=model, solution=pfba(model), ) MetaboliteSummary( - metabolite=metabolite, - model=model, - fva=0.95, + metabolite=metabolite, model=model, fva=0.95, ) MetaboliteSummary( metabolite=metabolite, diff --git a/src/cobra/test/test_summary/test_model_summary.py b/src/cobra/test/test_summary/test_model_summary.py index c05e8ab00..7300642a3 100644 --- a/src/cobra/test/test_summary/test_model_summary.py +++ b/src/cobra/test/test_summary/test_model_summary.py @@ -10,16 +10,12 @@ def test_model_summary_interface(model, opt_solver): """Test that a summary can be created successfully.""" model.solver = opt_solver + ModelSummary(model=model,) ModelSummary( - model=model, + model=model, solution=pfba(model), ) ModelSummary( - model=model, - solution=pfba(model), - ) - ModelSummary( - model=model, - fva=0.95, + model=model, fva=0.95, ) ModelSummary( model=model, diff --git a/src/cobra/test/test_summary/test_reaction_summary.py b/src/cobra/test/test_summary/test_reaction_summary.py index 8926285a2..7f11d3219 100644 --- a/src/cobra/test/test_summary/test_reaction_summary.py +++ b/src/cobra/test/test_summary/test_reaction_summary.py @@ -12,18 +12,13 @@ def test_reaction_summary_interface(model, opt_solver): model.solver = opt_solver reaction = model.reactions.get_by_id("FUM") ReactionSummary( - reaction=reaction, - model=model, + reaction=reaction, model=model, ) ReactionSummary( - reaction=reaction, - model=model, - solution=pfba(model), + reaction=reaction, model=model, solution=pfba(model), ) ReactionSummary( - reaction=reaction, - model=model, - fva=0.95, + reaction=reaction, model=model, fva=0.95, ) ReactionSummary( reaction=reaction, diff --git a/src/cobra/util/array.py b/src/cobra/util/array.py index b14cb2cc8..79972fb19 100644 --- a/src/cobra/util/array.py +++ b/src/cobra/util/array.py @@ -136,9 +136,7 @@ def nullspace(A: np.ndarray, atol: float = 1e-13, rtol: float = 0.0) -> np.ndarr def constraint_matrices( - model: "Model", - array_type: str = "dense", - zero_tol: float = 1e-6, + model: "Model", array_type: str = "dense", zero_tol: float = 1e-6, ) -> NamedTuple: """Create a matrix representation of the problem. diff --git a/tox.ini b/tox.ini index 57ef29112..af74d07b7 100644 --- a/tox.ini +++ b/tox.ini @@ -100,6 +100,7 @@ known_third_party = scipy six swiglpk + jsonschema [flake8] exclude =