From 8ba4a00d1b882086c04a5798ad20b75b2c2beab1 Mon Sep 17 00:00:00 2001 From: y1zhou Date: Tue, 14 Dec 2021 17:57:54 -0500 Subject: [PATCH 01/42] feat(metacyc): read metacyc SBML file and setup graph database --- metabolike/parser/metacyc.py | 69 ++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 metabolike/parser/metacyc.py diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py new file mode 100644 index 0000000..6f1a4c1 --- /dev/null +++ b/metabolike/parser/metacyc.py @@ -0,0 +1,69 @@ +import logging +from pathlib import Path +from typing import Union + +import libsbml +from metabolike import db + +logger = logging.getLogger(__name__) + + +class Metacyc: + def __init__(self, filepath: Union[str, Path], neo4j_driver: db.Neo4jDriver): + self.neo4j_driver = neo4j_driver + + # Read SBML file + self.filepath = Path(filepath).expanduser().resolve() + self.doc = self.read_sbml() + self.model: libsbml.Model = self.doc.getModel() + self.db_name: str = self.model.getId().lower() + + # Setup Neo4j database + self.setup_neo4j() + + def read_sbml(self) -> libsbml.SBMLDocument: + reader = libsbml.SBMLReader() + metacyc = reader.readSBML(self.filepath) + + for i in range(metacyc.getNumErrors()): + err = metacyc.getError(i) + logger.warning( + "SBML reader raised %s at line %d, column %d: %s", + err.getSeverityAsString(), + err.getLine(), + err.getColumn(), + err.getMessage().replace("\n", " "), + ) + + return metacyc + + def setup_neo4j(self, **kwargs): + # Create database + try: + db.create(self.neo4j_driver, self.db_name, **kwargs) + except Exception as e: + logger.fatal(f"Could not create database: {e}") + raise + + # Set constraints + with self.neo4j_driver.session(database=self.db_name) as session: + logger.debug("Creating constraint for RDF nodes") + r = session.run( + """CREATE CONSTRAINT IF NOT EXISTS + ON (r:RDF) ASSERT r.uri IS UNIQUE;""" + ).data() + if r: + logger.warning(f"Could not create constraint for RDF nodes: {r}") + + # Constraints automatically create indexes, so we don't need to + # create them manually. + for label in ["Pathway", "Compartment", "Reaction", "Species"]: + logger.debug(f"Creating constraint for {label} nodes") + r = session.run( + f"""CREATE CONSTRAINT IF NOT EXISTS + ON (n:{label}) ASSERT n.mcId IS UNIQUE;""", + ).data() + if r: + logger.warning( + f"Could not create constraint for {label} nodes: {r}" + ) From 7a83081b7b4c871f9f3fc4b323253fc23107df27 Mon Sep 17 00:00:00 2001 From: y1zhou Date: Wed, 15 Dec 2021 21:56:42 -0500 Subject: [PATCH 02/42] feat(metacyc): parse compartments and species --- metabolike/parser/metacyc.py | 90 +++++++++++++++++++++++++++++++++--- setup.cfg | 1 + 2 files changed, 85 insertions(+), 6 deletions(-) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index 6f1a4c1..22967f0 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -7,28 +7,41 @@ logger = logging.getLogger(__name__) +NODE_LABELS = ["Pathway", "Compartment", "Reaction", "Compound", "GeneProduct"] + class Metacyc: + """ + Converting MetaCyc files to a Neo4j database. + Documentation on the MetaCyc files and ofrmat FAQs can be found at: + + - MetaCyc data files download: https://metacyc.org/downloads.shtml + - MetaCyc file formats: http://bioinformatics.ai.sri.com/ptools/flatfile-format.html + - SBML FAQ: https://synonym.caltech.edu/documents/faq + """ + def __init__(self, filepath: Union[str, Path], neo4j_driver: db.Neo4jDriver): self.neo4j_driver = neo4j_driver + self.filepath = Path(filepath).expanduser().resolve() + def setup(self, force: bool = False): # Read SBML file - self.filepath = Path(filepath).expanduser().resolve() self.doc = self.read_sbml() self.model: libsbml.Model = self.doc.getModel() self.db_name: str = self.model.getId().lower() # Setup Neo4j database - self.setup_neo4j() + self.setup_graph_db(force=force) def read_sbml(self) -> libsbml.SBMLDocument: reader = libsbml.SBMLReader() - metacyc = reader.readSBML(self.filepath) + metacyc = reader.readSBMLFromFile(self.filepath) + logger.info("Finished reading SBML file") for i in range(metacyc.getNumErrors()): err = metacyc.getError(i) logger.warning( - "SBML reader raised %s at line %d, column %d: %s", + "SBML reader raised %s during parsing at line %d, column %d: %s", err.getSeverityAsString(), err.getLine(), err.getColumn(), @@ -37,7 +50,21 @@ def read_sbml(self) -> libsbml.SBMLDocument: return metacyc - def setup_neo4j(self, **kwargs): + def setup_graph_db(self, **kwargs): + """ + Create Neo4j database and set proper constraints. `Reaction` nodes are + central in the schema: + + ``` + Pathway + │ + Compartment───Reaction───Compound + │ │ │ + └───────────┼──────────┘ + │ + GeneProduct + ``` + """ # Create database try: db.create(self.neo4j_driver, self.db_name, **kwargs) @@ -57,7 +84,7 @@ def setup_neo4j(self, **kwargs): # Constraints automatically create indexes, so we don't need to # create them manually. - for label in ["Pathway", "Compartment", "Reaction", "Species"]: + for label in NODE_LABELS: logger.debug(f"Creating constraint for {label} nodes") r = session.run( f"""CREATE CONSTRAINT IF NOT EXISTS @@ -67,3 +94,54 @@ def setup_neo4j(self, **kwargs): logger.warning( f"Could not create constraint for {label} nodes: {r}" ) + + def sbml_to_graph(self): + """ + Populate Neo4j database with SBML data. + + Nodes are created for each SBML element using `MERGE` statements: + https://neo4j.com/docs/cypher-manual/current/clauses/merge/#merge-merge-with-on-create + """ + with self.neo4j_driver.session(database=self.db_name) as session: + # Compartments + for c in self.model.getListOfCompartments(): + c: libsbml.Compartment + session.write_transaction( + lambda tx: tx.run( + """ + MERGE (c:Compartment {mcId: $mcId}) + ON CREATE + SET c.displayName = $name; + """, + ), + mcId=c.getId(), + name=c.getName(), + ) + + # Compounds, i.e. metabolites, species + for s in self.model.getListOfSpecies(): + s: libsbml.Species + # Basic properties + session.write_transaction( + lambda tx: tx.run( + """ + MATCH (cpt:Compartment {mcId: $compartment}) + MERGE (c:Compound {mcId: $mcId})-[:hasCompartment]->(cpt) + ON CREATE + SET c.displayName = $name, + c.charge = $charge, + c.chemicalFormula = $formula, + c.boundaryCondition = $boundaryCondition, + c.hasOnlySubstanceUnits = $hasOnlySubstanceUnits, + c.constant = $constant; + """, + mcId=s.getId(), + name=s.getName(), + compartment=s.getCompartment(), + charge=s.getCharge(), + formula=s.getPlugin("fbc").getChemicalFormula(), + boundaryCondition=s.getBoundaryCondition(), # unchanged by reactions + hasOnlySubstanceUnits=s.getHasOnlySubstanceUnits(), + constant=s.getConstant(), + ) + ) diff --git a/setup.cfg b/setup.cfg index 5bbdc2f..6eb9621 100644 --- a/setup.cfg +++ b/setup.cfg @@ -23,6 +23,7 @@ install_requires = lark>=0.11.3,<1.0.0 pandas numpy + python-libsbml>=5.19.2 neo4j>=4.0.0 fastapi>=0.70.0,<0.71.0 uvicorn>=0.16.0,<0.17.0 From 639e6bbf5cf672e1f31878f2094c4abc13503216 Mon Sep 17 00:00:00 2001 From: y1zhou Date: Thu, 16 Dec 2021 23:42:14 -0500 Subject: [PATCH 03/42] feat(metacyc): prepare for parsing RDFs in annotation --- metabolike/parser/metacyc.py | 37 ++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index 22967f0..f84fff9 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -7,7 +7,34 @@ logger = logging.getLogger(__name__) -NODE_LABELS = ["Pathway", "Compartment", "Reaction", "Compound", "GeneProduct"] +# MIRIAM qualifiers (https://co.mbine.org/standards/qualifiers) +# libsbml.BiolQualifierType_toString +BIO_QUALIFIERS = { + 0: "is", + 1: "hasPart", + 2: "isPartOf", + 3: "isVersionOf", + 4: "hasVersion", + 5: "isHomologTo", + 6: "isDescribedBy", + 7: "isEncodedBy", + 8: "encodes", + 9: "occursIn", + 10: "hasProperty", + 11: "isPropertyOf", + 12: "hasTaxon", + 13: "unknown", +} + + +NODE_LABELS = [ + "Pathway", + "Compartment", + "Reaction", + "Compound", + "GeneProduct", + "RDF", +] class Metacyc: @@ -122,6 +149,7 @@ def sbml_to_graph(self): for s in self.model.getListOfSpecies(): s: libsbml.Species # Basic properties + mcid: str = s.getId() session.write_transaction( lambda tx: tx.run( """ @@ -135,7 +163,7 @@ def sbml_to_graph(self): c.hasOnlySubstanceUnits = $hasOnlySubstanceUnits, c.constant = $constant; """, - mcId=s.getId(), + mcId=mcid, name=s.getName(), compartment=s.getCompartment(), charge=s.getCharge(), @@ -145,3 +173,8 @@ def sbml_to_graph(self): constant=s.getConstant(), ) ) + + # RDF in Annotation are in the form of triples: + # the model component to annotate (subject), the relationship + # between the model component and the annotation (predicate), + # and a term describing the component (object). From b0f2f84f9804232b56f5cdada558d2fc04c1aed4 Mon Sep 17 00:00:00 2001 From: y1zhou Date: Fri, 17 Dec 2021 13:21:09 -0500 Subject: [PATCH 04/42] fix(metacyc): arguments should be passed within lambda function --- metabolike/parser/metacyc.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index f84fff9..ce519c8 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -131,6 +131,7 @@ def sbml_to_graph(self): """ with self.neo4j_driver.session(database=self.db_name) as session: # Compartments + logger.info("Creating Compartment nodes") for c in self.model.getListOfCompartments(): c: libsbml.Compartment session.write_transaction( @@ -140,16 +141,18 @@ def sbml_to_graph(self): ON CREATE SET c.displayName = $name; """, + mcId=c.getId(), + name=c.getName(), ), - mcId=c.getId(), - name=c.getName(), ) # Compounds, i.e. metabolites, species + logger.info("Creating Compound nodes") for s in self.model.getListOfSpecies(): s: libsbml.Species # Basic properties mcid: str = s.getId() + logger.debug(f"Creating Compound node {mcid}") session.write_transaction( lambda tx: tx.run( """ From 035232357f1ea448d9f3c9a2e89b21df0e3022ec Mon Sep 17 00:00:00 2001 From: y1zhou Date: Fri, 17 Dec 2021 13:22:11 -0500 Subject: [PATCH 05/42] feat(metacyc): add RDF nodes in the Annotation section --- metabolike/parser/metacyc.py | 54 +++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index ce519c8..cb696c3 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -1,6 +1,6 @@ import logging from pathlib import Path -from typing import Union +from typing import Dict, Tuple, Union import libsbml from metabolike import db @@ -181,3 +181,55 @@ def sbml_to_graph(self): # the model component to annotate (subject), the relationship # between the model component and the annotation (predicate), # and a term describing the component (object). + logger.debug(f"Adding RDF nodes for Compound {mcid}") + cvterms = s.getCVTerms() + for cvterm in cvterms: + # Get the biological qualifier type of the terms + cvterm: libsbml.CVTerm + bio_qual = BIO_QUALIFIERS[cvterm.getBiologicalQualifierType()] + # Get the content of each RDF term + uris = [ + self.split_uri(cvterm.getResourceURI(i)) + for i in range(cvterm.getNumResources()) + ] + uris = {x[0]: x[1] for x in uris} + # Generate the Cypher statements for each RDF term + uri_cypher = self.generate_cypher_for_uri(uris) + + session.write_transaction( + lambda tx: tx.run( + f""" + MATCH (c:Compound {{mcId: $mcId}}) + MERGE (n:RDF)<-[:{bio_qual}]-(c) + ON CREATE + SET {uri_cypher}; + """, + mcId=mcid, + **uris, + ) + ) + + @staticmethod + def split_uri(uri: str) -> Tuple[str, str]: + """Split a URI into a namespace and an annotation term. + + Args: + uri: URI to split. + + Returns: + Tuple of namespace and annotation term. + """ + # First three elements are from http://identifiers.org/ + res = uri.split("/")[3:] + resource, identifier = res[0], res[1:] + resource = "".join(x.capitalize() for x in resource.split(".")) + identifier = "".join(identifier) + return resource, identifier + + @staticmethod + def generate_cypher_for_uri(uris: Dict[str, str]) -> str: + cypher = [] + for label in uris.keys(): + cypher.append(f"n.{label} = ${label}") + + return ",".join(cypher) From 8656b004b20a78d970b96b3523340f3ea798fda6 Mon Sep 17 00:00:00 2001 From: y1zhou Date: Fri, 17 Dec 2021 14:34:45 -0500 Subject: [PATCH 06/42] refactor(metacyc): extract function for adding RDF nodes --- metabolike/db.py | 2 +- metabolike/parser/metacyc.py | 75 +++++++++++++++++++++--------------- 2 files changed, 46 insertions(+), 31 deletions(-) diff --git a/metabolike/db.py b/metabolike/db.py index fe1011d..6fb50ec 100644 --- a/metabolike/db.py +++ b/metabolike/db.py @@ -1,4 +1,4 @@ -from neo4j import GraphDatabase, Neo4jDriver, Transaction +from neo4j import GraphDatabase, Neo4jDriver, Session, Transaction from neo4j.work.result import Result diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index cb696c3..fe4cf07 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -1,6 +1,6 @@ import logging from pathlib import Path -from typing import Dict, Tuple, Union +from typing import Dict, List, Tuple, Union import libsbml from metabolike import db @@ -177,37 +177,52 @@ def sbml_to_graph(self): ) ) - # RDF in Annotation are in the form of triples: - # the model component to annotate (subject), the relationship - # between the model component and the annotation (predicate), - # and a term describing the component (object). + # Add RDF annotations logger.debug(f"Adding RDF nodes for Compound {mcid}") - cvterms = s.getCVTerms() + cvterms: List[libsbml.CVTerm] = s.getCVTerms() for cvterm in cvterms: - # Get the biological qualifier type of the terms - cvterm: libsbml.CVTerm - bio_qual = BIO_QUALIFIERS[cvterm.getBiologicalQualifierType()] - # Get the content of each RDF term - uris = [ - self.split_uri(cvterm.getResourceURI(i)) - for i in range(cvterm.getNumResources()) - ] - uris = {x[0]: x[1] for x in uris} - # Generate the Cypher statements for each RDF term - uri_cypher = self.generate_cypher_for_uri(uris) - - session.write_transaction( - lambda tx: tx.run( - f""" - MATCH (c:Compound {{mcId: $mcId}}) - MERGE (n:RDF)<-[:{bio_qual}]-(c) - ON CREATE - SET {uri_cypher}; - """, - mcId=mcid, - **uris, - ) - ) + self.add_rdf_node("Compound", mcid, cvterm, session) + + def add_rdf_node( + self, node_label: str, mcid: str, cvterm: libsbml.CVTerm, session: db.Session + ): + """Create RDF node and link it to the given SBML node. + + RDF in Annotation are in the form of triples: + the model component to annotate (subject), the relationship between + the model component and the annotation (predicate), and a term + describing the component (object). + + Args: + node_label: The label of the SBML node to annotate. Should be one + of the labels defined in `NODE_LABELS`. + mcid: The MetaCyc ID of the SBML node to annotate. + cvterm: The CVTerm that contains information to add to the RDF node. + session: The Neo4j session to use. + """ + # Get the biological qualifier type of the terms + bio_qual = BIO_QUALIFIERS[cvterm.getBiologicalQualifierType()] + # Get the content of each RDF term + uris = [ + self.split_uri(cvterm.getResourceURI(i)) + for i in range(cvterm.getNumResources()) + ] + uris = {x[0]: x[1] for x in uris} + # Generate the Cypher statements for each RDF term + uri_cypher = self.generate_cypher_for_uri(uris) + + session.write_transaction( + lambda tx: tx.run( + f""" + MATCH (c:{node_label} {{mcId: $mcId}}) + MERGE (n:RDF)<-[:{bio_qual}]-(c) + ON CREATE + SET {uri_cypher}; + """, + mcId=mcid, + **uris, + ) + ) @staticmethod def split_uri(uri: str) -> Tuple[str, str]: From 009f366e68b5a68794e29fa9686ccceeb4874766 Mon Sep 17 00:00:00 2001 From: y1zhou Date: Fri, 17 Dec 2021 14:40:08 -0500 Subject: [PATCH 07/42] fix(metacyc): always use metacyc ID for consistency --- metabolike/parser/metacyc.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index fe4cf07..409af7a 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -55,7 +55,7 @@ def setup(self, force: bool = False): # Read SBML file self.doc = self.read_sbml() self.model: libsbml.Model = self.doc.getModel() - self.db_name: str = self.model.getId().lower() + self.db_name: str = self.model.getMetaId().lower() # Setup Neo4j database self.setup_graph_db(force=force) @@ -141,7 +141,7 @@ def sbml_to_graph(self): ON CREATE SET c.displayName = $name; """, - mcId=c.getId(), + mcId=c.getMetaId(), name=c.getName(), ), ) @@ -151,7 +151,7 @@ def sbml_to_graph(self): for s in self.model.getListOfSpecies(): s: libsbml.Species # Basic properties - mcid: str = s.getId() + mcid: str = s.getMetaId() logger.debug(f"Creating Compound node {mcid}") session.write_transaction( lambda tx: tx.run( From 84a58c4d7dd4d64e0996a5ee3603666d6c39126a Mon Sep 17 00:00:00 2001 From: y1zhou Date: Fri, 17 Dec 2021 14:51:19 -0500 Subject: [PATCH 08/42] feat(metacyc): parse gene products and add to graph --- metabolike/parser/metacyc.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index 409af7a..0a533be 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -183,6 +183,31 @@ def sbml_to_graph(self): for cvterm in cvterms: self.add_rdf_node("Compound", mcid, cvterm, session) + # Gene products + logger.info("Creating GeneProduct nodes") + fbc: libsbml.FbcModelPlugin = self.model.getPlugin("fbc") + for gp in fbc.getListOfGeneProducts(): + gp: libsbml.GeneProduct + mcid = gp.getMetaId() + logger.debug(f"Creating GeneProduct node {mcid}") + session.write_transaction( + lambda tx: tx.run( + """ + MERGE (gp:GeneProduct {mcId: $mcId}) + ON CREATE + SET gp.displayName = $name, + gp.label = $label; + """, + mcId=mcid, + name=gp.getName(), + label=gp.getLabel(), + ), + ) + logger.debug(f"Adding RDF nodes for GeneProduct {mcid}") + cvterms: List[libsbml.CVTerm] = gp.getCVTerms() + for cvterm in cvterms: + self.add_rdf_node("GeneProduct", mcid, cvterm, session) + def add_rdf_node( self, node_label: str, mcid: str, cvterm: libsbml.CVTerm, session: db.Session ): From a10f367fe337d6d6900ffb6e6b4184adb7348f73 Mon Sep 17 00:00:00 2001 From: y1zhou Date: Sat, 18 Dec 2021 15:32:48 -0500 Subject: [PATCH 09/42] feat(metacyc): add reaction node basic properties and RDF links --- metabolike/parser/metacyc.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index 0a533be..9e7826f 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -208,6 +208,36 @@ def sbml_to_graph(self): for cvterm in cvterms: self.add_rdf_node("GeneProduct", mcid, cvterm, session) + # Reactions + logger.info("Creating Reaction nodes") + for r in self.model.getListOfReactions(): + r: libsbml.Reaction + mcid = r.getMetaId() + + # Basic properties + logger.debug(f"Creating Reaction node {mcid}") + session.write_transaction( + lambda tx: tx.run( + """ + MERGE (r:Reaction {mcId: $mcId}) + ON CREATE + SET r.displayName = $name, + r.reversible = $reversible, + r.fast = $fast; + """, + mcId=mcid, + name=r.getName(), + reversible=r.getReversible(), + fast=r.getFast(), + ), + ) + + # Add RDF nodes + logger.debug(f"Adding RDF nodes for Reaction {mcid}") + cvterms: List[libsbml.CVTerm] = r.getCVTerms() + for cvterm in cvterms: + self.add_rdf_node("Reaction", mcid, cvterm, session) + def add_rdf_node( self, node_label: str, mcid: str, cvterm: libsbml.CVTerm, session: db.Session ): From cd5a07f482379b73a802700e6e3c55ece61e1a18 Mon Sep 17 00:00:00 2001 From: y1zhou Date: Sat, 18 Dec 2021 15:33:49 -0500 Subject: [PATCH 10/42] feat(metacyc): add reactant and product links to reaction nodes --- metabolike/parser/metacyc.py | 48 ++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index 9e7826f..066cb98 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -238,6 +238,15 @@ def sbml_to_graph(self): for cvterm in cvterms: self.add_rdf_node("Reaction", mcid, cvterm, session) + # Add reactants and products + logger.debug(f"Adding reactants for Reaction {mcid}") + reactants = r.getListOfReactants() + self.link_reaction_to_compound(mcid, reactants, "Reactant", session) + + logger.debug(f"Adding products for Reaction {mcid}") + products = r.getListOfProducts() + self.link_reaction_to_compound(mcid, products, "Product", session) + def add_rdf_node( self, node_label: str, mcid: str, cvterm: libsbml.CVTerm, session: db.Session ): @@ -303,3 +312,42 @@ def generate_cypher_for_uri(uris: Dict[str, str]) -> str: cypher.append(f"n.{label} = ${label}") return ",".join(cypher) + + @staticmethod + def link_reaction_to_compound( + reaction_id: str, + compounds: List[libsbml.SpeciesReference], + compound_type: str, + session: db.Session, + ): + """Link reactants or products to a reaction. + + Args: + reaction_id: The MetaCyc ID of the reaction. + compounds: The list of compounds to link to the reaction. + compound_type: The type of compound to link to the reaction. Should + be one of "Reactant" or "Product". + session: The Neo4j session to use. + """ + if compound_type not in ["Reactant", "Product"]: + raise ValueError(f"Invalid compound type: {compound_type}") + for cpd in compounds: + logger.debug( + f"Adding {compound_type} {cpd.getSpecies()} to Reaction {reaction_id}" + ) + session.write_transaction( + lambda tx: tx.run( + f""" + MATCH (r:Reaction {{mcId: $reaction}}), + (c:Compound {{mcId: $compound}}) + MERGE (r)-[l:has{compound_type}]->(c) + ON CREATE + SET l.stoichiometry = $stoichiometry, + l.constant = $constant; + """, + reaction=reaction_id, + compound=cpd.getSpecies(), + stoichiometry=cpd.getStoichiometry(), + constant=cpd.getConstant(), + ) + ) From 9d21df37edaa04dbff18ed41f8a9676647c51578 Mon Sep 17 00:00:00 2001 From: y1zhou Date: Sat, 18 Dec 2021 21:08:40 -0500 Subject: [PATCH 11/42] feat(metacyc): add associated gene products to the reactions Also update sphinx docs --- README.rst | 3 +- docs/_static/metacyc_schema.svg | 4 ++ docs/index.rst | 7 ++ docs/source/metabolike.parser.rst | 8 +++ metabolike/parser/metacyc.py | 116 +++++++++++++++++++++++++++--- setup.cfg | 4 ++ 6 files changed, 129 insertions(+), 13 deletions(-) create mode 100644 docs/_static/metacyc_schema.svg diff --git a/README.rst b/README.rst index 840b375..244b996 100644 --- a/README.rst +++ b/README.rst @@ -1,9 +1,8 @@ Metabolic reprogramming Knowledgebase ======================== -A Python package that aggregates the data from BRENDA_, BioCyc_ and Reactome_ into one unified `graph database`_. +A Python package that aggregates the data from BRENDA_ and BioCyc_ into one unified `graph database`_. .. _BRENDA: https://brenda-enzymes.org/ .. _BioCyc: https://biocyc.org/ -.. _Reactome: https://reactome.org/ .. _graph database: https://neo4j.com/ diff --git a/docs/_static/metacyc_schema.svg b/docs/_static/metacyc_schema.svg new file mode 100644 index 0000000..a19c394 --- /dev/null +++ b/docs/_static/metacyc_schema.svg @@ -0,0 +1,4 @@ + + + +
<BioQualifier>
<BioQualifier>
hasReactant
/
hasProduct
hasReactant...
hasGeneProduct
hasGeneProduct
hasGeneProduct
hasGeneProduct
hasGeneProduct
hasGeneProduct
Reaction
Reaction
hasCompartment
hasCompartment
<BioQualifier>
<BioQualifier>
Compound
Compound
Compartment
Compartment
<BioQualifier>
<BioQualifier>
GeneProduct
GeneProduct
RDF
RDF
RDF
RDF
hasComponent
hasComponent
Complex
Complex
hasMember
hasMember
EntitySet
EntitySet
RDF
RDF
hasEvent
hasEvent
Pathway
Pathway
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/docs/index.rst b/docs/index.rst index e057356..6031223 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -6,6 +6,13 @@ Welcome to metabolike's documentation! ====================================== +The MetaCyc (BioCyc) database is imported to a graph database using the provided SBML file. + +.. image:: _static/metacyc_schema.svg + :alt: Schema of the MetaCyc database + :align: center + + .. toctree:: :maxdepth: 2 :caption: Contents: diff --git a/docs/source/metabolike.parser.rst b/docs/source/metabolike.parser.rst index d868013..e095de7 100644 --- a/docs/source/metabolike.parser.rst +++ b/docs/source/metabolike.parser.rst @@ -20,6 +20,14 @@ metabolike.parser.brenda\_transformer module :undoc-members: :show-inheritance: +metabolike.parser.metacyc module +-------------------------------- + +.. automodule:: metabolike.parser.metacyc + :members: + :undoc-members: + :show-inheritance: + Module contents --------------- diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index 066cb98..ecdfa0f 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -34,6 +34,8 @@ "Compound", "GeneProduct", "RDF", + "Complex", + "EntitySet", ] @@ -80,17 +82,7 @@ def read_sbml(self) -> libsbml.SBMLDocument: def setup_graph_db(self, **kwargs): """ Create Neo4j database and set proper constraints. `Reaction` nodes are - central in the schema: - - ``` - Pathway - │ - Compartment───Reaction───Compound - │ │ │ - └───────────┼──────────┘ - │ - GeneProduct - ``` + central in the schema (see README.rst). """ # Create database try: @@ -247,6 +239,17 @@ def sbml_to_graph(self): products = r.getListOfProducts() self.link_reaction_to_compound(mcid, products, "Product", session) + # Add associated gene products + # This could be complicated where the child nodes could be: + # 1. GeneProductRef + # 2. fbc:or -> GeneProductRef + # 3. fbc:and -> GeneProductRef + # 4. Arbitrarily nested fbc:or / fbc:and within cases 2 and 3 + gpa: libsbml.GeneProductAssociation = r.getPlugin( + "fbc" + ).getGeneProductAssociation() + self.add_gene_product_association_node(gpa, session, mcid) + def add_rdf_node( self, node_label: str, mcid: str, cvterm: libsbml.CVTerm, session: db.Session ): @@ -351,3 +354,94 @@ def link_reaction_to_compound( constant=cpd.getConstant(), ) ) + + def add_gene_product_association_node( + self, + gpa: libsbml.GeneProductAssociation, + session: db.Session, + source_id: str, + source_label: str = "Reaction", + edge_type: str = "hasGeneProduct", + node_index: int = 0, + ): + """ + Add gene products to a reaction. When the added node is FbcAnd or FbcOr, + recursively add the children. This means a custom `mcId` is constructed + for the `Complex` and `EntitySet` nodes corresponding to the `FbcAnd` + and `FbcOr` nodes, respectively. + + Args: + gpa: The GeneProductAssociation to add. + session: The Neo4j session to use. + source_id: The MetaCyc ID of the source node. This should be the + MetaCyc ID of the `Reaction` node + source_label: The label of the source node. + edge_type: The type of edge to add. Should be one of `hasGeneProduct`, + `hasComponent`, or `hasMember`. + node_index: The index of the current node. This is used to construct + the `mcId` of the `Complex` and `EntitySet` nodes. + """ + node = gpa.getAssociation() + # If there's no nested association, add the node directly + if isinstance(node, libsbml.GeneProductRef): + session.write_transaction( + lambda tx: tx.run( + f""" + MATCH (n:{source_label} {{mcId: $node_id}}), + (gp:GeneProduct {{mcId: $gp_id}}) + MERGE (gp)<-[l:{edge_type}]-(n) + """, + node_id=source_id, + gp_id=node.getGeneProduct(), + ) + ) + + # For nested associations, first add a `Complex` or `EntitySet` node, + # then recursively add the children + elif isinstance(node, libsbml.FbcAnd): + complex_id = f"{source_id}_complex{node_index}" + session.write_transaction( + lambda tx: tx.run( + f""" + MATCH (n:{source_label} {{mcId: $node_id}}), + (complex:Complex {{mcId: $complex_id}}) + MERGE (complex)<-[l:{edge_type}]-(n) + """, + node_id=source_id, + complex_id=complex_id, + ) + ) + for i in range(node.getNumAssociations()): + self.add_gene_product_association_node( + node.getAssociation(i), + session, + complex_id, + "Complex", + "hasComponent", + i, + ) + elif isinstance(node, libsbml.FbcOr): + eset_id = f"{source_id}_entityset{node_index}" + session.write_transaction( + lambda tx: tx.run( + f""" + MATCH (n:{source_label} {{mcId: $node_id}}), + (eset:EntitySet {{mcId: $eset_id}}) + MERGE (eset)<-[l:{edge_type}]-(n) + """, + node_id=source_id, + eset_id=eset_id, + ) + ) + for i in range(node.getNumAssociations()): + self.add_gene_product_association_node( + node.getAssociation(i), + session, + eset_id, + "EntitySet", + "hasMember", + i, + ) + else: + logging.error(f"Unhandled GeneProductAssociation type {type(node)}") + raise ValueError diff --git a/setup.cfg b/setup.cfg index 6eb9621..9c93bad 100644 --- a/setup.cfg +++ b/setup.cfg @@ -30,3 +30,7 @@ install_requires = [options.extras_require] tests = pytest +docs = + sphinx + sphinx-rtd-theme + sphinx-autodoc-typehints From bb1ce5549411eded183638cffebee4a5a49e734f Mon Sep 17 00:00:00 2001 From: y1zhou Date: Sat, 18 Dec 2021 21:40:39 -0500 Subject: [PATCH 12/42] fix(metacyc): arg passed into add_gene_product_association_node shouldn't be GeneProductAssociation the recursive method requires the input node to be the node that should be parsed directly --- metabolike/parser/metacyc.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index ecdfa0f..79a1023 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -248,7 +248,9 @@ def sbml_to_graph(self): gpa: libsbml.GeneProductAssociation = r.getPlugin( "fbc" ).getGeneProductAssociation() - self.add_gene_product_association_node(gpa, session, mcid) + if gpa is not None: + node = gpa.getAssociation() + self.add_gene_product_association_node(node, session, mcid) def add_rdf_node( self, node_label: str, mcid: str, cvterm: libsbml.CVTerm, session: db.Session @@ -357,7 +359,7 @@ def link_reaction_to_compound( def add_gene_product_association_node( self, - gpa: libsbml.GeneProductAssociation, + node: Union[libsbml.GeneProductRef, libsbml.FbcAnd, libsbml.FbcOr], session: db.Session, source_id: str, source_label: str = "Reaction", @@ -371,7 +373,7 @@ def add_gene_product_association_node( and `FbcOr` nodes, respectively. Args: - gpa: The GeneProductAssociation to add. + node: The GeneProductAssociation child node to add. session: The Neo4j session to use. source_id: The MetaCyc ID of the source node. This should be the MetaCyc ID of the `Reaction` node @@ -381,7 +383,6 @@ def add_gene_product_association_node( node_index: The index of the current node. This is used to construct the `mcId` of the `Complex` and `EntitySet` nodes. """ - node = gpa.getAssociation() # If there's no nested association, add the node directly if isinstance(node, libsbml.GeneProductRef): session.write_transaction( @@ -403,9 +404,8 @@ def add_gene_product_association_node( session.write_transaction( lambda tx: tx.run( f""" - MATCH (n:{source_label} {{mcId: $node_id}}), - (complex:Complex {{mcId: $complex_id}}) - MERGE (complex)<-[l:{edge_type}]-(n) + MATCH (n:{source_label} {{mcId: $node_id}}) + MERGE (:Complex {{mcId: $complex_id}})<-[l:{edge_type}]-(n) """, node_id=source_id, complex_id=complex_id, @@ -425,9 +425,8 @@ def add_gene_product_association_node( session.write_transaction( lambda tx: tx.run( f""" - MATCH (n:{source_label} {{mcId: $node_id}}), - (eset:EntitySet {{mcId: $eset_id}}) - MERGE (eset)<-[l:{edge_type}]-(n) + MATCH (n:{source_label} {{mcId: $node_id}}) + MERGE (:EntitySet {{mcId: $eset_id}})<-[l:{edge_type}]-(n) """, node_id=source_id, eset_id=eset_id, From ba4989b1ae9c4a5ee26e34c40d97c97d8c0336ac Mon Sep 17 00:00:00 2001 From: y1zhou Date: Sat, 18 Dec 2021 22:16:45 -0500 Subject: [PATCH 13/42] fix(metacyc): normalize URI before splitting --- metabolike/parser/metacyc.py | 1 + 1 file changed, 1 insertion(+) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index 79a1023..3d0b1c9 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -304,6 +304,7 @@ def split_uri(uri: str) -> Tuple[str, str]: Tuple of namespace and annotation term. """ # First three elements are from http://identifiers.org/ + uri = uri.replace("-", ".") # Ec-code res = uri.split("/")[3:] resource, identifier = res[0], res[1:] resource = "".join(x.capitalize() for x in resource.split(".")) From 6750be5a42ded78d4197f83094b195949e526a64 Mon Sep 17 00:00:00 2001 From: y1zhou Date: Tue, 21 Dec 2021 13:25:27 -0500 Subject: [PATCH 14/42] feat(metacyc): prepare for parsing pathways.dat file --- metabolike/parser/metacyc.py | 86 ++++++++++++++++++++++++++++++++++-- 1 file changed, 82 insertions(+), 4 deletions(-) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index 3d0b1c9..f906a1d 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -1,4 +1,5 @@ import logging +from itertools import groupby from pathlib import Path from typing import Dict, List, Tuple, Union @@ -26,7 +27,6 @@ 13: "unknown", } - NODE_LABELS = [ "Pathway", "Compartment", @@ -49,9 +49,25 @@ class Metacyc: - SBML FAQ: https://synonym.caltech.edu/documents/faq """ - def __init__(self, filepath: Union[str, Path], neo4j_driver: db.Neo4jDriver): + def __init__( + self, filepath: Union[str, Path], neo4j_driver: db.Neo4jDriver, **kwargs + ): + """ + Args: + filepath: The path to the MetaCyc SBML file to convert. + neo4j_driver: A Neo4jDriver instance. + pw_filepath (optional): The path to the pathway.dat file. If given, + the file will be parsed and pathway links will be added to the + Reaction nodes. + """ + # File paths + self.filepath = self._validate_path(filepath) + pw_filepath = kwargs.get("pw_filepath") + if pw_filepath: + self.pw_filepath = self._validate_path(pw_filepath) + + # Neo4j driver self.neo4j_driver = neo4j_driver - self.filepath = Path(filepath).expanduser().resolve() def setup(self, force: bool = False): # Read SBML file @@ -59,8 +75,25 @@ def setup(self, force: bool = False): self.model: libsbml.Model = self.doc.getModel() self.db_name: str = self.model.getMetaId().lower() - # Setup Neo4j database + # Setup Neo4j database and populate it with data self.setup_graph_db(force=force) + self.sbml_to_graph() + + # Read pathways file if given + if self.pw_filepath: + # `rb` to bypass the 0xa9 character + with open(self.pw_filepath, "rb") as f: + lines = [l.decode("utf-8", "ignore").strip() for l in f] + # Also remove comments on the top of the file + lines = [l for l in lines if not l.startswith("#")] + + # Split entries based on `//` + doc = [list(g) for k, g in groupby(lines, key=lambda x: x != "//") if k] + doc = [x for x in doc if len(x) > 1] # Remove empty entries + pathways = {} + for pw in doc: + pw_id, pw_data = self.read_pathways(pw) + pathways[pw_id] = pw_data def read_sbml(self) -> libsbml.SBMLDocument: reader = libsbml.SBMLReader() @@ -79,6 +112,42 @@ def read_sbml(self) -> libsbml.SBMLDocument: return metacyc + @staticmethod + def read_pathways(lines: List[str]) -> Tuple[str, Dict[str, Union[str, List[str]]]]: + """ + Parse one entry from an attribute-value file. + + Args: + lines: A list of lines from an entry of the file. + """ + pw_id, pathway = "", {} + for line in lines: + # / marks the continuation of the previous line + if line.startswith("/"): + # TODO + continue + + # ^ marks an annotation-value pair where the annotation is a + # label attached to the previous attribute + elif line.startswith("^"): + # TODO + continue + + # Otherwise we have a regular attribute-value pair + else: + attr, val = line.split(" - ") + # Treat `UNIQUE-ID` as a special case as we need to return + # the pathway ID separately + if attr == "UNIQUE-ID": + pw_id = val + continue + # TODO + + if not pw_id: + raise ValueError("Pathway ID not found") + + return pw_id, pathway + def setup_graph_db(self, **kwargs): """ Create Neo4j database and set proper constraints. `Reaction` nodes are @@ -445,3 +514,12 @@ def add_gene_product_association_node( else: logging.error(f"Unhandled GeneProductAssociation type {type(node)}") raise ValueError + + @staticmethod + def _validate_path(filepath: Union[str, Path]) -> Path: + f = Path(filepath).expanduser().resolve() + if not f.is_file(): + logger.error(f"File does not exist: {f}") + raise FileNotFoundError(str(f)) + + return f From bc84361ef9de17be216678e7c941dc10ed8f1259 Mon Sep 17 00:00:00 2001 From: y1zhou Date: Tue, 21 Dec 2021 13:25:53 -0500 Subject: [PATCH 15/42] test(metacyc): glycolysis pathway test files --- tests/data/metabolic-reactions.sbml | 4003 +++++++++++++++++++++++++++ tests/data/pathways.dat | 145 + 2 files changed, 4148 insertions(+) create mode 100644 tests/data/metabolic-reactions.sbml create mode 100644 tests/data/pathways.dat diff --git a/tests/data/metabolic-reactions.sbml b/tests/data/metabolic-reactions.sbml new file mode 100644 index 0000000..2791832 --- /dev/null +++ b/tests/data/metabolic-reactions.sbml @@ -0,0 +1,4003 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/data/pathways.dat b/tests/data/pathways.dat new file mode 100644 index 0000000..97cce2e --- /dev/null +++ b/tests/data/pathways.dat @@ -0,0 +1,145 @@ +# Copyright © SRI International 1999-2020, Marine Biological Laboratory 1998-2001, DoubleTwist Inc 1998-1999. All Rights Reserved. +# +# Authors: +# Ron Caspi +# Carol A Fulcher +# Anamika Kothari +# Markus Krummenacker +# Mario Latendresse +# Suzanne Paley +# Pallavi Subhraveti +# Peifen Zhang +# Sue Rhee +# Hartmut Foerster +# Lukas Mueller +# Peter D Karp +# +# Please see the license agreement regarding the use of and distribution of this file. +# The format of this file is defined at http://bioinformatics.ai.sri.com/ptools/flatfile-format.html . +# +# Filename: /home/kaffir2/brg/aic/pgdbs/tier1/metacyc/25.5/data/pathways.dat +# +# Organism: MetaCyc +# Database: MetaCyc +# Version: 25.5 +# Date and time generated: July 21, 2021, 14:14:55 +# +UNIQUE-ID - GLYCOLYSIS +TYPES - GLYCOLYSIS-VARIANTS +COMMON-NAME - glycolysis I (from glucose 6-phosphate) +CITATIONS - 28128209 +CITATIONS - EcoSal:EV-EXP-TAS:3386618200:caspi +COMMENT - General Background +/ +/Glycolysis, which was first studied as a pathway for the utilization of glucose, is one of the major pathways of central metabolism, the other two being the |FRAME:PENTOSE-P-PWY| and the |FRAME:TCA "TCA cycle"|. In organisms that possess a glycolysis pathway, it is essential under all conditions of growth, because it produces six of the 13 precursor metabolites that are the starting materials for the biosynthesis of building blocks for macromolecules and other needed small molecules (the six compounds are |FRAME:GLC-6-P|, |FRAME:FRUCTOSE-6P|, |FRAME:DIHYDROXY-ACETONE-PHOSPHATE|, |FRAME:G3P|, |FRAME:PHOSPHO-ENOL-PYRUVATE|, and |FRAME: PYRUVATE|). While not universal, glycolysis is very common. +/ +/Even though glycolysis is often described starting with glucose, other hexoses (e.g. fructose) can also serve as input (as its name implies - glycose is a general term for simple sugars). +/ +/Glycolysis has evolved to fulfill two essential functions: +/ +/i) it oxidizes hexoses to generate |FRAME:ATP|, reductants and |FRAME:PYRUVATE|, and +/ +/ii) being an amphibolic pathway (pathway that involves both catabolism and anabolism), it can reversibly produce hexoses from various low-molecular weight molecules. +/ +/Because various degradation pathways feed into glycolysis at many different points, glycolysis or portions of it run in the forward or reverse direction, depending on the carbon source being utilized, in order to satisfy the cell's need for precursor metabolites and energy. +/This switching of direction is possible because all but two of the enzymatic reactions comprising glycolysis are reversible, and the conversions catalyzed by the two exceptions are rendered functionally reversible by other enzymes (|FRAME:F16B-CPLX "fructose-1,6-bisphosphatase"| and |FRAME:PEPSYNTH-CPLX|) that catalyze different irreversible reactions flowing in the opposite direction. +/ +/About This Pathway +/ +/This pathway diagram describes the well characterized glycolysis pathway of the bacterium |FRAME: TAX-562| growing with |FRAME: GLC| as a source of carbon and energy. Glucose is not shown here as a component of glycolysis because +/when used by |FRAME: TAX-562| , glucose enters the cell via a phosphotransferase system (transport of glucose, +/|FRAME: CPLX-157|), and the first intracellular species, therefore, is |FRAME: GLC-6-P|. +/ +/|FRAME:TAX-562| does constitutively produce |FRAME:GLUCOKIN-MONOMER| (the intracellular enzyme that converts glucose to glucose-6-phosphate) but it is not needed for the utilization of either exogenous or endogenous glucose |CITS: [9023215]|. It may be required to supplement levels of glucose 6-phosphate under anabolic stress conditions |CITS: [7786044]|. +/ +/Other substrates may enter glycolysis at different stages. For example, the sugars and sugar alcohols |FRAME:ALLOSE|, |FRAME:SORBOSE|, |FRAME:MANNITOL|, |FRAME:SORBITOL|, |FRAME:MANNOSE| and |FRAME:SUCROSE|, which are processed into |FRAME: FRUCTOSE-6P|, enter the pathway at that stage (see |FRAME: PWY-5484|). +/ +/For reviews, please see: Romeo, T. and J. L. Snoep, |CITS: [EcoSal]| module 3.5.1.; Fraenkel, D. G. |CITS: [colisalII]| p. 189-198. +CREDITS - O0-3 +CREDITS - ingraham +DBLINKS - (ECOCYC "GLYCOLYSIS" NIL |paley| 3392397157 NIL NIL) +DBLINKS - (ARACYC "GLYCOLYSIS" NIL |green| 3381011399 NIL NIL) +ENZYMES-NOT-USED - ALKAPHOSPHA-CPLX +ENZYMES-NOT-USED - AT2G36530-MONOMER +ENZYMES-NOT-USED - MONOMER-9165 +ENZYMES-NOT-USED - AT3G55440-MONOMER +ENZYMES-NOT-USED - CPLX-5403 +ENZYMES-NOT-USED - MONOMER-9123 +ENZYMES-NOT-USED - MONOMER-12859 +ENZYMES-NOT-USED - MONOMER-12710 +ENZYMES-NOT-USED - CPLX-5521 +ENZYMES-NOT-USED - CPLX-5522 +ENZYMES-NOT-USED - MONOMER-12898 +ENZYMES-NOT-USED - MONOMER-12902 +ENZYMES-NOT-USED - MONOMER-12840 +ENZYMES-NOT-USED - MONOMER-12841 +ENZYMES-NOT-USED - MONOMER-2301 +IN-PATHWAY - GLYCOLYSIS-E-D +IN-PATHWAY - GLYCOLYSIS-TCA-GLYOX-BYPASS +INSTANCE-NAME-TEMPLATE - PWY-* +KEY-NON-REACTIONS - (AND GLUCOKIN-RXN) +PATHWAY-LINKS - (|D-glucopyranose-6-phosphate| (PWY-6724 . :INCOMING) (TRANS-RXN-157 . :INCOMING)) +PATHWAY-LINKS - (PYRUVATE PYRUVDEHYD-PWY TCA-GLYOX-BYPASS |Amino-Acid-Biosynthesis|) +PATHWAY-LINKS - (G3P SERSYN-PWY) +PATHWAY-LINKS - (PHOSPHO-ENOL-PYRUVATE FERMENTATION-PWY) +PATHWAY-LINKS - (FRUCTOSE-6P SORBDEG-PWY SUCUTIL-PWY P302-PWY PWY-3861 MANNCAT-PWY PWY0-44) +PREDECESSORS - ("2PGADEHYDRAT-RXN" "RXN-15513") +PREDECESSORS - ("RXN-15513" "PHOSGLYPHOS-RXN") +PREDECESSORS - ("F16BDEPHOS-RXN" "6PFRUCTPHOS-RXN") +PREDECESSORS - ("6PFRUCTPHOS-RXN" "F16BDEPHOS-RXN") +PREDECESSORS - ("PEPDEPHOS-RXN" "PEPSYNTH-RXN") +PREDECESSORS - ("PEPSYNTH-RXN" "PEPDEPHOS-RXN") +PREDECESSORS - ("PEPDEPHOS-RXN" "2PGADEHYDRAT-RXN") +PREDECESSORS - ("2PGADEHYDRAT-RXN" "3PGAREARR-RXN") +PREDECESSORS - ("3PGAREARR-RXN" "PHOSGLYPHOS-RXN") +PREDECESSORS - ("PHOSGLYPHOS-RXN" "GAPOXNPHOSPHN-RXN") +PREDECESSORS - ("GAPOXNPHOSPHN-RXN" "TRIOSEPISOMERIZATION-RXN" "F16ALDOLASE-RXN") +PREDECESSORS - ("TRIOSEPISOMERIZATION-RXN" "F16ALDOLASE-RXN") +PREDECESSORS - ("F16ALDOLASE-RXN" "6PFRUCTPHOS-RXN") +PREDECESSORS - ("6PFRUCTPHOS-RXN" "PGLUCISOM-RXN") +PREDECESSORS - ("PGLUCISOM-RXN") +PRIMARY-PRODUCTS - PYRUVATE +PRIMARY-REACTANTS - D-glucopyranose-6-phosphate +REACTION-LAYOUT - (RXN-15513 (:LEFT-PRIMARIES 2-PG) (:DIRECTION :R2L) (:RIGHT-PRIMARIES G3P)) +REACTION-LAYOUT - (F16BDEPHOS-RXN (:LEFT-PRIMARIES FRUCTOSE-16-DIPHOSPHATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (PEPSYNTH-RXN (:LEFT-PRIMARIES PYRUVATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (PGLUCISOM-RXN (:LEFT-PRIMARIES D-glucopyranose-6-phosphate) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (6PFRUCTPHOS-RXN (:LEFT-PRIMARIES FRUCTOSE-6P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-16-DIPHOSPHATE)) +REACTION-LAYOUT - (F16ALDOLASE-RXN (:LEFT-PRIMARIES FRUCTOSE-16-DIPHOSPHATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES GAP DIHYDROXY-ACETONE-PHOSPHATE)) +REACTION-LAYOUT - (TRIOSEPISOMERIZATION-RXN (:LEFT-PRIMARIES GAP) (:DIRECTION :R2L) (:RIGHT-PRIMARIES DIHYDROXY-ACETONE-PHOSPHATE)) +REACTION-LAYOUT - (GAPOXNPHOSPHN-RXN (:LEFT-PRIMARIES GAP) (:DIRECTION :L2R) (:RIGHT-PRIMARIES DPG)) +REACTION-LAYOUT - (PHOSGLYPHOS-RXN (:LEFT-PRIMARIES G3P) (:DIRECTION :R2L) (:RIGHT-PRIMARIES DPG)) +REACTION-LAYOUT - (3PGAREARR-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :R2L) (:RIGHT-PRIMARIES G3P)) +REACTION-LAYOUT - (2PGADEHYDRAT-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :L2R) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (PEPDEPHOS-RXN (:LEFT-PRIMARIES PYRUVATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LIST - RXN-15513 +REACTION-LIST - F16BDEPHOS-RXN +REACTION-LIST - PEPSYNTH-RXN +REACTION-LIST - PGLUCISOM-RXN +REACTION-LIST - 6PFRUCTPHOS-RXN +REACTION-LIST - F16ALDOLASE-RXN +REACTION-LIST - TRIOSEPISOMERIZATION-RXN +REACTION-LIST - GAPOXNPHOSPHN-RXN +REACTION-LIST - PHOSGLYPHOS-RXN +REACTION-LIST - 3PGAREARR-RXN +REACTION-LIST - 2PGADEHYDRAT-RXN +REACTION-LIST - PEPDEPHOS-RXN +SPECIES - TAX-3708 +SPECIES - TAX-511145 +SPECIES - TAX-272634 +SPECIES - TAX-3988 +SPECIES - TAX-4932 +SPECIES - TAX-3562 +SPECIES - TAX-4577 +SPECIES - ORG-5993 +SUPER-PATHWAYS - GLYCOLYSIS-E-D +SUPER-PATHWAYS - GLYCOLYSIS-TCA-GLYOX-BYPASS +SYNONYMS - Embden-Meyerhof pathway +SYNONYMS - Embden-Meyerhof-Parnas pathway +SYNONYMS - EMP pathway +SYNONYMS - glycolysis (plastidic) +TAXONOMIC-RANGE - TAX-2759 +TAXONOMIC-RANGE - TAX-2 +TAXONOMIC-RANGE - TAX-2157 +// + From 190d5f1fd6792d515ec2a86f8fce5c13cb115168 Mon Sep 17 00:00:00 2001 From: y1zhou Date: Fri, 14 Jan 2022 16:56:28 -0500 Subject: [PATCH 16/42] refactor(metacyc): make it clear which files should be parsed The SBML file must be given. Reaction and pathway files are optional. The corresponding functions should read the dat files and add relevant information to the graph database. --- metabolike/parser/metacyc.py | 292 +++++++++++++++++++---------------- 1 file changed, 159 insertions(+), 133 deletions(-) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index f906a1d..ba754f2 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -1,7 +1,7 @@ import logging from itertools import groupby from pathlib import Path -from typing import Dict, List, Tuple, Union +from typing import Dict, List, Optional, Tuple, Union import libsbml from metabolike import db @@ -42,7 +42,7 @@ class Metacyc: """ Converting MetaCyc files to a Neo4j database. - Documentation on the MetaCyc files and ofrmat FAQs can be found at: + Documentation on the MetaCyc files and format FAQs can be found at: - MetaCyc data files download: https://metacyc.org/downloads.shtml - MetaCyc file formats: http://bioinformatics.ai.sri.com/ptools/flatfile-format.html @@ -50,103 +50,58 @@ class Metacyc: """ def __init__( - self, filepath: Union[str, Path], neo4j_driver: db.Neo4jDriver, **kwargs + self, + sbml: Union[str, Path], + neo4j_driver: db.Neo4jDriver, + db_name: Optional[str] = None, + reactions: Optional[Union[str, Path]] = None, + pathways: Optional[Union[str, Path]] = None, ): """ Args: - filepath: The path to the MetaCyc SBML file to convert. + sbml: The path to the MetaCyc SBML file to convert. neo4j_driver: A Neo4jDriver instance. - pw_filepath (optional): The path to the pathway.dat file. If given, + db_name: The name of the database to create. If None, the ``metaid`` + attribute of the SBML file is used. + reactions: The path to the ``reaction.dat`` file. If given, + the file will be parsed and extra annotation on ``Reaction`` + nodes will be added. + pathways: The path to the ``pathway.dat`` file. If given, the file will be parsed and pathway links will be added to the - Reaction nodes. + ``Reaction`` nodes. """ - # File paths - self.filepath = self._validate_path(filepath) - pw_filepath = kwargs.get("pw_filepath") - if pw_filepath: - self.pw_filepath = self._validate_path(pw_filepath) - # Neo4j driver self.neo4j_driver = neo4j_driver + # File paths + self.input_files = { + "sbml": self._validate_path(sbml), + "reactions": self._validate_path(reactions), + "pathways": self._validate_path(pathways), + } + + # Misc variables + if db_name: + self.db_name = db_name + def setup(self, force: bool = False): # Read SBML file - self.doc = self.read_sbml() - self.model: libsbml.Model = self.doc.getModel() - self.db_name: str = self.model.getMetaId().lower() + doc = self._read_sbml() + model: libsbml.Model = doc.getModel() + if not self.db_name: + self.db_name: str = model.getMetaId().lower() # Setup Neo4j database and populate it with data self.setup_graph_db(force=force) - self.sbml_to_graph() + self.sbml_to_graph(model) # Read pathways file if given - if self.pw_filepath: - # `rb` to bypass the 0xa9 character - with open(self.pw_filepath, "rb") as f: - lines = [l.decode("utf-8", "ignore").strip() for l in f] - # Also remove comments on the top of the file - lines = [l for l in lines if not l.startswith("#")] - - # Split entries based on `//` - doc = [list(g) for k, g in groupby(lines, key=lambda x: x != "//") if k] - doc = [x for x in doc if len(x) > 1] # Remove empty entries - pathways = {} - for pw in doc: - pw_id, pw_data = self.read_pathways(pw) - pathways[pw_id] = pw_data - - def read_sbml(self) -> libsbml.SBMLDocument: - reader = libsbml.SBMLReader() - metacyc = reader.readSBMLFromFile(self.filepath) - logger.info("Finished reading SBML file") - - for i in range(metacyc.getNumErrors()): - err = metacyc.getError(i) - logger.warning( - "SBML reader raised %s during parsing at line %d, column %d: %s", - err.getSeverityAsString(), - err.getLine(), - err.getColumn(), - err.getMessage().replace("\n", " "), - ) - - return metacyc - - @staticmethod - def read_pathways(lines: List[str]) -> Tuple[str, Dict[str, Union[str, List[str]]]]: - """ - Parse one entry from an attribute-value file. - - Args: - lines: A list of lines from an entry of the file. - """ - pw_id, pathway = "", {} - for line in lines: - # / marks the continuation of the previous line - if line.startswith("/"): - # TODO - continue - - # ^ marks an annotation-value pair where the annotation is a - # label attached to the previous attribute - elif line.startswith("^"): - # TODO - continue - - # Otherwise we have a regular attribute-value pair - else: - attr, val = line.split(" - ") - # Treat `UNIQUE-ID` as a special case as we need to return - # the pathway ID separately - if attr == "UNIQUE-ID": - pw_id = val - continue - # TODO - - if not pw_id: - raise ValueError("Pathway ID not found") - - return pw_id, pathway + if self.input_files["pathways"]: + logger.info("Creating pathway links") + docs = self._read_dat_file(self.input_files["pathways"]) + for pw in docs: + pw_id = self.pathway_to_graph(pw) + logger.debug(f"Pathway {pw_id} added to graph") def setup_graph_db(self, **kwargs): """ @@ -183,7 +138,7 @@ def setup_graph_db(self, **kwargs): f"Could not create constraint for {label} nodes: {r}" ) - def sbml_to_graph(self): + def sbml_to_graph(self, model: libsbml.Model): """ Populate Neo4j database with SBML data. @@ -193,7 +148,7 @@ def sbml_to_graph(self): with self.neo4j_driver.session(database=self.db_name) as session: # Compartments logger.info("Creating Compartment nodes") - for c in self.model.getListOfCompartments(): + for c in model.getListOfCompartments(): c: libsbml.Compartment session.write_transaction( lambda tx: tx.run( @@ -209,7 +164,7 @@ def sbml_to_graph(self): # Compounds, i.e. metabolites, species logger.info("Creating Compound nodes") - for s in self.model.getListOfSpecies(): + for s in model.getListOfSpecies(): s: libsbml.Species # Basic properties mcid: str = s.getMetaId() @@ -242,11 +197,11 @@ def sbml_to_graph(self): logger.debug(f"Adding RDF nodes for Compound {mcid}") cvterms: List[libsbml.CVTerm] = s.getCVTerms() for cvterm in cvterms: - self.add_rdf_node("Compound", mcid, cvterm, session) + self._add_sbml_rdf_node("Compound", mcid, cvterm, session) # Gene products logger.info("Creating GeneProduct nodes") - fbc: libsbml.FbcModelPlugin = self.model.getPlugin("fbc") + fbc: libsbml.FbcModelPlugin = model.getPlugin("fbc") for gp in fbc.getListOfGeneProducts(): gp: libsbml.GeneProduct mcid = gp.getMetaId() @@ -267,11 +222,11 @@ def sbml_to_graph(self): logger.debug(f"Adding RDF nodes for GeneProduct {mcid}") cvterms: List[libsbml.CVTerm] = gp.getCVTerms() for cvterm in cvterms: - self.add_rdf_node("GeneProduct", mcid, cvterm, session) + self._add_sbml_rdf_node("GeneProduct", mcid, cvterm, session) # Reactions logger.info("Creating Reaction nodes") - for r in self.model.getListOfReactions(): + for r in model.getListOfReactions(): r: libsbml.Reaction mcid = r.getMetaId() @@ -297,16 +252,16 @@ def sbml_to_graph(self): logger.debug(f"Adding RDF nodes for Reaction {mcid}") cvterms: List[libsbml.CVTerm] = r.getCVTerms() for cvterm in cvterms: - self.add_rdf_node("Reaction", mcid, cvterm, session) + self._add_sbml_rdf_node("Reaction", mcid, cvterm, session) # Add reactants and products logger.debug(f"Adding reactants for Reaction {mcid}") reactants = r.getListOfReactants() - self.link_reaction_to_compound(mcid, reactants, "Reactant", session) + self._link_reaction_to_compound(mcid, reactants, "Reactant", session) logger.debug(f"Adding products for Reaction {mcid}") products = r.getListOfProducts() - self.link_reaction_to_compound(mcid, products, "Product", session) + self._link_reaction_to_compound(mcid, products, "Product", session) # Add associated gene products # This could be complicated where the child nodes could be: @@ -319,9 +274,76 @@ def sbml_to_graph(self): ).getGeneProductAssociation() if gpa is not None: node = gpa.getAssociation() - self.add_gene_product_association_node(node, session, mcid) + self._add_sbml_gene_product_association_node(node, session, mcid) + + def pathway_to_graph(self, lines: List[str]) -> str: + """ + Parse one entry from the pathway attribute-value file, and add relevant + information to the graph database in one transaction. + + Args: + lines: A list of lines from an entry of the file. + + Returns: + A string containing the ID of the pathway. + """ + pw_id = "" + for line in lines: + # / marks the continuation of the previous line + if line.startswith("/"): + # TODO + continue + + # ^ marks an annotation-value pair where the annotation is a + # label attached to the previous attribute + elif line.startswith("^"): + # TODO + continue + + # Otherwise we have a regular attribute-value pair + else: + attr, val = line.split(" - ", maxsplit=1) + # Treat `UNIQUE-ID` as a special case as we need to return + # the pathway ID separately + if attr == "UNIQUE-ID": + pw_id = val + continue + # TODO - def add_rdf_node( + if not pw_id: + raise ValueError("Pathway ID not found") + + return pw_id + + @staticmethod + def _validate_path(filepath: Optional[Union[str, Path]]) -> Optional[Path]: + if not filepath: + return None + f = Path(filepath).expanduser().resolve() + if not f.is_file(): + logger.error(f"File does not exist: {f}") + raise FileNotFoundError(str(f)) + + return f + + def _read_sbml(self) -> libsbml.SBMLDocument: + reader = libsbml.SBMLReader() + metacyc = reader.readSBMLFromFile(self.input_files["sbml"]) + logger.info("Finished reading SBML file") + + for i in range(metacyc.getNumErrors()): + err = metacyc.getError(i) + logger.warning( + "SBML reader raised %s during parsing at line %d, column %d: %s", + err.getSeverityAsString(), + err.getLine(), + err.getColumn(), + err.getMessage().replace("\n", " "), + ) + + return metacyc + + def _add_sbml_rdf_node( self, node_label: str, mcid: str, cvterm: libsbml.CVTerm, session: db.Session ): """Create RDF node and link it to the given SBML node. @@ -342,12 +364,12 @@ def add_rdf_node( bio_qual = BIO_QUALIFIERS[cvterm.getBiologicalQualifierType()] # Get the content of each RDF term uris = [ - self.split_uri(cvterm.getResourceURI(i)) + self._split_uri(cvterm.getResourceURI(i)) for i in range(cvterm.getNumResources()) ] uris = {x[0]: x[1] for x in uris} # Generate the Cypher statements for each RDF term - uri_cypher = self.generate_cypher_for_uri(uris) + uri_cypher = self._generate_cypher_for_uri(uris) session.write_transaction( lambda tx: tx.run( @@ -363,33 +385,7 @@ def add_rdf_node( ) @staticmethod - def split_uri(uri: str) -> Tuple[str, str]: - """Split a URI into a namespace and an annotation term. - - Args: - uri: URI to split. - - Returns: - Tuple of namespace and annotation term. - """ - # First three elements are from http://identifiers.org/ - uri = uri.replace("-", ".") # Ec-code - res = uri.split("/")[3:] - resource, identifier = res[0], res[1:] - resource = "".join(x.capitalize() for x in resource.split(".")) - identifier = "".join(identifier) - return resource, identifier - - @staticmethod - def generate_cypher_for_uri(uris: Dict[str, str]) -> str: - cypher = [] - for label in uris.keys(): - cypher.append(f"n.{label} = ${label}") - - return ",".join(cypher) - - @staticmethod - def link_reaction_to_compound( + def _link_reaction_to_compound( reaction_id: str, compounds: List[libsbml.SpeciesReference], compound_type: str, @@ -427,7 +423,7 @@ def link_reaction_to_compound( ) ) - def add_gene_product_association_node( + def _add_sbml_gene_product_association_node( self, node: Union[libsbml.GeneProductRef, libsbml.FbcAnd, libsbml.FbcOr], session: db.Session, @@ -482,7 +478,7 @@ def add_gene_product_association_node( ) ) for i in range(node.getNumAssociations()): - self.add_gene_product_association_node( + self._add_sbml_gene_product_association_node( node.getAssociation(i), session, complex_id, @@ -503,7 +499,7 @@ def add_gene_product_association_node( ) ) for i in range(node.getNumAssociations()): - self.add_gene_product_association_node( + self._add_sbml_gene_product_association_node( node.getAssociation(i), session, eset_id, @@ -516,10 +512,40 @@ def add_gene_product_association_node( raise ValueError @staticmethod - def _validate_path(filepath: Union[str, Path]) -> Path: - f = Path(filepath).expanduser().resolve() - if not f.is_file(): - logger.error(f"File does not exist: {f}") - raise FileNotFoundError(str(f)) + def _split_uri(uri: str) -> Tuple[str, str]: + """Split a URI into a namespace and an annotation term. - return f + Args: + uri: URI to split. + + Returns: + Tuple of namespace and annotation term. + """ + # First three elements are from http://identifiers.org/ + uri = uri.replace("-", ".") # Ec-code + res = uri.split("/")[3:] + resource, identifier = res[0], res[1:] + resource = "".join(x.capitalize() for x in resource.split(".")) + identifier = "".join(identifier) + return resource, identifier + + @staticmethod + def _generate_cypher_for_uri(uris: Dict[str, str]) -> str: + cypher = [] + for label in uris.keys(): + cypher.append(f"n.{label} = ${label}") + + return ",".join(cypher) + + @staticmethod + def _read_dat_file(filepath: Union[str, Path]) -> List[List[str]]: + # `rb` to bypass the 0xa9 character + with open(filepath, "rb") as f: + lines = [l.decode("utf-8", "ignore").strip() for l in f] + # Also remove comments on the top of the file + lines = [l for l in lines if not l.startswith("#")] + + # Split entries based on `//` + doc = [list(g) for k, g in groupby(lines, key=lambda x: x != "//") if k] + doc = [x for x in doc if len(x) > 1] # Remove empty entries + return doc From c8d038292e36b756bd2d0fe9d64d15e2dc833adb Mon Sep 17 00:00:00 2001 From: y1zhou Date: Sat, 15 Jan 2022 22:42:37 -0500 Subject: [PATCH 17/42] test(metacyc): reaction.dat file containing glycolysis reactions --- tests/data/reactions.dat | 1116 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 1116 insertions(+) create mode 100644 tests/data/reactions.dat diff --git a/tests/data/reactions.dat b/tests/data/reactions.dat new file mode 100644 index 0000000..9d254e6 --- /dev/null +++ b/tests/data/reactions.dat @@ -0,0 +1,1116 @@ +UNIQUE-ID - F16BDEPHOS-RXN +TYPES - Chemical-Reactions +TYPES - Small-Molecule-Reactions +ATOM-MAPPINGS - (:NO-HYDROGEN-ENCODING (0 1 2 3 4 5 7 8 9 11 10 12 18 16 17 13 6 14 15 20 19) ((("FRUCTOSE-6P" 0 15) ("Pi" 16 20)) (("FRUCTOSE-16-DIPHOSPHATE" 0 19) ("WATER" 20 20)))) +DBLINKS - (METANETX-RXN "MNXR96239" NIL |kothari| 3789143028 NIL NIL) +DBLINKS - (RHEA "11065" NIL |kothari| 3709310378 NIL NIL) +DBLINKS - (LIGAND-RXN "R00762" NIL |taltman| 3459474591 NIL NIL) +DBLINKS - (UNIPROT "P09199" RELATED-TO |green| 3381008079 NIL NIL) +DBLINKS - (UNIPROT "P19112" RELATED-TO |green| 3381008079 NIL NIL) +DBLINKS - (UNIPROT "P22780" RELATED-TO |green| 3381008079 NIL NIL) +DBLINKS - (UNIPROT "P09467" RELATED-TO |green| 3381008079 NIL NIL) +DBLINKS - (UNIPROT "Q9JUL6" RELATED-TO |green| 3381008079 NIL NIL) +DBLINKS - (UNIPROT "Q9CIU9" RELATED-TO |green| 3381008079 NIL NIL) +DBLINKS - (UNIPROT "P09202" RELATED-TO |green| 3381008079 NIL NIL) +DBLINKS - (UNIPROT "Q45597" RELATED-TO |green| 3381008079 NIL NIL) +DBLINKS - (UNIPROT "P45292" RELATED-TO |green| 3381008079 NIL NIL) +DBLINKS - (UNIPROT "Q9PP83" RELATED-TO |green| 3381008079 NIL NIL) +DBLINKS - (UNIPROT "P19912" RELATED-TO |green| 3381008079 NIL NIL) +DBLINKS - (UNIPROT "P19911" RELATED-TO |green| 3381008079 NIL NIL) +DBLINKS - (UNIPROT "Q9HGZ4" RELATED-TO |green| 3381008079 NIL NIL) +DBLINKS - (UNIPROT "P09201" RELATED-TO |green| 3381008079 NIL NIL) +DBLINKS - (UNIPROT "P0A993" RELATED-TO |paley| 3439827038 NIL NIL) +DBLINKS - (UNIPROT "P00636" RELATED-TO |green| 3381008079 NIL NIL) +DBLINKS - (UNIPROT "P23014" RELATED-TO |paley| 3439827039 NIL NIL) +DBLINKS - (UNIPROT "P27994" RELATED-TO |green| 3381008079 NIL NIL) +DBLINKS - (UNIPROT "P14766" RELATED-TO |green| 3381008079 NIL NIL) +DBLINKS - (UNIPROT "P09195" RELATED-TO |green| 3381008079 NIL NIL) +DBLINKS - (UNIPROT "Q7M0S7" RELATED-TO |green| 3381008079 NIL NIL) +DBLINKS - (UNIPROT "P25851" RELATED-TO |green| 3381008079 NIL NIL) +DBLINKS - (UNIPROT "Q05079" RELATED-TO |green| 3381008079 NIL NIL) +DBLINKS - (UNIPROT "P46275" RELATED-TO |green| 3381008079 NIL NIL) +DBLINKS - (UNIPROT "P46276" RELATED-TO |green| 3381008079 NIL NIL) +DBLINKS - (UNIPROT "Q43139" RELATED-TO |green| 3381008079 NIL NIL) +DBLINKS - (UNIPROT "P00637" RELATED-TO |green| 3381008079 NIL NIL) +DBLINKS - (UNIPROT "O65827" RELATED-TO |green| 3381008079 NIL NIL) +DBLINKS - (UNIPROT "Q42796" RELATED-TO |green| 3381008079 NIL NIL) +DBLINKS - (UNIPROT "P46267" RELATED-TO |green| 3381008079 NIL NIL) +DBLINKS - (UNIPROT "Q07204" RELATED-TO |green| 3381008079 NIL NIL) +DBLINKS - (UNIPROT "P22418" RELATED-TO |green| 3381008079 NIL NIL) +EC-NUMBER - EC-3.1.3.11 +^OFFICIAL? - T +ENZYMATIC-REACTION - F16BDEPHOS-ENZRXN +ENZYMATIC-REACTION - ENZRXN0-402 +ENZYMATIC-REACTION - ENZRXN0-6614 +ENZYMATIC-REACTION - ENZRXN0-6263 +ENZYMATIC-REACTION - ENZRXN0-7743 +ENZYMATIC-REACTION - ENZRXN-29657 +ENZYMATIC-REACTION - ENZRXN66-1451 +ENZYMATIC-REACTION - ENZRXN66-1452 +ENZYMATIC-REACTION - ENZRXN-18732 +ENZYMATIC-REACTION - ENZRXN-18716 +ENZYMATIC-REACTION - ENZRXN-183 +ENZYMATIC-REACTION - ENZRXN-169 +GIBBS-0 - 6.8935547 +IN-PATHWAY - SUCSYN-PWY +IN-PATHWAY - GLYCOLYSIS +IN-PATHWAY - PWY-5484 +IN-PATHWAY - GLUCONEO-PWY +IN-PATHWAY - PWY66-399 +IN-PATHWAY - CALVIN-PWY +IN-PATHWAY - P185-PWY +INSTANCE-NAME-TEMPLATE - RXN-* +LEFT - FRUCTOSE-16-DIPHOSPHATE +LEFT - WATER +ORPHAN? - :NO +PHYSIOLOGICALLY-RELEVANT? - T +REACTION-BALANCE-STATUS - :BALANCED +REACTION-DIRECTION - PHYSIOL-LEFT-TO-RIGHT +RIGHT - FRUCTOSE-6P +RIGHT - Pi +RXN-LOCATIONS - CCO-CYTOSOL +RXN-LOCATIONS - CCO-PERI-BAC +// +UNIQUE-ID - PEPSYNTH-RXN +TYPES - Chemical-Reactions +TYPES - Small-Molecule-Reactions +ATOM-MAPPINGS - (:NO-HYDROGEN-ENCODING (0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 34 35 36 17 19 28 30 20 21 29 18 37 22 32 23 24 25 31 27 26 33) ((("AMP" 0 22) ("PHOSPHO-ENOL-PYRUVATE" 23 32) ("Pi" 33 37)) (("ATP" 0 30) ("PYRUVATE" 31 36) ("WATER" 37 37)))) +ATOM-MAPPINGS - (:NO-HYDROGEN-ENCODING (0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 34 33 36 17 19 28 29 20 21 35 18 37 22 32 23 24 25 31 27 26 30) ((("AMP" 0 22) ("PHOSPHO-ENOL-PYRUVATE" 23 32) ("Pi" 33 37)) (("ATP" 0 30) ("PYRUVATE" 31 36) ("WATER" 37 37)))) +ATOM-MAPPINGS - (:NO-HYDROGEN-ENCODING (0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 34 33 36 17 18 28 29 20 21 35 30 37 22 32 23 24 25 31 27 26 19) ((("AMP" 0 22) ("PHOSPHO-ENOL-PYRUVATE" 23 32) ("Pi" 33 37)) (("ATP" 0 30) ("PYRUVATE" 31 36) ("WATER" 37 37)))) +ATOM-MAPPINGS - (:NO-HYDROGEN-ENCODING (0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 28 29 30 17 18 34 35 20 21 36 33 32 22 37 23 24 25 31 27 26 19) ((("AMP" 0 22) ("PHOSPHO-ENOL-PYRUVATE" 23 32) ("Pi" 33 37)) (("ATP" 0 30) ("PYRUVATE" 31 36) ("WATER" 37 37)))) +ATOM-MAPPINGS - (:NO-HYDROGEN-ENCODING (0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 28 29 30 17 19 34 33 20 21 35 18 32 22 37 23 24 25 31 27 26 36) ((("AMP" 0 22) ("PHOSPHO-ENOL-PYRUVATE" 23 32) ("Pi" 33 37)) (("ATP" 0 30) ("PYRUVATE" 31 36) ("WATER" 37 37)))) +DBLINKS - (METANETX-RXN "MNXR103140" NIL |kothari| 3789143027 NIL NIL) +DBLINKS - (RHEA "11365" NIL |kothari| 3709310378 NIL NIL) +DBLINKS - (LIGAND-RXN "R00199" NIL |taltman| 3459474591 NIL NIL) +DBLINKS - (UNIPROT "P56070" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "O57830" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q9ZMV4" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q9YEC5" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q57962" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "O29548" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q9V2H7" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "O27190" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "O67899" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q9JVI5" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P42850" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P23538" RELATED-TO |paley| 3439827039 NIL NIL) +DBLINKS - (UNIPROT "P46893" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q55905" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "O83026" RELATED-TO |green| 3381008081 NIL NIL) +EC-NUMBER - EC-2.7.9.2 +^OFFICIAL? - T +ENZYMATIC-REACTION - PEPSYNTH-ENZRXN +ENZYMATIC-REACTION - ENZRXN-26522 +ENZYMATIC-REACTION - ENZRXN-12356 +GIBBS-0 - -9.577148 +IN-PATHWAY - GLYCOLYSIS +IN-PATHWAY - PWY-5484 +IN-PATHWAY - P341-PWY +IN-PATHWAY - PWY-6142 +IN-PATHWAY - GLUCONEO-PWY +INSTANCE-NAME-TEMPLATE - RXN-* +LEFT - WATER +LEFT - PYRUVATE +LEFT - ATP +ORPHAN? - :NO +PHYSIOLOGICALLY-RELEVANT? - T +REACTION-BALANCE-STATUS - :BALANCED +REACTION-DIRECTION - REVERSIBLE +RIGHT - PROTON +^COEFFICIENT - 2 +RIGHT - Pi +RIGHT - PHOSPHO-ENOL-PYRUVATE +RIGHT - AMP +// +UNIQUE-ID - PGLUCISOM-RXN +TYPES - Chemical-Reactions +TYPES - Small-Molecule-Reactions +ATOM-MAPPINGS - (:NO-HYDROGEN-ENCODING (0 2 3 4 5 1 7 8 9 6 12 11 10 13 14 15) ((("FRUCTOSE-6P" 0 15)) (("D-glucopyranose-6-phosphate" 0 15)))) +CREDITS - kothari +CREDITS - SRI +DBLINKS - (METANETX-RXN "MNXR102535" NIL |kothari| 3789143034 NIL NIL) +DBLINKS - (RHEA "11819" NIL |kothari| 3709310378 NIL NIL) +DBLINKS - (LIGAND-RXN "R00771" NIL |taltman| 3459474594 NIL NIL) +DBLINKS - (UNIPROT "P06744" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P28718" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "Q7LZP0" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "O83488" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "Q9JTW1" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "Q59000" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "Q9PMD4" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "O25781" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "O84382" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "Q9JSS6" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P81181" RELATED-TO |paley| 3439827039 NIL NIL) +DBLINKS - (UNIPROT "P08059" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P50309" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P13376" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P13375" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P12709" RELATED-TO |paley| 3439827039 NIL NIL) +DBLINKS - (UNIPROT "P0A6T1" RELATED-TO |paley| 3439827039 NIL NIL) +DBLINKS - (UNIPROT "P06745" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P13377" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P12341" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P18240" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P29333" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P34796" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P34797" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P54240" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P54242" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "Q59088" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P78033" RELATED-TO |paley| 3439827039 NIL NIL) +DBLINKS - (UNIPROT "P52983" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P49105" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P42862" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P42863" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "Q9SB57" RELATED-TO |paley| 3439827039 NIL NIL) +DBLINKS - (UNIPROT "O82058" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "O82059" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "O61113" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P78917" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "Q9RMC1" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "Q9X670" RELATED-TO |green| 3381008077 NIL NIL) +EC-NUMBER - EC-5.3.1.9 +^OFFICIAL? - T +ENZYMATIC-REACTION - PGLUCISOM-ENZRXN +ENZYMATIC-REACTION - ENZRXN0-12536 +ENZYMATIC-REACTION - ENZRXN-26635 +ENZYMATIC-REACTION - ENZRXN185E-1429 +ENZYMATIC-REACTION - ENZRXN66-19638 +ENZYMATIC-REACTION - ENZRXN-2701 +ENZYMATIC-REACTION - ENZRXN-17850 +ENZYMATIC-REACTION - ENZRXN-12250 +ENZYMATIC-REACTION - ENZRXN-6281 +ENZYMATIC-REACTION - ENZRXN-19884 +ENZYMATIC-REACTION - ENZRXN-2863 +ENZYMATIC-REACTION - ENZRXN66-2374 +ENZYMATIC-REACTION - ENZRXN-13903 +ENZYMATIC-REACTION - ENZRXN-13898 +ENZYMATIC-REACTION - ENZRXN-13755 +ENZYMATIC-REACTION - ENZRXN-13424 +ENZYMATIC-REACTION - ENZRXN-2425 +GIBBS-0 - 1.3800049 +IN-PATHWAY - PWY-7347 +IN-PATHWAY - PWY-5514 +IN-PATHWAY - PWY-6981 +IN-PATHWAY - SUCSYN-PWY +IN-PATHWAY - PWY-6992 +IN-PATHWAY - ANAGLYCOLYSIS-PWY +IN-PATHWAY - GLYCOLYSIS +IN-PATHWAY - PWY-7385 +IN-PATHWAY - PWY-8013 +IN-PATHWAY - P341-PWY +IN-PATHWAY - UDPNACETYLGALSYN-PWY +IN-PATHWAY - PWY-6142 +IN-PATHWAY - GLUCONEO-PWY +IN-PATHWAY - PWY-622 +IN-PATHWAY - PWY66-399 +IN-PATHWAY - PWY-5384 +IN-PATHWAY - PWY-7238 +IN-PATHWAY - PWY-3801 +IN-PATHWAY - PWY-5054 +IN-PATHWAY - RUMP-PWY +IN-PATHWAY - P122-PWY +IN-PATHWAY - PWY-5659 +IN-PATHWAY - P124-PWY +IN-PATHWAY - UDPNAGSYN-PWY +IN-PATHWAY - PWY-621 +INSTANCE-NAME-TEMPLATE - RXN-* +LEFT - D-glucopyranose-6-phosphate +ORPHAN? - :NO +PHYSIOLOGICALLY-RELEVANT? - T +REACTION-BALANCE-STATUS - :BALANCED +REACTION-DIRECTION - REVERSIBLE +RIGHT - FRUCTOSE-6P +SYSTEMATIC-NAME - D-glucose-6-phosphate aldose-ketose-isomerase +// +UNIQUE-ID - RXN-15513 +TYPES - Composite-Reactions +TYPES - Small-Molecule-Reactions +ATOM-MAPPINGS - (:NO-HYDROGEN-ENCODING (0 1 2 9 5 4 8 6 7 3 10) (((2-PG 0 10)) ((G3P 0 10)))) +CREDITS - SRI +CREDITS - caspi +EC-NUMBER - EC-5.4.2.11 +^OFFICIAL? - T +ENZYMATIC-REACTION - 3PGAREARR-ENZRXN +ENZYMATIC-REACTION - ENZRXN3O-1340 +ENZYMATIC-REACTION - ENZRXN66-1207 +ENZYMATIC-REACTION - ENZRXN66-1583 +ENZYMATIC-REACTION - ENZRXN66-19767 +ENZYMATIC-REACTION - ENZRXN-13916 +ENZYMATIC-REACTION - ENZRXN-4341 +ENZYMATIC-REACTION - ENZRXN-4303 +ENZYMATIC-REACTION - ENZRXN-2722 +GIBBS-0 - -1.3200073 +IN-PATHWAY - ANAGLYCOLYSIS-PWY +IN-PATHWAY - GLYCOLYSIS +IN-PATHWAY - PWY-5484 +IN-PATHWAY - PWY-8004 +IN-PATHWAY - PWY-1622 +IN-PATHWAY - P122-PWY +IN-PATHWAY - PWY66-399 +INSTANCE-NAME-TEMPLATE - RXN-* +LEFT - 2-PG +ORPHAN? - :NO +PHYSIOLOGICALLY-RELEVANT? - T +REACTION-BALANCE-STATUS - :BALANCED +REACTION-DIRECTION - REVERSIBLE +REACTION-LIST - RXN-15509 +REACTION-LIST - RXN-15510 +REACTION-LIST - RXN-15511 +REACTION-LIST - RXN-15512 +RIGHT - G3P +// +UNIQUE-ID - 2PGADEHYDRAT-RXN +TYPES - Chemical-Reactions +TYPES - Small-Molecule-Reactions +ATOM-MAPPINGS - (:NO-HYDROGEN-ENCODING (0 1 2 10 3 4 7 6 5 8 9) ((("PHOSPHO-ENOL-PYRUVATE" 0 9) ("WATER" 10 10)) (("2-PG" 0 10)))) +DBLINKS - (METANETX-RXN "MNXR97932" NIL |kothari| 3789143035 NIL NIL) +DBLINKS - (RHEA "10167" NIL |kothari| 3709310378 NIL NIL) +DBLINKS - (LIGAND-RXN "R00658" NIL |taltman| 3459474591 NIL NIL) +DBLINKS - (UNIPROT "P04764" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P07322" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P07323" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P06733" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P19140" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P25704" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P30575" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P33675" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P47647" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "Q9JU46" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P37869" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "Q9URB2" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "Q9CIT0" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "Q9CHS7" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P43806" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P42448" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P42848" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "Q05524" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P42897" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P40370" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P51913" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P26300" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "Q42887" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P25696" RELATED-TO |paley| 3439827039 NIL NIL) +DBLINKS - (UNIPROT "P00924" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P00925" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P0A6P9" RELATED-TO |paley| 3439827039 NIL NIL) +DBLINKS - (UNIPROT "P29201" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P09104" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P21550" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P08734" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "Q7M4Y6" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P15429" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P13929" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P15007" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P17182" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P17183" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P26301" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P31683" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "Q54274" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P42896" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "Q27727" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "Q9UWJ5" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P48285" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "Q12007" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P42222" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P75189" RELATED-TO |paley| 3439827038 NIL NIL) +DBLINKS - (UNIPROT "P77972" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "Q49059" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P42895" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "Q42971" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "Q43130" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "O69174" RELATED-TO |green| 3381008078 NIL NIL) +EC-NUMBER - EC-4.2.1.11 +^OFFICIAL? - T +ENZYMATIC-REACTION - 2PGADEHYDRAT-ENZRXN +ENZYMATIC-REACTION - ENZRXN490-395 +ENZYMATIC-REACTION - ENZRXN3O-1202 +ENZYMATIC-REACTION - ENZRXN66-2174 +ENZYMATIC-REACTION - ENZRXN66-1764 +ENZYMATIC-REACTION - ENZRXN66-302 +ENZYMATIC-REACTION - ENZRXN-15981 +ENZYMATIC-REACTION - ENZRXN-13952 +ENZYMATIC-REACTION - ENZRXN-13911 +ENZYMATIC-REACTION - ENZRXN-13697 +ENZYMATIC-REACTION - ENZRXN-13696 +ENZYMATIC-REACTION - ENZRXN-12261 +ENZYMATIC-REACTION - ENZRXN-9283 +ENZYMATIC-REACTION - ENZRXN-9282 +ENZYMATIC-REACTION - ENZRXN-4304 +ENZYMATIC-REACTION - ENZRXN-2870 +ENZYMATIC-REACTION - ENZRXN-2741 +GIBBS-0 - -0.18701172 +IN-PATHWAY - PWY-2221 +IN-PATHWAY - ANAGLYCOLYSIS-PWY +IN-PATHWAY - GLYCOLYSIS +IN-PATHWAY - PWY-5484 +IN-PATHWAY - P341-PWY +IN-PATHWAY - PWY-8004 +IN-PATHWAY - PWY-1622 +IN-PATHWAY - PWY-6142 +IN-PATHWAY - GLUCONEO-PWY +IN-PATHWAY - PWY-7003 +IN-PATHWAY - P124-PWY +IN-PATHWAY - P122-PWY +IN-PATHWAY - PWY-6901 +IN-PATHWAY - NPGLUCAT-PWY +IN-PATHWAY - PWY66-399 +IN-PATHWAY - PWY-7218 +IN-PATHWAY - PWY-7124 +IN-PATHWAY - PWY-6886 +IN-PATHWAY - PWY-5723 +IN-PATHWAY - PWY-1042 +INSTANCE-NAME-TEMPLATE - RXN-* +LEFT - 2-PG +ORPHAN? - :NO +PHYSIOLOGICALLY-RELEVANT? - T +REACTION-BALANCE-STATUS - :BALANCED +REACTION-DIRECTION - REVERSIBLE +RIGHT - PHOSPHO-ENOL-PYRUVATE +RIGHT - WATER +// +UNIQUE-ID - 6PFRUCTPHOS-RXN +TYPES - Chemical-Reactions +TYPES - Small-Molecule-Reactions +ATOM-MAPPINGS - (:NO-HYDROGEN-ENCODING (0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 41 39 40 20 21 17 19 22 23 18 24 46 26 25 27 28 29 30 31 32 43 33 34 35 37 36 38 42 44 45) ((("ADP" 0 26) ("FRUCTOSE-16-DIPHOSPHATE" 27 46)) (("ATP" 0 30) ("FRUCTOSE-6P" 31 46)))) +DBLINKS - (METANETX-RXN "MNXR102513" NIL |kothari| 3789143035 NIL NIL) +DBLINKS - (RHEA "16110" NIL |kothari| 3709310379 NIL NIL) +DBLINKS - (LIGAND-RXN "R00756" NIL |taltman| 3459474595 NIL NIL) +DBLINKS - (UNIPROT "Q7M3F7" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q7M4J2" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P12382" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q27665" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P52034" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q7M4K9" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P43863" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P20275" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P47457" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q01813" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q07636" RELATED-TO |paley| 3439827039 NIL NIL) +DBLINKS - (UNIPROT "P16861" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P16862" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P00512" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P0A796" RELATED-TO |paley| 3439827039 NIL NIL) +DBLINKS - (UNIPROT "P06999" RELATED-TO |paley| 3439827038 NIL NIL) +DBLINKS - (UNIPROT "P08237" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P00511" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P70927" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q7M3F5" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q9TWY0" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P30835" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q03215" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q03216" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P80019" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q59214" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q27705" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P75476" RELATED-TO |paley| 3439827039 NIL NIL) +DBLINKS - (UNIPROT "P72830" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q55988" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q49084" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "O08333" RELATED-TO |green| 3381008081 NIL NIL) +EC-NUMBER - EC-2.7.1.11 +^OFFICIAL? - T +ENZYMATIC-REACTION - 6PFRUCTPHOS-ENZRXN +ENZYMATIC-REACTION - PFRUCTPHOS-ENZRXN +ENZYMATIC-REACTION - ENZRXN3O-96 +ENZYMATIC-REACTION - ENZRXN-22213 +ENZYMATIC-REACTION - ENZRXN66-1501 +ENZYMATIC-REACTION - ENZRXN66-1800 +ENZYMATIC-REACTION - ENZRXN66-2506 +ENZYMATIC-REACTION - ENZRXN-13901 +ENZYMATIC-REACTION - ENZRXN-13694 +ENZYMATIC-REACTION - ENZRXN-13689 +ENZYMATIC-REACTION - ENZRXN-13683 +ENZYMATIC-REACTION - ENZRXN-13682 +ENZYMATIC-REACTION - ENZRXN-13679 +ENZYMATIC-REACTION - ENZRXN-13675 +ENZYMATIC-REACTION - ENZRXN-2864 +ENZYMATIC-REACTION - ENZRXN-2682 +GIBBS-0 - -14.492370 +IN-PATHWAY - ANAGLYCOLYSIS-PWY +IN-PATHWAY - GLYCOLYSIS +IN-PATHWAY - PWY-5484 +IN-PATHWAY - PWY-7385 +IN-PATHWAY - PWY-1861 +IN-PATHWAY - PWY-1042 +INSTANCE-NAME-TEMPLATE - RXN-* +LEFT - ATP +LEFT - FRUCTOSE-6P +ORPHAN? - :NO +PHYSIOLOGICALLY-RELEVANT? - T +REACTION-BALANCE-STATUS - :BALANCED +REACTION-DIRECTION - LEFT-TO-RIGHT +RIGHT - PROTON +RIGHT - ADP +RIGHT - FRUCTOSE-16-DIPHOSPHATE +// +UNIQUE-ID - TRIOSEPISOMERIZATION-RXN +TYPES - Chemical-Reactions +TYPES - Small-Molecule-Reactions +ATOM-MAPPINGS - (:NO-HYDROGEN-ENCODING (0 1 2 3 4 5 6 7 8 9) (((GAP 0 9)) ((DIHYDROXY-ACETONE-PHOSPHATE 0 9)))) +DBLINKS - (METANETX-RXN "MNXR104918" NIL |kothari| 3789143036 NIL NIL) +DBLINKS - (RHEA "18588" NIL |kothari| 3709310380 NIL NIL) +DBLINKS - (LIGAND-RXN "R01015" NIL |taltman| 3459474594 NIL NIL) +DBLINKS - (UNIPROT "P19118" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P21820" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P48501" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P62002" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "O27120" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P27876" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "Q9PMQ6" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P19583" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "Q9UXX2" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P47721" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P47670" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P50918" RELATED-TO |paley| 3439827039 NIL NIL) +DBLINKS - (UNIPROT "P43727" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "Q58923" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "O28965" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "Q59182" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "O59536" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P36204" RELATED-TO |paley| 3439827018 NIL NIL) +DBLINKS - (UNIPROT "Q9JW31" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P04828" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P00943" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P00942" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P00940" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P60175" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P0A858" RELATED-TO |paley| 3439827039 NIL NIL) +DBLINKS - (UNIPROT "P60174" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P00941" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P15426" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P17751" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P00939" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P12863" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P07669" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P35144" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P48494" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "Q7M4X7" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P29613" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P30741" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "Q01893" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P48499" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P48496" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P46226" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P46225" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P48492" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "Q56738" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "Q7LZE5" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P46711" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "O32757" RELATED-TO |paley| 3439827039 NIL NIL) +DBLINKS - (UNIPROT "O74067" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P48491" RELATED-TO |paley| 3439827039 NIL NIL) +EC-NUMBER - EC-5.3.1.1 +^OFFICIAL? - T +ENZYMATIC-REACTION - TRIOSEPISOMERIZATION-ENZRXN +ENZYMATIC-REACTION - ENZRXN66-1761 +ENZYMATIC-REACTION - ENZRXN-16056 +ENZYMATIC-REACTION - ENZRXN-15982 +ENZYMATIC-REACTION - ENZRXN-13912 +ENZYMATIC-REACTION - ENZRXN-13908 +ENZYMATIC-REACTION - ENZRXN-13734 +ENZYMATIC-REACTION - ENZRXN-13732 +ENZYMATIC-REACTION - ENZRXN-13729 +ENZYMATIC-REACTION - ENZRXN-12254 +ENZYMATIC-REACTION - ENZRXN-9341 +ENZYMATIC-REACTION - ENZRXN-2866 +ENZYMATIC-REACTION - ENZRXN-2702 +ENZYMATIC-REACTION - ENZRXN-162 +GIBBS-0 - -1.8299866 +IN-PATHWAY - ANAGLYCOLYSIS-PWY +IN-PATHWAY - GLYCOLYSIS +IN-PATHWAY - PWY-5484 +IN-PATHWAY - P341-PWY +IN-PATHWAY - PWY-6142 +IN-PATHWAY - GLUCONEO-PWY +IN-PATHWAY - PWY-7003 +IN-PATHWAY - PWY66-373 +IN-PATHWAY - PWY66-399 +IN-PATHWAY - CALVIN-PWY +IN-PATHWAY - P185-PWY +IN-PATHWAY - PWY-1042 +INSTANCE-NAME-TEMPLATE - RXN-* +LEFT - GAP +ORPHAN? - :NO +PHYSIOLOGICALLY-RELEVANT? - T +REACTION-BALANCE-STATUS - :BALANCED +REACTION-DIRECTION - REVERSIBLE +RIGHT - DIHYDROXY-ACETONE-PHOSPHATE +// +UNIQUE-ID - F16ALDOLASE-RXN +TYPES - Chemical-Reactions +TYPES - Small-Molecule-Reactions +ATOM-MAPPINGS - (:NO-HYDROGEN-ENCODING (1 11 2 0 10 12 3 13 14 7 5 6 17 16 15 8 18 4 9 19) (((GAP 0 9) (DIHYDROXY-ACETONE-PHOSPHATE 10 19)) ((FRUCTOSE-16-DIPHOSPHATE 0 19)))) +DBLINKS - (METANETX-RXN "MNXR99464" NIL |kothari| 3789143037 NIL NIL) +DBLINKS - (RHEA "14732" NIL |kothari| 3709310379 NIL NIL) +DBLINKS - (LIGAND-RXN "R01068" NIL |taltman| 3459474594 NIL NIL) +DBLINKS - (UNIPROT "Q7LZE8" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "Q7M2K6" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P07764" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "Q9URB4" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P14223" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "Q07159" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P07752" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P14540" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P07341" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P0AB71" RELATED-TO |paley| 3439827039 NIL NIL) +DBLINKS - (UNIPROT "P04075" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P05062" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P09972" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P05064" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P05063" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P22197" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P00883" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P27995" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P05065" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P00884" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P09117" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P17784" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P29356" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P16096" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P08440" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P44429" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P13243" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "O51401" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P47269" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "Q9CED4" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "Q9JW15" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "Q59100" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "Q59101" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "Q7M4Z5" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "Q7M4Z4" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P19537" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "Q01516" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "Q01517" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "Q91384" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P52210" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "Q42690" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P53447" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "Q7LZE9" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P53818" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P46257" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P46256" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "Q42476" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P75089" RELATED-TO |paley| 3439827039 NIL NIL) +DBLINKS - (UNIPROT "O22486" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "Q40677" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "O65581" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "Q9SVJ6" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P93565" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P50923" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "O04975" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P36580" RELATED-TO |green| 3381008078 NIL NIL) +DBLINKS - (UNIPROT "P53444" RELATED-TO |green| 3381008078 NIL NIL) +EC-NUMBER - EC-4.1.2.13 +^OFFICIAL? - T +ENZYMATIC-REACTION - F16ALDOLASE-ENZRXN-CLASSI +ENZYMATIC-REACTION - F16ALDOLASE-ENZRXN-CLASSII +ENZYMATIC-REACTION - ENZRXN66-1460 +ENZYMATIC-REACTION - ENZRXN66-2108 +ENZYMATIC-REACTION - ENZRXN66-2208 +ENZYMATIC-REACTION - ENZRXN-16061 +ENZYMATIC-REACTION - ENZRXN-16058 +ENZYMATIC-REACTION - ENZRXN-13905 +ENZYMATIC-REACTION - ENZRXN-13752 +ENZYMATIC-REACTION - ENZRXN-13751 +ENZYMATIC-REACTION - ENZRXN-13750 +ENZYMATIC-REACTION - ENZRXN-13749 +ENZYMATIC-REACTION - ENZRXN-13744 +ENZYMATIC-REACTION - ENZRXN-13743 +ENZYMATIC-REACTION - ENZRXN-13741 +ENZYMATIC-REACTION - ENZRXN-13739 +ENZYMATIC-REACTION - ENZRXN-13735 +ENZYMATIC-REACTION - ENZRXN-12253 +ENZYMATIC-REACTION - ENZRXN-9281 +ENZYMATIC-REACTION - ENZRXN-9262 +ENZYMATIC-REACTION - ENZRXN-9261 +ENZYMATIC-REACTION - ENZRXN-2865 +ENZYMATIC-REACTION - ENZRXN-2683 +ENZYMATIC-REACTION - ENZRXN-166 +ENZYMATIC-REACTION - ENZRXN-164 +GIBBS-0 - 8.226501 +IN-PATHWAY - SUCSYN-PWY +IN-PATHWAY - ANAGLYCOLYSIS-PWY +IN-PATHWAY - GLYCOLYSIS +IN-PATHWAY - PWY-5484 +IN-PATHWAY - PWY-7385 +IN-PATHWAY - P341-PWY +IN-PATHWAY - PWY-6142 +IN-PATHWAY - GLUCONEO-PWY +IN-PATHWAY - PWY66-399 +IN-PATHWAY - CALVIN-PWY +IN-PATHWAY - P185-PWY +IN-PATHWAY - PWY-1861 +IN-PATHWAY - PWY-1042 +INSTANCE-NAME-TEMPLATE - RXN-* +LEFT - FRUCTOSE-16-DIPHOSPHATE +ORPHAN? - :NO +PHYSIOLOGICALLY-RELEVANT? - T +REACTION-BALANCE-STATUS - :BALANCED +REACTION-DIRECTION - REVERSIBLE +RIGHT - DIHYDROXY-ACETONE-PHOSPHATE +RIGHT - GAP +// +UNIQUE-ID - PHOSGLYPHOS-RXN +TYPES - Chemical-Reactions +TYPES - Small-Molecule-Reactions +ATOM-MAPPINGS - (:NO-HYDROGEN-ENCODING (0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 37 36 35 20 21 17 19 22 23 18 24 41 26 25 27 28 29 30 31 39 33 34 32 38 40) ((("ADP" 0 26) ("DPG" 27 41)) (("ATP" 0 30) ("G3P" 31 41)))) +DBLINKS - (METANETX-RXN "MNXR102538" NIL |kothari| 3789143028 NIL NIL) +DBLINKS - (RHEA "14804" NIL |kothari| 3709310379 NIL NIL) +DBLINKS - (LIGAND-RXN "R01512" NIL |taltman| 3459474595 NIL NIL) +DBLINKS - (UNIPROT "P11977" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P09411" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P09041" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P07205" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P16617" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q37743" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q58058" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P56154" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "O29119" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q01655" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q9URB3" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P47542" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "O27121" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q9PMQ5" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P40924" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P43726" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "O66519" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q9JWS8" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q9CIW1" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P36204" RELATED-TO |paley| 3439827039 NIL NIL) +DBLINKS - (UNIPROT "Q59181" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P50319" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P50310" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P51903" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P18912" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P41757" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P27362" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P24269" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P00560" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P25055" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q01604" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P00558" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P07377" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P07378" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P14828" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P09404" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P29408" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P20972" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P20971" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P24590" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P29409" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P33161" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P29405" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P50317" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P50315" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P29407" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P61884" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q42542" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P50318" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P46712" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P78018" RELATED-TO |paley| 3439827039 NIL NIL) +DBLINKS - (UNIPROT "Q49073" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q42961" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q42962" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "O81394" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P41758" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "O32756" RELATED-TO |paley| 3439827039 NIL NIL) +DBLINKS - (UNIPROT "P38667" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P08966" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P08967" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P0A799" RELATED-TO |paley| 3439827039 NIL NIL) +DBLINKS - (UNIPROT "P09188" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P14228" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P08891" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P08892" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P08893" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P12782" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P12783" RELATED-TO |green| 3381008081 NIL NIL) +EC-NUMBER - EC-2.7.2.3 +^OFFICIAL? - T +ENZYMATIC-REACTION - PHOSGLYCPHOS-ENZRXN +ENZYMATIC-REACTION - ENZRXN66-2652 +ENZYMATIC-REACTION - ENZRXN66-1138 +ENZYMATIC-REACTION - ENZRXN-14012 +ENZYMATIC-REACTION - ENZRXN-13910 +ENZYMATIC-REACTION - ENZRXN-13440 +ENZYMATIC-REACTION - ENZRXN-13439 +ENZYMATIC-REACTION - ENZRXN-2868 +ENZYMATIC-REACTION - ENZRXN-2703 +ENZYMATIC-REACTION - ENZRXN-123 +GIBBS-0 - -7.51001 +IN-PATHWAY - SUCSYN-PWY +IN-PATHWAY - ANAGLYCOLYSIS-PWY +IN-PATHWAY - GLYCOLYSIS +IN-PATHWAY - PWY-5484 +IN-PATHWAY - PWY-8004 +IN-PATHWAY - GLUCONEO-PWY +IN-PATHWAY - PWY-7003 +IN-PATHWAY - P124-PWY +IN-PATHWAY - P122-PWY +IN-PATHWAY - PWY-6901 +IN-PATHWAY - PWY66-399 +IN-PATHWAY - PWY-6886 +IN-PATHWAY - CALVIN-PWY +IN-PATHWAY - P185-PWY +IN-PATHWAY - PWY-1042 +INSTANCE-NAME-TEMPLATE - RXN-* +LEFT - G3P +LEFT - ATP +ORPHAN? - :NO +PHYSIOLOGICALLY-RELEVANT? - T +REACTION-BALANCE-STATUS - :BALANCED +REACTION-DIRECTION - REVERSIBLE +RIGHT - DPG +RIGHT - ADP +// +UNIQUE-ID - GAPOXNPHOSPHN-RXN +TYPES - Chemical-Reactions +TYPES - Small-Molecule-Reactions +ATOM-MAPPINGS - (:NO-HYDROGEN-ENCODING (1 2 0 4 3 5 7 6 10 13 11 8 12 9 14) ((("GAP" 0 9) ("Pi" 10 14)) (("DPG" 0 14)))) +DBLINKS - (METANETX-RXN "MNXR100040" NIL |kothari| 3789143027 NIL NIL) +DBLINKS - (RHEA "10303" NIL |kothari| 3709310378 NIL NIL) +DBLINKS - (LIGAND-RXN "R01061" NIL |taltman| 3459474596 NIL NIL) +DBLINKS - (UNIPROT "P07486" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P08477" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P17878" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "Q01651" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "Q27890" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "Q27820" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "Q7M188" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "Q7LZR1" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "Q58546" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P55971" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P46795" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P07487" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "Q01558" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "Q7M187" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "O25902" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "Q9JWT8" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P29272" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P47543" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "O83816" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P20445" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P26517" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P09124" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P00362" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P00358" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P00359" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P00360" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P00356" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P0A9B2" RELATED-TO |paley| 3439827038 NIL NIL) +DBLINKS - (UNIPROT "P0A9B6" RELATED-TO |paley| 3439827039 NIL NIL) +DBLINKS - (UNIPROT "P17721" RELATED-TO |paley| 3439827039 NIL NIL) +DBLINKS - (UNIPROT "P04406" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P17244" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P04796" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P19089" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P26518" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P26988" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P04970" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P17329" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P17330" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P17331" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P08439" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P00357" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P16858" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P26521" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P26520" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P26519" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P04797" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P25861" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P00361" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P09317" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P22512" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P22513" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P10097" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P17819" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P28844" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P08735" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P09316" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "Q9JX51" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "O67161" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P44304" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "O34425" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P64178" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "Q46450" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P50321" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P50322" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P34917" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P34918" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "Q07234" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P24748" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P24746" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P24749" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P24751" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P24750" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "Q60143" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "Q64467" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P46406" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "Q59800" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P80534" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "Q9UW96" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P32809" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P32810" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P20287" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P35143" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P25858" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P10618" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "Q7M517" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "Q7M516" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "Q09054" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "Q43247" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P23722" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P17729" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "Q01597" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P32637" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P29497" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P32638" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P32635" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P32636" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "Q59309" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P34783" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "Q00584" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "Q42671" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P34920" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P39460" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "Q37265" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "Q37264" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "Q01077" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P54270" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "Q48335" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "Q43833" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "Q59906" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P46713" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P75358" RELATED-TO |paley| 3439827039 NIL NIL) +DBLINKS - (UNIPROT "Q7M2K2" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "Q43359" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "O68075" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "Q08060" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "O49222" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P34922" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "O04106" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P49644" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "O32755" RELATED-TO |paley| 3439827039 NIL NIL) +DBLINKS - (UNIPROT "P34924" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "O59841" RELATED-TO |paley| 3439827039 NIL NIL) +DBLINKS - (UNIPROT "P78958" RELATED-TO |green| 3381008084 NIL NIL) +DBLINKS - (UNIPROT "P54118" RELATED-TO |green| 3381008084 NIL NIL) +EC-NUMBER - EC-1.2.1.12 +^OFFICIAL? - T +ENZYMATIC-REACTION - GAPDH-A-ENZRXN +ENZYMATIC-REACTION - ENZRXN66-2375 +ENZYMATIC-REACTION - ENZRXN66-1758 +ENZYMATIC-REACTION - ENZRXN-19556 +ENZYMATIC-REACTION - ENZRXN-14011 +ENZYMATIC-REACTION - ENZRXN-13946 +ENZYMATIC-REACTION - ENZRXN-13909 +ENZYMATIC-REACTION - ENZRXN-13718 +ENZYMATIC-REACTION - ENZRXN-13707 +ENZYMATIC-REACTION - ENZRXN-13447 +ENZYMATIC-REACTION - ENZRXN-9326 +ENZYMATIC-REACTION - ENZRXN-9321 +ENZYMATIC-REACTION - ENZRXN-2867 +ENZYMATIC-REACTION - ENZRXN-2721 +GIBBS-0 - -15.19458 +IN-PATHWAY - SUCSYN-PWY +IN-PATHWAY - ANAGLYCOLYSIS-PWY +IN-PATHWAY - GLYCOLYSIS +IN-PATHWAY - PWY-5484 +IN-PATHWAY - PWY-8004 +IN-PATHWAY - GLUCONEO-PWY +IN-PATHWAY - PWY-7003 +IN-PATHWAY - P124-PWY +IN-PATHWAY - P122-PWY +IN-PATHWAY - PWY-6901 +IN-PATHWAY - PWY66-399 +IN-PATHWAY - P185-PWY +IN-PATHWAY - PWY-1042 +INSTANCE-NAME-TEMPLATE - RXN-* +LEFT - GAP +LEFT - Pi +LEFT - NAD +ORPHAN? - :NO +PHYSIOLOGICALLY-RELEVANT? - T +REACTION-BALANCE-STATUS - :BALANCED +REACTION-DIRECTION - REVERSIBLE +RIGHT - PROTON +RIGHT - DPG +RIGHT - NADH +// +UNIQUE-ID - 3PGAREARR-RXN +TYPES - Chemical-Reactions +TYPES - Small-Molecule-Reactions +ATOM-MAPPINGS - (:NO-HYDROGEN-ENCODING (0 1 2 9 5 4 8 6 7 3 10) (((2-PG 0 10)) ((G3P 0 10)))) +DBLINKS - (RHEA "15904" NIL |kothari| 3709310379 NIL NIL) +DBLINKS - (LIGAND-RXN "R01518" NIL |taltman| 3459474590 NIL NIL) +DBLINKS - (UNIPROT "P30792" RELATED-TO |paley| 3439827038 NIL NIL) +DBLINKS - (UNIPROT "P52832" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P44865" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P30798" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P62707" RELATED-TO |paley| 3439827039 NIL NIL) +DBLINKS - (UNIPROT "P39773" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P47669" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "Q9CEU3" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P56196" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "Q9JTF2" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "Q9PI71" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "Q9CIM0" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P00950" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P18669" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P15259" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P16290" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P35167" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P33158" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "Q06464" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P36623" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P35494" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P37689" RELATED-TO |paley| 3439827039 NIL NIL) +DBLINKS - (UNIPROT "P35493" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "Q9VAN7" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "Q42908" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "Q12326" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P53531" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P51379" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P75167" RELATED-TO |paley| 3439827039 NIL NIL) +DBLINKS - (UNIPROT "P72649" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "P74507" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "Q49006" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "O24246" RELATED-TO |green| 3381008077 NIL NIL) +DBLINKS - (UNIPROT "Q9X519" RELATED-TO |green| 3381008077 NIL NIL) +EC-NUMBER - EC-5.4.2.12 +^OFFICIAL? - T +ENZYMATIC-REACTION - PGMI-ENZRXN +ENZYMATIC-REACTION - ENZRXN490-54 +ENZYMATIC-REACTION - ENZRXN-15984 +ENZYMATIC-REACTION - ENZRXN-15983 +ENZYMATIC-REACTION - ENZRXN-13700 +ENZYMATIC-REACTION - ENZRXN-13698 +ENZYMATIC-REACTION - ENZRXN-9327 +ENZYMATIC-REACTION - ENZRXN-5065 +ENZYMATIC-REACTION - ENZRXN-5064 +ENZYMATIC-REACTION - ENZRXN-2869 +GIBBS-0 - -1.3200073 +IN-PATHWAY - PWY-2221 +IN-PATHWAY - ANAGLYCOLYSIS-PWY +IN-PATHWAY - GLYCOLYSIS +IN-PATHWAY - PWY-5484 +IN-PATHWAY - P341-PWY +IN-PATHWAY - PWY-6142 +IN-PATHWAY - GLUCONEO-PWY +IN-PATHWAY - PWY-7003 +IN-PATHWAY - P124-PWY +IN-PATHWAY - PWY-6901 +IN-PATHWAY - PWY-7218 +IN-PATHWAY - PWY-7124 +IN-PATHWAY - PWY-6886 +IN-PATHWAY - PWY-5723 +IN-PATHWAY - PWY-1042 +INSTANCE-NAME-TEMPLATE - RXN-* +LEFT - 2-PG +ORPHAN? - :NO +PHYSIOLOGICALLY-RELEVANT? - T +REACTION-BALANCE-STATUS - :BALANCED +REACTION-DIRECTION - REVERSIBLE +RIGHT - G3P +// +UNIQUE-ID - PEPDEPHOS-RXN +TYPES - Chemical-Reactions +TYPES - Small-Molecule-Reactions +ATOM-MAPPINGS - (:NO-HYDROGEN-ENCODING (0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 32 33 34 20 21 17 19 22 23 18 24 36 26 25 27 28 29 35 31 30) ((("ADP" 0 26) ("PHOSPHO-ENOL-PYRUVATE" 27 36)) (("ATP" 0 30) ("PYRUVATE" 31 36)))) +CREDITS - SRI +CREDITS - gong +DBLINKS - (METANETX-RXN "MNXR103371" NIL |kothari| 3789143027 NIL NIL) +DBLINKS - (RHEA "18157" NIL |kothari| 3571758791 NIL NIL) +DBLINKS - (LIGAND-RXN "R00200" NIL |taltman| 3459474592 NIL NIL) +DBLINKS - (UNIPROT "Q7M034" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P11979" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P11980" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q07637" RELATED-TO |paley| 3439827038 NIL NIL) +DBLINKS - (UNIPROT "P34038" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P43924" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q57572" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P0AD61" RELATED-TO |paley| 3439827039 NIL NIL) +DBLINKS - (UNIPROT "P19680" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q9PIB0" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P80885" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q9UYU6" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q9JWX8" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P47458" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q46078" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P30614" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P22200" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q27788" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P51182" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P51181" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P31865" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P00549" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P00548" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P30613" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "O75758" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P12928" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "O30853" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P30615" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P30616" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q02499" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P22360" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P21599" RELATED-TO |paley| 3439827039 NIL NIL) +DBLINKS - (UNIPROT "P14618" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q42954" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q40545" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P52480" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P52489" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P78031" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q55863" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "P73534" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "O65595" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q42806" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q43117" RELATED-TO |green| 3381008081 NIL NIL) +DBLINKS - (UNIPROT "Q10208" RELATED-TO |green| 3381008081 NIL NIL) +EC-NUMBER - EC-2.7.1.40 +^OFFICIAL? - T +ENZYMATIC-REACTION - PEPDEPHOSII-ENZRXN +ENZYMATIC-REACTION - PEPDEPHOSI-ENZRXN +ENZYMATIC-REACTION - ENZRXN490-504 +ENZYMATIC-REACTION - ENZRXN-22181 +ENZYMATIC-REACTION - ENZRXN66-2024 +ENZYMATIC-REACTION - ENZRXN66-463 +ENZYMATIC-REACTION - ENZRXN-13944 +ENZYMATIC-REACTION - ENZRXN-13900 +ENZYMATIC-REACTION - ENZRXN-13436 +ENZYMATIC-REACTION - ENZRXN-13432 +ENZYMATIC-REACTION - ENZRXN-12264 +ENZYMATIC-REACTION - ENZRXN-9082 +ENZYMATIC-REACTION - ENZRXN-9081 +ENZYMATIC-REACTION - ENZRXN-5047 +ENZYMATIC-REACTION - ENZRXN-2742 +GIBBS-0 - -2.234192 +IN-PATHWAY - PWY-2221 +IN-PATHWAY - ANAGLYCOLYSIS-PWY +IN-PATHWAY - GLYCOLYSIS +IN-PATHWAY - PWY-5484 +IN-PATHWAY - P341-PWY +IN-PATHWAY - PWY-8004 +IN-PATHWAY - PWY-6142 +IN-PATHWAY - PWY-7003 +IN-PATHWAY - P124-PWY +IN-PATHWAY - P122-PWY +IN-PATHWAY - PWY-7383 +IN-PATHWAY - PWY-6901 +IN-PATHWAY - NPGLUCAT-PWY +IN-PATHWAY - PWY-7218 +IN-PATHWAY - PWY-6886 +IN-PATHWAY - PWY-5723 +IN-PATHWAY - FERMENTATION-PWY +IN-PATHWAY - PWY-1042 +INSTANCE-NAME-TEMPLATE - RXN-* +LEFT - PYRUVATE +LEFT - ATP +ORPHAN? - :NO +PHYSIOLOGICALLY-RELEVANT? - T +REACTION-BALANCE-STATUS - :BALANCED +REACTION-DIRECTION - PHYSIOL-RIGHT-TO-LEFT +RIGHT - PROTON +RIGHT - PHOSPHO-ENOL-PYRUVATE +RIGHT - ADP \ No newline at end of file From d20348c44fcf12480809f9cf7b7712b14a691fa8 Mon Sep 17 00:00:00 2001 From: y1zhou Date: Sat, 15 Jan 2022 23:18:20 -0500 Subject: [PATCH 18/42] feat(metacyc): concatenate continuation lines in .dat files --- metabolike/parser/metacyc.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index ba754f2..f237a9b 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -546,6 +546,14 @@ def _read_dat_file(filepath: Union[str, Path]) -> List[List[str]]: lines = [l for l in lines if not l.startswith("#")] # Split entries based on `//` - doc = [list(g) for k, g in groupby(lines, key=lambda x: x != "//") if k] - doc = [x for x in doc if len(x) > 1] # Remove empty entries - return doc + docs = [list(g) for k, g in groupby(lines, key=lambda x: x != "//") if k] + docs = [x for x in docs if len(x) > 1] # Remove empty entries + + # Concatenate attributes with multiple lines (mostly COMMENT) + for i, doc in enumerate(docs): + doc_txt = "\n".join(doc) + doc_txt = doc_txt.replace("\n/", " ") + docs[i] = doc_txt.split("\n") + + return docs + From a3532923a9ddb7ba9dd6af2ca61a727bdbcbe195 Mon Sep 17 00:00:00 2001 From: y1zhou Date: Sun, 16 Jan 2022 14:49:26 -0500 Subject: [PATCH 19/42] feat(metacyc): read .dat file as key-attribute pairs --- metabolike/parser/metacyc.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index f237a9b..1e3cf3c 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -538,22 +538,30 @@ def _generate_cypher_for_uri(uris: Dict[str, str]) -> str: return ",".join(cypher) @staticmethod - def _read_dat_file(filepath: Union[str, Path]) -> List[List[str]]: + def _read_dat_file(filepath: Union[str, Path]) -> Dict[str, List[List[str]]]: # `rb` to bypass the 0xa9 character with open(filepath, "rb") as f: lines = [l.decode("utf-8", "ignore").strip() for l in f] - # Also remove comments on the top of the file - lines = [l for l in lines if not l.startswith("#")] + # Also remove empty lines and comments on the top of the file + lines = [l for l in lines if l and (not l.startswith("#"))] # Split entries based on `//` - docs = [list(g) for k, g in groupby(lines, key=lambda x: x != "//") if k] - docs = [x for x in docs if len(x) > 1] # Remove empty entries + docs: Dict[str, List[List[str]]] = {} + for k, g in groupby(lines, key=lambda x: x != "//"): + if not k: + continue + doc = list(g) # Concatenate attributes with multiple lines (mostly COMMENT) - for i, doc in enumerate(docs): doc_txt = "\n".join(doc) doc_txt = doc_txt.replace("\n/", " ") - docs[i] = doc_txt.split("\n") + doc = doc_txt.split("\n") + + # Split key-attribute pairs + doc = [l.split(" - ") for l in doc] + uniq_id = doc[0][1] + doc = doc[1:] + docs[uniq_id] = doc return docs From d6b8a53cd4f6d3284c3f0e9006144d8d907189db Mon Sep 17 00:00:00 2001 From: y1zhou Date: Tue, 18 Jan 2022 09:31:23 -0500 Subject: [PATCH 20/42] feat(metacyc): extract canonical reaction ID from the full form in graph db fix #9 --- metabolike/parser/metacyc.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index 1e3cf3c..6fd6d58 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -1,4 +1,5 @@ import logging +import re from itertools import groupby from pathlib import Path from typing import Dict, List, Optional, Tuple, Union @@ -565,3 +566,38 @@ def _read_dat_file(filepath: Union[str, Path]) -> Dict[str, List[List[str]]]: return docs + @staticmethod + def _find_rxn_canonical_id(rxn_id: str, all_ids: Set[str]) -> str: + """Find the canonical ID for a reaction. + + Some reactions have longer ID forms in ``metabolic-reactions.xml`` than + in ``reactions.dat`` or ``pathways.dat``. For example, + ``F16BDEPHOS-RXN`` has two counterparts in ``metabolic-reactions.xml``: + ``F16BDEPHOS-RXN[CCO-PERI-BAC]-FRUCTOSE-16-DIPHOSPHATE/WATER//FRUCTOSE-6P/Pi.60.`` + and + ``F16BDEPHOS-RXN[CCO-CYTOSOL]-FRUCTOSE-16-DIPHOSPHATE/WATER//FRUCTOSE-6P/Pi.59.`` + + This helper function extracts the leading part from the full ID. + + Args: + rxn_id: The MetaCyc ID of the reaction. all_ids: All UNIQUE-IDs in + the reactions.dat file. + + Returns: + The canonical ID for the reaction. + """ + # See if the rxn_id is in reaction.dat + if rxn_id in all_ids: + return rxn_id + + # If not, extract the ID from the leading part of rxn_id + match_canonical_id = re.match( + r"((TRANS-)?(RXN[A-Z\d]*)-\d+)|([A-Z\d.\-\+]+RXN)", rxn_id + ) + if match_canonical_id: + canonical_id = match_canonical_id.group(0) + assert canonical_id in all_ids + return canonical_id + else: + raise ValueError(f"rxn_id has no canonical form: {rxn_id}") + From edfe1a27572f2b863c29ea5bf59b9f3825da5678 Mon Sep 17 00:00:00 2001 From: y1zhou Date: Tue, 18 Jan 2022 10:52:54 -0500 Subject: [PATCH 21/42] feat(metacyc): parse additional information in reactions.dat fix #8 --- metabolike/parser/metacyc.py | 125 ++++++++++++++++++++++++++++++++++- 1 file changed, 123 insertions(+), 2 deletions(-) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index 6fd6d58..8973127 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -2,7 +2,7 @@ import re from itertools import groupby from pathlib import Path -from typing import Dict, List, Optional, Tuple, Union +from typing import Any, Dict, Iterable, List, Optional, Tuple, Union import libsbml from metabolike import db @@ -37,8 +37,21 @@ "RDF", "Complex", "EntitySet", + "Citation", ] +REACTION_ATTRIBUTES = { + # Relationship properties + "GIBBS-0": "gibbs0", + "STD-REDUCTION-POTENTIAL": "stdReductionPotential", + "REACTION-DIRECTION": "reactionDirection", + "REACTION-BALANCE-STATUS": "reactionBalanceStatus", + "SYSTEMATIC-NAME": "systematicName", + "COMMENT": "comment", # TODO: link to other nodes + # Relationship property as a list + "SYNONYMS": "synonyms", +} + class Metacyc: """ @@ -96,6 +109,19 @@ def setup(self, force: bool = False): self.setup_graph_db(force=force) self.sbml_to_graph(model) + # Add additional information of reactions to the graph if given + if self.input_files["reactions"]: + logger.info("Adding additional reaction information to the graph") + rxn_dat = self._read_dat_file(self.input_files["reactions"]) + with self.neo4j_driver.session(database=self.db_name) as session: + all_rxns = session.run( + "MATCH (n:Reaction) RETURN n.displayName;" + ).data() + all_rxns = [r["n.displayName"] for r in all_rxns] + for rxn in all_rxns: + self.reaction_to_graph(rxn, rxn_dat, session) + logger.debug(f"Added extra info for reaction {rxn}") + # Read pathways file if given if self.input_files["pathways"]: logger.info("Creating pathway links") @@ -277,6 +303,80 @@ def sbml_to_graph(self, model: libsbml.Model): node = gpa.getAssociation() self._add_sbml_gene_product_association_node(node, session, mcid) + def reaction_to_graph( + self, rxn_id: str, rxn_dat: Dict[str, List[List[str]]], session: db.Session + ): + """ + Parse one entry from the reaction attribute-value file, and add relevant + information to the graph database in one transaction. + + Args: + rxn_id: The *full* reaction ID from the graph database. + rxn_dat: The reactions.dat file as an attribute-value list. + session: The graph database session to use. + + Returns: + A string containing the canonical ID of the reaction. + """ + canonical_id = self._find_rxn_canonical_id(rxn_id, rxn_dat.keys()) + lines = rxn_dat[canonical_id] + props: Dict[str, Union[str, List[str]]] = {"canonical_id": canonical_id} + for k, v in lines: + if k in REACTION_ATTRIBUTES: + # SYNONYMS is a special case because it is a list + if k == "SYNONYMS": + if k in props: + props[REACTION_ATTRIBUTES[k]].append(v) + else: + props[REACTION_ATTRIBUTES[k]] = [v] + else: + props[REACTION_ATTRIBUTES[k]] = v + elif k == "IN-PATHWAY": + session.write_transaction( + lambda tx: tx.run( + """ + MERGE (pw:Pathway {mcId: $pathway}) + MERGE (pw)-[:hasReaction]->(r:Reaction {displayName: $reaction}) + """, + reaction=rxn_id, + pathway=v, + ) + ) + elif k == "CITATIONS": + session.write_transaction( + lambda tx: tx.run( + """ + MERGE (c:Citation {mcId: $citation}) + MERGE (r:Reaction {displayName: $reaction})-[:hasCitation]->(c) + """, + reaction=rxn_id, + citation=v, + ) + ) + + # Clean up props before writing to graph + props = self._clean_props( + props, + num_fields=[ + REACTION_ATTRIBUTES["GIBBS-0"], + REACTION_ATTRIBUTES["STD-REDUCTION-POTENTIAL"], + ], + enum_fields=[ + REACTION_ATTRIBUTES["REACTION-BALANCE-STATUS"], + REACTION_ATTRIBUTES["REACTION-DIRECTION"], + ], + ) + session.write_transaction( + lambda tx: tx.run( + """ + MATCH (r:Reaction {displayName: $reaction}) + SET r += $props; + """, + reaction=rxn_id, + props=props, + ) + ) + def pathway_to_graph(self, lines: List[str]) -> str: """ Parse one entry from the pathway attribute-value file, and add relevant @@ -567,7 +667,7 @@ def _read_dat_file(filepath: Union[str, Path]) -> Dict[str, List[List[str]]]: return docs @staticmethod - def _find_rxn_canonical_id(rxn_id: str, all_ids: Set[str]) -> str: + def _find_rxn_canonical_id(rxn_id: str, all_ids: Iterable[str]) -> str: """Find the canonical ID for a reaction. Some reactions have longer ID forms in ``metabolic-reactions.xml`` than @@ -601,3 +701,24 @@ def _find_rxn_canonical_id(rxn_id: str, all_ids: Set[str]) -> str: else: raise ValueError(f"rxn_id has no canonical form: {rxn_id}") + @staticmethod + def _clean_props( + props: Dict[str, Any], num_fields: Iterable[str], enum_fields: Iterable[str] + ) -> Dict[str, Any]: + """Normalize properties to be used in Cypher. + + Args: + props: Properties to normalize. + + """ + for f in num_fields: + if f in props: + props[f] = float(props[f]) + + enum_pattern = re.compile(r"\W+") + for f in enum_fields: + if f in props: + props[f] = props[f].replace("-", "_").lower() + props[f] = enum_pattern.sub("", props[f]) + + return props From 662cdac33fbc825a499676c5f3bc836a87830327 Mon Sep 17 00:00:00 2001 From: y1zhou Date: Tue, 18 Jan 2022 11:41:49 -0500 Subject: [PATCH 22/42] refactor(metacyc): extract function for adding link to citation nodes --- metabolike/parser/metacyc.py | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index 8973127..fb0fb60 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -335,7 +335,7 @@ def reaction_to_graph( session.write_transaction( lambda tx: tx.run( """ - MERGE (pw:Pathway {mcId: $pathway}) + MERGE (pw:Pathway {mcId: $pathway, displayName: $pathway}) MERGE (pw)-[:hasReaction]->(r:Reaction {displayName: $reaction}) """, reaction=rxn_id, @@ -343,16 +343,7 @@ def reaction_to_graph( ) ) elif k == "CITATIONS": - session.write_transaction( - lambda tx: tx.run( - """ - MERGE (c:Citation {mcId: $citation}) - MERGE (r:Reaction {displayName: $reaction})-[:hasCitation]->(c) - """, - reaction=rxn_id, - citation=v, - ) - ) + self._link_node_to_citation(session, "Reaction", rxn_id, v) # Clean up props before writing to graph props = self._clean_props( @@ -701,6 +692,29 @@ def _find_rxn_canonical_id(rxn_id: str, all_ids: Iterable[str]) -> str: else: raise ValueError(f"rxn_id has no canonical form: {rxn_id}") + @staticmethod + def _link_node_to_citation( + session: db.Session, node_type: str, node_display_name: str, citation_id: str + ): + """Link a node to a citation node. + + Args: + session: Neo4j session. + node_type: Type of the node (Reaction or Pathway). + node_display_name: ``displayName`` of the node. + citation_id: ``mcId`` of the ``Citation`` node. + """ + session.write_transaction( + lambda tx: tx.run( + f""" + MERGE (c:Citation {{mcId: $citation}}) + MERGE (:{node_type} {{displayName: $reaction}})-[:hasCitation]->(c) + """, + reaction=node_display_name, + citation=citation_id, + ) + ) + @staticmethod def _clean_props( props: Dict[str, Any], num_fields: Iterable[str], enum_fields: Iterable[str] From 7d5a428631e0bf05a81b9e7090348c3ca734972c Mon Sep 17 00:00:00 2001 From: y1zhou Date: Tue, 18 Jan 2022 11:50:22 -0500 Subject: [PATCH 23/42] refactor(metacyc): change sbml reader to staticmethod --- metabolike/parser/metacyc.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index fb0fb60..e864fb9 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -100,7 +100,7 @@ def __init__( def setup(self, force: bool = False): # Read SBML file - doc = self._read_sbml() + doc = self._read_sbml(self.input_files["sbml"]) model: libsbml.Model = doc.getModel() if not self.db_name: self.db_name: str = model.getMetaId().lower() @@ -418,9 +418,10 @@ def _validate_path(filepath: Optional[Union[str, Path]]) -> Optional[Path]: return f - def _read_sbml(self) -> libsbml.SBMLDocument: + @staticmethod + def _read_sbml(sbml_file: Path) -> libsbml.SBMLDocument: reader = libsbml.SBMLReader() - metacyc = reader.readSBMLFromFile(self.input_files["sbml"]) + metacyc = reader.readSBMLFromFile(sbml_file) logger.info("Finished reading SBML file") for i in range(metacyc.getNumErrors()): From af89bbf7c34f1fb1f7204377ae09aa1a28656ceb Mon Sep 17 00:00:00 2001 From: y1zhou Date: Tue, 18 Jan 2022 12:07:11 -0500 Subject: [PATCH 24/42] feat(metacyc): add pathway.dat information to Pathway node properties --- metabolike/parser/metacyc.py | 71 +++++++++++++++++++----------------- 1 file changed, 37 insertions(+), 34 deletions(-) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index e864fb9..d4a155c 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -125,10 +125,13 @@ def setup(self, force: bool = False): # Read pathways file if given if self.input_files["pathways"]: logger.info("Creating pathway links") - docs = self._read_dat_file(self.input_files["pathways"]) - for pw in docs: - pw_id = self.pathway_to_graph(pw) - logger.debug(f"Pathway {pw_id} added to graph") + pw_dat = self._read_dat_file(self.input_files["pathways"]) + with self.neo4j_driver.session(database=self.db_name) as session: + all_pws = session.run("MATCH (n:Pathway) RETURN n.mcId;").data() + all_pws = [pw["n.mcId"] for pw in all_pws] + for pw in all_pws: + self.pathway_to_graph(pw, pw_dat, session) + logger.debug(f"Added pathway annotation for {pw}") def setup_graph_db(self, **kwargs): """ @@ -368,44 +371,44 @@ def reaction_to_graph( ) ) - def pathway_to_graph(self, lines: List[str]) -> str: + def pathway_to_graph( + self, pw_id: str, pw_dat: Dict[str, List[List[str]]], session: db.Session + ): """ Parse one entry from the pathway attribute-value file, and add relevant information to the graph database in one transaction. Args: - lines: A list of lines from an entry of the file. - - Returns: - A string containing the ID of the pathway. + pw_id: The pathway ID from the graph database. + pw_dat: The pathways.dat file as an attribute-value list. + session: The graph database session to use. """ - pw_id = "" - for line in lines: - # / marks the continuation of the previous line - if line.startswith("/"): - # TODO - continue - - # ^ marks an annotation-value pair where the annotation is a - # label attached to the previous attribute - elif line.startswith("^"): - # TODO - continue - - # Otherwise we have a regular attribute-value pair - else: - attr, val = line.split(" - ", maxsplit=1) - # Treat `UNIQUE-ID` as a special case as we need to return - # the pathway ID separately - if attr == "UNIQUE-ID": - pw_id = val - continue - # TODO + lines = pw_dat[pw_id] + props: Dict[str, Union[str, List[str]]] = {} + for k, v in lines: + # Pathway node properties + if k == "COMMENT": + props["comment"] = v + elif k == "SYNONYMS": + if k in props: + props["synonyms"].append(v) + else: + props["synonyms"] = [v] if not pw_id: raise ValueError("Pathway ID not found") - return pw_id + # Write Pathway node properties + session.write_transaction( + lambda tx: tx.run( + """ + MATCH (n:Pathway {displayName: $pw}) + SET n += $props; + """, + pw=pw_id, + props=props, + ) + ) @staticmethod def _validate_path(filepath: Optional[Union[str, Path]]) -> Optional[Path]: @@ -709,9 +712,9 @@ def _link_node_to_citation( lambda tx: tx.run( f""" MERGE (c:Citation {{mcId: $citation}}) - MERGE (:{node_type} {{displayName: $reaction}})-[:hasCitation]->(c) + MERGE (:{node_type} {{displayName: $dn}})-[:hasCitation]->(c) """, - reaction=node_display_name, + dn=node_display_name, citation=citation_id, ) ) From 0fd31751de50e1aa902d82d8fcd76f8ee2b02847 Mon Sep 17 00:00:00 2001 From: y1zhou Date: Tue, 18 Jan 2022 12:14:04 -0500 Subject: [PATCH 25/42] feat(metacyc): link pathway nodes to super-pathways and citations --- metabolike/parser/metacyc.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index d4a155c..1547a91 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -395,8 +395,20 @@ def pathway_to_graph( else: props["synonyms"] = [v] - if not pw_id: - raise ValueError("Pathway ID not found") + # Relationship with other nodes + elif k == "IN-PATHWAY": + session.write_transaction( + lambda tx: tx.run( + """ + MERGE (spw:Pathway {mcId: $super_pw, displayName: $super_pw}) + MERGE (spw)-[:hasSubPathway]->(pw:Pathway {mcId: $pw}) + """, + pw=pw_id, + super_pw=v, + ) + ) + elif k == "CITATIONS": + self._link_node_to_citation(session, "Pathway", pw_id, v) # Write Pathway node properties session.write_transaction( @@ -648,7 +660,7 @@ def _read_dat_file(filepath: Union[str, Path]) -> Dict[str, List[List[str]]]: continue doc = list(g) - # Concatenate attributes with multiple lines (mostly COMMENT) + # Concatenate attributes with multiple lines (mostly COMMENT) doc_txt = "\n".join(doc) doc_txt = doc_txt.replace("\n/", " ") doc = doc_txt.split("\n") From 5721188c179ec83756118e885287e70d75c39710 Mon Sep 17 00:00:00 2001 From: y1zhou Date: Tue, 18 Jan 2022 15:16:39 -0500 Subject: [PATCH 26/42] refactor(metacyc): extract helper functions for converting camelcase and constructing dict --- metabolike/parser/metacyc.py | 43 ++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index 1547a91..7a68c0e 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -752,3 +752,46 @@ def _clean_props( props[f] = enum_pattern.sub("", props[f]) return props + + +def _snake_to_camel(s: str, sep: str = "-") -> str: + """Convert snake_case to CamelCase. + + Args: + s: String to convert. + sep: Separator to use. + + Returns: + camelCase string. + """ + s_camel = [x.capitalize() for x in s.split(sep)] + s_camel[0] = s_camel[0].lower() + return "".join(s_camel) + + +def _add_kv_to_dict( + d: Dict[str, Any], k: str, v: Any, as_list: bool = False +) -> Dict[str, Any]: + """Add a key-value pair to a dictionary. + + Args: + d: Dictionary to add the key-value pair to. + k: Key to add. + v: Value to add. + + Returns: + Dictionary with the key-value pair added. If the key already exists, + the value is saved as a list. + """ + k_camel = _snake_to_camel(k) + if as_list: + if k_camel in d: + d[k_camel].append(v) + else: + d[k_camel] = [v] + else: + d[k_camel] = v + + return d + + From 834b99e89b7b3ee97e525b50ffe9ea2f8a4953ca Mon Sep 17 00:00:00 2001 From: y1zhou Date: Tue, 18 Jan 2022 15:17:20 -0500 Subject: [PATCH 27/42] fix(metacyc): ensure " - " in attribute value doesn't get split --- metabolike/parser/metacyc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index 7a68c0e..881c150 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -666,7 +666,7 @@ def _read_dat_file(filepath: Union[str, Path]) -> Dict[str, List[List[str]]]: doc = doc_txt.split("\n") # Split key-attribute pairs - doc = [l.split(" - ") for l in doc] + doc = [l.split(" - ", maxsplit=1) for l in doc] uniq_id = doc[0][1] doc = doc[1:] docs[uniq_id] = doc From 266b364542237f5b95344632c9efe88abca9da99 Mon Sep 17 00:00:00 2001 From: y1zhou Date: Tue, 18 Jan 2022 15:45:42 -0500 Subject: [PATCH 28/42] refactor(metacyc): use helper functions for adding properties to nodes --- metabolike/parser/metacyc.py | 42 ++++++++++++++---------------------- 1 file changed, 16 insertions(+), 26 deletions(-) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index 881c150..b80f76b 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -42,14 +42,12 @@ REACTION_ATTRIBUTES = { # Relationship properties - "GIBBS-0": "gibbs0", - "STD-REDUCTION-POTENTIAL": "stdReductionPotential", - "REACTION-DIRECTION": "reactionDirection", - "REACTION-BALANCE-STATUS": "reactionBalanceStatus", - "SYSTEMATIC-NAME": "systematicName", - "COMMENT": "comment", # TODO: link to other nodes - # Relationship property as a list - "SYNONYMS": "synonyms", + "GIBBS-0", + "STD-REDUCTION-POTENTIAL", + "REACTION-DIRECTION", + "REACTION-BALANCE-STATUS", + "SYSTEMATIC-NAME", + "COMMENT", # TODO: link to other nodes } @@ -325,15 +323,11 @@ def reaction_to_graph( lines = rxn_dat[canonical_id] props: Dict[str, Union[str, List[str]]] = {"canonical_id": canonical_id} for k, v in lines: - if k in REACTION_ATTRIBUTES: # SYNONYMS is a special case because it is a list if k == "SYNONYMS": - if k in props: - props[REACTION_ATTRIBUTES[k]].append(v) - else: - props[REACTION_ATTRIBUTES[k]] = [v] - else: - props[REACTION_ATTRIBUTES[k]] = v + _add_kv_to_dict(props, k, v, as_list=True) + elif k in REACTION_ATTRIBUTES: + _add_kv_to_dict(props, k, v, as_list=False) elif k == "IN-PATHWAY": session.write_transaction( lambda tx: tx.run( @@ -352,12 +346,11 @@ def reaction_to_graph( props = self._clean_props( props, num_fields=[ - REACTION_ATTRIBUTES["GIBBS-0"], - REACTION_ATTRIBUTES["STD-REDUCTION-POTENTIAL"], + _snake_to_camel(x) for x in ["GIBBS-0", "STD-REDUCTION-POTENTIAL"] ], enum_fields=[ - REACTION_ATTRIBUTES["REACTION-BALANCE-STATUS"], - REACTION_ATTRIBUTES["REACTION-DIRECTION"], + _snake_to_camel(x) + for x in ["REACTION-BALANCE-STATUS", "REACTION-DIRECTION"] ], ) session.write_transaction( @@ -387,13 +380,10 @@ def pathway_to_graph( props: Dict[str, Union[str, List[str]]] = {} for k, v in lines: # Pathway node properties - if k == "COMMENT": - props["comment"] = v - elif k == "SYNONYMS": - if k in props: - props["synonyms"].append(v) - else: - props["synonyms"] = [v] + if k in {"SYNONYMS", "TYPES"}: + _add_kv_to_dict(props, k, v, as_list=True) + elif k in {"COMMENT", "COMMON-NAME"}: + _add_kv_to_dict(props, k, v, as_list=False) # Relationship with other nodes elif k == "IN-PATHWAY": From f09c811d9cf15dbe2e4bf04545618c9cae738710 Mon Sep 17 00:00:00 2001 From: y1zhou Date: Tue, 18 Jan 2022 15:47:11 -0500 Subject: [PATCH 29/42] fix(metacyc): use match to skip nodes that are already created --- metabolike/parser/metacyc.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index b80f76b..cfa02b3 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -332,7 +332,8 @@ def reaction_to_graph( session.write_transaction( lambda tx: tx.run( """ - MERGE (pw:Pathway {mcId: $pathway, displayName: $pathway}) + MERGE (pw:Pathway {mcId: $pathway}) + ON CREATE SET pw.displayName = $pathway MERGE (pw)-[:hasReaction]->(r:Reaction {displayName: $reaction}) """, reaction=rxn_id, @@ -386,14 +387,16 @@ def pathway_to_graph( _add_kv_to_dict(props, k, v, as_list=False) # Relationship with other nodes - elif k == "IN-PATHWAY": + elif k in {"IN-PATHWAY", "SUPER-PATHWAYS"}: session.write_transaction( lambda tx: tx.run( """ - MERGE (spw:Pathway {mcId: $super_pw, displayName: $super_pw}) - MERGE (spw)-[:hasSubPathway]->(pw:Pathway {mcId: $pw}) + MATCH (pw:Pathway {mcId: $pw_id}) + MERGE (spw:Pathway {mcId: $super_pw}) + ON CREATE SET spw.displayName = $super_pw + MERGE (spw)-[:hasSubPathway]->(pw) """, - pw=pw_id, + pw_id=pw_id, super_pw=v, ) ) From 0a1afc252838cc79081432fbe6eb737728e913a1 Mon Sep 17 00:00:00 2001 From: y1zhou Date: Tue, 18 Jan 2022 15:48:09 -0500 Subject: [PATCH 30/42] feat(metacyc): parse species and taxon-range info from pathways.dat --- metabolike/parser/metacyc.py | 29 +- tests/data/pathways.dat | 2983 +++++++++++++++++++++++++++++++++- 2 files changed, 3008 insertions(+), 4 deletions(-) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index cfa02b3..db7c6df 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -38,6 +38,7 @@ "Complex", "EntitySet", "Citation", + "Taxa", ] REACTION_ATTRIBUTES = { @@ -323,8 +324,8 @@ def reaction_to_graph( lines = rxn_dat[canonical_id] props: Dict[str, Union[str, List[str]]] = {"canonical_id": canonical_id} for k, v in lines: - # SYNONYMS is a special case because it is a list - if k == "SYNONYMS": + # SYNONYMS is a special case because it is a list + if k == "SYNONYMS": _add_kv_to_dict(props, k, v, as_list=True) elif k in REACTION_ATTRIBUTES: _add_kv_to_dict(props, k, v, as_list=False) @@ -402,6 +403,30 @@ def pathway_to_graph( ) elif k == "CITATIONS": self._link_node_to_citation(session, "Pathway", pw_id, v) + elif k == "SPECIES": + session.write_transaction( + lambda tx: tx.run( + """ + MATCH (pw:Pathway {mcId: $pw}) + MERGE (s:Taxa {mcId: $species}) + MERGE (pw)-[:hasRelatedSpecies]->(s) + """, + pw=pw_id, + species=v, + ) + ) + elif k == "TAXONOMIC-RANGE": + session.write_transaction( + lambda tx: tx.run( + """ + MATCH (pw:Pathway {mcId: $pw}) + MERGE (s:Taxa {mcId: $taxon_range}) + MERGE (pw)-[:hasExpectedTaxonRange]->(s) + """, + pw=pw_id, + taxon_range=v, + ) + ) # Write Pathway node properties session.write_transaction( diff --git a/tests/data/pathways.dat b/tests/data/pathways.dat index 97cce2e..af1e8cf 100644 --- a/tests/data/pathways.dat +++ b/tests/data/pathways.dat @@ -24,6 +24,390 @@ # Version: 25.5 # Date and time generated: July 21, 2021, 14:14:55 # +UNIQUE-ID - ANAGLYCOLYSIS-PWY +TYPES - GLYCOLYSIS-VARIANTS +COMMON-NAME - glycolysis III (from glucose) +CITATIONS - ArchMicr161-460:EV-EXP-IDA:3365889608:fulcher +CITATIONS - 9075622:EV-EXP-IDA:3365889608:fulcher +CITATIONS - 14553940:EV-EXP-IDA:3365889608:fulcher +CITATIONS - 22549953:EV-EXP-TAS:3570987366:brito +COMMENT - General Background +/ +/Glycolysis, which was first studied as a pathway for the utilization of glucose, is one of the major pathways of central metabolism, the other two being the |FRAME:PENTOSE-P-PWY| and the |FRAME:TCA "TCA cycle"|. Glycolysis is essential under all conditions of growth, because it produces six of the 13 precursor metabolites that are the starting materials for the biosynthesis of building blocks for macromolecules and other needed small molecules (the six compounds are |FRAME:GLC-6-P|, |FRAME:FRUCTOSE-6P|, |FRAME:DIHYDROXY-ACETONE-PHOSPHATE|, |FRAME:G3P|, |FRAME:PHOSPHO-ENOL-PYRUVATE|, and |FRAME: PYRUVATE|). Glycolysis can be found, if at least in part, in almost all organisms. +/ +/Even though glycolysis is often described starting with glucose, other hexoses (e.g. fructose) can also serve as input (as its name implies - glycose is a general term for simple sugars). +/ +/Glycolysis has evolved to fulfill two essential functions: +/ +/i) it oxidizes hexoses to generate |FRAME:ATP|, reductants and |FRAME:PYRUVATE|, and +/ +/ii) being an amphibolic pathway (pathway that involves both catabolism and anabolism), it can reversibly produce hexoses from various low-molecular weight molecules. +/ +/Because various degradation pathways feed into glycolysis at many different points, glycolysis or portions of it run in the forward or reverse direction, depending on the carbon source being utilized, in order to satisfy the cell's need for precursor metabolites and energy. +/This switching of direction is possible because all but two of the enzymatic reactions comprising glycolysis are reversible, and the conversions catalyzed by the two exceptions are rendered functionally reversible by other enzymes (|FRAME:F16B-CPLX "fructose-1,6-bisphosphatase"| and |FRAME:PEPSYNTH-CPLX|) that catalyze different irreversible reactions flowing in the opposite direction. +/ +/About This Pathway +/ +/The difference between this pathway and the one described in |FRAME: GLYCOLYSIS| is that glucose is phosphorylated not by a PTS transporter but intracellularly by |FRAME:CPLX-4241|. This reaction can be catalyzed by a general |FRAME: EC-2.7.1.1 "hexokinase"| (EC 2.7.1.1) |CITS: [ArchMicr161-460] [9075622]|, but some organisms have a highly specific |FRAME: EC-2.7.1.2 "glucokinase"| (EC 2.7.1.2) |CITS: [14553940]|. +/ +/In mammals, glycolysis always begins with the phosphorylation of glucose by hexokinase to form glucose 6-phosphate |CITS: [1637300]|. This ensures that the intracellular glucose concentration is kept low and promotes the continuous transport of glucose into the cell. In mammalian liver this reaction is carried out by glucokinase, an isozyme of hexokinase which has a much lower affinity (high Km) for glucose so it is effective only when glucose is abundant |CITS: [3902008]|. Its role is to provide glucose 6-phosphate for the synthesis of glycogen. +/ +/Glucose 6-phosphate is then isomerized to fructose 6-phosphate in a reversible reaction whose direction is driven by the concentration of fructose 6-phosphate |CITS: [12573240]|. A second phosphorylation event converts fructose 6-phosphate to fructose 1,6 bisphosphate in a rate limiting irreversible step |CITS: [16742819]|. The formation of two charged groups prevents the diffusion of substrates out of the cell. This six-carbon sugar is then cleaved into two three-carbon sugars that are interconvertible |CITS: [999838]|. +/ +/Glyceraldehyde-3-phosphate enters the second stage of the pathway that results in the production of 4 ATP and 2 NADH molecules with a net gain of 2 ATP and 2 NADH |CITS: [6188151][BERG02]|. The two substrate-level phosphorylation steps that produce ATP are catalyzed by phosphoglycerate kinase and pyruvate kinase respectively, and are important regulatory points in the glycolytic pathway |CITS: [BERG02]|. +/ +/Glycolysis from internal glucose is also found in many prokaryotes. For example, |FRAME: TAX-2336| is a hyperthermophilic anaerobic eubacterium that can utilize various sugars or complex organic substrates as carbon and energy sources. With glucose as a substrate, |FRAME: TAX-2336| produces lactate, acetate, carbon dioxide and hydrogen as the main fermentation products (see |FRAME: PWY-5100|). +/ +/The organism has a highly specific |FRAME:CPLX-4241| and a periplasmic, high-affinity glucose-binding protein, suggesting the use of an ATP-binding casette (ABC) transporter for glucose entry into the cell |CITS: [12427944]|. The rest of the pathway occurs via the conventional Embden-Meyerhof pathway |CITS: [ArchMicr161-460][8791626][9075622][2318202]|. +CREDITS - SRI +CREDITS - brito +CREDITS - O-18 +CREDITS - pellegrini-toole +IN-PATHWAY - ANAEROFRUCAT-PWY +INSTANCE-NAME-TEMPLATE - PWY-* +KEY-REACTIONS - GLUCOKIN-RXN +PATHWAY-LINKS - (PYRUVATE PYRUVDEHYD-PWY PWY-5100) +PREDECESSORS - (2PGADEHYDRAT-RXN 3PGAREARR-RXN) +PREDECESSORS - (3PGAREARR-RXN PHOSGLYPHOS-RXN) +PREDECESSORS - (TRIOSEPISOMERIZATION-RXN F16ALDOLASE-RXN) +PREDECESSORS - ("PGLUCISOM-RXN" "GLUCOKIN-RXN") +PREDECESSORS - ("6PFRUCTPHOS-RXN" "PGLUCISOM-RXN") +PREDECESSORS - ("2PGADEHYDRAT-RXN" "RXN-15513") +PREDECESSORS - ("RXN-15513" "PHOSGLYPHOS-RXN") +PREDECESSORS - ("GAPOXNPHOSPHN-RXN" "TRIOSEPISOMERIZATION-RXN") +PREDECESSORS - ("PEPDEPHOS-RXN" "2PGADEHYDRAT-RXN") +PREDECESSORS - ("PHOSGLYPHOS-RXN" "GAPOXNPHOSPHN-RXN") +PREDECESSORS - ("GAPOXNPHOSPHN-RXN" "F16ALDOLASE-RXN") +PREDECESSORS - ("F16ALDOLASE-RXN" "6PFRUCTPHOS-RXN") +PRIMARIES - ("TRIOSEPISOMERIZATION-RXN" ("DIHYDROXY-ACETONE-PHOSPHATE") ("GAP")) +PRIMARY-PRODUCTS - PYRUVATE +PRIMARY-REACTANTS - Glucopyranose +REACTION-LAYOUT - (3PGAREARR-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :R2L) (:RIGHT-PRIMARIES G3P)) +REACTION-LAYOUT - (GLUCOKIN-RXN (:LEFT-PRIMARIES Glucopyranose) (:DIRECTION :L2R) (:RIGHT-PRIMARIES D-glucopyranose-6-phosphate)) +REACTION-LAYOUT - (PGLUCISOM-RXN (:LEFT-PRIMARIES D-glucopyranose-6-phosphate) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (RXN-15513 (:LEFT-PRIMARIES 2-PG) (:DIRECTION :R2L) (:RIGHT-PRIMARIES G3P)) +REACTION-LAYOUT - (PEPDEPHOS-RXN (:LEFT-PRIMARIES PYRUVATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (2PGADEHYDRAT-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :L2R) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (PHOSGLYPHOS-RXN (:LEFT-PRIMARIES G3P) (:DIRECTION :R2L) (:RIGHT-PRIMARIES DPG)) +REACTION-LAYOUT - (GAPOXNPHOSPHN-RXN (:LEFT-PRIMARIES GAP) (:DIRECTION :L2R) (:RIGHT-PRIMARIES DPG)) +REACTION-LAYOUT - (TRIOSEPISOMERIZATION-RXN (:LEFT-PRIMARIES GAP) (:DIRECTION :R2L) (:RIGHT-PRIMARIES DIHYDROXY-ACETONE-PHOSPHATE)) +REACTION-LAYOUT - (F16ALDOLASE-RXN (:LEFT-PRIMARIES FRUCTOSE-16-DIPHOSPHATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES GAP DIHYDROXY-ACETONE-PHOSPHATE)) +REACTION-LAYOUT - (6PFRUCTPHOS-RXN (:LEFT-PRIMARIES FRUCTOSE-6P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-16-DIPHOSPHATE)) +REACTION-LIST - 3PGAREARR-RXN +REACTION-LIST - GLUCOKIN-RXN +REACTION-LIST - PGLUCISOM-RXN +REACTION-LIST - RXN-15513 +REACTION-LIST - PEPDEPHOS-RXN +REACTION-LIST - 2PGADEHYDRAT-RXN +REACTION-LIST - PHOSGLYPHOS-RXN +REACTION-LIST - GAPOXNPHOSPHN-RXN +REACTION-LIST - TRIOSEPISOMERIZATION-RXN +REACTION-LIST - F16ALDOLASE-RXN +REACTION-LIST - 6PFRUCTPHOS-RXN +SPECIES - TAX-9606 +SPECIES - TAX-4932 +SPECIES - TAX-559292 +SPECIES - TAX-2336 +SUPER-PATHWAYS - ANAEROFRUCAT-PWY +SYNONYMS - anaerobic glycolysis +SYNONYMS - Embden-Meyerhof-Parnas pathway +SYNONYMS - EMP pathway +SYNONYMS - glycolysis III (glucokinase) +TAXONOMIC-RANGE - TAX-2759 +TAXONOMIC-RANGE - TAX-2 +// +UNIQUE-ID - CALVIN-PWY +TYPES - Autotrophic-CO2-Fixation +TYPES - CARBO-BIOSYNTHESIS +COMMON-NAME - Calvin-Benson-Bassham cycle +CITATIONS - MatthewsvanHoldeII +CITATIONS - Stewart +CITATIONS - STITT91 +CITATIONS - WHITE95:EV-EXP-TAS:3372102692:caspi +COMMENT - The Calvin cycle is the major |FRAME: CARBON-DIOXIDE| fixation pathway, found in all in green plants and many autotrophic bacteria. +/ +/In this cycle, one |FRAME: CARBON-DIOXIDE| molecule at a time is added to the acceptor molecule |FRAME: D-RIBULOSE-15-P2| (RuBP) generating two molecules of |FRAME: G3P|. The |FRAME: G3P| is then passed through a cyclic series of reactions in which the acceptor molecule (RuBP) is regenerated. Out of the six carbons present in two molecules of |FRAME: G3P|, five are recycled and only one remains available for biosynthesis. Since in each turn of the cycle only one carbon atom is assimilated, the cycle must go through three turns to produce one molecule of |FRAME: G3P|, or six turns to produce one molecule of a hexose sugar. +/ +/The Calvin cycle can be divided into three stages: fixation, reduction and regeneration. +/ +/In the first stage the reductive carboxylation of |FRAME: D-RIBULOSE-15-P2| (RuBP) is catalyzed by the the enzyme |FRAME:CPLX-105| (RubisCO), forming 2 molecules of |FRAME: G3P|. +/ +/In the second stage these two molecules are phosphorylated to |FRAME: DPG| and then reductively dephosphorylated to |FRAME: GAP|. In three turns of the cycle 3 molecules of |FRAME: CARBON-DIOXIDE| are fixed, and 6 molecules of |FRAME: GAP| are formed. Out of these, one is diverted to biosynthetic pathways, while the other 5 are used up in the next stage. +/ +/The third stage is the most complicated one. It consists of a series of rearrangements that eventually regenerate RuBP. +/Some of the |FRAME:GAP| molecules are converted to |FRAME:DIHYDROXY-ACETONE-PHOSPHATE|. |FRAME:GAP| and |FRAME:DIHYDROXY-ACETONE-PHOSPHATE| are then condensed into |FRAME:FRUCTOSE-16-DIPHOSPHATE| which is dephosphorylated to |FRAME:FRUCTOSE-6P|. |FRAME:FRUCTOSE-6P| is then combined with another |FRAME: GAP| molecule and cleaved into |FRAME:XYLULOSE-5-PHOSPHATE| (X5P) and |FRAME:ERYTHROSE-4P|. The later is combined with |FRAME:DIHYDROXY-ACETONE-PHOSPHATE| forming |FRAME: D-SEDOHEPTULOSE-1-7-P2|, which is dephosphorylated to |FRAME:D-SEDOHEPTULOSE-7-P|. +/|FRAME:D-SEDOHEPTULOSE-7-P| is combined with |FRAME: GAP| and is cleaved into a second |FRAME:XYLULOSE-5-PHOSPHATE| and a |FRAME:RIBOSE-5P| (R5P). Both of these are converted into |FRAME:RIBULOSE-5P|, which is finally phosphorylated to |FRAME: D-RIBULOSE-15-P2|, regenerating the key |FRAME: CARBON-DIOXIDE|-acceptor molecule. +/ +/During this cycle, especially during the day, |FRAME: G3P|, |FRAME:DIHYDROXY-ACETONE-PHOSPHATE|, or |FRAME:GAP| can be siphoned off and sent out to the cytosol via the triose phosphates transporter for |FRAME: SUCSYN-PWY|. Plants need to carefully control the carbon flux between this and competeing pathways to make sure that the Calvin cycle can proceed |CITS: [19325167]|. +CREDITS - SRI +CREDITS - caspi +CREDITS - O-18 +CREDITS - pellegrini-toole +DBLINKS - (PLANTCYC "CALVIN-PWY" NIL |dreher| 3506880519 NIL NIL) +DBLINKS - (ARACYC "CALVIN-PWY" NIL |green| 3381011399 NIL NIL) +ENZYMES-NOT-USED - AT1G43670-MONOMER +ENZYMES-NOT-USED - AT3G55440-MONOMER +IN-PATHWAY - PWY-7218 +IN-PATHWAY - PWY-6886 +IN-PATHWAY - PHOTOALL-PWY +INSTANCE-NAME-TEMPLATE - PWY-* +KEY-REACTIONS - RIBULOSE-BISPHOSPHATE-CARBOXYLASE-RXN +PATHWAY-LINKS - (CARBON-DIOXIDE ("input to the pathway" . :INCOMING)) +PATHWAY-LINKS - (G3P SUCSYN-PWY) +PATHWAY-LINKS - (GAP "output to biosynthesis") +PATHWAY-LINKS - (DIHYDROXY-ACETONE-PHOSPHATE SUCSYN-PWY) +PREDECESSORS - ("RIB5PISOM-RXN" "1TRANSKETO-RXN") +PREDECESSORS - ("PHOSPHORIBULOKINASE-RXN" "RIBULP3EPIM-RXN") +PREDECESSORS - ("RIBULP3EPIM-RXN" "2TRANSKETO-RXN") +PREDECESSORS - ("TRIOSEPISOMERIZATION-RXN" "1.2.1.13-RXN") +PREDECESSORS - ("1.2.1.13-RXN" "PHOSGLYPHOS-RXN") +PREDECESSORS - ("PHOSGLYPHOS-RXN" "RIBULOSE-BISPHOSPHATE-CARBOXYLASE-RXN") +PREDECESSORS - ("TRIOSEPISOMERIZATION-RXN") +PREDECESSORS - ("SEDOBISALDOL-RXN" "TRIOSEPISOMERIZATION-RXN") +PREDECESSORS - ("SEDOHEPTULOSE-BISPHOSPHATASE-RXN" "SEDOBISALDOL-RXN") +PREDECESSORS - ("1TRANSKETO-RXN" "SEDOHEPTULOSE-BISPHOSPHATASE-RXN") +PREDECESSORS - ("RIBULP3EPIM-RXN" "1TRANSKETO-RXN") +PREDECESSORS - ("RIBULOSE-BISPHOSPHATE-CARBOXYLASE-RXN" "PHOSPHORIBULOKINASE-RXN") +PREDECESSORS - ("PHOSPHORIBULOKINASE-RXN" "RIB5PISOM-RXN") +PREDECESSORS - ("2TRANSKETO-RXN" "F16BDEPHOS-RXN") +PREDECESSORS - ("F16BDEPHOS-RXN" "F16ALDOLASE-RXN") +PREDECESSORS - ("F16ALDOLASE-RXN" "TRIOSEPISOMERIZATION-RXN") +PRIMARIES - ("RIBULOSE-BISPHOSPHATE-CARBOXYLASE-RXN" ("D-RIBULOSE-15-P2" "CARBON-DIOXIDE") NIL) +PRIMARIES - ("RIB5PISOM-RXN" ("RIBOSE-5P") NIL) +PRIMARIES - ("2TRANSKETO-RXN" ("FRUCTOSE-6P") ("XYLULOSE-5-PHOSPHATE")) +PRIMARIES - ("RIBULP3EPIM-RXN" ("XYLULOSE-5-PHOSPHATE") ("RIBULOSE-5P")) +PRIMARIES - ("1TRANSKETO-RXN" ("D-SEDOHEPTULOSE-7-P") ("RIBOSE-5P" "XYLULOSE-5-PHOSPHATE")) +PRIMARIES - ("F16ALDOLASE-RXN" NIL ("FRUCTOSE-16-DIPHOSPHATE")) +PRIMARIES - ("TRIOSEPISOMERIZATION-RXN" ("GAP") NIL) +PRIMARIES - ("1.2.1.13-RXN" ("DPG") ("GAP")) +PRIMARIES - ("PHOSGLYPHOS-RXN" ("G3P") ("DPG")) +PRIMARY-PRODUCTS - GAP +PRIMARY-REACTANTS - CARBON-DIOXIDE +RATE-LIMITING-STEP - F16BDEPHOS-RXN +RATE-LIMITING-STEP - F16ALDOLASE-RXN +RATE-LIMITING-STEP - SEDOHEPTULOSE-BISPHOSPHATASE-RXN +RATE-LIMITING-STEP - 2TRANSKETO-RXN +RATE-LIMITING-STEP - 1TRANSKETO-RXN +RATE-LIMITING-STEP - RIBULOSE-BISPHOSPHATE-CARBOXYLASE-RXN +REACTION-LAYOUT - (RIB5PISOM-RXN (:LEFT-PRIMARIES RIBOSE-5P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES RIBULOSE-5P)) +REACTION-LAYOUT - (PHOSPHORIBULOKINASE-RXN (:LEFT-PRIMARIES RIBULOSE-5P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES D-RIBULOSE-15-P2)) +REACTION-LAYOUT - (RIBULP3EPIM-RXN (:LEFT-PRIMARIES RIBULOSE-5P) (:DIRECTION :R2L) (:RIGHT-PRIMARIES XYLULOSE-5-PHOSPHATE)) +REACTION-LAYOUT - (SEDOHEPTULOSE-BISPHOSPHATASE-RXN (:LEFT-PRIMARIES D-SEDOHEPTULOSE-1-7-P2) (:DIRECTION :L2R) (:RIGHT-PRIMARIES D-SEDOHEPTULOSE-7-P)) +REACTION-LAYOUT - (2TRANSKETO-RXN (:LEFT-PRIMARIES XYLULOSE-5-PHOSPHATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES GAP FRUCTOSE-6P)) +REACTION-LAYOUT - (1TRANSKETO-RXN (:LEFT-PRIMARIES GAP D-SEDOHEPTULOSE-7-P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES XYLULOSE-5-PHOSPHATE RIBOSE-5P)) +REACTION-LAYOUT - (F16BDEPHOS-RXN (:LEFT-PRIMARIES FRUCTOSE-16-DIPHOSPHATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (SEDOBISALDOL-RXN (:LEFT-PRIMARIES D-SEDOHEPTULOSE-1-7-P2) (:DIRECTION :R2L) (:RIGHT-PRIMARIES DIHYDROXY-ACETONE-PHOSPHATE)) +REACTION-LAYOUT - (F16ALDOLASE-RXN (:LEFT-PRIMARIES FRUCTOSE-16-DIPHOSPHATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES GAP DIHYDROXY-ACETONE-PHOSPHATE)) +REACTION-LAYOUT - (TRIOSEPISOMERIZATION-RXN (:LEFT-PRIMARIES GAP) (:DIRECTION :L2R) (:RIGHT-PRIMARIES DIHYDROXY-ACETONE-PHOSPHATE)) +REACTION-LAYOUT - (1.2.1.13-RXN (:LEFT-PRIMARIES GAP) (:DIRECTION :R2L) (:RIGHT-PRIMARIES DPG)) +REACTION-LAYOUT - (PHOSGLYPHOS-RXN (:LEFT-PRIMARIES G3P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES DPG)) +REACTION-LAYOUT - (RIBULOSE-BISPHOSPHATE-CARBOXYLASE-RXN (:LEFT-PRIMARIES G3P) (:DIRECTION :R2L) (:RIGHT-PRIMARIES CARBON-DIOXIDE D-RIBULOSE-15-P2)) +REACTION-LIST - RIB5PISOM-RXN +REACTION-LIST - PHOSPHORIBULOKINASE-RXN +REACTION-LIST - RIBULP3EPIM-RXN +REACTION-LIST - SEDOHEPTULOSE-BISPHOSPHATASE-RXN +REACTION-LIST - 2TRANSKETO-RXN +REACTION-LIST - 1TRANSKETO-RXN +REACTION-LIST - F16BDEPHOS-RXN +REACTION-LIST - SEDOBISALDOL-RXN +REACTION-LIST - F16ALDOLASE-RXN +REACTION-LIST - TRIOSEPISOMERIZATION-RXN +REACTION-LIST - 1.2.1.13-RXN +REACTION-LIST - PHOSGLYPHOS-RXN +REACTION-LIST - RIBULOSE-BISPHOSPHATE-CARBOXYLASE-RXN +SPECIES - TAX-3055 +SPECIES - TAX-4097 +SPECIES - TAX-1140 +SPECIES - TAX-1148 +SPECIES - ORG-5993 +SPECIES - ORG4FS-2 +SUPER-PATHWAYS - PWY-7218 +SUPER-PATHWAYS - PWY-6886 +SUPER-PATHWAYS - PHOTOALL-PWY +SYNONYMS - photosynthetic dark reactions +SYNONYMS - photosynthetic CO2 fixation +SYNONYMS - reductive pentose phosphate pathway +SYNONYMS - Calvin cycle +SYNONYMS - photosynthesis - dark reaction +SYNONYMS - carbon fixation +SYNONYMS - Calvin-Benson cycle +TAXONOMIC-RANGE - TAX-1117 +TAXONOMIC-RANGE - TAX-39119 +TAXONOMIC-RANGE - TAX-38254 +TAXONOMIC-RANGE - TAX-29197 +TAXONOMIC-RANGE - TAX-38410 +TAXONOMIC-RANGE - TAX-5747 +TAXONOMIC-RANGE - TAX-2864 +TAXONOMIC-RANGE - TAX-877183 +TAXONOMIC-RANGE - TAX-2836 +TAXONOMIC-RANGE - TAX-3027 +TAXONOMIC-RANGE - TAX-2830 +TAXONOMIC-RANGE - TAX-2833 +TAXONOMIC-RANGE - TAX-3041 +TAXONOMIC-RANGE - TAX-33682 +TAXONOMIC-RANGE - TAX-2763 +TAXONOMIC-RANGE - TAX-2870 +TAXONOMIC-RANGE - TAX-2825 +TAXONOMIC-RANGE - TAX-2 +TAXONOMIC-RANGE - TAX-33090 +// +UNIQUE-ID - FERMENTATION-PWY +TYPES - Fermentation-to-Acids +TYPES - Pyruvate-Ethanol-Fermentation +COMMON-NAME - mixed acid fermentation +CITATIONS - 2661531:EV-EXP:3694972380:caspi +CITATIONS - DawesBBA22-253:EV-EXP:3694972380:caspi +COMMENT - Fermentation produces energy in an anaerobic environment via substrate level phosphorylation. The electron donor is an organic compound and the electron acceptor is another organic compound of lower energy content. +CREDITS - O-18 +CREDITS - riley +CREDITS - O0-3 +CREDITS - ingraham +DBLINKS - (ECOCYC "FERMENTATION-PWY" NIL |paley| 3392397157 NIL NIL) +ENZYMES-NOT-USED - CPLX0-251 +ENZYMES-NOT-USED - GARTRANSFORMYL2-MONOMER +ENZYMES-NOT-USED - MHPF-MONOMER +ENZYMES-NOT-USED - CPLX0-7760 +INSTANCE-NAME-TEMPLATE - PWY-* +PATHWAY-LINKS - (PHOSPHO-ENOL-PYRUVATE GLYCOLYSIS) +PREDECESSORS - ("CITSYN-RXN" "PYRUVFORMLY-RXN") +PREDECESSORS - ("ISOCITDEH-RXN" "ACONITATEHYDR-RXN") +PREDECESSORS - ("ACONITATEHYDR-RXN" "ACONITATEDEHYDR-RXN") +PREDECESSORS - ("ACONITATEDEHYDR-RXN" "CITSYN-RXN") +PREDECESSORS - ("CITSYN-RXN" "PEPCARBOX-RXN") +PREDECESSORS - ("PHOSACETYLTRANS-RXN" "PYRUVFORMLY-RXN") +PREDECESSORS - ("FHLMULTI-RXN" "PYRUVFORMLY-RXN") +PREDECESSORS - ("PEPDEPHOS-RXN") +PREDECESSORS - ("PYRUVFORMLY-RXN" "PEPDEPHOS-RXN") +PREDECESSORS - ("PEPCARBOX-RXN") +PREDECESSORS - ("MALATE-DEH-RXN" "PEPCARBOX-RXN") +PREDECESSORS - ("FUMHYDR-RXN" "MALATE-DEH-RXN") +PREDECESSORS - ("DLACTDEHYDROGNAD-RXN" "PEPDEPHOS-RXN") +PREDECESSORS - ("ACETALD-DEHYDROG-RXN" "PYRUVFORMLY-RXN") +PREDECESSORS - ("ALCOHOL-DEHYDROG-RXN" "ACETALD-DEHYDROG-RXN") +PREDECESSORS - ("ACETATEKIN-RXN" "PHOSACETYLTRANS-RXN") +PREDECESSORS - ("R601-RXN" "FUMHYDR-RXN") +PRIMARIES - ("CITSYN-RXN" ("OXALACETIC_ACID" "ACETYL-COA") ("CIT")) +PRIMARIES - ("FHLMULTI-RXN" NIL ("CARBON-DIOXIDE" "HYDROGEN-MOLECULE")) +REACTION-LAYOUT - (MALATE-DEH-RXN (:LEFT-PRIMARIES MAL) (:DIRECTION :R2L) (:RIGHT-PRIMARIES OXALACETIC_ACID)) +REACTION-LAYOUT - (ISOCITDEH-RXN (:LEFT-PRIMARIES THREO-DS-ISO-CITRATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES CARBON-DIOXIDE 2-KETOGLUTARATE)) +REACTION-LAYOUT - (ACONITATEHYDR-RXN (:LEFT-PRIMARIES CIS-ACONITATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES THREO-DS-ISO-CITRATE)) +REACTION-LAYOUT - (ACONITATEDEHYDR-RXN (:LEFT-PRIMARIES CIT) (:DIRECTION :L2R) (:RIGHT-PRIMARIES CIS-ACONITATE)) +REACTION-LAYOUT - (CITSYN-RXN (:LEFT-PRIMARIES OXALACETIC_ACID ACETYL-COA) (:DIRECTION :L2R) (:RIGHT-PRIMARIES CIT)) +REACTION-LAYOUT - (R601-RXN (:LEFT-PRIMARIES FUM) (:DIRECTION :L2R) (:RIGHT-PRIMARIES SUC)) +REACTION-LAYOUT - (FHLMULTI-RXN (:LEFT-PRIMARIES FORMATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES HYDROGEN-MOLECULE CARBON-DIOXIDE)) +REACTION-LAYOUT - (PEPCARBOX-RXN (:LEFT-PRIMARIES OXALACETIC_ACID) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (FUMHYDR-RXN (:LEFT-PRIMARIES MAL) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FUM)) +REACTION-LAYOUT - (DLACTDEHYDROGNAD-RXN (:LEFT-PRIMARIES D-LACTATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PYRUVATE)) +REACTION-LAYOUT - (PEPDEPHOS-RXN (:LEFT-PRIMARIES PYRUVATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (ALCOHOL-DEHYDROG-RXN (:LEFT-PRIMARIES ETOH) (:DIRECTION :R2L) (:RIGHT-PRIMARIES ACETALD)) +REACTION-LAYOUT - (ACETALD-DEHYDROG-RXN (:LEFT-PRIMARIES ACETALD) (:DIRECTION :R2L) (:RIGHT-PRIMARIES ACETYL-COA)) +REACTION-LAYOUT - (PYRUVFORMLY-RXN (:LEFT-PRIMARIES ACETYL-COA FORMATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PYRUVATE)) +REACTION-LAYOUT - (ACETATEKIN-RXN (:LEFT-PRIMARIES ACET) (:DIRECTION :R2L) (:RIGHT-PRIMARIES ACETYL-P)) +REACTION-LAYOUT - (PHOSACETYLTRANS-RXN (:LEFT-PRIMARIES ACETYL-COA) (:DIRECTION :L2R) (:RIGHT-PRIMARIES ACETYL-P)) +REACTION-LIST - MALATE-DEH-RXN +REACTION-LIST - ISOCITDEH-RXN +REACTION-LIST - ACONITATEHYDR-RXN +REACTION-LIST - ACONITATEDEHYDR-RXN +REACTION-LIST - CITSYN-RXN +REACTION-LIST - R601-RXN +REACTION-LIST - FHLMULTI-RXN +REACTION-LIST - PEPCARBOX-RXN +REACTION-LIST - FUMHYDR-RXN +REACTION-LIST - DLACTDEHYDROGNAD-RXN +REACTION-LIST - PEPDEPHOS-RXN +REACTION-LIST - ALCOHOL-DEHYDROG-RXN +REACTION-LIST - ACETALD-DEHYDROG-RXN +REACTION-LIST - PYRUVFORMLY-RXN +REACTION-LIST - ACETATEKIN-RXN +REACTION-LIST - PHOSACETYLTRANS-RXN +SPECIES - TAX-511145 +SYNONYMS - fermentation +TAXONOMIC-RANGE - TAX-4751 +TAXONOMIC-RANGE - TAX-2 +// +UNIQUE-ID - GLUCONEO-PWY +TYPES - Gluconeogenesis +COMMON-NAME - gluconeogenesis I +CITATIONS - SUNG88 +CITATIONS - 5335797:EV-EXP-IDA:3404579151:caspi +COMMENT - Gluconeogenesis is the generation of glucose from non-sugar carbon substrates such as |FRAME: PYRUVATE|, |FRAME: L-LACTATE|, |FRAME: GLYCEROL|, and glucogenic amino acids (primarily |FRAME: L-ALPHA-ALANINE| and |FRAME: GLN|). The process is essentially the reversal of the |FRAME:GLYCOLYSIS glycolysis| pathway. However, two glycolytic enzymes catalyze irreversible reactions. In order to enable the pathway to flow in the direction of glucose production, these reactions are catalyzed by other enzymes (|FRAME:EC-3.1.3.11| and |FRAME:EC-2.7.9.2|) in the opposite direction. +/ +/Enzymes of the gluconeogenic pathway are widely distributed in archaea, bacteria, fungi, plants and animals, and are often considered to be central to the origins of metabolism |CITS: [15803666]|. Note that this pathway describes gluconeogenesis in plants and microorganisms, the mammalian pathway is described at |FRAME: PWY66-399|. +/ +/Bacteria use gluconeogenesis to synthesize glucose from non-sugar C2 or C3 compounds or the intermediates of the tricarboxylic acid (TCA) cycle when there sufficient amounts of hexose are not available to them |CITS: [9168612][11815613][16109965][20439709]|. +/ +/In photosynthetic organisms, the product of photosynthetic carbon fixation (|FRAME: GAP|) is transported from the chloroplast into the cytoplasm, where it is transformed to hexose phosphate via gluconeogenesis. In plants, these hexose phosphates are used to synthesize sucrose, as documented in |FRAME: PWY-7347| |CITS: [Sung88]|. +CREDITS - O-18 +CREDITS - riley +DBLINKS - (ECOCYC "GLUCONEO-PWY" NIL |paley| 3392397157 NIL NIL) +DBLINKS - (ARACYC "GLUCONEO-PWY" NIL |green| 3381011399 NIL NIL) +ENZYMES-NOT-USED - ALKAPHOSPHA-CPLX +ENZYMES-NOT-USED - AT4G24620-MONOMER +INSTANCE-NAME-TEMPLATE - PWY-* +PATHWAY-LINKS - (MAL (MALSYN-RXN . :INCOMING)) +PREDECESSORS - ("PGLUCISOM-RXN" "F16BDEPHOS-RXN") +PREDECESSORS - ("F16ALDOLASE-RXN" "TRIOSEPISOMERIZATION-RXN") +PREDECESSORS - ("TRIOSEPISOMERIZATION-RXN" "F16ALDOLASE-RXN") +PREDECESSORS - ("F16BDEPHOS-RXN" "F16ALDOLASE-RXN") +PREDECESSORS - ("F16ALDOLASE-RXN" "GAPOXNPHOSPHN-RXN") +PREDECESSORS - ("GAPOXNPHOSPHN-RXN" "PHOSGLYPHOS-RXN") +PREDECESSORS - ("PHOSGLYPHOS-RXN" "3PGAREARR-RXN") +PREDECESSORS - ("3PGAREARR-RXN" "2PGADEHYDRAT-RXN") +PREDECESSORS - ("2PGADEHYDRAT-RXN" "PEPCARBOXYKIN-RXN") +PREDECESSORS - ("PEPCARBOXYKIN-RXN" "MALATE-DEH-RXN") +PREDECESSORS - ("2PGADEHYDRAT-RXN" "PEPSYNTH-RXN") +PREDECESSORS - ("PEPSYNTH-RXN" "1.1.1.39-RXN") +PREDECESSORS - ("PEPSYNTH-RXN" "MALIC-NADP-RXN") +PREDECESSORS - ("1.1.1.39-RXN") +PREDECESSORS - ("MALIC-NADP-RXN") +PRIMARIES - ("TRIOSEPISOMERIZATION-RXN" ("DIHYDROXY-ACETONE-PHOSPHATE") ("GAP")) +PRIMARIES - ("F16ALDOLASE-RXN" ("DIHYDROXY-ACETONE-PHOSPHATE" "GAP") NIL) +PRIMARY-PRODUCTS - D-glucopyranose-6-phosphate +REACTION-LAYOUT - (PGLUCISOM-RXN (:LEFT-PRIMARIES D-glucopyranose-6-phosphate) (:DIRECTION :R2L) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (MALATE-DEH-RXN (:LEFT-PRIMARIES MAL) (:DIRECTION :L2R) (:RIGHT-PRIMARIES OXALACETIC_ACID)) +REACTION-LAYOUT - (1.1.1.39-RXN (:LEFT-PRIMARIES MAL) (:DIRECTION :L2R) (:RIGHT-PRIMARIES PYRUVATE)) +REACTION-LAYOUT - (TRIOSEPISOMERIZATION-RXN (:LEFT-PRIMARIES GAP) (:DIRECTION :R2L) (:RIGHT-PRIMARIES DIHYDROXY-ACETONE-PHOSPHATE)) +REACTION-LAYOUT - (MALIC-NADP-RXN (:LEFT-PRIMARIES MAL) (:DIRECTION :L2R) (:RIGHT-PRIMARIES PYRUVATE)) +REACTION-LAYOUT - (PEPSYNTH-RXN (:LEFT-PRIMARIES PYRUVATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (PEPCARBOXYKIN-RXN (:LEFT-PRIMARIES OXALACETIC_ACID) (:DIRECTION :L2R) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (2PGADEHYDRAT-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (3PGAREARR-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :L2R) (:RIGHT-PRIMARIES G3P)) +REACTION-LAYOUT - (PHOSGLYPHOS-RXN (:LEFT-PRIMARIES G3P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES DPG)) +REACTION-LAYOUT - (GAPOXNPHOSPHN-RXN (:LEFT-PRIMARIES GAP) (:DIRECTION :R2L) (:RIGHT-PRIMARIES DPG)) +REACTION-LAYOUT - (F16ALDOLASE-RXN (:LEFT-PRIMARIES FRUCTOSE-16-DIPHOSPHATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES GAP DIHYDROXY-ACETONE-PHOSPHATE)) +REACTION-LAYOUT - (F16BDEPHOS-RXN (:LEFT-PRIMARIES FRUCTOSE-16-DIPHOSPHATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LIST - PGLUCISOM-RXN +REACTION-LIST - MALATE-DEH-RXN +REACTION-LIST - 1.1.1.39-RXN +REACTION-LIST - TRIOSEPISOMERIZATION-RXN +REACTION-LIST - MALIC-NADP-RXN +REACTION-LIST - PEPSYNTH-RXN +REACTION-LIST - PEPCARBOXYKIN-RXN +REACTION-LIST - 2PGADEHYDRAT-RXN +REACTION-LIST - 3PGAREARR-RXN +REACTION-LIST - PHOSGLYPHOS-RXN +REACTION-LIST - GAPOXNPHOSPHN-RXN +REACTION-LIST - F16ALDOLASE-RXN +REACTION-LIST - F16BDEPHOS-RXN +SPECIES - TAX-3708 +SPECIES - TAX-3659 +SPECIES - TAX-511145 +SPECIES - TAX-3847 +SPECIES - TAX-4513 +SPECIES - TAX-4097 +SPECIES - TAX-4530 +SPECIES - TAX-3888 +SPECIES - TAX-3988 +SPECIES - TAX-4081 +SPECIES - TAX-4113 +SPECIES - TAX-3906 +SPECIES - TAX-4577 +SPECIES - ORG-5993 +TAXONOMIC-RANGE - TAX-4751 +TAXONOMIC-RANGE - TAX-33090 +TAXONOMIC-RANGE - TAX-2157 +TAXONOMIC-RANGE - TAX-2 +// UNIQUE-ID - GLYCOLYSIS TYPES - GLYCOLYSIS-VARIANTS COMMON-NAME - glycolysis I (from glucose 6-phosphate) @@ -52,7 +436,7 @@ COMMENT - General Background / /|FRAME:TAX-562| does constitutively produce |FRAME:GLUCOKIN-MONOMER| (the intracellular enzyme that converts glucose to glucose-6-phosphate) but it is not needed for the utilization of either exogenous or endogenous glucose |CITS: [9023215]|. It may be required to supplement levels of glucose 6-phosphate under anabolic stress conditions |CITS: [7786044]|. / -/Other substrates may enter glycolysis at different stages. For example, the sugars and sugar alcohols |FRAME:ALLOSE|, |FRAME:SORBOSE|, |FRAME:MANNITOL|, |FRAME:SORBITOL|, |FRAME:MANNOSE| and |FRAME:SUCROSE|, which are processed into |FRAME: FRUCTOSE-6P|, enter the pathway at that stage (see |FRAME: PWY-5484|). +/Other substrates may enter glycolysis at different stages. For example, the sugars and sugar alcohols |FRAME:ALLOSE|, |FRAME:SORBOSE|, |FRAME:MANNITOL|, |FRAME:SORBITOL|, |FRAME:MANNOSE| and |FRAME:SUCROSE|, which are processed into |FRAME: FRUCTOSE-6P|, enter the pathway at that stage (see |FRAME: PWY-5484|). / /For reviews, please see: Romeo, T. and J. L. Snoep, |CITS: [EcoSal]| module 3.5.1.; Fraenkel, D. G. |CITS: [colisalII]| p. 189-198. CREDITS - O0-3 @@ -142,4 +526,2599 @@ TAXONOMIC-RANGE - TAX-2759 TAXONOMIC-RANGE - TAX-2 TAXONOMIC-RANGE - TAX-2157 // - +UNIQUE-ID - NPGLUCAT-PWY +TYPES - Entner-Duodoroff-Pathways +COMMON-NAME - Entner-Doudoroff pathway II (non-phosphorylative) +CITATIONS - 2497944:EV-EXP-TAS:3366644628:caspi +COMMENT - The traditional |FRAME: ENTNER-DOUDOROFF-PWY "Entner-Doudoroff (ED) pathway"| joins the |FRAME:OXIDATIVEPENT-PWY| to glycolysis. +/While basic carbon metabolic pathways such as the Entner-Doudoroff pathway are rather conserved within eukaryotes and eubacteria, archaebacteria have proved to be unexpectedly diverse. +/The central metabolic pathways of carbohydrate catabolism found in these organisms exhibit a high variability, and include modifications to the ED pathway, as well as to the Embden-Meyerhof-Parnas pathway (glycolysis). +/ +/The classical Entner-Doudoroff (ED) pathway of bacteria (and some eukaryotes) (|FRAME: ENTNER-DOUDOROFF-PWY|) starts with the phosphorylation of either glucose or its oxidized derivative gluconate. There are two "flavors" of ED-like pathways in archaea that do not follow this route. +/One variation is found in halophilic archaea (and some bacteria), in which 2-keto-3-deoxygluconate (KDG) is phosphorylated to KDPG by KDG kinase, rather than the general conversion of glucose into glucose 6-phosphate (see |FRAME: PWY-2221|). +/ +/The second variation is found in the thermophiles |FRAME:TAX-2284|,|FRAME:TAX-2302| and |FRAME:TAX-2270|, in which the activation via phosphorylation occurs only at the level of glycerate. Utilization of this modified pathway has a cost: there appears to be no net generation of ATP by the non-phosphorylating ED pathway |CITS: [12921536][6440533]|. +/ +/Not all of the proteins that participate in this pathway have been purified from archaea. Some of the steps were deduced from biochemical assays performed with cell extracts. Budgen and Danson |CITS: [Budgen86]| found that cell extracts of Thermplasma acidophilum produced glycerate-2-phosphate rather than the more common glycerate-3-phosphate. In addition, there was no phosphoglycerate mutase activity. As a result, it was determined that in this organism glyecrate +/is phosphorylated to 2-phosphoglycerate. Based on this data, this conversion has been proposed to occur in |FRAME:TAX-2284| as well |CITS: [2497944]|. +/ +/Overall, the modified ED pathway in these organisms can be summarized as: +/ +/glucose --> 2 pyruvates + 2 NADPH +/ +/with no net ATP gain. There are two potential explanations for this: one possibility is that efficient cofactor reoxidation (either by oxidative phosphorylation, or by sulfur respiration) makes substrate level phosphorylation not important. The other possibility is that this modified ED pathway is reversible, and could be used as an alternative gluconeogenesis route (reviewed in |CITS: [ 9119021]|). +CREDITS - SRI +CREDITS - caspi +CREDITS - hying +INSTANCE-NAME-TEMPLATE - PWY-* +PATHWAY-LINKS - (ACETYL-COA TCA) +PREDECESSORS - ("GLUCONOLACT-RXN" "GLUCOSE-1-DEHYDROGENASE-NADP+-RXN") +PREDECESSORS - ("GLUCONATE-DEHYDRATASE-RXN" "GLUCONOLACT-RXN") +PREDECESSORS - ("2PGADEHYDRAT-RXN" "GKI-RXN") +PREDECESSORS - ("GKI-RXN" "GLYCERALDEHYDE-DEHYDRO-RXN") +PREDECESSORS - ("DHDOGALDOL-RXN" "GLUCONATE-DEHYDRATASE-RXN") +PREDECESSORS - ("GLYCERALDEHYDE-DEHYDRO-RXN" "DHDOGALDOL-RXN") +PREDECESSORS - ("PEPDEPHOS-RXN" "2PGADEHYDRAT-RXN") +PREDECESSORS - ("PYRUFLAVREDUCT-RXN" "PEPDEPHOS-RXN") +PRIMARIES - ("PYRUFLAVREDUCT-RXN" ("PYRUVATE") ("ACETYL-COA")) +PRIMARY-PRODUCTS - ACETYL-COA +PRIMARY-REACTANTS - Glucopyranose +REACTION-LAYOUT - (GLUCOSE-1-DEHYDROGENASE-NADP+-RXN (:LEFT-PRIMARIES Glucopyranose) (:DIRECTION :L2R) (:RIGHT-PRIMARIES GLC-D-LACTONE)) +REACTION-LAYOUT - (GLUCONOLACT-RXN (:LEFT-PRIMARIES GLC-D-LACTONE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES GLUCONATE)) +REACTION-LAYOUT - (GKI-RXN (:LEFT-PRIMARIES GLYCERATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES 2-PG)) +REACTION-LAYOUT - (PYRUFLAVREDUCT-RXN (:LEFT-PRIMARIES PYRUVATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES ACETYL-COA)) +REACTION-LAYOUT - (PEPDEPHOS-RXN (:LEFT-PRIMARIES PYRUVATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (2PGADEHYDRAT-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :L2R) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (GLYCERALDEHYDE-DEHYDRO-RXN (:LEFT-PRIMARIES GLYCERALD) (:DIRECTION :L2R) (:RIGHT-PRIMARIES GLYCERATE)) +REACTION-LAYOUT - (DHDOGALDOL-RXN (:LEFT-PRIMARIES 2-DEHYDRO-3-DEOXY-D-GLUCONATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES PYRUVATE GLYCERALD)) +REACTION-LAYOUT - (GLUCONATE-DEHYDRATASE-RXN (:LEFT-PRIMARIES GLUCONATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES 2-DEHYDRO-3-DEOXY-D-GLUCONATE)) +REACTION-LIST - GLUCOSE-1-DEHYDROGENASE-NADP+-RXN +REACTION-LIST - GLUCONOLACT-RXN +REACTION-LIST - GKI-RXN +REACTION-LIST - PYRUFLAVREDUCT-RXN +REACTION-LIST - PEPDEPHOS-RXN +REACTION-LIST - 2PGADEHYDRAT-RXN +REACTION-LIST - GLYCERALDEHYDE-DEHYDRO-RXN +REACTION-LIST - DHDOGALDOL-RXN +REACTION-LIST - GLUCONATE-DEHYDRATASE-RXN +SPECIES - TAX-2285 +SPECIES - TAX-2287 +SPECIES - TAX-111955 +SPECIES - TAX-2303 +SPECIES - TAX-2271 +SYNONYMS - non-phosphorylated glucose catabolism +SYNONYMS - glucose degradation +SYNONYMS - non-phosphorylated glucose degradation +TAXONOMIC-RANGE - TAX-183924 +TAXONOMIC-RANGE - TAX-183967 +// +UNIQUE-ID - P122-PWY +TYPES - Fermentation-to-Lactate +TYPES - Pyruvate-Ethanol-Fermentation +COMMON-NAME - heterolactic fermentation +CITATIONS - 16741753:EV-EXP-IDA:3381093516:caspi +COMMENT - General Background +/ +/The lactic acid bacteria (LAB) are a group of Gram positive bacteria that produce lactate as the major +/end product of the fermentation of carbohydrates. The LAB were divided early on into two main groups, +/depending on their fermentation products. One group included those bacteria that convert carbohydrates +/essentially into lactate, while the other group included those producing, in addition, substantial quantities +/of volatile acids and carbon dioxide |CITS: [Orla-Jensen19]|. +/A few years after this initial classification was established the terms homo- and hetero-fermentative, +/respectively, were proposed for the two groups (see also |FRAME: ANAEROFRUCAT-PWY|) +/|CITS: [Kluyver24]|. +/It should be noted that at least some organisms (such as |FRAME: TAX-1582|) are capable of shifting +/from one mode of fermentation to the other depending on oxygen or nutrient availability |CITS: [108249]|. +/ +/Within the group of heterofermentative lactic acid bacteria, two fermentation patterns were described +/|CITS: [16559863]|. When glucose is used as the carbon source, the two patterns are: +/ +/ (1) the production of equimolar quanitities of lactate, ethanol, and carbon dioxide, with occasional +/traces of acetate. +/ +/(2) the formation of glycerol along with lactate, acetate, and carbon dioxide. +/ +/The pathway described here is responsible for the first pattern. +/ +/About This Pathway +/ +/Early work demonstrated that aldolase and isomerase enzymes were absent in heterolactic fermenting +/organisms, suggesting that the pathway does not follow the usual Embden-Meyerhof pattern of glycolysis +/|CITS: [14897820]|. As more research was conducted, it was realized that these organisms utilize a +/different pathway, which was named the phosphoketolase pathway. Many of the enzymes used in +/this pathway are shared with the |FRAME:PENTOSE-P-PWY|. +/ +/In most heterofermentative strains sugars are transported into the cell by a non-phosphorylating +/sugar permease system. After entering the cell the intracellullar sugars are phosphorylated +/by a dedicated kinase, such as glucokinase or fruktokinase |CITS: [16741753]|. +/In the case of glucose , the phosphorylation results in the formation of |FRAME:GLC-6-P|. +/The phosphorylated forms of other sugars (such as |FRAME: FRUCTOSE-6P|) are also converted to +/|FRAME:GLC-6-P|, which is channeled into the phosphoketolase pathway, resulting in the formation of +/|FRAME:GAP|, |FRAME:ACETYL-P|, |FRAME: CARBON-DIOXIDE| and two equivalents of reducing +/power, in the form of NAD(P)H. +/These two equivalents of reducing power are then reoxidized via |FRAME: ACETYL-COA| (derived from +/the acetyl-phosphate) yielding |FRAME: ETOH|. |FRAME:GAP| is processed by glycolytic enzymes to +/|FRAME: PYRUVATE| and then |FRAME: Lactate|, generating two molecules of ATP. +/Since one ATP was used in the initial phosphorylation of the sugar, the net gain is only one ATP +/per sugar |CITS: [WHITE95]|. +/ +/Among the genus |FRAME:TAX-1243| the lactate formed is D-lactate. +CREDITS - SRI +CREDITS - caspi +CREDITS - O-18 +CREDITS - pellegrini-toole +INSTANCE-NAME-TEMPLATE - PWY-* +PREDECESSORS - ("PGLUCISOM-RXN" "FRUCTOKINASE-RXN") +PREDECESSORS - ("GLU6PDEHYDROG-RXN" "PGLUCISOM-RXN") +PREDECESSORS - ("PGLUCISOM-RXN" "GLUCOKIN-RXN") +PREDECESSORS - ("6PGLUCONOLACT-RXN" "GLU6PDEHYDROG-RXN") +PREDECESSORS - ("GLU6PDEHYDROG-RXN" "GLUCOKIN-RXN") +PREDECESSORS - ("DLACTDEHYDROGNAD-RXN" "PEPDEPHOS-RXN") +PREDECESSORS - ("L-LACTATE-DEHYDROGENASE-RXN" "PEPDEPHOS-RXN") +PREDECESSORS - ("ALCOHOL-DEHYDROG-RXN" "ACETALD-DEHYDROG-RXN") +PREDECESSORS - ("PEPDEPHOS-RXN" "2PGADEHYDRAT-RXN") +PREDECESSORS - ("2PGADEHYDRAT-RXN" "RXN-15513") +PREDECESSORS - ("RXN-15513" "PHOSGLYPHOS-RXN") +PREDECESSORS - ("PHOSGLYPHOS-RXN" "GAPOXNPHOSPHN-RXN") +PREDECESSORS - ("GAPOXNPHOSPHN-RXN" "PHOSPHOKETOLASE-RXN") +PREDECESSORS - ("RIBULP3EPIM-RXN" "6PGLUCONDEHYDROG-RXN") +PREDECESSORS - ("6PGLUCONDEHYDROG-RXN" "6PGLUCONOLACT-RXN") +PREDECESSORS - ("PHOSPHOKETOLASE-RXN" "RIBULP3EPIM-RXN") +PREDECESSORS - ("PHOSACETYLTRANS-RXN" "PHOSPHOKETOLASE-RXN") +PREDECESSORS - ("ACETALD-DEHYDROG-RXN" "PHOSACETYLTRANS-RXN") +PRIMARIES - ("PGLUCISOM-RXN" ("FRUCTOSE-6P") ("D-glucopyranose-6-phosphate")) +PRIMARIES - ("6PGLUCONDEHYDROG-RXN" NIL ("CARBON-DIOXIDE")) +PRIMARIES - ("PHOSPHOKETOLASE-RXN" ("XYLULOSE-5-PHOSPHATE") ("ACETYL-P" "GAP")) +PRIMARIES - ("ACETALD-DEHYDROG-RXN" ("ACETYL-COA") NIL) +REACTION-LAYOUT - (GLUCOKIN-RXN (:LEFT-PRIMARIES Glucopyranose) (:DIRECTION :L2R) (:RIGHT-PRIMARIES D-glucopyranose-6-phosphate)) +REACTION-LAYOUT - (GLU6PDEHYDROG-RXN (:LEFT-PRIMARIES D-glucopyranose-6-phosphate) (:DIRECTION :L2R) (:RIGHT-PRIMARIES D-6-P-GLUCONO-DELTA-LACTONE)) +REACTION-LAYOUT - (PGLUCISOM-RXN (:LEFT-PRIMARIES D-glucopyranose-6-phosphate) (:DIRECTION :R2L) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (FRUCTOKINASE-RXN (:LEFT-PRIMARIES BETA-D-FRUCTOSE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (DLACTDEHYDROGNAD-RXN (:LEFT-PRIMARIES D-LACTATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PYRUVATE)) +REACTION-LAYOUT - (L-LACTATE-DEHYDROGENASE-RXN (:LEFT-PRIMARIES L-LACTATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PYRUVATE)) +REACTION-LAYOUT - (6PGLUCONOLACT-RXN (:LEFT-PRIMARIES D-6-P-GLUCONO-DELTA-LACTONE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES CPD-2961)) +REACTION-LAYOUT - (ALCOHOL-DEHYDROG-RXN (:LEFT-PRIMARIES ETOH) (:DIRECTION :R2L) (:RIGHT-PRIMARIES ACETALD)) +REACTION-LAYOUT - (ACETALD-DEHYDROG-RXN (:LEFT-PRIMARIES ACETALD) (:DIRECTION :R2L) (:RIGHT-PRIMARIES ACETYL-COA)) +REACTION-LAYOUT - (PHOSACETYLTRANS-RXN (:LEFT-PRIMARIES ACETYL-COA) (:DIRECTION :R2L) (:RIGHT-PRIMARIES ACETYL-P)) +REACTION-LAYOUT - (PEPDEPHOS-RXN (:LEFT-PRIMARIES PYRUVATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (2PGADEHYDRAT-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :L2R) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (RXN-15513 (:LEFT-PRIMARIES 2-PG) (:DIRECTION :R2L) (:RIGHT-PRIMARIES G3P)) +REACTION-LAYOUT - (PHOSGLYPHOS-RXN (:LEFT-PRIMARIES G3P) (:DIRECTION :R2L) (:RIGHT-PRIMARIES DPG)) +REACTION-LAYOUT - (GAPOXNPHOSPHN-RXN (:LEFT-PRIMARIES GAP) (:DIRECTION :L2R) (:RIGHT-PRIMARIES DPG)) +REACTION-LAYOUT - (PHOSPHOKETOLASE-RXN (:LEFT-PRIMARIES XYLULOSE-5-PHOSPHATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES ACETYL-P GAP)) +REACTION-LAYOUT - (RIBULP3EPIM-RXN (:LEFT-PRIMARIES RIBULOSE-5P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES XYLULOSE-5-PHOSPHATE)) +REACTION-LAYOUT - (6PGLUCONDEHYDROG-RXN (:LEFT-PRIMARIES CPD-2961) (:DIRECTION :L2R) (:RIGHT-PRIMARIES CARBON-DIOXIDE RIBULOSE-5P)) +REACTION-LIST - GLUCOKIN-RXN +REACTION-LIST - GLU6PDEHYDROG-RXN +REACTION-LIST - PGLUCISOM-RXN +REACTION-LIST - FRUCTOKINASE-RXN +REACTION-LIST - DLACTDEHYDROGNAD-RXN +REACTION-LIST - L-LACTATE-DEHYDROGENASE-RXN +REACTION-LIST - 6PGLUCONOLACT-RXN +REACTION-LIST - ALCOHOL-DEHYDROG-RXN +REACTION-LIST - ACETALD-DEHYDROG-RXN +REACTION-LIST - PHOSACETYLTRANS-RXN +REACTION-LIST - PEPDEPHOS-RXN +REACTION-LIST - 2PGADEHYDRAT-RXN +REACTION-LIST - RXN-15513 +REACTION-LIST - PHOSGLYPHOS-RXN +REACTION-LIST - GAPOXNPHOSPHN-RXN +REACTION-LIST - PHOSPHOKETOLASE-RXN +REACTION-LIST - RIBULP3EPIM-RXN +REACTION-LIST - 6PGLUCONDEHYDROG-RXN +SPECIES - TAX-1580 +SPECIES - TAX-1581 +SPECIES - TAX-1582 +SPECIES - TAX-1613 +SPECIES - TAX-1598 +SPECIES - TAX-1625 +SPECIES - TAX-1246 +SPECIES - TAX-1245 +SPECIES - TAX-33965 +SPECIES - TAX-33966 +SPECIES - TAX-1247 +SPECIES - TAX-1583 +SPECIES - TAX-1249 +SYNONYMS - lactate heterofermentation +SYNONYMS - glucose fermentation to lactate +SYNONYMS - phosphoketolase pathway +SYNONYMS - lactic acid heterofermentation +SYNONYMS - glucose fermentation to lactic acid +TAXONOMIC-RANGE - TAX-1239 +// +UNIQUE-ID - P124-PWY +TYPES - Acetate-Formation +TYPES - Fermentation-to-Lactate +TYPES - Sugars-And-Polysaccharides-Degradation +COMMON-NAME - Bifidobacterium shunt +CITATIONS - 6048259:EV-EXP-IDA:3381097154:caspi +COMMENT - The first to isolate a Bifidobacterium was Tissier of the Pasteur Institute in France, who in 1899 isolated an organism from a breast-fed infant |CITS: [Tissier00]|. He named the organism |FRAME:TAX-1681|, describing the branching morphology of the bacteria (bifidus in Latin means forked or split into two parts). In the 1960s Bifidobacterium was accepted as an independent genus, and today more than 30 species are documented |CITS: [15539925]|. Bifidobacteria are accepted as important probiotic components of the human intestinal microflora, and are used in health-promoting foods |CITS: [15916644][16167966]|. +/ +/The Bifidobacteria use a unique pathway of hexose catabolism, which produces primarily acetate and lactate. This fermentation pathway, which is known as the "Bifidobacterium shunt" or the "fructose-6-phosphate pathway" yields 3 mols of acetate and 2 mols of lactate for 2 mols of glucose, with production of 5 mols of ATP |CITS:[6020562][6048259][4236541][9430608]|. The key enzyme in the pathway is |FRAME:CPLX-7204|, which catalyzes two important steps: splitting |FRAME:FRUCTOSE-6P| into |FRAME:ERYTHROSE-4P| and |FRAME:ACETYL-P|, and splitting |FRAME:XYLULOSE-5-PHOSPHATE| into |FRAME:GAP| and |FRAME:ACETYL-P|. This enzyme has often been used as a tool in the identification of Bifidobacteria |CITS: [11298932]|, even though such enzymes have been found in other organisms. +/ +/Acetylphosphate, which is formed in both phosphoketolase-catalyzed steps, is converted to |FRAME: ACET|. |FRAME:ERYTHROSE-4P| is processed along with a second |FRAME:FRUCTOSE-6P| molecule by enzymes of the |FRAME: PENTOSE-P-PWY| to |FRAME:XYLULOSE-5-PHOSPHATE|. This compound is then split in the second reaction catalyzed by phosphoketolase to |FRAME:GAP| and |FRAME:ACETYL-P|. |FRAME:GAP| is processed via the glycolytic Embden-Meyerhof pathway to |FRAME: PYRUVATE|, which is subsequently converted to |FRAME:L-LACTATE|. +CREDITS - SRI +CREDITS - caspi +CREDITS - O-18 +CREDITS - pellegrini-toole +INSTANCE-NAME-TEMPLATE - PWY-* +KEY-REACTIONS - PHOSPHOKETOLASE-RXN +KEY-REACTIONS - FRUCTOSE-6-PHOSPHATE-PHOSPHOKETOLASE-RXN +PATHWAY-LINKS - (FRUCTOSE-6P PWY-5384) +PATHWAY-LINKS - (ACETYL-P "conversion to acetate") +PREDECESSORS - ("PGLUCISOM-RXN" "GLUCOKIN-RXN") +PREDECESSORS - ("FRUCTOSE-6-PHOSPHATE-PHOSPHOKETOLASE-RXN" "PGLUCISOM-RXN") +PREDECESSORS - ("L-LACTATE-DEHYDROGENASE-RXN" "PEPDEPHOS-RXN") +PREDECESSORS - ("PEPDEPHOS-RXN" "2PGADEHYDRAT-RXN") +PREDECESSORS - ("2PGADEHYDRAT-RXN" "3PGAREARR-RXN") +PREDECESSORS - ("3PGAREARR-RXN" "PHOSGLYPHOS-RXN") +PREDECESSORS - ("PHOSGLYPHOS-RXN" "GAPOXNPHOSPHN-RXN") +PREDECESSORS - ("GAPOXNPHOSPHN-RXN" "PHOSPHOKETOLASE-RXN") +PREDECESSORS - ("ACETATEKIN-RXN" "FRUCTOSE-6-PHOSPHATE-PHOSPHOKETOLASE-RXN") +PREDECESSORS - ("TRANSALDOL-RXN" "FRUCTOSE-6-PHOSPHATE-PHOSPHOKETOLASE-RXN") +PREDECESSORS - ("1TRANSKETO-RXN" "TRANSALDOL-RXN") +PREDECESSORS - ("RIB5PISOM-RXN" "1TRANSKETO-RXN") +PREDECESSORS - ("RIBULP3EPIM-RXN" "RIB5PISOM-RXN") +PREDECESSORS - ("PHOSPHOKETOLASE-RXN" "RIBULP3EPIM-RXN") +PRIMARIES - ("PGLUCISOM-RXN" ("D-glucopyranose-6-phosphate") ("FRUCTOSE-6P")) +PRIMARIES - ("PHOSPHOKETOLASE-RXN" NIL ("ACETYL-P" "GAP")) +PRIMARY-PRODUCTS - L-LACTATE +PRIMARY-PRODUCTS - GAP +PRIMARY-PRODUCTS - ACETYL-P +PRIMARY-PRODUCTS - ACET +PRIMARY-REACTANTS - Glucopyranose +REACTION-LAYOUT - (GLUCOKIN-RXN (:LEFT-PRIMARIES Glucopyranose) (:DIRECTION :L2R) (:RIGHT-PRIMARIES D-glucopyranose-6-phosphate)) +REACTION-LAYOUT - (PGLUCISOM-RXN (:LEFT-PRIMARIES D-glucopyranose-6-phosphate) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (L-LACTATE-DEHYDROGENASE-RXN (:LEFT-PRIMARIES L-LACTATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PYRUVATE)) +REACTION-LAYOUT - (PEPDEPHOS-RXN (:LEFT-PRIMARIES PYRUVATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (2PGADEHYDRAT-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :L2R) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (3PGAREARR-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :R2L) (:RIGHT-PRIMARIES G3P)) +REACTION-LAYOUT - (PHOSGLYPHOS-RXN (:LEFT-PRIMARIES G3P) (:DIRECTION :R2L) (:RIGHT-PRIMARIES DPG)) +REACTION-LAYOUT - (GAPOXNPHOSPHN-RXN (:LEFT-PRIMARIES GAP) (:DIRECTION :L2R) (:RIGHT-PRIMARIES DPG)) +REACTION-LAYOUT - (PHOSPHOKETOLASE-RXN (:LEFT-PRIMARIES XYLULOSE-5-PHOSPHATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES ACETYL-P GAP)) +REACTION-LAYOUT - (RIBULP3EPIM-RXN (:LEFT-PRIMARIES RIBULOSE-5P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES XYLULOSE-5-PHOSPHATE)) +REACTION-LAYOUT - (RIB5PISOM-RXN (:LEFT-PRIMARIES RIBOSE-5P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES RIBULOSE-5P)) +REACTION-LAYOUT - (1TRANSKETO-RXN (:LEFT-PRIMARIES GAP D-SEDOHEPTULOSE-7-P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES XYLULOSE-5-PHOSPHATE RIBOSE-5P)) +REACTION-LAYOUT - (TRANSALDOL-RXN (:LEFT-PRIMARIES GAP D-SEDOHEPTULOSE-7-P) (:DIRECTION :R2L) (:RIGHT-PRIMARIES ERYTHROSE-4P FRUCTOSE-6P)) +REACTION-LAYOUT - (ACETATEKIN-RXN (:LEFT-PRIMARIES ACET) (:DIRECTION :R2L) (:RIGHT-PRIMARIES ACETYL-P)) +REACTION-LAYOUT - (FRUCTOSE-6-PHOSPHATE-PHOSPHOKETOLASE-RXN (:LEFT-PRIMARIES FRUCTOSE-6P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES ACETYL-P ERYTHROSE-4P)) +REACTION-LIST - GLUCOKIN-RXN +REACTION-LIST - PGLUCISOM-RXN +REACTION-LIST - L-LACTATE-DEHYDROGENASE-RXN +REACTION-LIST - PEPDEPHOS-RXN +REACTION-LIST - 2PGADEHYDRAT-RXN +REACTION-LIST - 3PGAREARR-RXN +REACTION-LIST - PHOSGLYPHOS-RXN +REACTION-LIST - GAPOXNPHOSPHN-RXN +REACTION-LIST - PHOSPHOKETOLASE-RXN +REACTION-LIST - RIBULP3EPIM-RXN +REACTION-LIST - RIB5PISOM-RXN +REACTION-LIST - 1TRANSKETO-RXN +REACTION-LIST - TRANSALDOL-RXN +REACTION-LIST - ACETATEKIN-RXN +REACTION-LIST - FRUCTOSE-6-PHOSPHATE-PHOSPHOKETOLASE-RXN +SPECIES - TAX-1680 +SPECIES - TAX-302911 +SPECIES - TAX-1681 +SPECIES - TAX-216816 +SYNONYMS - Bifidum fermentation +SYNONYMS - Bifidum pathway +SYNONYMS - fructose 6-phosphate pathway +SYNONYMS - Bifidum shunt +SYNONYMS - glucose fermentation to lactate (Bifidobacteria) +SYNONYMS - glucose fermentation to lactic acid (Bifidobacteria) +TAXONOMIC-RANGE - TAX-201174 +// +UNIQUE-ID - P185-PWY +TYPES - Formaldehyde-Assimilation +COMMON-NAME - formaldehyde assimilation III (dihydroxyacetone cycle) +CITATIONS - vanDijkens78:EV-EXP-IDA:3385995879:caspi +CITATIONS - Anthony82:EV-EXP-TAS:3385994375:caspi +COMMENT - General Background +/ +/Methylotrophs are organisms that are capable of growing on C1 compounds, like methanol. These organisms can derive all their energy and carbon needs from reduced molecules that have no CC bond. Methylotrophy is found only in a few prokaryotic and eukaryotic microorganisms. While prokaryotic methylotrophs are capable of growing on a variety of C1 compounds (see |FRAME:PWY-1641| and |FRAME:PWY-1701|), eukaryotic methylotrophs can grow only on +/|FRAME:METOH|. +/ +/Methylotrophic eukaryotes include only a few species of yeast that belong to the Pichia and Candida genera. They include |FRAME: TAX-5477|, |FRAME: TAX-36026|, |FRAME: TAX-45353|, |FRAME: TAX-870730 "Ogataea angusta (previously known as Hansenula polymorpha)"|, |FRAME: TAX-1156966| and |FRAME: TAX-4922| |CITS: [12595136]|. +/ +/In these organisms |FRAME:METOH| is oxidized to |FRAME:FORMALDEHYDE| by the enzyme |FRAME:CPLX-7392| (AOD) in a reaction that produces |FRAME: FORMALDEHYDE| and |FRAME:HYDROGEN-PEROXIDE| (see |FRAME:PWY-5506|). To avoid damage to the cell by these very active compounds, this reaction occurs in peroxisomes, where |FRAME: ENZRXN-14009| decomposes the hydrogen peroxide into water and oxygen |CITS: [17023065]|. +/ +/The formaldehyde that is formed is a branchpoint, as it can be channeled into either an assimilatory pathway that provides the cells with carbon for biosynthesis (this pathway), or a dissimilatory pathway, which provides the cells with energy (see |FRAME: PWY-1801|) |CITS: [17023065]|. +/ +/ +/About This Pathway +/ +/Methylotrophs usually assimilate carbon by converting three C1 molecules into a single C3 compound via a cyclic pathway, similar to the |FRAME: CALVIN-PWY| used in photosynthesis. In prokaryotes, two such pathways are known, including the ribulose monophosphate cycle (|FRAME: PWY-1861|) and the serine pathway (|FRAME:PWY-1622|). In methylotrophic yeast only one such pathway exists, the |FRAME:P185-PWY| |CITS: [Vandijkens78]|. +/ +/Three molecules of formaldehyde, generated in the peroxisome by |FRAME:CPLX-7392|, are processed by this pathway into a single molecule of |FRAME:GAP|, which is shuttled into the core biosynthetic pathways. +/ +/The key step of this pathway is the transfer of a glycoaldehyde group from |FRAME:XYLULOSE-5-PHOSPHATE| to |FRAME: FORMALDEHYDE|, forming |FRAME:DIHYDROXYACETONE| and |FRAME:GAP|. This reaction is catalyzed by +/|FRAME:CPLX-7394| (DHAS), another peroxisomal enzyme |CITS: [2987872]|. DHAS). The products of this reaction leave the peroxisome and are rearranged in the cytoplasmic in a pathway that involves many of the enzymes of the |FRAME:PENTOSE-P-PWY|, in a way that regenerates |FRAME:XYLULOSE-5-PHOSPHATE| and, for every three cycles, generates one net molecule of |FRAME:GAP| that is directed towards biosynthesis |CITS:[vanDijkens78][Anthony82]|. +/ +/Since the diagram does not represent this pathway with clarity, more information is provided here: +/ +/For every molecule of |FRAME:GAP| that is incorporated into biomass, three molecules of |FRAME:FORMALDEHYDE| are fixed, generating three molecules of |FRAME:DIHYDROXYACETONE|, and consuming three molecules of |FRAME:XYLULOSE-5-PHOSPHATE| (X5P). Two of the |FRAME:DIHYDROXYACETONE| molecules are condensed with two molecules of |FRAME: GAP| to produce two molecules of |FRAME:FRUCTOSE-16-DIPHOSPHATE|, while the third +/one is converted to |FRAME: GAP|, |FRAME:DPG| and finally |FRAME:G3P|, and routed to biosynthesis. +/ +/Each of the three molecules of X5P that are utilized is regenerated in a different route. First, the two molecules of |FRAME:FRUCTOSE-16-DIPHOSPHATE| mention above are dephosphorylated into two molecules of |FRAME:FRUCTOSE-6P| by the enzyme EC 3.1.3.11. One molecule of X5P is regenerated directly from |FRAME:FRUCTOSE-6P| by EC 2.2.1.3, in a reaction that also generates a molecule of |FRAME:ERYTHROSE-4P|. +/The second X5P molecule is generated from the other |FRAME:FRUCTOSE-6P| molecule in a different route, consuming the |FRAME:ERYTHROSE-4P| and generating |FRAME:D-SEDOHEPTULOSE-7-P| (catalyzed by EC 2.2.1.2), which is then converted to X5P by EC 2.2.1.1, in a reaction that also generates |FRAME:RIBOSE-5P|. +/Finally, the |FRAME:RIBOSE-5P| molecule is converted to |FRAME:RIBULOSE-5P| by EC 5.3.1.6, which is then converted to the third X5P molecule by EC 5.1.3.1 |CITS: [Anthony82]|. +CREDITS - SRI +CREDITS - caspi +CREDITS - O-18 +CREDITS - pellegrini-toole +INSTANCE-NAME-TEMPLATE - PWY-* +KEY-REACTIONS - FORMALDEHYDE-TRANSKETOLASE-RXN +PATHWAY-LINKS - (FORMALDEHYDE PWY-5506) +PATHWAY-LINKS - (G3P |Biosynthesis|) +PREDECESSORS - ("FORMALDEHYDE-TRANSKETOLASE-RXN" "RIBULP3EPIM-RXN") +PREDECESSORS - ("RIBULP3EPIM-RXN" "RIB5PISOM-RXN") +PREDECESSORS - ("RIB5PISOM-RXN" "1TRANSKETO-RXN") +PREDECESSORS - ("FORMALDEHYDE-TRANSKETOLASE-RXN" "1TRANSKETO-RXN") +PREDECESSORS - ("1TRANSKETO-RXN" "TRANSALDOL-RXN") +PREDECESSORS - ("TRANSALDOL-RXN" "F16BDEPHOS-RXN") +PREDECESSORS - ("PHOSGLYPHOS-RXN" "GAPOXNPHOSPHN-RXN") +PREDECESSORS - ("GAPOXNPHOSPHN-RXN" "TRIOSEPISOMERIZATION-RXN") +PREDECESSORS - ("TRIOSEPISOMERIZATION-RXN" "GLYCERONE-KINASE-RXN") +PREDECESSORS - ("FORMALDEHYDE-TRANSKETOLASE-RXN" "2TRANSKETO-RXN") +PREDECESSORS - ("2TRANSKETO-RXN" "F16BDEPHOS-RXN") +PREDECESSORS - ("F16BDEPHOS-RXN" "F16ALDOLASE-RXN") +PREDECESSORS - ("F16ALDOLASE-RXN" "GLYCERONE-KINASE-RXN") +PREDECESSORS - ("GLYCERONE-KINASE-RXN" "FORMALDEHYDE-TRANSKETOLASE-RXN") +PRIMARIES - ("TRANSALDOL-RXN" NIL NIL) +PRIMARIES - ("FORMALDEHYDE-TRANSKETOLASE-RXN" ("XYLULOSE-5-PHOSPHATE" "FORMALDEHYDE") ("DIHYDROXYACETONE")) +PRIMARY-PRODUCTS - GAP +PRIMARY-REACTANTS - FORMALDEHYDE +REACTION-LAYOUT - (RIBULP3EPIM-RXN (:LEFT-PRIMARIES RIBULOSE-5P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES XYLULOSE-5-PHOSPHATE)) +REACTION-LAYOUT - (RIB5PISOM-RXN (:LEFT-PRIMARIES RIBOSE-5P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES RIBULOSE-5P)) +REACTION-LAYOUT - (1TRANSKETO-RXN (:LEFT-PRIMARIES GAP D-SEDOHEPTULOSE-7-P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES XYLULOSE-5-PHOSPHATE RIBOSE-5P)) +REACTION-LAYOUT - (TRANSALDOL-RXN (:LEFT-PRIMARIES GAP D-SEDOHEPTULOSE-7-P) (:DIRECTION :R2L) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (PHOSGLYPHOS-RXN (:LEFT-PRIMARIES G3P) (:DIRECTION :R2L) (:RIGHT-PRIMARIES DPG)) +REACTION-LAYOUT - (GAPOXNPHOSPHN-RXN (:LEFT-PRIMARIES GAP) (:DIRECTION :L2R) (:RIGHT-PRIMARIES DPG)) +REACTION-LAYOUT - (TRIOSEPISOMERIZATION-RXN (:LEFT-PRIMARIES GAP) (:DIRECTION :R2L) (:RIGHT-PRIMARIES DIHYDROXY-ACETONE-PHOSPHATE)) +REACTION-LAYOUT - (2TRANSKETO-RXN (:LEFT-PRIMARIES XYLULOSE-5-PHOSPHATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES GAP FRUCTOSE-6P)) +REACTION-LAYOUT - (F16BDEPHOS-RXN (:LEFT-PRIMARIES FRUCTOSE-16-DIPHOSPHATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (F16ALDOLASE-RXN (:LEFT-PRIMARIES FRUCTOSE-16-DIPHOSPHATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES GAP DIHYDROXY-ACETONE-PHOSPHATE)) +REACTION-LAYOUT - (GLYCERONE-KINASE-RXN (:LEFT-PRIMARIES DIHYDROXYACETONE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES DIHYDROXY-ACETONE-PHOSPHATE)) +REACTION-LAYOUT - (FORMALDEHYDE-TRANSKETOLASE-RXN (:LEFT-PRIMARIES XYLULOSE-5-PHOSPHATE FORMALDEHYDE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES GAP DIHYDROXYACETONE)) +REACTION-LIST - RIBULP3EPIM-RXN +REACTION-LIST - RIB5PISOM-RXN +REACTION-LIST - 1TRANSKETO-RXN +REACTION-LIST - TRANSALDOL-RXN +REACTION-LIST - PHOSGLYPHOS-RXN +REACTION-LIST - GAPOXNPHOSPHN-RXN +REACTION-LIST - TRIOSEPISOMERIZATION-RXN +REACTION-LIST - 2TRANSKETO-RXN +REACTION-LIST - F16BDEPHOS-RXN +REACTION-LIST - F16ALDOLASE-RXN +REACTION-LIST - GLYCERONE-KINASE-RXN +REACTION-LIST - FORMALDEHYDE-TRANSKETOLASE-RXN +SPECIES - TAX-5477 +SPECIES - TAX-36026 +SPECIES - TAX-45353 +SPECIES - TAX-4922 +SPECIES - TAX-870730 +SPECIES - TAX-1156966 +SYNONYMS - dihydroxyacetone cycle +SYNONYMS - xylulose-monophosphate cycle +TAXONOMIC-RANGE - TAX-4751 +// +UNIQUE-ID - P341-PWY +TYPES - GLYCOLYSIS-VARIANTS +COMMON-NAME - glycolysis V (Pyrococcus) +CITATIONS - 8021261:EV-EXP-IDA:3365889551:fulcher +CITATIONS - 12921536:EV-EXP-TAS:3343681707:fulcher +CITATIONS - 16233230:EV-EXP-TAS:3343681707:fulcher +COMMENT - General Background +/ +/Glycolysis, which was first studied as a pathway for the utilization of glucose, is one of the major pathways of central metabolism, the other two being the |FRAME:PENTOSE-P-PWY| and the |FRAME:TCA "TCA cycle"|. Glycolysis is essential under all conditions of growth, because it produces six of the 13 precursor metabolites that are the starting materials for the biosynthesis of building blocks for macromolecules and other needed small molecules (the six compounds are |FRAME:GLC-6-P|, |FRAME:FRUCTOSE-6P|, |FRAME:DIHYDROXY-ACETONE-PHOSPHATE|, |FRAME:G3P|, |FRAME:PHOSPHO-ENOL-PYRUVATE|, and |FRAME: PYRUVATE|). Glycolysis can be found, if at least in part, in almost all organisms. +/ +/Even though glycolysis is often described starting with glucose, other hexoses (e.g. fructose) can also serve as input (as its name implies - glycose is a general term for simple sugars). +/ +/Glycolysis has evolved to fulfill two essential functions: +/ +/i) it oxidizes hexoses to generate |FRAME:ATP|, reductants and |FRAME:PYRUVATE|, and +/ +/ii) being an amphibolic pathway (pathway that involves both catabolism and anabolism), it can reversibly produce hexoses from various low-molecular weight molecules. +/ +/Because various degradation pathways feed into glycolysis at many different points, glycolysis or portions of it run in the forward or reverse direction, depending on the carbon source being utilized, in order to satisfy the cell's need for precursor metabolites and energy. +/This switching of direction is possible because all but two of the enzymatic reactions comprising glycolysis are reversible, and the conversions catalyzed by the two exceptions are rendered functionally reversible by other enzymes (|FRAME:F16B-CPLX "fructose-1,6-bisphosphatase"| and |FRAME:PEPSYNTH-CPLX|) that catalyze different irreversible reactions flowing in the opposite direction. +/ +/About This Pathway +/ +/|FRAME: TAX-2261| is a strict anaerobic archaeon, capable of utilizing pyruvate, sugars and complex organic compounds as carbon and energy sources. It is a hyperthermophilic facultative sulfur-reducing species that is able to grow in the absence of sulfur by fermentation of peptides, carbohydrates and pyruvate, as indicated by the pathway link. |FRAME: TAX-2261| employs a modified glycolytic pathway for the catabolism of sugars that contains three unique enzymes. +/Two are ADP-dependent kinases, |FRAME: EC-2.7.1.147| and |FRAME: EC-2.7.1.146|, and the third is a tungsten-containing |FRAME: EC-1.2.7.6| (GAPOR). GAPOR converts glyceraldehyde-3-phosphate into 3-phosphoglycerate in a single reaction, by passing ATP formation by substrate-level-phosphorylation via phosphoglycerate kinase. +/ +/The initial degradation of polysaccharides to oligosaccharides by |FRAME: TAX-2261| involves specific extracellular glycosyl hydrolases. The oligosaccharide products are transported into the cell by ABC-type or secondary transporters. Further hydrolysis is accomplished by specific intracellular glycoside hydrolases. The final glucose monomers are metabolized to pyruvate by the pathway shown here. Since the organism spends two high energy phosphate bonds early in the pathway and produces only two ATP molecules, the main gain of this pathway is reducing power, in the form of reduced ferredoxin. +/ +/The pyruvate that is formed is further fermented to acetate, carbon dioxide, and hydrogen |CITS: [11133967] [9783166][Kengen96][10762259][9119024][8530474][8830684][7721730][16233230]|. +/ +/Regulation of this pathway in |FRAME: TAX-2261| remains poorly understood |CITS: [12921536][28425930]|. Genomic and biochemical data suggest that other species of |FRAME:TAX-2260| also have this pathway |CITS:[12921536][Kengen96][10493919]|. +CREDITS - O-18 +CREDITS - pellegrini-toole +INSTANCE-NAME-TEMPLATE - PWY-* +KEY-REACTIONS - 1.2.7.6-RXN +KEY-REACTIONS - R302-RXN +PATHWAY-LINKS - (PYRUVATE PWY-5483 PWY-5096) +PATHWAY-LINKS - (DIHYDROXY-ACETONE-PHOSPHATE PWY-6141) +PREDECESSORS - ("PEPSYNTH-RXN" "2PGADEHYDRAT-RXN") +PREDECESSORS - ("PGLUCISOM-RXN" "RXN-17001") +PREDECESSORS - ("R302-RXN" "PGLUCISOM-RXN") +PREDECESSORS - ("2PGADEHYDRAT-RXN" "3PGAREARR-RXN") +PREDECESSORS - ("PEPDEPHOS-RXN" "2PGADEHYDRAT-RXN") +PREDECESSORS - ("F16ALDOLASE-RXN" "R302-RXN") +PREDECESSORS - ("TRIOSEPISOMERIZATION-RXN" "F16ALDOLASE-RXN") +PREDECESSORS - ("1.2.7.6-RXN" "F16ALDOLASE-RXN") +PREDECESSORS - ("3PGAREARR-RXN" "1.2.7.6-RXN") +PRIMARIES - ("F16ALDOLASE-RXN" NIL ("DIHYDROXY-ACETONE-PHOSPHATE" "GAP")) +PRIMARIES - ("TRIOSEPISOMERIZATION-RXN" ("GAP") ("DIHYDROXY-ACETONE-PHOSPHATE")) +PRIMARY-PRODUCTS - PYRUVATE +PRIMARY-REACTANTS - Glucopyranose +REACTION-LAYOUT - (PEPSYNTH-RXN (:LEFT-PRIMARIES PYRUVATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (PGLUCISOM-RXN (:LEFT-PRIMARIES D-glucopyranose-6-phosphate) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (RXN-17001 (:LEFT-PRIMARIES Glucopyranose) (:DIRECTION :L2R) (:RIGHT-PRIMARIES D-glucopyranose-6-phosphate)) +REACTION-LAYOUT - (1.2.7.6-RXN (:LEFT-PRIMARIES GAP) (:DIRECTION :L2R) (:RIGHT-PRIMARIES G3P)) +REACTION-LAYOUT - (PEPDEPHOS-RXN (:LEFT-PRIMARIES PYRUVATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (2PGADEHYDRAT-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :L2R) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (3PGAREARR-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :R2L) (:RIGHT-PRIMARIES G3P)) +REACTION-LAYOUT - (TRIOSEPISOMERIZATION-RXN (:LEFT-PRIMARIES GAP) (:DIRECTION :L2R) (:RIGHT-PRIMARIES DIHYDROXY-ACETONE-PHOSPHATE)) +REACTION-LAYOUT - (F16ALDOLASE-RXN (:LEFT-PRIMARIES FRUCTOSE-16-DIPHOSPHATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES GAP DIHYDROXY-ACETONE-PHOSPHATE)) +REACTION-LAYOUT - (R302-RXN (:LEFT-PRIMARIES FRUCTOSE-6P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-16-DIPHOSPHATE)) +REACTION-LIST - PEPSYNTH-RXN +REACTION-LIST - PGLUCISOM-RXN +REACTION-LIST - RXN-17001 +REACTION-LIST - 1.2.7.6-RXN +REACTION-LIST - PEPDEPHOS-RXN +REACTION-LIST - 2PGADEHYDRAT-RXN +REACTION-LIST - 3PGAREARR-RXN +REACTION-LIST - TRIOSEPISOMERIZATION-RXN +REACTION-LIST - F16ALDOLASE-RXN +REACTION-LIST - R302-RXN +SPECIES - TAX-29292 +SPECIES - TAX-2261 +SPECIES - TAX-53953 +SPECIES - TAX-2262 +SYNONYMS - archaeal Embden-Meyerhof pathway +SYNONYMS - archaeal Embden-Meyerhof-Parnas pathway +SYNONYMS - archaeal EMP pathway +TAXONOMIC-RANGE - TAX-2157 +// +UNIQUE-ID - PWY-1042 +TYPES - GLYCOLYSIS-VARIANTS +COMMON-NAME - glycolysis IV +CITATIONS - 12953116:EV-EXP:3378231732:tissier +CITATIONS - dey97:EV-EXP-TAS:3572877057:caspi +CITATIONS - 15134745:EV-EXP-TAS:3572877057:caspi +CITATIONS - PLAXTON96:EV-EXP-TAS:3572877057:caspi +COMMENT - General Background +/ +/Glycolysis, which was first studied as a pathway for the utilization of glucose, is one of the major pathways of central metabolism, the other two being the |FRAME:PENTOSE-P-PWY| and the |FRAME:TCA "TCA cycle"|. Glycolysis is essential under all conditions of growth, because it produces six of the 13 precursor metabolites that are the starting materials for the biosynthesis of building blocks for macromolecules and other needed small molecules (the six compounds are |FRAME:GLC-6-P|, |FRAME:FRUCTOSE-6P|, |FRAME:DIHYDROXY-ACETONE-PHOSPHATE|, |FRAME:G3P|, |FRAME:PHOSPHO-ENOL-PYRUVATE|, and |FRAME: PYRUVATE|). Glycolysis can be found, if at least in part, in almost all organisms. +/ +/Even though glycolysis is often described starting with glucose, other hexoses (e.g. fructose) can also serve as input (as its name implies - glycose is a general term for simple sugars). +/ +/Glycolysis has evolved to fulfill two essential functions: +/ +/i) it oxidizes hexoses to generate |FRAME:ATP|, reductants and |FRAME:PYRUVATE|, and +/ +/ii) being an amphibolic pathway (pathway that involves both catabolism and anabolism), it can reversibly produce hexoses from various low-molecular weight molecules. +/ +/Because various degradation pathways feed into glycolysis at many different points, glycolysis or portions of it run in the forward or reverse direction, depending on the carbon source being utilized, in order to satisfy the cell's need for precursor metabolites and energy. +/This switching of direction is possible because all but two of the enzymatic reactions comprising glycolysis are reversible, and the conversions catalyzed by the two exceptions are rendered functionally reversible by other enzymes (|FRAME:F16B-CPLX "fructose-1,6-bisphosphatase"| and |FRAME:PEPSYNTH-CPLX|) that catalyze different irreversible reactions flowing in the opposite direction. +/ +/About This Pathway +/ +/This varant of glycolysis includes two enzymes that are different from those described in other variants: |FRAME: EC-2.7.1.90|, which provides an alternative to |FRAME: EC-2.7.1.11|, and |FRAME: EC-1.2.1.9|, which provides a bypass between |FRAME:GAP| and |FRAME:G3P|. These enzyme are found in both prokaryotes and eukaryotes, but are more common in lower eukaryotes and plants. +/ +/In plants, glycolysis is the predominant pathway fueling respiration (see |FRAME:PWY-5690|) because, unlike animal mitochondria, plant mitochondria rarely respire fatty acids. In plants, this pathway occurs in two different subcellular locations: the cytosol and plastids, which are the sites of |FRAME:PWY-621| and |FRAME: PWY-6724|, respectively. +/Whereas the plastidic glycolysis pathway is identical to the conventional microbial glycolysis (see |FRAME: ANAGLYCOLYSIS-PWY|), the cytosolic pathway (i.e. this pathway) is slightly modified. These pathways can interact with one another though the action of highly selective transporters present in the inner plastid envelope |CITS:[Emes93]|. +/ +/In chloroplasts in the dark, as well as in plastids of non-photosynthetic tissues, the primary function of the glycolitic pathway is the degradation of |FRAME:Starch| to generate carbon skeletons, reductants and ATP for anabolic pathways such as that of |FRAME:PWY-4381| via |FRAME:PYRUVDEHYD-PWY|. In the cytosol, the same products are generated from the degradation of |FRAME:SUCROSE|. +/ +/In the cytosol, two enzymes catalyze alternative reactions to those of the plastidic pathway: |FRAME: EC-2.7.1.90| and |FRAME: EC-1.2.1.9|. +/ +/The former enzyme, EC 2.7.1.90, provides an alternative to |FRAME: EC-2.7.1.11|; it utilizes |FRAME:PPI| rather than ATP to convert |FRAME:FRUCTOSE-6P| to |FRAME:FRUCTOSE-16-DIPHOSPHATE|. The plant cytosol lacks soluble inorganic alkaline pyrophosphatases and, consequently, contains higher concentrations of |FRAME:PPI| (up to 0.3 mM |CITS:[WEINER87]|). It has been proposed that the utilization of pyrophosphate rather than that of ATP in glycolysis is favored under nutritional Pi deprivation or oxygen deficiency |CITS:[DAVIES93][15012287]|. +/ +/The second enzyme, EC 1.2.1.9, provides a bypass between |FRAME:GAP| and |FRAME:G3P|, which allows for their conversion without phosphorylation by a non-phosphorylating glyceraldehyde 3-P dehydrogenase |CITS:[15012287][16927206]|. This reaction produces |FRAME:NADPH| but not |FRAME:ATP|. +CREDITS - THE-ARABIDOPSIS-INFORMATION-RESOURCE +CREDITS - tissier +DBLINKS - (ARACYC "PWY-1042" NIL |green| 3381011399 NIL NIL) +ENZYMES-NOT-USED - MONOMER-12893 +ENZYMES-NOT-USED - MONOMER-12838 +ENZYMES-NOT-USED - MONOMER-12850 +ENZYMES-NOT-USED - MONOMER-12897 +ENZYMES-NOT-USED - MONOMER-12899 +ENZYMES-NOT-USED - MONOMER-12901 +ENZYMES-NOT-USED - MONOMER-12903 +ENZYMES-NOT-USED - CPLX-7279 +ENZYMES-NOT-USED - CPLX-7280 +ENZYMES-NOT-USED - MONOMER-12711 +ENZYMES-NOT-USED - MONOMER-12861 +ENZYMES-NOT-USED - MONOMER-9124 +ENZYMES-NOT-USED - CPLX-5402 +IN-PATHWAY - PWY-5464 +INSTANCE-NAME-TEMPLATE - PWY-* +KEY-REACTIONS - (OR 1.2.1.9-RXN 2.7.1.90-RXN) +PATHWAY-LINKS - (FRUCTOSE-6P PWY-621) +PATHWAY-LINKS - (PYRUVATE PYRUVDEHYD-PWY) +PREDECESSORS - ("F16ALDOLASE-RXN" "6PFRUCTPHOS-RXN") +PREDECESSORS - ("F16ALDOLASE-RXN" "2.7.1.90-RXN") +PREDECESSORS - ("TRIOSEPISOMERIZATION-RXN" "F16ALDOLASE-RXN") +PREDECESSORS - ("GAPOXNPHOSPHN-RXN" "TRIOSEPISOMERIZATION-RXN") +PREDECESSORS - ("GAPOXNPHOSPHN-RXN" "F16ALDOLASE-RXN") +PREDECESSORS - ("PHOSGLYPHOS-RXN" "GAPOXNPHOSPHN-RXN") +PREDECESSORS - ("3PGAREARR-RXN" "PHOSGLYPHOS-RXN") +PREDECESSORS - ("2PGADEHYDRAT-RXN" "3PGAREARR-RXN") +PREDECESSORS - ("PEPDEPHOS-RXN" "2PGADEHYDRAT-RXN") +PREDECESSORS - ("1.2.1.9-RXN" "TRIOSEPISOMERIZATION-RXN") +PREDECESSORS - ("3PGAREARR-RXN" "1.2.1.9-RXN") +PRIMARY-PRODUCTS - PYRUVATE +PRIMARY-REACTANTS - FRUCTOSE-6P +REACTION-LAYOUT - (1.2.1.9-RXN (:LEFT-PRIMARIES GAP) (:DIRECTION :L2R) (:RIGHT-PRIMARIES G3P)) +REACTION-LAYOUT - (PEPDEPHOS-RXN (:LEFT-PRIMARIES PYRUVATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (2PGADEHYDRAT-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :L2R) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (3PGAREARR-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :R2L) (:RIGHT-PRIMARIES G3P)) +REACTION-LAYOUT - (PHOSGLYPHOS-RXN (:LEFT-PRIMARIES G3P) (:DIRECTION :R2L) (:RIGHT-PRIMARIES DPG)) +REACTION-LAYOUT - (GAPOXNPHOSPHN-RXN (:LEFT-PRIMARIES GAP) (:DIRECTION :L2R) (:RIGHT-PRIMARIES DPG)) +REACTION-LAYOUT - (TRIOSEPISOMERIZATION-RXN (:LEFT-PRIMARIES GAP) (:DIRECTION :R2L) (:RIGHT-PRIMARIES DIHYDROXY-ACETONE-PHOSPHATE)) +REACTION-LAYOUT - (F16ALDOLASE-RXN (:LEFT-PRIMARIES FRUCTOSE-16-DIPHOSPHATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES GAP DIHYDROXY-ACETONE-PHOSPHATE)) +REACTION-LAYOUT - (2.7.1.90-RXN (:LEFT-PRIMARIES FRUCTOSE-6P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-16-DIPHOSPHATE)) +REACTION-LAYOUT - (6PFRUCTPHOS-RXN (:LEFT-PRIMARIES FRUCTOSE-6P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-16-DIPHOSPHATE)) +REACTION-LIST - 1.2.1.9-RXN +REACTION-LIST - PEPDEPHOS-RXN +REACTION-LIST - 2PGADEHYDRAT-RXN +REACTION-LIST - 3PGAREARR-RXN +REACTION-LIST - PHOSGLYPHOS-RXN +REACTION-LIST - GAPOXNPHOSPHN-RXN +REACTION-LIST - TRIOSEPISOMERIZATION-RXN +REACTION-LIST - F16ALDOLASE-RXN +REACTION-LIST - 2.7.1.90-RXN +REACTION-LIST - 6PFRUCTPHOS-RXN +SPECIES - TAX-3708 +SPECIES - TAX-3710 +SPECIES - TAX-3847 +SPECIES - TAX-3981 +SPECIES - TAX-4641 +SPECIES - TAX-3888 +SPECIES - TAX-3988 +SPECIES - TAX-4550 +SPECIES - TAX-4113 +SPECIES - TAX-3562 +SPECIES - TAX-4565 +SPECIES - TAX-3916 +SPECIES - TAX-4577 +SPECIES - ORG-5993 +SUPER-PATHWAYS - PWY-5464 +SYNONYMS - glycolysis 4 +TAXONOMIC-RANGE - TAX-2 +TAXONOMIC-RANGE - TAX-33090 +// +UNIQUE-ID - PWY-1622 +TYPES - Formaldehyde-Assimilation +COMMON-NAME - formaldehyde assimilation I (serine pathway) +CITATIONS - 8801441:EV-EXP-IDA:3303667431:caspi +COMMENT - Methanotrophic bacteria oxidize |FRAME: CH4| and |FRAME: METOH| to |FRAME: FORMALDEHYDE|, which can be assimilated to form intermediates of the central metabolic pathways. These intermediate compounds are subsequently used for biosynthesis |CITS:[353476][6768606][2110811]|. +/ +/There are two known pathways that are used by methanotrophic bacteria for the assimilation of formaldehyde: the serine pathway (this pathway) and the |FRAME: PWY-1861 "RuMP cycle"| |CITS: [8801441]|. +/ +/In the first reaction of the serine pathway, |FRAME: FORMALDEHYDE| reacts with |FRAME: GLY| to form |FRAME: SER|. The reaction is catalyzed by |FRAME: EC-2.1.2.1| (SHMT), an enzyme that uses |FRAME: THF-GLU-N THF| as a cofactor. When formaldehyde is bound to it, it forms |FRAME: METHYLENE-THF-GLU-N 5,10-methylenetetrahydrofolate|. +/During the reaction the formaldehyde is transferred from |FRAME: METHYLENE-THF-GLU-N 5,10-methylenetetrahydrofolate| to the glycine, forming |FRAME: SER|. Two such enzymes, one for assimilation of formaldehyde and one for biosynthesis of glycine from serine, are known in |FRAME: TAX-272630| and |FRAME: TAX-410| |CITS: [241747]|. +/ +/In the next step |FRAME: SER| is transaminated with |FRAME: GLYOX| as the amino group acceptor by the enzyme |FRAME: EC-2.6.1.45|, to produce |FRAME: OH-PYR| and |FRAME: GLY| (the glycine can be recycled and serve as a substrate for serine hydroxymethyltransferase). |FRAME: OH-PYR Hydroxypyruvate| is reduced to |FRAME: GLYCERATE| by |FRAME: EC-1.1.1.81|, followed by phosphorylation by |FRAME: EC-2.7.1.165| to produce |FRAME: 2-PG|. +/ +/At this point there is a split in the pathway. Some of the |FRAME: 2-PG| is converted by |FRAME: EC-5.4.2.11| to |FRAME: G3P|, which is an intermediate of the central metabolic pathways, and is used for biosynthesis, while the rest of the |FRAME: 2-PG| is converted by |FRAME: EC-4.2.1.11| to |FRAME: PHOSPHO-ENOL-PYRUVATE|. +/|FRAME: EC-4.1.1.31|, then catalyzes the fixation of carbon dioxide, conveting |FRAME: PHOSPHO-ENOL-PYRUVATE| to |FRAME: OXALACETIC_ACID|, which is reduced to |FRAME: MAL| by |FRAME: EC-1.1.1.37|. |FRAME: CPD-208 "Malyl coenzyme A"| is formed in a reaction catalyzed by |FRAME: EC-6.2.1.9| and is cleaved by |FRAME: EC-4.1.3.24| into |FRAME: ACETYL-COA| and |FRAME: GLYOX|. +/When the last two enzymes (EC 6.2.1.9 and EC 4.1.3.24), as well as EC 1.1.1.81 and EC 2.7.1.165, are found in methylotrophs, they indicate the presence of the serine pathway |CITS: [6768606][1515161][8092853]|. +/ +/The fate of the |FRAME: ACETYL-COA| depends on wheher the organism possesses the enzyme |FRAME: EC-4.1.3.1|, which is a key enzyme of the |FRAME: GLYOXYLATE-BYPASS|. If the enzyme is present, |FRAME: ACETYL-COA| is converted to glyoxylate by the glyoxylate cycle. However, if the enzyme is missing, as is the case in |FRAME: TAX-272630|, it is converted by the |FRAME: PWY-5741| |CITS: [ 22105076]|. In both cases the resulting |FRAME: GLYOX| can serve as substrate for |FRAME: EC-2.6.1.45|, regenerating glycine and closing the circle. +/ +/The net balance of this cycle is the fixation of two mols of |FRAME: FORMALDEHYDE| and 1 mol of CO2 into 1 mol of |FRAME: G3P|, which is used for biosynthesis, at the expense of 3 mols ATP and the oxidation of 3 mols of NAD(P)H. This does not include the reduction/oxidation of NAD(P)H and/or |FRAME: Etf "electron-transfer flavoprotein"| that occur in the segments of the |FRAME: GLYOXYLATE-BYPASS| or |FRAME: PWY-5741|. +/ +/Please note that reaction of |FRAME: EC-2.6.1.45|, appears twice in the diagram, (once for the reaction |FRAME: SER| to |FRAME: OH-PYR|, and once for the reaction |FRAME: GLYOX| to |FRAME: GLY|) even though in reality the two reactions are coupled. +CREDITS - SRI +CREDITS - caspi +INSTANCE-NAME-TEMPLATE - PWY-* +KEY-REACTIONS - MALATE--COA-LIGASE-RXN +KEY-REACTIONS - MALYL-COA-LYASE-RXN +KEY-REACTIONS - HYDROXYPYRUVATE-REDUCTASE-RXN +KEY-REACTIONS - GKI-RXN +PATHWAY-LINKS - (GLYOX PWY-5741 GLYOXYLATE-BYPASS) +PATHWAY-LINKS - (FORMALDEHYDE PWY-1701) +PATHWAY-LINKS - (ACETYL-COA PWY-5741 GLYOXYLATE-BYPASS) +PREDECESSORS - ("GLYOHMETRANS-RXN" "RXN-2881") +PREDECESSORS - ("HYDROXYPYRUVATE-REDUCTASE-RXN" "SERINE--GLYOXYLATE-AMINOTRANSFERASE-RXN") +PREDECESSORS - ("SERINE--GLYOXYLATE-AMINOTRANSFERASE-RXN" "GLYOHMETRANS-RXN") +PREDECESSORS - ("GLYOHMETRANS-RXN" "SERINE-GLYOXYLATE-AMINOTRANSFERASE-RXN") +PREDECESSORS - ("SERINE-GLYOXYLATE-AMINOTRANSFERASE-RXN" "RXN-2802") +PREDECESSORS - ("2PGADEHYDRAT-RXN" "GKI-RXN") +PREDECESSORS - ("RXN-15513" "GKI-RXN") +PREDECESSORS - ("GKI-RXN" "HYDROXYPYRUVATE-REDUCTASE-RXN") +PREDECESSORS - ("RXN-2802" "MALYL-COA-LYASE-RXN") +PREDECESSORS - ("MALYL-COA-LYASE-RXN" "MALATE--COA-LIGASE-RXN") +PREDECESSORS - ("MALATE-DEH-RXN" "PEPCARBOX-RXN") +PREDECESSORS - ("PEPCARBOX-RXN" "2PGADEHYDRAT-RXN") +PREDECESSORS - ("MALATE--COA-LIGASE-RXN" "MALATE-DEH-RXN") +PRIMARIES - ("SERINE--GLYOXYLATE-AMINOTRANSFERASE-RXN" ("SER") ("OH-PYR")) +PRIMARIES - ("GLYOHMETRANS-RXN" ("METHYLENE-THF-GLU-N" "GLY") ("SER")) +PRIMARIES - ("SERINE-GLYOXYLATE-AMINOTRANSFERASE-RXN" ("GLYOX") ("GLY")) +PRIMARIES - ("RXN-2802" ("ACETYL-COA") ("GLYOX")) +PRIMARIES - ("MALATE--COA-LIGASE-RXN" ("MAL") ("CPD-208")) +PRIMARIES - ("PEPCARBOX-RXN" ("PHOSPHO-ENOL-PYRUVATE") ("OXALACETIC_ACID")) +PRIMARIES - ("MALATE-DEH-RXN" ("OXALACETIC_ACID") NIL) +PRIMARIES - ("RXN-15513" ("2-PG") NIL) +PRIMARIES - ("HYDROXYPYRUVATE-REDUCTASE-RXN" ("OH-PYR") NIL) +PRIMARY-PRODUCTS - G3P +PRIMARY-REACTANTS - FORMALDEHYDE +PRIMARY-REACTANTS - THF-GLU-N +REACTION-LAYOUT - (GLYOHMETRANS-RXN (:LEFT-PRIMARIES SER) (:DIRECTION :R2L) (:RIGHT-PRIMARIES METHYLENE-THF-GLU-N GLY)) +REACTION-LAYOUT - (MALATE-DEH-RXN (:LEFT-PRIMARIES MAL) (:DIRECTION :R2L) (:RIGHT-PRIMARIES OXALACETIC_ACID)) +REACTION-LAYOUT - (RXN-2881 (:LEFT-PRIMARIES FORMALDEHYDE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES METHYLENE-THF-GLU-N)) +REACTION-LAYOUT - (SERINE--GLYOXYLATE-AMINOTRANSFERASE-RXN (:LEFT-PRIMARIES SER GLYOX) (:DIRECTION :L2R) (:RIGHT-PRIMARIES GLY OH-PYR)) +REACTION-LAYOUT - (SERINE-GLYOXYLATE-AMINOTRANSFERASE-RXN (:LEFT-PRIMARIES OH-PYR GLY) (:DIRECTION :R2L) (:RIGHT-PRIMARIES SER GLYOX)) +REACTION-LAYOUT - (GKI-RXN (:LEFT-PRIMARIES GLYCERATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES 2-PG)) +REACTION-LAYOUT - (RXN-2802 (:LEFT-PRIMARIES ACETYL-COA) (:DIRECTION :L2R) (:RIGHT-PRIMARIES GLYOX)) +REACTION-LAYOUT - (HYDROXYPYRUVATE-REDUCTASE-RXN (:LEFT-PRIMARIES GLYCERATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES OH-PYR)) +REACTION-LAYOUT - (2PGADEHYDRAT-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :L2R) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (RXN-15513 (:LEFT-PRIMARIES 2-PG) (:DIRECTION :L2R) (:RIGHT-PRIMARIES G3P)) +REACTION-LAYOUT - (PEPCARBOX-RXN (:LEFT-PRIMARIES OXALACETIC_ACID) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (MALATE--COA-LIGASE-RXN (:LEFT-PRIMARIES MAL) (:DIRECTION :L2R) (:RIGHT-PRIMARIES CPD-208)) +REACTION-LAYOUT - (MALYL-COA-LYASE-RXN (:LEFT-PRIMARIES CPD-208) (:DIRECTION :L2R) (:RIGHT-PRIMARIES ACETYL-COA GLYOX)) +REACTION-LIST - GLYOHMETRANS-RXN +REACTION-LIST - MALATE-DEH-RXN +REACTION-LIST - RXN-2881 +REACTION-LIST - SERINE--GLYOXYLATE-AMINOTRANSFERASE-RXN +REACTION-LIST - SERINE-GLYOXYLATE-AMINOTRANSFERASE-RXN +REACTION-LIST - GKI-RXN +REACTION-LIST - RXN-2802 +REACTION-LIST - HYDROXYPYRUVATE-REDUCTASE-RXN +REACTION-LIST - 2PGADEHYDRAT-RXN +REACTION-LIST - RXN-15513 +REACTION-LIST - PEPCARBOX-RXN +REACTION-LIST - MALATE--COA-LIGASE-RXN +REACTION-LIST - MALYL-COA-LYASE-RXN +SPECIES - TAX-39770 +SPECIES - TAX-272630 +SPECIES - TAX-410 +SPECIES - TAX-29468 +SPECIES - TAX-29469 +SPECIES - TAX-134 +SPECIES - TAX-29470 +SPECIES - TAX-428 +SPECIES - TAX-426 +SPECIES - ORG-6222 +SPECIES - ORG-6000 +TAXONOMIC-RANGE - TAX-2 +// +UNIQUE-ID - PWY-1861 +TYPES - Formaldehyde-Assimilation +COMMON-NAME - formaldehyde assimilation II (assimilatory RuMP Cycle) +CITATIONS - 4377654:EV-EXP-IDA:3303825949:caspi +COMMENT - Formaldehyde produced from the oxidation of methane and methanol by methanotrophic bacteria is assimilated to form intermediates of the central metabolic routes that are subsequently used for biosynthesis of cell material |CITS: [353476][6768606][1909921]|. +/The two known pathways used by methanotrophic bacteria for the synthesis of multicarbon compounds from formaldehyde are both cyclic. In the serine pathway 2 molecules of formaldehyde and 1 molecule of carbon dioxide are utilized in each cycle forming a three-carbon intermediate (see |FRAME:PWY-1622|), while in the RuMP cycle 3 molecules of formaldehyde are assimilated forming a three-carbon intermediate of central metabolism |CITS:[353476][6768606][6295363][2110811][1909921]|. +/In the latter pathway, all cellular carbon is assimilated at the oxidation level of formaldehyde. +/ +/The RuMP pathway was first described by Quayle and his colleagues |CITS: [14342526][6030306][4377654]|. +/Although it is cyclic in nature, it is displayed above as a linear segment, to make it simpler to follow. It is best decribed as consisting of three main parts - fixation, cleavage and rearrangement. +/ +/Two enzymes, |FRAME: EC-4.1.2.43| and |FRAME: EC-5.3.1.27|, are unique to this pathway and were initially believed to be unique to the metabolism of one-carbon compounds by methanotrophs and some other methylotrophs that do not utilize methane. However, it was later shown that these enzymes are also present in heterotrophs such as |FRAME: TAX-1423|, where they play a role in formaldehyde detoxification |CITS: [10572115][14532071]|. Thus, it is now accepted that the RuMP Cycle is a widespread prokaryotic pathway involved in either formaldehyde fixation or formaldehyde detoxification. +/ +/I. Fixation +/ +/In the first part, |FRAME: FORMALDEHYDE| and |FRAME: RIBULOSE-5P| (RuMP) are condensed by |FRAME: CPLX-3441| (HPS) to form |FRAME: CPD-26| (HuMP), which in turn is converted to |FRAME: FRUCTOSE-6P| (FMP) by |FRAME: CPLX-3445| (HPI). These two enzymes are the only enzymes which are unique to organisms that employ this pathway. This part of the pathway is displayed above as a stand alone segment. By the assimilation of three formaldehyde molecules, three molecules of FMP are created. +/ +/The enzymes which participate in the other two parts of the pathway are members of other pathways, such as the |FRAME: NONOXIPENT-PWY|, and are not unique to organisms utilizing the RuMP pathway. +/ +/II. Cleavage +/ +/In the second part, some of the FMP is cleaved to 3-carbon compounds. There are two routes: in the first route (displayed above) FMP is phosphorylated by 6-phosphofructokinase (EC 2.7.1.11) to fructose 1,6-bisphosphate (FDP), which is then cleaved by fructose-bisphosphate aldolase (EC 4.1.2.13) to dihydroxy acetone phosphate (DHAP) and glyceraldehyde 3-phosphate. +/ +/In the second route FMP is first isomerized to glucose 6-phosphate (GMP) by glucose-6-phosphate isomerase (EC 5.3.1.9). GMP is dehydrogenated first to D-glucono-1,5-lactone 6-phosphate by glucose-6-phosphate 1-dehydrogenase (EC 1.1.1.49), and then to 6-phospho-gluconate by 6-phosphogluconolactonase (EC 3.1.1.31). 6-phospho-gluconate is then converted to 2-keto-3-deoxy-6-phospho-D-gluconate (KDPG) by phosphogluconate dehydratase (EC 4.2.1.12), and +/KDPG is cleaved into glyceraldehyde 3-phosphate and pyruvate by KDPG aldolase (EC 4.1.2.14). +/ +/The pyruvate or DHAP which are formed are then channeled to biosysnthesis. For every three molecules of formaldehyde that are condensed, one molecule of FMP is cleaved, and thus one molecule of pyruvate or DHAP is routed to biosynthesis. +/ +/III. Rearrangement +/ +/The last step is a rearrangement step, in which the RuMP molecules are regenerated. There are several possible routes. For example, the GAP which is left from the cleaved FMP can react with one of the other two FMP molecules to form xylulose-5-phosphate (XuMP) and erythrose-4-phosphate (EMP). +/This reaction is catalyzed by a transketolase (EC 2.2.1.1). EMP then reacts with the third FMP to form septulose-7-phosphate (SMP) and glyceraldehyde 3-phosphate (GAP). This reaction is catalyzed by a transaldolase (EC 2.2.1.2). These two compounds are the substrate for another aldolase (also 2.2.1.2), which generates XuMP and a ribose-5-phosphate (RiMP). The net result of these rearrangements reactions are two XuMP and a RiMP, all of which are then converted back to RuMP by ribulose-phosphate 3-epimerase (EC 5.1.3.1) and ribose-5-phosphate isomerase (EC 5.3.1.6), thus closing the cycle. +CREDITS - SRI +CREDITS - caspi +INSTANCE-NAME-TEMPLATE - PWY-* +KEY-REACTIONS - R10-RXN +KEY-REACTIONS - R12-RXN +PATHWAY-LINKS - (FORMALDEHYDE PWY-1701) +PREDECESSORS - ("RIBULP3EPIM-RXN" "1TRANSKETO-RXN") +PREDECESSORS - ("RIB5PISOM-RXN" "1TRANSKETO-RXN") +PREDECESSORS - ("1TRANSKETO-RXN" "TRANSALDOL-RXN") +PREDECESSORS - ("TRANSALDOL-RXN" "2TRANSKETO-RXN") +PREDECESSORS - ("2TRANSKETO-RXN" "F16ALDOLASE-RXN") +PREDECESSORS - ("R10-RXN") +PREDECESSORS - ("R12-RXN" "R10-RXN") +PREDECESSORS - ("F16ALDOLASE-RXN" "6PFRUCTPHOS-RXN") +PRIMARIES - ("R10-RXN" ("FORMALDEHYDE" "RIBULOSE-5P") NIL) +PRIMARIES - ("TRANSALDOL-RXN" NIL NIL) +PRIMARIES - ("2TRANSKETO-RXN" NIL ("XYLULOSE-5-PHOSPHATE")) +PRIMARIES - ("F16ALDOLASE-RXN" NIL ("DIHYDROXY-ACETONE-PHOSPHATE")) +PRIMARIES - ("R12-RXN" ("CPD-26") ("FRUCTOSE-6P")) +PRIMARIES - ("6PFRUCTPHOS-RXN" ("FRUCTOSE-6P") ("FRUCTOSE-16-DIPHOSPHATE")) +PRIMARY-PRODUCTS - RIBULOSE-5P +PRIMARY-PRODUCTS - XYLULOSE-5-PHOSPHATE +PRIMARY-PRODUCTS - DIHYDROXY-ACETONE-PHOSPHATE +PRIMARY-PRODUCTS - FRUCTOSE-6P +PRIMARY-REACTANTS - FRUCTOSE-6P +PRIMARY-REACTANTS - RIBULOSE-5P +PRIMARY-REACTANTS - FORMALDEHYDE +REACTION-LAYOUT - (RIB5PISOM-RXN (:LEFT-PRIMARIES RIBOSE-5P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES RIBULOSE-5P)) +REACTION-LAYOUT - (RIBULP3EPIM-RXN (:LEFT-PRIMARIES RIBULOSE-5P) (:DIRECTION :R2L) (:RIGHT-PRIMARIES XYLULOSE-5-PHOSPHATE)) +REACTION-LAYOUT - (1TRANSKETO-RXN (:LEFT-PRIMARIES GAP D-SEDOHEPTULOSE-7-P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES XYLULOSE-5-PHOSPHATE RIBOSE-5P)) +REACTION-LAYOUT - (TRANSALDOL-RXN (:LEFT-PRIMARIES GAP D-SEDOHEPTULOSE-7-P) (:DIRECTION :R2L) (:RIGHT-PRIMARIES ERYTHROSE-4P FRUCTOSE-6P)) +REACTION-LAYOUT - (2TRANSKETO-RXN (:LEFT-PRIMARIES XYLULOSE-5-PHOSPHATE ERYTHROSE-4P) (:DIRECTION :R2L) (:RIGHT-PRIMARIES GAP FRUCTOSE-6P)) +REACTION-LAYOUT - (F16ALDOLASE-RXN (:LEFT-PRIMARIES FRUCTOSE-16-DIPHOSPHATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES GAP DIHYDROXY-ACETONE-PHOSPHATE)) +REACTION-LAYOUT - (6PFRUCTPHOS-RXN (:LEFT-PRIMARIES FRUCTOSE-6P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-16-DIPHOSPHATE)) +REACTION-LAYOUT - (R12-RXN (:LEFT-PRIMARIES CPD-26) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (R10-RXN (:LEFT-PRIMARIES CPD-26) (:DIRECTION :R2L) (:RIGHT-PRIMARIES FORMALDEHYDE RIBULOSE-5P)) +REACTION-LIST - RIB5PISOM-RXN +REACTION-LIST - RIBULP3EPIM-RXN +REACTION-LIST - 1TRANSKETO-RXN +REACTION-LIST - TRANSALDOL-RXN +REACTION-LIST - 2TRANSKETO-RXN +REACTION-LIST - F16ALDOLASE-RXN +REACTION-LIST - 6PFRUCTPHOS-RXN +REACTION-LIST - R12-RXN +REACTION-LIST - R10-RXN +SPECIES - TAX-1423 +SPECIES - TAX-405 +SPECIES - ORG-5879 +SPECIES - ORG-5914 +SPECIES - ORG-5917 +SYNONYMS - ribulose monophosphate cycle +SYNONYMS - formaldehyde assimilation +SYNONYMS - assimilatory RuMP pathway +TAXONOMIC-RANGE - TAX-2 +// +UNIQUE-ID - PWY-2221 +TYPES - Entner-Duodoroff-Pathways +COMMON-NAME - Entner-Doudoroff pathway III (semi-phosphorylative) +CITATIONS - 4153875:EV-EXP-IDA:3366644803:caspi +CITATIONS - 16256419:EV-EXP-TAS:3373064951:fulcher +COMMENT - The |FRAME: ENTNER-DOUDOROFF-PWY "Entner-Doudoroff (ED) pathway"| joins the |FRAME:OXIDATIVEPENT-PWY| to glycolysis. +/While basic carbon metabolic pathways such as the Entner-Doudoroff pathway are rather conserved within eukaryotes and eubacteria, archaebacteria have proved to be unexpectedly diverse. The central metabolic pathways of carbohydrate catabolism found in these organisms exhibit a high variability, and include modifications to the ED pathway, as well as to the Embden-Meyerhof-Parnas pathway (glycolysis). +/ +/The classical Entner-Doudoroff (ED) pathway of bacteria (and some eukaryotes) (|FRAME: ENTNER-DOUDOROFF-PWY|) starts with the phosphorylation of either glucose or its oxidized derivative gluconate. There are two "flavors" of ED-like pathways in archaea that do not follow this route. +/ +/The variation depicted in this pathway is found in halophilic archaea |CITS: [1260548][688098][3255682]|, the thermophile |FRAME: TAX-2271|, and some bacteria. In it the phosphorylation occurs at the level of |FRAME:2-DEHYDRO-3-DEOXY-D-GLUCONATE| (KDG), which is phosphorylated to |FRAME:2-KETO-3-DEOXY-6-P-GLUCONATE| (KDPG) by |FRAME: EC-2.7.1.45| (KDG kinase). +/ +/In halophilic archaea, |FRAME: GAP| can be metabolized in the semi-phosphorylative ED pathway as it is in glycolysis, by glyceraldehyde 3-phosphate dehydrogenase and phosphoglycerate kinase. In other archaea, these enzymes are involved only in |FRAME: GLUCONEO-PWY| (in |CITS: [11271421]| and reviewed in |CITS: [16256419]|). +/ +/A second variation, which is completely non-phosphorylative, is found in the thermophiles |FRAME:TAX-2284|,|FRAME:TAX-2302| and |FRAME:TAX-2270|, and is described in |FRAME: NPGLUCAT-PWY|. +/|FRAME:TAX-183924| apparently possess both modified versions of the ED pathway |CITS: [1445411][15869466][16794308]|. +CREDITS - SRI +CREDITS - fulcher +CREDITS - caspi +INSTANCE-NAME-TEMPLATE - PWY-* +PATHWAY-LINKS - (PYRUVATE PYRUVDEHYD-PWY PWY-5096 PWY-5483) +PREDECESSORS - (3PGAREARR-RXN RXN-15754) +PREDECESSORS - (RXN-15754 KDPGALDOL-RXN) +PREDECESSORS - ("PEPDEPHOS-RXN" "2PGADEHYDRAT-RXN") +PREDECESSORS - ("2PGADEHYDRAT-RXN" "3PGAREARR-RXN") +PREDECESSORS - ("GLUCONOLACT-RXN" "GLUCOSE-1-DEHYDROGENASE-NADP+-RXN") +PREDECESSORS - ("GLUCONATE-DEHYDRATASE-RXN" "GLUCONOLACT-RXN") +PREDECESSORS - ("DEOXYGLUCONOKIN-RXN" "GLUCONATE-DEHYDRATASE-RXN") +PREDECESSORS - ("KDPGALDOL-RXN" "DEOXYGLUCONOKIN-RXN") +PRIMARY-PRODUCTS - PYRUVATE +PRIMARY-REACTANTS - Glucopyranose +REACTION-LAYOUT - (RXN-15754 (:LEFT-PRIMARIES GAP) (:DIRECTION :L2R) (:RIGHT-PRIMARIES G3P)) +REACTION-LAYOUT - (PEPDEPHOS-RXN (:LEFT-PRIMARIES PYRUVATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (2PGADEHYDRAT-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :L2R) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (3PGAREARR-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :R2L) (:RIGHT-PRIMARIES G3P)) +REACTION-LAYOUT - (GLUCOSE-1-DEHYDROGENASE-NADP+-RXN (:LEFT-PRIMARIES Glucopyranose) (:DIRECTION :L2R) (:RIGHT-PRIMARIES GLC-D-LACTONE)) +REACTION-LAYOUT - (GLUCONOLACT-RXN (:LEFT-PRIMARIES GLC-D-LACTONE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES GLUCONATE)) +REACTION-LAYOUT - (KDPGALDOL-RXN (:LEFT-PRIMARIES 2-KETO-3-DEOXY-6-P-GLUCONATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES PYRUVATE GAP)) +REACTION-LAYOUT - (DEOXYGLUCONOKIN-RXN (:LEFT-PRIMARIES 2-DEHYDRO-3-DEOXY-D-GLUCONATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES 2-KETO-3-DEOXY-6-P-GLUCONATE)) +REACTION-LAYOUT - (GLUCONATE-DEHYDRATASE-RXN (:LEFT-PRIMARIES GLUCONATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES 2-DEHYDRO-3-DEOXY-D-GLUCONATE)) +REACTION-LIST - RXN-15754 +REACTION-LIST - PEPDEPHOS-RXN +REACTION-LIST - 2PGADEHYDRAT-RXN +REACTION-LIST - 3PGAREARR-RXN +REACTION-LIST - GLUCOSE-1-DEHYDROGENASE-NADP+-RXN +REACTION-LIST - GLUCONOLACT-RXN +REACTION-LIST - KDPGALDOL-RXN +REACTION-LIST - DEOXYGLUCONOKIN-RXN +REACTION-LIST - GLUCONATE-DEHYDRATASE-RXN +SPECIES - TAX-2238 +SPECIES - TAX-62319 +SPECIES - TAX-2252 +SPECIES - TAX-2248 +SPECIES - TAX-2287 +SPECIES - TAX-2271 +TAXONOMIC-RANGE - TAX-183963 +TAXONOMIC-RANGE - TAX-183924 +// +UNIQUE-ID - PWY-3801 +TYPES - SUCROSE-DEG +COMMON-NAME - sucrose degradation II (sucrose synthase) +CITATIONS - dey97:EV-EXP:3326732938:christ +COMMENT - In plants, sucrose is cleaved by either |FRAME: EC-3.2.1.26| (invertase) or |FRAME: EC-2.4.1.13|. +/ +/Invertase activity is found in the cytoplasm, vacuole, and apoplast (see |FRAME: PWY-621|), whereas sucrose cleavage by sucrose synthase is only found in the cytoplasm |CITS: [plantbiochemistry97]|. +/ +/Sucrose synthase is a homotetrameric enzyme that catalyzes the reversible UDP-dependent cleavage of sucrose into UDP-glucose and fructose. Hexoses derived from sucrose degradation are used in a variety of important metabolic pathways including glycolysis, starch biosynthesis and the synthesis of cellulose and callose |CITS:[10525291]|. +CREDITS - SRI +CREDITS - caspi +DBLINKS - (ARACYC "PWY-3801" NIL |green| 3381011399 NIL NIL) +IN-PATHWAY - PWY-7345 +INSTANCE-NAME-TEMPLATE - PWY-* +KEY-REACTIONS - SUCROSE-SYNTHASE-RXN +PATHWAY-LINKS - (FRUCTOSE-6P PWY-5484) +PREDECESSORS - ("PGLUCISOM-RXN" "PHOSPHOGLUCMUT-RXN") +PREDECESSORS - ("PHOSPHOGLUCMUT-RXN" "GLUC1PURIDYLTRANS-RXN") +PREDECESSORS - PWY-5486 +PREDECESSORS - PWY-5481 +PREDECESSORS - PWY-5484 +PREDECESSORS - ("GLUC1PURIDYLTRANS-RXN" "SUCROSE-SYNTHASE-RXN") +PREDECESSORS - ("FRUCTOKINASE-RXN" "SUCROSE-SYNTHASE-RXN") +PRIMARIES - ("SUCROSE-SYNTHASE-RXN" ("SUCROSE") ("BETA-D-FRUCTOSE" "CPD-12575")) +PRIMARY-PRODUCTS - FRUCTOSE-6P +PRIMARY-REACTANTS - SUCROSE +REACTION-LAYOUT - (PHOSPHOGLUCMUT-RXN (:LEFT-PRIMARIES GLC-1-P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES D-glucopyranose-6-phosphate)) +REACTION-LAYOUT - (PGLUCISOM-RXN (:LEFT-PRIMARIES D-glucopyranose-6-phosphate) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (GLUC1PURIDYLTRANS-RXN (:LEFT-PRIMARIES GLC-1-P) (:DIRECTION :R2L) (:RIGHT-PRIMARIES CPD-12575)) +REACTION-LAYOUT - (FRUCTOKINASE-RXN (:LEFT-PRIMARIES BETA-D-FRUCTOSE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (SUCROSE-SYNTHASE-RXN (:LEFT-PRIMARIES BETA-D-FRUCTOSE CPD-12575) (:DIRECTION :R2L) (:RIGHT-PRIMARIES SUCROSE)) +REACTION-LIST - PHOSPHOGLUCMUT-RXN +REACTION-LIST - PGLUCISOM-RXN +REACTION-LIST - GLUC1PURIDYLTRANS-RXN +REACTION-LIST - FRUCTOKINASE-RXN +REACTION-LIST - SUCROSE-SYNTHASE-RXN +SPECIES - TAX-3847 +SPECIES - TAX-4530 +SPECIES - TAX-3888 +SPECIES - ORG-5993 +SUPER-PATHWAYS - PWY-7345 +TAXONOMIC-RANGE - TAX-1117 +TAXONOMIC-RANGE - TAX-33090 +// +UNIQUE-ID - PWY-5054 +TYPES - SUGAR-DERIVS +TYPES - Sorbitol-Biosynthesis +COMMON-NAME - D-sorbitol biosynthesis I +CITATIONS - 7757342:EV-EXP:3342398532:tissier +COMMENT - General Background +/ +/Sorbitol is a hexitol, |FRAME:Sugar-alcohols| found in higher plants |CITS:[BIELESKI82]|. In Rosaceae plants, sorbitol is the main photoassimilate produced in the leaves from which it is translocated to sink tissues |CITS:[WEBB62],[BIELESKI85]|. Sorbitol synthesis shares a common hexose phosphate pool with sucrose synthesis, and it was recently shown in apple that synthesis pathways are not independent from one another |CITS:[ZHOU02]|. Indeed, |FRAME:MONOMER-11709| was shown to be inhibited by |FRAME:D-SORBITOL-6-P|, an intermediate in the biosynthesis pathway of sorbitol. +CREDITS - THE-ARABIDOPSIS-INFORMATION-RESOURCE +CREDITS - tissier +INSTANCE-NAME-TEMPLATE - PWY-* +PATHWAY-LINKS - (FRUCTOSE-6P SUCSYN-PWY CALVIN-PWY) +PATHWAY-LINKS - (SORBITOL PWY-4101) +PREDECESSORS - ("ALDOSE-6-PHOSPHATE-REDUCTASE-NADPH-RXN" "PGLUCISOM-RXN") +PREDECESSORS - ("SORBITOL-6-PHOSPHATASE-RXN" "ALDOSE-6-PHOSPHATE-REDUCTASE-NADPH-RXN") +PRIMARIES - ("PGLUCISOM-RXN" ("FRUCTOSE-6P") ("D-glucopyranose-6-phosphate")) +PRIMARIES - ("SORBITOL-6-PHOSPHATASE-RXN" ("D-SORBITOL-6-P") ("SORBITOL")) +PRIMARIES - ("ALDOSE-6-PHOSPHATE-REDUCTASE-NADPH-RXN" ("GLC-6-P") ("D-SORBITOL-6-P")) +REACTION-LAYOUT - (PGLUCISOM-RXN (:LEFT-PRIMARIES D-glucopyranose-6-phosphate) (:DIRECTION :R2L) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (SORBITOL-6-PHOSPHATASE-RXN (:LEFT-PRIMARIES D-SORBITOL-6-P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES SORBITOL)) +REACTION-LAYOUT - (ALDOSE-6-PHOSPHATE-REDUCTASE-NADPH-RXN (:LEFT-PRIMARIES D-SORBITOL-6-P) (:DIRECTION :R2L) (:RIGHT-PRIMARIES D-glucopyranose-6-phosphate)) +REACTION-LIST - PGLUCISOM-RXN +REACTION-LIST - SORBITOL-6-PHOSPHATASE-RXN +REACTION-LIST - ALDOSE-6-PHOSPHATE-REDUCTASE-NADPH-RXN +SPECIES - TAX-3750 +SYNONYMS - D-glucitol biosynthesis I +TAXONOMIC-RANGE - TAX-3745 +// +UNIQUE-ID - PWY-5384 +TYPES - SUCROSE-DEG +COMMON-NAME - sucrose degradation IV (sucrose phosphorylase) +CITATIONS - 15660210:EV-EXP-TAS:3370182098:fulcher +CITATIONS - 15375133:EV-EXP-IDA:3370190756:fulcher +COMMENT - Sucrose is a disaccharide composed of glucose and fructose joined by an α(1,2) glycosidic linkage. Some microorganisms can utilize sucrose by transporting it into the cell via specific permeases. It can then undergo hydrolysis (as shown in MetaCyc pathway |FRAME: SUCUTIL-PWY|), or phosphorolysis as shown here. This pathway occurs in the genus |FRAME:TAX-1678|. These saccharolytic, obligate anaerobes are commensals in the gut of humans and animals, and are thought to contribute to health |CITS: [15660210]|. +/ +/The genes for the initial steps of sucrose degradation have been shown to be organized into an operon in |FRAME:TAX-302911| and Bifidobacterium longum. This includes a transporter scrT (predicted to be a solute-cation symporter), sucrose phosphorylase scrP, and a repressor scrR (reviewed in |CITS: [15660210]|). An additional sucrose hydrolyzing enzyme, the product of gene bfrA has been reported in |FRAME:TAX-302911| |CITS: [12732943]|. +/ +/In this pathway, after sucrose is transported into the cell, it is cleaved by sucrose phosphorylase. The product fructose is phosphorylated by fructokinase |CITS: [15375133]|. A gene pgm encoding phosphoglucomutase, which catalyzes reaction EC 5.4.2.2, has been predicted in Bifidobacterium longum |CITS: [12381787]|. The α-D-glucose-6-phosphate product of this reaction can spontaneously and reversibly convert to the beta anomer and form an equilibrium mixture (EC 5.1.3.15). This conversion has also been shown to be catalyzed by an epimerase in other organisms |CITS: [11946648] [1092547]|. β-D-Glucose-6-phosphate can be isomerized to D-fructose-6-phosphate (EC 5.3.1.9). A gene encoding glucose-6-phosphate isomerase has been predicted in Bifidobacterium longum |CITS: [12381787]|. +/ +/Interestingly, a fructose-6-phosphate phosphoketolase (F6PPK) pathway (bifidobacterial shunt) has been described in bifidobacteria for the metabolism of glucose (see MetaCyc pathway |FRAME: P124-PWY|). The fructose-6-phosphate produced in the pathway shown here is further metabolized via this pathway, as indicated by the pathway link. In the F6PPK pathway, phosphoketolase catalyzes the conversion of fructose-6-phosphate to D-erythrose-4-phosphate and acetyl-phosphate. In some species it can also act on xylulose-5-phosphate (in |CITS: [11292814]|). This enzyme, along with a transaldolase and a transketolase, catalyzes the formation of other central metabolic intermediates which the organism can ferment to acetate and lactate |CITS: [16077128] [15375133]|. +CREDITS - SRI +CREDITS - fulcher +INSTANCE-NAME-TEMPLATE - PWY-* +KEY-REACTIONS - SUCROSE-PHOSPHORYLASE-RXN +PATHWAY-LINKS - (FRUCTOSE-6P P124-PWY) +PREDECESSORS - ("PGLUCISOM-RXN" "PHOSPHOGLUCMUT-RXN") +PREDECESSORS - ("PHOSPHOGLUCMUT-RXN" "SUCROSE-PHOSPHORYLASE-RXN") +PREDECESSORS - ("FRUCTOKINASE-RXN" "SUCROSE-PHOSPHORYLASE-RXN") +PREDECESSORS - ("SUCROSE-PHOSPHORYLASE-RXN") +PRIMARIES - ("SUCROSE-PHOSPHORYLASE-RXN" ("SUCROSE") ("GLC-1-P" "FRU")) +PRIMARY-PRODUCTS - FRUCTOSE-6P +PRIMARY-REACTANTS - SUCROSE +REACTION-LAYOUT - (PHOSPHOGLUCMUT-RXN (:LEFT-PRIMARIES GLC-1-P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES D-glucopyranose-6-phosphate)) +REACTION-LAYOUT - (PGLUCISOM-RXN (:LEFT-PRIMARIES D-glucopyranose-6-phosphate) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (FRUCTOKINASE-RXN (:LEFT-PRIMARIES BETA-D-FRUCTOSE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (SUCROSE-PHOSPHORYLASE-RXN (:LEFT-PRIMARIES SUCROSE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES GLC-1-P BETA-D-FRUCTOSE)) +REACTION-LIST - PHOSPHOGLUCMUT-RXN +REACTION-LIST - PGLUCISOM-RXN +REACTION-LIST - FRUCTOKINASE-RXN +REACTION-LIST - SUCROSE-PHOSPHORYLASE-RXN +SPECIES - TAX-1680 +SPECIES - TAX-302911 +SPECIES - TAX-1681 +SPECIES - TAX-216816 +TAXONOMIC-RANGE - TAX-201174 +// +UNIQUE-ID - PWY-5484 +TYPES - GLYCOLYSIS-VARIANTS +COMMON-NAME - glycolysis II (from fructose 6-phosphate) +CITATIONS - EcoSal:EV-EXP-TAS:3386618200:caspi +COMMENT - General Background +/ +/Glycolysis, which was first studied as a pathway for the utilization of glucose, is one of the major pathways of central metabolism, the other two being the |FRAME:PENTOSE-P-PWY| and the |FRAME:TCA "TCA cycle"|. Glycolysis is essential under all conditions of growth, because it produces six of the 13 precursor metabolites that are the starting materials for the biosynthesis of building blocks for macromolecules and other needed small molecules (the six compounds are |FRAME:GLC-6-P|, |FRAME:FRUCTOSE-6P|, |FRAME:DIHYDROXY-ACETONE-PHOSPHATE|, |FRAME:G3P|, |FRAME:PHOSPHO-ENOL-PYRUVATE|, and |FRAME: PYRUVATE|). Glycolysis can be found, if at least in part, in almost all organisms. +/ +/Even though glycolysis is often described starting with glucose, other hexoses (e.g. fructose) can also serve as input (as its name implies - glycose is a general term for simple sugars). +/ +/Glycolysis has evolved to fulfill two essential functions: +/ +/i) it oxidizes hexoses to generate |FRAME:ATP|, reductants and |FRAME:PYRUVATE|, and +/ +/ii) being an amphibolic pathway (pathway that involves both catabolism and anabolism), it can reversibly produce hexoses from various low-molecular weight molecules. +/ +/Because various degradation pathways feed into glycolysis at many different points, glycolysis or portions of it run in the forward or reverse direction, depending on the carbon source being utilized, in order to satisfy the cell's need for precursor metabolites and energy. +/This switching of direction is possible because all but two of the enzymatic reactions comprising glycolysis are reversible, and the conversions catalyzed by the two exceptions are rendered functionally reversible by other enzymes (|FRAME:F16B-CPLX "fructose-1,6-bisphosphatase"| and |FRAME:PEPSYNTH-CPLX|) that catalyze different irreversible reactions flowing in the opposite direction. +/ +/About This Pathway +/ +/The standard glycolysis pathway (|FRAME: GLYCOLYSIS|) depicts the sugar input into the pathway as glucose. However, the glycolysis pathway is utilized for the degradation of many different types of sugars. +/ +/This partial depiction of the glycolysis pathway is used with substrates other than glucose, such as |FRAME: ALLOSE|, +/|FRAME: CPD-9569| , |FRAME: MANNITOL| , |FRAME: SORBITOL| , |FRAME: MANNOSE| and |FRAME: SUCROSE|, +/which are processed into |FRAME: FRUCTOSE-6P|. +/D-fructose 6-phosphate enters glycolysis and is processed to the end product pyruvate, which is often fermented +/further into fermentation products such as |FRAME: ETOH|, |FRAME: Lactate| and |FRAME: ACET|. +CREDITS - SRI +CREDITS - caspi +DBLINKS - (ECOCYC "PWY-5484" NIL |paley| 3610227717 NIL NIL) +IN-PATHWAY - HEXITOLDEGSUPER-PWY +IN-PATHWAY - P461-PWY +IN-PATHWAY - P441-PWY +IN-PATHWAY - PWY-7345 +INSTANCE-NAME-TEMPLATE - PWY-* +KEY-NON-REACTIONS - (AND GLUCOKIN-RXN) +PATHWAY-LINKS - (GLC-6-P (PWY-6724 . :INCOMING) (TRANS-RXN-157 . :INCOMING) PENTOSE-P-PWY) +PATHWAY-LINKS - (PYRUVATE PYRUVDEHYD-PWY TCA-GLYOX-BYPASS |Amino-Acid-Biosynthesis|) +PATHWAY-LINKS - (PHOSPHO-ENOL-PYRUVATE FERMENTATION-PWY) +PATHWAY-LINKS - (FRUCTOSE-6P SORBDEG-PWY SUCUTIL-PWY P302-PWY PWY-3861 MANNCAT-PWY PWY0-44) +PREDECESSORS - ("2PGADEHYDRAT-RXN" "RXN-15513") +PREDECESSORS - ("RXN-15513" "PHOSGLYPHOS-RXN") +PREDECESSORS - ("F16ALDOLASE-RXN" "6PFRUCTPHOS-RXN") +PREDECESSORS - ("F16BDEPHOS-RXN" "6PFRUCTPHOS-RXN") +PREDECESSORS - ("6PFRUCTPHOS-RXN" "F16BDEPHOS-RXN") +PREDECESSORS - ("PEPDEPHOS-RXN" "PEPSYNTH-RXN") +PREDECESSORS - ("PEPSYNTH-RXN" "PEPDEPHOS-RXN") +PREDECESSORS - ("TRIOSEPISOMERIZATION-RXN" "F16ALDOLASE-RXN") +PREDECESSORS - ("GAPOXNPHOSPHN-RXN" "TRIOSEPISOMERIZATION-RXN" "F16ALDOLASE-RXN") +PREDECESSORS - ("PHOSGLYPHOS-RXN" "GAPOXNPHOSPHN-RXN") +PREDECESSORS - ("3PGAREARR-RXN" "PHOSGLYPHOS-RXN") +PREDECESSORS - ("2PGADEHYDRAT-RXN" "3PGAREARR-RXN") +PREDECESSORS - ("PEPDEPHOS-RXN" "2PGADEHYDRAT-RXN") +PRIMARIES - ("TRIOSEPISOMERIZATION-RXN" ("DIHYDROXY-ACETONE-PHOSPHATE") ("GAP")) +PRIMARY-PRODUCTS - PYRUVATE +PRIMARY-REACTANTS - FRUCTOSE-6P +REACTION-LAYOUT - (RXN-15513 (:LEFT-PRIMARIES 2-PG) (:DIRECTION :R2L) (:RIGHT-PRIMARIES G3P)) +REACTION-LAYOUT - (F16BDEPHOS-RXN (:LEFT-PRIMARIES FRUCTOSE-16-DIPHOSPHATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (PEPSYNTH-RXN (:LEFT-PRIMARIES PYRUVATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (6PFRUCTPHOS-RXN (:LEFT-PRIMARIES FRUCTOSE-6P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-16-DIPHOSPHATE)) +REACTION-LAYOUT - (F16ALDOLASE-RXN (:LEFT-PRIMARIES FRUCTOSE-16-DIPHOSPHATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES GAP DIHYDROXY-ACETONE-PHOSPHATE)) +REACTION-LAYOUT - (TRIOSEPISOMERIZATION-RXN (:LEFT-PRIMARIES GAP) (:DIRECTION :R2L) (:RIGHT-PRIMARIES DIHYDROXY-ACETONE-PHOSPHATE)) +REACTION-LAYOUT - (GAPOXNPHOSPHN-RXN (:LEFT-PRIMARIES GAP) (:DIRECTION :L2R) (:RIGHT-PRIMARIES DPG)) +REACTION-LAYOUT - (PHOSGLYPHOS-RXN (:LEFT-PRIMARIES G3P) (:DIRECTION :R2L) (:RIGHT-PRIMARIES DPG)) +REACTION-LAYOUT - (3PGAREARR-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :R2L) (:RIGHT-PRIMARIES G3P)) +REACTION-LAYOUT - (2PGADEHYDRAT-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :L2R) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (PEPDEPHOS-RXN (:LEFT-PRIMARIES PYRUVATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LIST - RXN-15513 +REACTION-LIST - F16BDEPHOS-RXN +REACTION-LIST - PEPSYNTH-RXN +REACTION-LIST - 6PFRUCTPHOS-RXN +REACTION-LIST - F16ALDOLASE-RXN +REACTION-LIST - TRIOSEPISOMERIZATION-RXN +REACTION-LIST - GAPOXNPHOSPHN-RXN +REACTION-LIST - PHOSGLYPHOS-RXN +REACTION-LIST - 3PGAREARR-RXN +REACTION-LIST - 2PGADEHYDRAT-RXN +REACTION-LIST - PEPDEPHOS-RXN +SPECIES - TAX-511145 +SPECIES - TAX-1309 +SUPER-PATHWAYS - HEXITOLDEGSUPER-PWY +SUPER-PATHWAYS - P461-PWY +SUPER-PATHWAYS - P441-PWY +SUPER-PATHWAYS - PWY-7345 +TAXONOMIC-RANGE - TAX-2759 +TAXONOMIC-RANGE - TAX-2 +TAXONOMIC-RANGE - TAX-2157 +// +UNIQUE-ID - PWY-5514 +TYPES - UDP-Nac-Galactosamine-Biosynthesis +COMMON-NAME - UDP-N-acetyl-D-galactosamine biosynthesis II +CITATIONS - 15133084:EV-EXP-IDA:3388160939:fulcher +CITATIONS - 11249189:EV-EXP-IDA:3388160939:fulcher +CITATIONS - 1484552:EV-EXP-IDA:3388160939:fulcher +COMMENT - The protozoan parasite |FRAME: TAX-5741 "Giardia intestinalis (synonyms Giardia lamblia, Giardia duodenalis)"| is a common cause of enteric disease (giardiasis) in humans and other mammals, worldwide. Its life cycle consists of two stages, a flagellated trophozoite that replicates in the host, and a dormant cyst stage in which the organism is transmitted. Encystment is induced in response to bile in the gastrointestinal tract. +/ +/The outer cyst wall is rich in a homopolymer of (β1->3)-N-acetyl-D-galactosamine residues that is biosynthesized from a |FRAME: UDP-N-ACETYL-GALACTOSAMINE| precursor. This pathway describes the biosynthesis of this precursor, which is derived from endogenous glucose that is converted to fructose-6-phosphate by glycolytic enzymes. +/ +/|FRAME: UDP-N-ACETYL-GALACTOSAMINE| is converted to the homopolymer by cyst wall synthase |CITS: [15133086]|. The last five enzymes of the pathway are transcriptionally activated when trophozoites are induced to encyst. Their activities greatly increase during encystment. In |CITS: [17403156][16169849][15951138][15133084][12706796][10799561]|. +CREDITS - SRI +CREDITS - caspi +CREDITS - fulcher +INSTANCE-NAME-TEMPLATE - PWY-* +KEY-REACTIONS - GLUCOSAMINE-6-P-DEAMIN-RXN +PREDECESSORS - ("PGLUCISOM-RXN" "GLUCOKIN-RXN") +PREDECESSORS - ("GLUCOSAMINE-6-P-DEAMIN-RXN" "PGLUCISOM-RXN") +PREDECESSORS - ("UDP-N-ACETYLGLUCOSAMINE-4-EPIMERASE-RXN" "NAG1P-URIDYLTRANS-RXN") +PREDECESSORS - ("NAG1P-URIDYLTRANS-RXN" "PHOSACETYLGLUCOSAMINEMUT-RXN") +PREDECESSORS - ("PHOSACETYLGLUCOSAMINEMUT-RXN" "GLUCOSAMINEPNACETYLTRANS-RXN") +PREDECESSORS - ("GLUCOSAMINEPNACETYLTRANS-RXN" "GLUCOSAMINE-6-P-DEAMIN-RXN") +PRIMARY-PRODUCTS - CPD-14795 +REACTION-LAYOUT - (GLUCOKIN-RXN (:LEFT-PRIMARIES Glucopyranose) (:DIRECTION :L2R) (:RIGHT-PRIMARIES D-glucopyranose-6-phosphate)) +REACTION-LAYOUT - (PGLUCISOM-RXN (:LEFT-PRIMARIES D-glucopyranose-6-phosphate) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (UDP-N-ACETYLGLUCOSAMINE-4-EPIMERASE-RXN (:LEFT-PRIMARIES UDP-N-ACETYL-D-GLUCOSAMINE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES CPD-14795)) +REACTION-LAYOUT - (NAG1P-URIDYLTRANS-RXN (:LEFT-PRIMARIES N-ACETYL-D-GLUCOSAMINE-1-P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES UDP-N-ACETYL-D-GLUCOSAMINE)) +REACTION-LAYOUT - (PHOSACETYLGLUCOSAMINEMUT-RXN (:LEFT-PRIMARIES N-ACETYL-D-GLUCOSAMINE-6-P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES N-ACETYL-D-GLUCOSAMINE-1-P)) +REACTION-LAYOUT - (GLUCOSAMINEPNACETYLTRANS-RXN (:LEFT-PRIMARIES D-GLUCOSAMINE-6-P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES N-ACETYL-D-GLUCOSAMINE-6-P)) +REACTION-LAYOUT - (GLUCOSAMINE-6-P-DEAMIN-RXN (:LEFT-PRIMARIES CPD-13469) (:DIRECTION :R2L) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LIST - GLUCOKIN-RXN +REACTION-LIST - PGLUCISOM-RXN +REACTION-LIST - UDP-N-ACETYLGLUCOSAMINE-4-EPIMERASE-RXN +REACTION-LIST - NAG1P-URIDYLTRANS-RXN +REACTION-LIST - PHOSACETYLGLUCOSAMINEMUT-RXN +REACTION-LIST - GLUCOSAMINEPNACETYLTRANS-RXN +REACTION-LIST - GLUCOSAMINE-6-P-DEAMIN-RXN +SPECIES - TAX-5741 +TAXONOMIC-RANGE - TAX-68459 +// +UNIQUE-ID - PWY-5659 +TYPES - GDP-Sugar-Biosynthesis +COMMON-NAME - GDP-mannose biosynthesis +CITATIONS - 11447107:EV-EXP-IDA:3499519018:trupp +CITATIONS - :EV-EXP-IDA:3398704047:caspi +COMMENT - |FRAME: GDP-MANNOSE| is a key substrate in glycoprotein formation. +/In eukaryotes, |FRAME:MANNOSE| is a key monosaccharide for the glycosylation of proteins and lipids. +/ +/Mannose-containing glycoconjugates, such as protein N- and C-glycans, some +/O-glycans, glycosylphosphatidylinositol (GPI) protein membrane anchors, and some glycolipids, +/have a variety of important functions. These functions include the promotion of correct folding, solubility, +/stability and intracellular sorting of proteins, promoting the enzymatic, hormonal or receptor activity of +/many proteins, and the formation of cell surface glycocalyces, extracellular matrices and protective cell +/walls. In addition, glycoproteins are known to play major roles in cell-cell interactions +/(see |FRAME: MANNOSYL-CHITO-DOLICHOL-BIOSYNTHESIS|) |CITS: [11447107]|. +/ +/|FRAME: GDP-MANNOSE| is the critical metabolite of the mannose activation pathway for +/glycoconjugate synthesis in eukaryotes, as it is utilized directly or indirectly as a mannose donor for all +/mannosylation reactions. +/ +/In addition, |FRAME: GDP-MANNOSE| is a precursor for the biosynthesis of several important +/compounds, including |FRAME: CPD-13118| (see |FRAME: PWY-66|) +/|FRAME: ASCORBATE| (see |FRAME: PWY-882|), |FRAME: 2-O-ALPHA-MANNOSYL-D-GLYCERATE| +/(see |FRAME: PWY-5656|) and |FRAME: CPD-353| (see |FRAME: GDPRHAMSYN-PWY|). +/ +/The crucial role of |FRAME: GDP-MANNOSE| is supported by the finding that deletion of certain genes +/in this pathway are lethal in |FRAME: TAX-4932| and |FRAME: TAX-5476| |CITS:[9195935][10844699] +/[3288631][3053713]|. +CREDITS - SRI +CREDITS - caspi +DBLINKS - (ECOCYC "PWY-5659" NIL |paley| 3459534991 NIL NIL) +IN-PATHWAY - COLANSYN-PWY +IN-PATHWAY - PWY-7323 +INSTANCE-NAME-TEMPLATE - PWY-* +PATHWAY-LINKS - (GDP-MANNOSE PWY-66) +PREDECESSORS - ("MANNPISOM-RXN" "PGLUCISOM-RXN") +PREDECESSORS - ("2.7.7.13-RXN" "PHOSMANMUT-RXN") +PREDECESSORS - ("PHOSMANMUT-RXN" "MANNPISOM-RXN") +PRIMARY-PRODUCTS - GDP-MANNOSE +REACTION-LAYOUT - (PGLUCISOM-RXN (:LEFT-PRIMARIES D-glucopyranose-6-phosphate) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (2.7.7.13-RXN (:LEFT-PRIMARIES MANNOSE-1P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES GDP-MANNOSE)) +REACTION-LAYOUT - (PHOSMANMUT-RXN (:LEFT-PRIMARIES MANNOSE-1P) (:DIRECTION :R2L) (:RIGHT-PRIMARIES CPD-15979)) +REACTION-LAYOUT - (MANNPISOM-RXN (:LEFT-PRIMARIES CPD-15979) (:DIRECTION :R2L) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LIST - PGLUCISOM-RXN +REACTION-LIST - 2.7.7.13-RXN +REACTION-LIST - PHOSMANMUT-RXN +REACTION-LIST - MANNPISOM-RXN +SPECIES - TAX-5476 +SPECIES - TAX-511145 +SPECIES - TAX-9606 +SPECIES - TAX-287 +SPECIES - TAX-53953 +SPECIES - TAX-4932 +SPECIES - TAX-3562 +SPECIES - TAX-9823 +SPECIES - ORG-5993 +SUPER-PATHWAYS - COLANSYN-PWY +SUPER-PATHWAYS - PWY-7323 +TAXONOMIC-RANGE - TAX-2157 +TAXONOMIC-RANGE - TAX-2759 +TAXONOMIC-RANGE - TAX-2 +// +UNIQUE-ID - PWY-5723 +TYPES - Energy-Metabolism +COMMON-NAME - Rubisco shunt +CITATIONS - 15592419:EV-EXP:3404657653:peifenz +CITATIONS - 17557808:EV-EXP-IDA:3453861725:caspi +CITATIONS - 15347783:EV-EXP-IDA:3453861725:caspi +COMMENT - Oil is a major carbon reserve in most plant seeds. Conversion of carbohydrates to oil generally starts by glycolysis (either |FRAME:GLYCOLYSIS "mitochondrial"| or |FRAME:PWY-1042 "cytosolic"|). |FRAME: PYRUVATE "Pyruvate"|, the end product of glycolysis, is further decarboxylated to |FRAME:ACETYL-COA|, the precursor for fatty acid and oil biosynthesis. In the process, one-third of carbon is lost as |FRAME:CARBON-DIOXIDE|. An elegant experiment illustrated the existence of a Rubisco shunt |CITS: [15592419]|. Comparing to glycolysis, the Rubisco shunt results in an increase of carbon conversion efficiency, yielding 20% more |FRAME:ACETYL-COA| with 40% less carbon loss. In oilseed rape, the Rubisco shunt is responsible for the production of 37% -75% of phosphoglycerate in the developing embryo. +/ +/There are three stages in the Rubisco shunt. +/ +/Stage I is composed of the non-oxidative pentose phosphate pathway (in reverse direction of what is shown in |FRAME:NONOXIPENT-PWY|), where a series of re-arrangements of the carbon skeleton convert the six-carbon sugar +/|FRAME: FRUCTOSE-6P| to the five-carbon sugar |FRAME: RIBULOSE-5P|, which is further converted to |FRAME: D-RIBULOSE-15-P2|. The net change is: +/ +/5 |FRAME: FRUCTOSE-6P| = 6 |FRAME: D-RIBULOSE-15-P2| +/ +/Stage II is catalyzed by the carboxylase activity of Rubisco, which fixes one molecule of |FRAME:CARBON-DIOXIDE| with one molecule of |FRAME: D-RIBULOSE-15-P2|, yielding two molecules three-carbon |FRAME: G3P|. The net change is: +/ +/6 |FRAME: D-RIBULOSE-15-P2| + 6 |FRAME:CARBON-DIOXIDE| = 12 |FRAME: G3P| +/ +/In stage III |FRAME: G3P| is converted to |FRAME: PYRUVATE| via the later steps of glycolysis. Pyruvate is further metabolized to |FRAME:ACETYL-COA| which fuels fatty acid biosynthesis (|FRAME:PWY-4381|) and seed oil (|FRAME:TRIGLSYN-PWY|) accumulation. The net change is: +/ +/12 |FRAME: G3P| = 12 |FRAME:ACETYL-COA| + 12 |FRAME:CARBON-DIOXIDE| +/ +/Overall, the net carbon stoichiometry via the Rubisco shunt is: +/ +/5 |FRAME: FRUCTOSE-6P| = 12 |FRAME:ACETYL-COA| + 6 |FRAME:CARBON-DIOXIDE| +/ +/Comparing to glycolysis (5 |FRAME: FRUCTOSE-6P| = 10 |FRAME:ACETYL-COA| + 10 |FRAME:CARBON-DIOXIDE|), the Rubisco shunt allows the conversion of carbohydrate into 20% more |FRAME:ACETYL-COA| than glycolysis, and has 40% less carbon loss as |FRAME:CARBON-DIOXIDE|. +/ +/Note that there is no active |FRAME:CALVIN-PWY| following the Rubisco step in developing seeds. This allows the continuation of Rubisco shunt to stage III. +/ +/The whole pathway is located in the plastid. +CREDITS - THE-ARABIDOPSIS-INFORMATION-RESOURCE +CREDITS - zhang +INSTANCE-NAME-TEMPLATE - PWY-* +KEY-REACTIONS - RIBULOSE-BISPHOSPHATE-CARBOXYLASE-RXN +PATHWAY-LINKS - (PYRUVATE PYRUVDEHYD-PWY) +PREDECESSORS - ("PEPDEPHOS-RXN" "2PGADEHYDRAT-RXN") +PREDECESSORS - ("2PGADEHYDRAT-RXN" "3PGAREARR-RXN") +PREDECESSORS - ("3PGAREARR-RXN" "RIBULOSE-BISPHOSPHATE-CARBOXYLASE-RXN") +PREDECESSORS - ("2PGADEHYDRAT-RXN" "RIBULOSE-BISPHOSPHATE-CARBOXYLASE-RXN") +PREDECESSORS - ("PEPDEPHOS-RXN" "RIBULOSE-BISPHOSPHATE-CARBOXYLASE-RXN") +PREDECESSORS - ("RIBULOSE-BISPHOSPHATE-CARBOXYLASE-RXN" "PHOSPHORIBULOKINASE-RXN") +PREDECESSORS - ("PHOSPHORIBULOKINASE-RXN" "RIB5PISOM-RXN") +PREDECESSORS - ("PHOSPHORIBULOKINASE-RXN" "RIBULP3EPIM-RXN") +PREDECESSORS - ("RIBULP3EPIM-RXN" "1TRANSKETO-RXN") +PREDECESSORS - ("RIB5PISOM-RXN" "1TRANSKETO-RXN") +PREDECESSORS - ("1TRANSKETO-RXN" "TRANSALDOL-RXN") +PREDECESSORS - ("TRANSALDOL-RXN" "2TRANSKETO-RXN") +PRIMARIES - ("TRANSALDOL-RXN" ("ERYTHROSE-4P") ("GAP" "D-SEDOHEPTULOSE-7-P")) +PRIMARIES - ("2TRANSKETO-RXN" ("FRUCTOSE-6P") ("ERYTHROSE-4P")) +PRIMARIES - ("2PGADEHYDRAT-RXN" ("2-PG") ("PHOSPHO-ENOL-PYRUVATE")) +PRIMARIES - ("PEPDEPHOS-RXN" ("PHOSPHO-ENOL-PYRUVATE") ("PYRUVATE")) +PRIMARIES - ("PHOSPHORIBULOKINASE-RXN" ("RIBULOSE-5P") ("D-RIBULOSE-15-P2")) +PRIMARIES - ("RIBULOSE-BISPHOSPHATE-CARBOXYLASE-RXN" ("D-RIBULOSE-15-P2") ("G3P")) +PRIMARIES - ("1TRANSKETO-RXN" ("GAP" "D-SEDOHEPTULOSE-7-P") ("XYLULOSE-5-PHOSPHATE" "RIBOSE-5P")) +REACTION-LAYOUT - (3PGAREARR-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :R2L) (:RIGHT-PRIMARIES G3P)) +REACTION-LAYOUT - (2PGADEHYDRAT-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :L2R) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (PEPDEPHOS-RXN (:LEFT-PRIMARIES PYRUVATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (PHOSPHORIBULOKINASE-RXN (:LEFT-PRIMARIES RIBULOSE-5P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES D-RIBULOSE-15-P2)) +REACTION-LAYOUT - (RIBULP3EPIM-RXN (:LEFT-PRIMARIES RIBULOSE-5P) (:DIRECTION :R2L) (:RIGHT-PRIMARIES XYLULOSE-5-PHOSPHATE)) +REACTION-LAYOUT - (RIB5PISOM-RXN (:LEFT-PRIMARIES RIBOSE-5P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES RIBULOSE-5P)) +REACTION-LAYOUT - (TRANSALDOL-RXN (:LEFT-PRIMARIES GAP D-SEDOHEPTULOSE-7-P) (:DIRECTION :R2L) (:RIGHT-PRIMARIES ERYTHROSE-4P FRUCTOSE-6P)) +REACTION-LAYOUT - (1TRANSKETO-RXN (:LEFT-PRIMARIES GAP D-SEDOHEPTULOSE-7-P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES XYLULOSE-5-PHOSPHATE RIBOSE-5P)) +REACTION-LAYOUT - (2TRANSKETO-RXN (:LEFT-PRIMARIES XYLULOSE-5-PHOSPHATE ERYTHROSE-4P) (:DIRECTION :R2L) (:RIGHT-PRIMARIES GAP FRUCTOSE-6P)) +REACTION-LAYOUT - (RIBULOSE-BISPHOSPHATE-CARBOXYLASE-RXN (:LEFT-PRIMARIES G3P) (:DIRECTION :R2L) (:RIGHT-PRIMARIES D-RIBULOSE-15-P2)) +REACTION-LIST - 3PGAREARR-RXN +REACTION-LIST - 2PGADEHYDRAT-RXN +REACTION-LIST - PEPDEPHOS-RXN +REACTION-LIST - PHOSPHORIBULOKINASE-RXN +REACTION-LIST - RIBULP3EPIM-RXN +REACTION-LIST - RIB5PISOM-RXN +REACTION-LIST - TRANSALDOL-RXN +REACTION-LIST - 1TRANSKETO-RXN +REACTION-LIST - 2TRANSKETO-RXN +REACTION-LIST - RIBULOSE-BISPHOSPHATE-CARBOXYLASE-RXN +SPECIES - TAX-59689 +SPECIES - TAX-3708 +SPECIES - TAX-3988 +SPECIES - TAX-4577 +SPECIES - ORG-5993 +SPECIES - ORG-5862 +TAXONOMIC-RANGE - TAX-58024 +// +UNIQUE-ID - PWY-6142 +TYPES - Gluconeogenesis +TYPES - Super-Pathways +COMMON-NAME - gluconeogenesis II (Methanobacterium thermoautotrophicum) +CITATIONS - FUCHS80A +CITATIONS - Jansen82:EV-EXP-IDA:3444451787:caspi +COMMENT - |FRAME: TAX-145262| is a thermophilic methanogenic archaebacterium. The organism is an autotrophic anaerobe +/and can grow on a gas mixture of |FRAME:CARBON-DIOXIDE| and |FRAME: HYDROGEN-MOLECULE| as its +/carbon and energy sources, respectively. +/This organism does not possess the Calvin cycle nor a full reductive tricarboxylic acid cycle. Instead, it fixes +/|FRAME:CARBON-DIOXIDE| via several alternative routes. +/ +/The first, and main route, is the |FRAME: CODH-PWY|. The product of this pathway, |FRAME: ACETYL-COA|, +/is a central intermediate in this organism and is used for all subsequent biosynthetic pathways |CITS:[Fuchs80a][Jansen82]|. +/ +/An additional |FRAME:CARBON-DIOXIDE| molecule is incorporated by the |FRAME: CPLX-7744| complex, which converts +/|FRAME: ACETYL-COA| to |FRAME: PYRUVATE|. +/ +/|FRAME: PYRUVATE "Pyruvate"| can be processed in multiple ways. It can be converted to |FRAME: L-ALPHA-ALANINE|, +/enabling amino acid biosythesis. It could be carboxylated to |FRAME: OXALACETIC_ACID| by |FRAME: CPLX-7747|, +/enabling the capture of a third |FRAME:CARBON-DIOXIDE| molecule |CITS: [9478969]| (|FRAME: CPLX-7747| +/accepts only |FRAME: HCO3| molecules, but |FRAME: TAX-187420| possesses a |FRAME: CPLX-7750| +/enzyme, which can convert |FRAME:CARBON-DIOXIDE| into |FRAME: HCO3|). +/Finally, |FRAME: PYRUVATE| could also be converted to |FRAME: PHOSPHO-ENOL-PYRUVATE| (PEP). +/ +/PEP can be processed in two ways: it can lead to a gluconeogenesis pathway that ends at |FRAME: GLC-6-P| +/|CITS:[Fuchs80a]|, or it could be carboxylated to |FRAME: OXALACETIC_ACID|, enabling the capture of a fourth +/|FRAME:CARBON-DIOXIDE| molecule. This carboxylation reaction is performed by |FRAME: CPLX-7743| |CITS: [15262949]|. +/ +/|FRAME: OXALACETIC_ACID "Oxaloacetate"| can be pocessed in two ways as well. It can lead into an incomplete reductive TCA +/cycle that ends at |FRAME: GLT|, or it could be processed directly to |FRAME: L-ASPARTATE| |CITS:[Fuchs80a]|. +/ +/Most of the enzymes catalyzing these pathways have not been identified or characterized from |FRAME: TAX-145262|. The pathways were predicted using stable isotope labeling and NMR spectroscopy experiments |CITS: [Jansen82][3782122]|. +CREDITS - SRI +CREDITS - caspi +IN-PATHWAY - PWY-6146 +INSTANCE-NAME-TEMPLATE - PWY-* +PATHWAY-LINKS - (OXALACETIC_ACID P42-PWY ASPARTATESYN-PWY) +PATHWAY-LINKS - (PYRUVATE ALANINE-SYN2-PWY) +PATHWAY-LINKS - (DIHYDROXY-ACETONE-PHOSPHATE PWY-6141) +PREDECESSORS - ("PEPDEPHOS-RXN" "PEPSYNTH-RXN") +PREDECESSORS - ("PEPCARBOX-RXN" "PEPSYNTH-RXN") +PREDECESSORS - ("2PGADEHYDRAT-RXN" "PEPSYNTH-RXN") +PREDECESSORS - ("PEPSYNTH-RXN" "PYRUFLAVREDUCT-RXN") +PREDECESSORS - ("PEPSYNTH-RXN" "PEPDEPHOS-RXN") +PREDECESSORS - PWY-7784 +PREDECESSORS - ("PGLUCISOM-RXN" "R302-RXN") +PREDECESSORS - ("PYRUVATE-CARBOXYLASE-RXN" "RXN0-5224") +PREDECESSORS - ("PYRUVATE-CARBOXYLASE-RXN" "PYRUFLAVREDUCT-RXN") +PREDECESSORS - ("R302-RXN" "F16ALDOLASE-RXN") +PREDECESSORS - ("F16ALDOLASE-RXN" "TRIOSEPISOMERIZATION-RXN") +PREDECESSORS - ("F16ALDOLASE-RXN" "1.2.7.6-RXN") +PREDECESSORS - ("TRIOSEPISOMERIZATION-RXN" "1.2.7.6-RXN") +PREDECESSORS - ("1.2.7.6-RXN" "3PGAREARR-RXN") +PREDECESSORS - ("3PGAREARR-RXN" "2PGADEHYDRAT-RXN") +PREDECESSORS - ("PYRUFLAVREDUCT-RXN" "ACETYLSYNCLTH-RXN") +PREDECESSORS - CODH-PWY +PRIMARIES - ("PEPDEPHOS-RXN" ("PHOSPHO-ENOL-PYRUVATE") ("PYRUVATE")) +PRIMARIES - ("F16ALDOLASE-RXN" ("DIHYDROXY-ACETONE-PHOSPHATE" "GAP") ("FRUCTOSE-16-DIPHOSPHATE")) +PRIMARIES - ("3PGAREARR-RXN" ("2-PG") ("G3P")) +PRIMARIES - ("1.2.7.6-RXN" ("G3P") ("GAP")) +PRIMARIES - ("2PGADEHYDRAT-RXN" ("PHOSPHO-ENOL-PYRUVATE") ("2-PG")) +PRIMARY-PRODUCTS - D-glucopyranose-6-phosphate +REACTION-LAYOUT - (PEPSYNTH-RXN (:LEFT-PRIMARIES PYRUVATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (PWY-7784 (:LEFT-PRIMARIES) (:DIRECTION :L2R) (:RIGHT-PRIMARIES)) +REACTION-LAYOUT - (PGLUCISOM-RXN (:LEFT-PRIMARIES D-glucopyranose-6-phosphate) (:DIRECTION :R2L) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (RXN0-5224 (:LEFT-PRIMARIES HCO3) (:DIRECTION :R2L) (:RIGHT-PRIMARIES CARBON-DIOXIDE)) +REACTION-LAYOUT - (PYRUVATE-CARBOXYLASE-RXN (:LEFT-PRIMARIES HCO3 PYRUVATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES OXALACETIC_ACID)) +REACTION-LAYOUT - (PEPCARBOX-RXN (:LEFT-PRIMARIES OXALACETIC_ACID) (:DIRECTION :R2L) (:RIGHT-PRIMARIES HCO3 PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (PEPDEPHOS-RXN (:LEFT-PRIMARIES PYRUVATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (2PGADEHYDRAT-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (3PGAREARR-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :L2R) (:RIGHT-PRIMARIES G3P)) +REACTION-LAYOUT - (1.2.7.6-RXN (:LEFT-PRIMARIES GAP) (:DIRECTION :R2L) (:RIGHT-PRIMARIES G3P)) +REACTION-LAYOUT - (TRIOSEPISOMERIZATION-RXN (:LEFT-PRIMARIES GAP) (:DIRECTION :L2R) (:RIGHT-PRIMARIES DIHYDROXY-ACETONE-PHOSPHATE)) +REACTION-LAYOUT - (F16ALDOLASE-RXN (:LEFT-PRIMARIES FRUCTOSE-16-DIPHOSPHATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES GAP DIHYDROXY-ACETONE-PHOSPHATE)) +REACTION-LAYOUT - (R302-RXN (:LEFT-PRIMARIES FRUCTOSE-6P) (:DIRECTION :R2L) (:RIGHT-PRIMARIES FRUCTOSE-16-DIPHOSPHATE)) +REACTION-LAYOUT - (PYRUFLAVREDUCT-RXN (:LEFT-PRIMARIES PYRUVATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES CARBON-DIOXIDE ACETYL-COA)) +REACTION-LIST - PEPSYNTH-RXN +REACTION-LIST - PWY-7784 +REACTION-LIST - PGLUCISOM-RXN +REACTION-LIST - RXN0-5224 +REACTION-LIST - PYRUVATE-CARBOXYLASE-RXN +REACTION-LIST - PEPCARBOX-RXN +REACTION-LIST - PEPDEPHOS-RXN +REACTION-LIST - 2PGADEHYDRAT-RXN +REACTION-LIST - 3PGAREARR-RXN +REACTION-LIST - 1.2.7.6-RXN +REACTION-LIST - TRIOSEPISOMERIZATION-RXN +REACTION-LIST - F16ALDOLASE-RXN +REACTION-LIST - R302-RXN +REACTION-LIST - PYRUFLAVREDUCT-RXN +SPECIES - TAX-79930 +SPECIES - TAX-187420 +SPECIES - TAX-145262 +SPECIES - TAX-79929 +SUB-PATHWAYS - PWY-7784 +SUPER-PATHWAYS - PWY-6146 +SYNONYMS - carbohydrate biosynthesis (Methanobacterium thermoautotrophicum) +TAXONOMIC-RANGE - TAX-2157 +// +UNIQUE-ID - PWY-621 +TYPES - SUCROSE-DEG +COMMON-NAME - sucrose degradation III (sucrose invertase) +CITATIONS - BERTHELOT60 +CITATIONS - Dey97:EV-AS:3378230124:tissier +CITATIONS - 11525517:EV-EXP:3378230313:tissier +CITATIONS - 8220487:EV-EXP:3378230313:tissier +COMMENT - In this pathway |FRAME: SUCROSE| is cleaved by invertase (|FRAME: EC-3.2.1.26|). This enzyme acts on β-D-fructofuranosides, releasing |FRAME: BETA-D-FRUCTOSE|. When acting on sucrose, the products are |FRAME: BETA-D-FRUCTOSE| and |FRAME: Glucopyranose|. +/ +/Invertases were studied extensively in yeast |CITS: [4963242][13172188]|, from which the enzyme was originally isolated in 1860 |CITS: [Berthelot60]|. However, invertase activity is very common in plants and other organisms. +/ +/The plant invertase activity is found in the cytoplasm, vacuole, and apoplast |CITS: [plantbiochemistry97]|. +/ +/The hexoses generated by invertase are used to meet the energy and substrate requirements of the organism for growth, storage, or energy production. +CREDITS - SRI +CREDITS - caspi +DBLINKS - (ARACYC "PWY-621" NIL |green| 3381011399 NIL NIL) +INSTANCE-NAME-TEMPLATE - PWY-* +KEY-REACTIONS - 3.2.1.48-RXN +PATHWAY-LINKS - (GLC-1-P (PWY-622 . :OUTGOING)) +PATHWAY-LINKS - (ALPHA-GLC-6-P (PWY-622 . :OUTGOING)) +PATHWAY-LINKS - (FRUCTOSE-6P (PWY-1042 . :OUTGOING)) +PATHWAY-LINKS - (|D-glucopyranose-6-phosphate| (PWY-622 . :OUTGOING)) +PREDECESSORS - ("PGLUCISOM-RXN" "GLUCOKIN-RXN") +PREDECESSORS - ("GLUCOKIN-RXN" "3.2.1.48-RXN") +PREDECESSORS - ("FRUCTOKINASE-RXN" "3.2.1.48-RXN") +PRIMARIES - ("FRUCTOKINASE-RXN" ("BETA-D-FRUCTOSE") ("FRUCTOSE-6P")) +PRIMARIES - ("3.2.1.48-RXN" ("SUCROSE") ("BETA-D-FRUCTOSE" "ALPHA-GLUCOSE")) +PRIMARY-PRODUCTS - FRUCTOSE-6P +PRIMARY-REACTANTS - SUCROSE +REACTION-LAYOUT - (3.2.1.48-RXN (:LEFT-PRIMARIES SUCROSE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES Glucopyranose BETA-D-FRUCTOSE)) +REACTION-LAYOUT - (GLUCOKIN-RXN (:LEFT-PRIMARIES Glucopyranose) (:DIRECTION :L2R) (:RIGHT-PRIMARIES D-glucopyranose-6-phosphate)) +REACTION-LAYOUT - (PGLUCISOM-RXN (:LEFT-PRIMARIES D-glucopyranose-6-phosphate) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (FRUCTOKINASE-RXN (:LEFT-PRIMARIES BETA-D-FRUCTOSE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LIST - 3.2.1.48-RXN +REACTION-LIST - GLUCOKIN-RXN +REACTION-LIST - PGLUCISOM-RXN +REACTION-LIST - FRUCTOKINASE-RXN +SPECIES - TAX-4932 +SPECIES - TAX-1091494 +SPECIES - TAX-4097 +SPECIES - TAX-4530 +SPECIES - TAX-3562 +SPECIES - ORG-5993 +SYNONYMS - sucrose mobilization +TAXONOMIC-RANGE - TAX-2157 +TAXONOMIC-RANGE - TAX-2 +TAXONOMIC-RANGE - TAX-2759 +// +UNIQUE-ID - PWY-622 +TYPES - GLYCOGEN-BIOSYN +COMMON-NAME - starch biosynthesis +CITATIONS - [plantbiochemistry97] +CITATIONS - [10929100] +CITATIONS - [SMITH95] +CITATIONS - 18400487 +CITATIONS - BALL09 +CITATIONS - 23393426 +CITATIONS - 18815382 +CITATIONS - WING-MING94 +CITATIONS - 11208806:EV-EXP:3572297958:dreher +CITATIONS - 21185717:EV-EXP-TAS:3572308829:dreher +CITATIONS - 12239416:EV-EXP-IMP:3572635612:dreher +COMMENT - General Background +/ +/Starch and glycogen, megadalton-sized glucose polymers, are the major reservoir of readily available +/energy and carbon compounds in most living organisms, ranging from archaea, eubacteria and yeasts, +/up to higher eukaryotes including plants and animals |CITS: [20192737][21185717]|. Only parasites seem to lack enzymes +/for the metabolism of these compounds |CITS: [12175798]|. +/ +/The structure of |FRAME: Starch| in higher plants differs from that of its counterpart |FRAME: Glycogens| in animals and bacteria. |FRAME: Starch Starch| is a complex α-glucan that can be very difficult to adequately describe. |FRAME: Starch Starch| contains at least two different major sub-classes of α-glucans: |FRAME: Alpha-Amyloses amylose| and |FRAME: CPD-7043|. |FRAME: Alpha-Amyloses Amylose| contains up to several thousand α-glucosyl units linked almost exclusively in α(1->4) linkage with very few branches of α(1->6) linkage. +/ |FRAME: CPD-7043 Amylopectin|, on the other hand is a much more branched +/molecule with many α(1->6) linkages and contains up to several million glucosyl residues. At least twelve different types of starch with different branching patterns and chain lengths have been reported |CITS: [ROBYT13]|. To further complicate the situation, |FRAME: Starch starch| can appears in different crystalline and soluble forms which are difficult to define and depict using standard chemical structures. +/ +/It has been reported that cyanobacteria synthesize glycogen while red algae produce floridean-starch with structure that is intermediate between starch and glycogen, and that green algae accumulate amylopectin-like polysaccharides. However, some cyanobacteria (classified into group 5 by Honda et al |CITS: [10229577]| have distinct α-polyglucans (which were designated as semi-amylopectin), making them a transition point between glycogen and starch biosynthesis |CITS: [Wing-Ming94][15695453]|. +/ +/About This Pathway +/ +/|FRAME: Starch Starch| is synthesized in plastids, including chloroplasts in photosynthetic tissues and amyloplasts in +/non-photosynthetic tissues such as seeds, roots, and tubers. Starch synthesized in +/chloroplasts of photosynthetic tissues is degraded to maltose and glucose during the dark period (see |FRAME: PWY-6724|). +/These sugars are exported to the cytosol and used in |FRAME: PWY-7238 sucrose synthesis|. +/Sucrose can be readily transported to non-photosynthetic tissues to support plant growth or for starch synthesis in amyloplasts. +/ +/The |FRAME: Starch| biosynthesis pathway depicted here includes both chloroplast and amyloplast pathways. +/The starting point for the chloroplast pathway is fructose-6-phosphate, a product of photosynthetic carbon +/fixation. The starting point for amyloplast pathway is glucose-1-phosphate, a product of sucrose +/degradation. Studies from potato, pea, and maize indicate that glucose-6-phosphate, in addition to +/glucose-1-phosphate, can be imported into the amyloplast and can serve as the starting point for +/starch biosynthesis |CITS: [10929100]|. +/ +/The role of plastidial α-phosphorylase enzymes (|FRAME: RXN-1826 2.4.1.1)| in starch biosynthesis remain controversial and may differ between species |CITS: [23393426][BALL09]|. For example, mutations in the |FRAME: AT3G29320| gene of Arabidopsis have no effect on starch biosynthesis |CITS: 15173560|. +/ +/Following the initial production of |FRAME: ADP-D-GLUCOSE|, |FRAME:Starch| biosynthesis appears to involve reactions catalyzed by at least three classes of enzymes, i.e. starch synthases, starch branching enzymes and +/starch debranching enzymes |CITS: [BALL09]|. However, the exact steps involved and the order in which they are required for the formation of different types of starch may differ between species and even between different types of cells within the same species |CITS: [15743447]|. +/ +/There is also evidence that |FRAME: TAX-3055| might involve an additional enzyme in |FRAME:PWY-622|, namely, a disproportionating enzyme, |FRAME: GIO2-442|. However the corresponding enzyme, |FRAME: AT5G64860-MONOMER DPE1| in Arabidopsis has been shown to play a part in |FRAME: PWY-6427 starch degradation| instead |CITS: [BALL09][23393426]|. +/ +/Developing a better understanding of starch biosynthesis and its regulation is an active area of research. +/ +CREDITS - PMN +CREDITS - dreher +DBLINKS - (PLANTCYC "PWY-622" NIL |dreher| 3572635612 NIL NIL) +DBLINKS - (ARACYC "PWY-622" NIL |green| 3381011399 NIL NIL) +ENZYMES-NOT-USED - AT2G39930-MONOMER +ENZYMES-NOT-USED - GIO2-1211-MONOMER +ENZYMES-NOT-USED - GIO2-230-MONOMER +INSTANCE-NAME-TEMPLATE - PWY-* +KEY-REACTIONS - RXN-14371 +KEY-REACTIONS - RXN-14378 +PATHWAY-LINKS - (G3P CALVIN-PWY) +PATHWAY-LINKS - (FRUCTOSE-6P CALVIN-PWY) +PATHWAY-LINKS - (|Starch| PWY-6724) +POLYMERIZATION-LINKS - (|1-4-alpha-D-Glucan| GLYCOGENSYN-RXN GLYCOGENSYN-RXN) +PREDECESSORS - ("PHOSPHOGLUCMUT-RXN" "PGLUCISOM-RXN") +PREDECESSORS - ("GLUC1PADENYLTRANS-RXN" "PHOSPHOGLUCMUT-RXN") +PREDECESSORS - ("RXN-14378" "GLYCOGENSYN-RXN") +PREDECESSORS - ("RXN-14373" "RXN-14378") +PREDECESSORS - ("RXN-14372" "RXN-14378") +PREDECESSORS - ("RXN-14380" "RXN-14371") +PREDECESSORS - ("RXN-14371" "GLYCOGENSYN-RXN") +PREDECESSORS - ("GLYCOGENSYN-RXN" "GLUC1PADENYLTRANS-RXN") +PREDECESSORS - ("RXN-14373" "RXN-14374") +PREDECESSORS - ("RXN-14374" "RXN-14380") +PREDECESSORS - ("RXN-14373" "RXN-14372") +PRIMARIES - ("PHOSPHOGLUCMUT-RXN" ("D-glucopyranose-6-phosphate") ("GLC-1-P")) +PRIMARIES - ("RXN-14378" ("ADP-D-GLUCOSE" "1-4-alpha-D-Glucan") ("Alpha-Amyloses")) +PRIMARIES - ("GLYCOGENSYN-RXN" ("ADP-D-GLUCOSE" "1-4-alpha-D-Glucan") ("1-4-alpha-D-Glucan")) +PRIMARIES - ("RXN-14372" ("Alpha-Amyloses") ("CPD-7043")) +PRIMARIES - ("RXN-14374" ("Alpha-6-alpha-14-glucans") ("CPD-7043")) +PRIMARIES - ("RXN-14380" ("Alpha-6-alpha-14-glucans") ("Alpha-6-alpha-14-glucans")) +PRIMARIES - ("RXN-14373" ("CPD-7043" "Alpha-Amyloses") ("Starch")) +PRIMARY-PRODUCTS - Starch +RATE-LIMITING-STEP - GLUC1PADENYLTRANS-RXN +RATE-LIMITING-STEP - PHOSPHOGLUCMUT-RXN +REACTION-LAYOUT - (PHOSPHOGLUCMUT-RXN (:LEFT-PRIMARIES GLC-1-P) (:DIRECTION :R2L) (:RIGHT-PRIMARIES D-glucopyranose-6-phosphate)) +REACTION-LAYOUT - (PGLUCISOM-RXN (:LEFT-PRIMARIES D-glucopyranose-6-phosphate) (:DIRECTION :R2L) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (RXN-14380 (:LEFT-PRIMARIES Alpha-6-alpha-14-glucans) (:DIRECTION :L2R) (:RIGHT-PRIMARIES Alpha-6-alpha-14-glucans)) +REACTION-LAYOUT - (RXN-14378 (:LEFT-PRIMARIES 1-4-alpha-D-Glucan ADP-D-GLUCOSE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES Alpha-Amyloses)) +REACTION-LAYOUT - (RXN-14374 (:LEFT-PRIMARIES Alpha-6-alpha-14-glucans) (:DIRECTION :L2R) (:RIGHT-PRIMARIES CPD-7043)) +REACTION-LAYOUT - (RXN-14373 (:LEFT-PRIMARIES Alpha-Amyloses CPD-7043) (:DIRECTION :L2R) (:RIGHT-PRIMARIES Starch)) +REACTION-LAYOUT - (RXN-14371 (:LEFT-PRIMARIES 1-4-alpha-D-Glucan) (:DIRECTION :L2R) (:RIGHT-PRIMARIES Alpha-6-alpha-14-glucans)) +REACTION-LAYOUT - (RXN-14372 (:LEFT-PRIMARIES Alpha-Amyloses) (:DIRECTION :L2R) (:RIGHT-PRIMARIES CPD-7043)) +REACTION-LAYOUT - (GLYCOGENSYN-RXN (:LEFT-PRIMARIES 1-4-alpha-D-Glucan ADP-D-GLUCOSE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES 1-4-alpha-D-Glucan)) +REACTION-LAYOUT - (GLUC1PADENYLTRANS-RXN (:LEFT-PRIMARIES GLC-1-P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES ADP-D-GLUCOSE)) +REACTION-LIST - PHOSPHOGLUCMUT-RXN +REACTION-LIST - PGLUCISOM-RXN +REACTION-LIST - RXN-14380 +REACTION-LIST - RXN-14378 +REACTION-LIST - RXN-14374 +REACTION-LIST - RXN-14373 +REACTION-LIST - RXN-14371 +REACTION-LIST - RXN-14372 +REACTION-LIST - GLYCOGENSYN-RXN +REACTION-LIST - GLUC1PADENYLTRANS-RXN +SPECIES - TAX-3055 +SPECIES - TAX-4513 +SPECIES - TAX-3983 +SPECIES - TAX-4097 +SPECIES - TAX-4530 +SPECIES - TAX-3888 +SPECIES - TAX-4113 +SPECIES - TAX-4565 +SPECIES - TAX-4577 +SPECIES - ORG-5993 +TAXONOMIC-RANGE - TAX-2763 +TAXONOMIC-RANGE - TAX-1117 +TAXONOMIC-RANGE - TAX-33090 +// +UNIQUE-ID - PWY66-373 +TYPES - SUCROSE-DEG +COMMON-NAME - sucrose degradation V (sucrose α-glucosidase) +CITATIONS - 807575 +CITATIONS - 807575:EV-EXP-IDA:3491936341:caspi +COMMENT - Sucrose (table sugar) is an important dietary nutrient both as an energy storage molecule and by providing an aesthetic component to food, sweetness. Sucrose is widely produced by plants and when ingested by humans is degraded in the small intestine by the sucrase component of a |FRAME: CPLX66-547 "bifunctional sucrase/isomaltase"| attached to the lumenal membrane of enterocytes |CITS: [807575]|. This bi-functional enzyme is encoded by the SI gene, which produces a single polypeptide that is proteolytically cleaved into two monomers which maintain a very stable heterodimeric configuration. +/ +/Glucose, as a metabolite of starch or sucrose degradation, is taken up into small intestine enterocytes by the Na+/glucose cotransporter (SGLT1) expressed on the lumenal membrane |CITS: [12885248]|. Human mutations in the SGLT1 gene have been shown to cause Glucose-Galactose Malabsorption (GGM) resulting in neonatal onset of diarrhea leading to death unless glucose and galactose are removed from the diet |CITS: [8563765]|. +/ +/Fructose is another common sweetener that is degraded by this pathway as well. Fructose, as metabolite of sucrose degradation or as dietary nutrient, is absorbed by the GLUT5 transporter on the brush border membrane of enterocytes of the small intestine |CITS: [1550217]|. The efflux transporter, GLUT2, resides in the basolateral membrane of intestinal cells and transports fructose into the bloodstream |CITS: [8457197]|, where it is carried throughout the body and metabolized by three closely related, tissue-specific enzymes. Fructose has been used for intravenous feeding to trauma victims in hospitals, but very high plasma levels carry risks of lactic acidosis and are detrimental to the liver so this procedure is generally avoided. +/ +/ +CREDITS - SRI +CREDITS - trupp +INSTANCE-NAME-TEMPLATE - PWY-* +PATHWAY-LINKS - (SUCROSE ("nutrient ingestion" . :INCOMING)) +PATHWAY-LINKS - (GAP ANAGLYCOLYSIS-PWY) +PREDECESSORS - ("TRIOSEPISOMERIZATION-RXN" "RXN-8631") +PREDECESSORS - ("TRIOKINASE-RXN" "RXN-8631") +PREDECESSORS - ("RXN-8631" "KETOHEXOKINASE-RXN") +PREDECESSORS - ("KETOHEXOKINASE-RXN" "3.2.1.48-RXN") +PRIMARY-PRODUCTS - GAP +PRIMARY-REACTANTS - SUCROSE +REACTION-LAYOUT - (3.2.1.48-RXN (:LEFT-PRIMARIES SUCROSE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES BETA-D-FRUCTOSE)) +REACTION-LAYOUT - (TRIOSEPISOMERIZATION-RXN (:LEFT-PRIMARIES GAP) (:DIRECTION :R2L) (:RIGHT-PRIMARIES DIHYDROXY-ACETONE-PHOSPHATE)) +REACTION-LAYOUT - (TRIOKINASE-RXN (:LEFT-PRIMARIES GLYCERALD) (:DIRECTION :L2R) (:RIGHT-PRIMARIES GAP)) +REACTION-LAYOUT - (RXN-8631 (:LEFT-PRIMARIES FRU1P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES GLYCERALD DIHYDROXY-ACETONE-PHOSPHATE)) +REACTION-LAYOUT - (KETOHEXOKINASE-RXN (:LEFT-PRIMARIES BETA-D-FRUCTOSE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRU1P)) +REACTION-LIST - 3.2.1.48-RXN +REACTION-LIST - TRIOSEPISOMERIZATION-RXN +REACTION-LIST - TRIOKINASE-RXN +REACTION-LIST - RXN-8631 +REACTION-LIST - KETOHEXOKINASE-RXN +SPECIES - TAX-9606 +TAXONOMIC-RANGE - TAX-40674 +// +UNIQUE-ID - PWY66-399 +TYPES - Gluconeogenesis +COMMON-NAME - gluconeogenesis III +CITATIONS - 11544610:EV-EXP-TAS:3572197404:brito +CITATIONS - 10448530:EV-EXP-TAS:3572197404:brito +COMMENT - General Background +/ +/Blood glucose levels in mammals are maintained during fasting by utilization of liver glycogen stores. When this reserve is depleted, glucose must be generated from non-sugar carbon substrates in the process known as gluconeogenesis |CITS: [Salway]|. Most of the reactions in the process are the exact reversal of |FRAME: ANAGLYCOLYSIS-PWY "glycolysis"| reactions. However, the three reactions of glycolysis catalyzed by |FRAME: HS02935-MONOMER|/|FRAME: HS08136-MONOMER "hexokinase"|, |FRAME: HS00894-MONOMER "phosphofructokinase"| and |FRAME: HS00906-MONOMER "pyruvate kinase"| that occur with a free energy change are circumvented during gluconeogenesis by using different enzymes. +/ +/Gluconeogenesis in mammals is perfomed primarily in the liver and to a lesser extent in the kidney cortex and intestine. The pathway is considered to start with pyruvate. The liver utilizes mainly lactate (|FRAME: EC-1.1.1.27|) and alanine (|FRAME: EC-2.6.1.2|) as the pyruvate source |CITS: [458501]|. Glycerol can also function as a gluconeogenic precursor, entering the pathway at the level of dihydroxyacetone phosphate (|FRAME: EC-2.7.1.30| and |FRAME: EC-1.1.1.8|). +/ +/Lactate is formed in skeletal muscle cells during anaerobic glycolysis |CITS: [14960150]|. It is converted to pyruvate by lactate dehydrogenase. The conversion of glucose to lactate and back to glucose is referred to as the Cori cycle |CITS: [5355347][10484349]|. +/ +/In humans, gluconeogenesis occurs during periods of fasting or rigorous exercise. As carbohydrates are limited under these circumstances, it is often associated with ketosis. Hepatic gluconeogenesis is tightly regulated by the opposing actions of insulin and glucagon |CITS: [19450513]|. +/ +/ +/About this Pathway +/ +/In mammals gluconeogenesis is initiated in the mitochondria with the carboxylation of pyruvate to form oxaloacetate. This reaction is catalyzed by |FRAME: HS10697-MONOMER "pyruvate carboxylase"| and requires 1 molecule of ATP |CITS: [13840551]|. The enzyme is stimulated by high levels of acetyl coA produced by β oxidation of fatty acids and inhibited by high levels of ADP |CITS: [9597748]|. +/ +/Most of the remaining steps of gluconeogenesis occur in the cytosol. Since oxaloacetate cannot leave the mitochondria, two enzymes, |FRAME: HS07366-MONOMER| and |FRAME: CPLX-7322|, form part of a shuttle to transport oxaloacetate from the mitochondria to the cytosol. Oxaloacetate is first reduced to malate in an NADH-dependent reaction catalyzed by |FRAME: HS07366-MONOMER|. Malate is transported into the cytosol and oxidized back to oxaloacetate by |FRAME: CPLX-7322| |CITS: [6849808]|. +/ +/The cytosolic |FRAME: HS04751-MONOMER "phosphoenolpyruvate decarboxylase"| decarboxylates and phosphorylates oxaloacetate to form phosphoenolpyruvate at the expense of 1 mole of GTP |CITS: [6304730]|. The next steps are akin to reverse glycolysis, with the exception of the rate limiting step of gluconeogenesis, the conversion of fructose-1,6-bisphosphate to fructose-6-phosphate, which is catalyzed by the gluconeogenic enzyme |FRAME: HS09189-MONOMER "fructose-1,6-bisphosphatase" | |CITS: [8387495]|. +/ +/The final step of gluconeogenesis occurs in the lumen of the endoplasmic reticulum, where glucose-6-phosphate is hydrolyzed to glucose by |FRAME: HS05538-MONOMER| |CITS: [12093795]|. Glucose transporters in the endoplasmic reticulum membrane then shuttle glucose into the cytoplasm |CITS: [8211187]|. Since many tissues (for example, skeletal muscle) lack glucose-6-phosphatase, in these tissues gluconeogenesis is utilized for the synthesis of glycogen rather than free glucose. +CREDITS - SRI +CREDITS - caspi +CREDITS - brito +CREDITS - O-18 +CREDITS - riley +ENZYMES-NOT-USED - HS02160-MONOMER +INSTANCE-NAME-TEMPLATE - PWY-* +PATHWAY-LINKS - (PYRUVATE (ALANINE-AMINOTRANSFERASE-RXN . :INCOMING) (L-LACTATE-DEHYDROGENASE-RXN . :INCOMING)) +PATHWAY-LINKS - (|D-glucopyranose-6-phosphate| PWY-5067) +PREDECESSORS - ("RXN66-526" "PGLUCISOM-RXN") +PREDECESSORS - ("PGLUCISOM-RXN" "F16BDEPHOS-RXN") +PREDECESSORS - ("2PGADEHYDRAT-RXN" "4.1.1.32-RXN") +PREDECESSORS - ("4.1.1.32-RXN" "MALATE-DEH-RXN") +PREDECESSORS - ("MALATE-DEH-RXN" "MALATE-DEH-RXN") +PREDECESSORS - ("MALATE-DEH-RXN" "PYRUVATE-CARBOXYLASE-RXN") +PREDECESSORS - ("PYRUVATE-CARBOXYLASE-RXN") +PREDECESSORS - ("F16ALDOLASE-RXN" "GAPOXNPHOSPHN-RXN") +PREDECESSORS - ("F16BDEPHOS-RXN" "F16ALDOLASE-RXN") +PREDECESSORS - ("F16ALDOLASE-RXN" "TRIOSEPISOMERIZATION-RXN") +PREDECESSORS - ("TRIOSEPISOMERIZATION-RXN" "GAPOXNPHOSPHN-RXN") +PREDECESSORS - ("GAPOXNPHOSPHN-RXN" "PHOSGLYPHOS-RXN") +PREDECESSORS - ("PHOSGLYPHOS-RXN" "RXN-15513") +PREDECESSORS - ("RXN-15513" "2PGADEHYDRAT-RXN") +PRIMARIES - ("MALATE-DEH-RXN" ("MAL") ("OXALACETIC_ACID")) +PRIMARIES - ("PYRUVATE-CARBOXYLASE-RXN" ("PYRUVATE") ("OXALACETIC_ACID")) +PRIMARIES - ("MALATE-DEH-RXN" ("OXALACETIC_ACID") ("MAL")) +PRIMARIES - ("F16ALDOLASE-RXN" ("DIHYDROXY-ACETONE-PHOSPHATE" "GAP") NIL) +PRIMARY-PRODUCTS - Glucopyranose +REACTION-LAYOUT - (PGLUCISOM-RXN (:LEFT-PRIMARIES D-glucopyranose-6-phosphate) (:DIRECTION :R2L) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (MALATE-DEH-RXN (:LEFT-PRIMARIES MAL) (:DIRECTION :L2R) (:RIGHT-PRIMARIES OXALACETIC_ACID)) +REACTION-LAYOUT - (RXN66-526 (:LEFT-PRIMARIES D-glucopyranose-6-phosphate) (:DIRECTION :L2R) (:RIGHT-PRIMARIES Glucopyranose)) +REACTION-LAYOUT - (4.1.1.32-RXN (:LEFT-PRIMARIES OXALACETIC_ACID) (:DIRECTION :L2R) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (PYRUVATE-CARBOXYLASE-RXN (:LEFT-PRIMARIES PYRUVATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES OXALACETIC_ACID)) +REACTION-LAYOUT - (TRIOSEPISOMERIZATION-RXN (:LEFT-PRIMARIES GAP) (:DIRECTION :L2R) (:RIGHT-PRIMARIES DIHYDROXY-ACETONE-PHOSPHATE)) +REACTION-LAYOUT - (2PGADEHYDRAT-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (RXN-15513 (:LEFT-PRIMARIES 2-PG) (:DIRECTION :L2R) (:RIGHT-PRIMARIES G3P)) +REACTION-LAYOUT - (PHOSGLYPHOS-RXN (:LEFT-PRIMARIES G3P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES DPG)) +REACTION-LAYOUT - (GAPOXNPHOSPHN-RXN (:LEFT-PRIMARIES GAP) (:DIRECTION :R2L) (:RIGHT-PRIMARIES DPG)) +REACTION-LAYOUT - (F16ALDOLASE-RXN (:LEFT-PRIMARIES FRUCTOSE-16-DIPHOSPHATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES GAP DIHYDROXY-ACETONE-PHOSPHATE)) +REACTION-LAYOUT - (F16BDEPHOS-RXN (:LEFT-PRIMARIES FRUCTOSE-16-DIPHOSPHATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LIST - PGLUCISOM-RXN +REACTION-LIST - MALATE-DEH-RXN +REACTION-LIST - RXN66-526 +REACTION-LIST - 4.1.1.32-RXN +REACTION-LIST - PYRUVATE-CARBOXYLASE-RXN +REACTION-LIST - TRIOSEPISOMERIZATION-RXN +REACTION-LIST - 2PGADEHYDRAT-RXN +REACTION-LIST - RXN-15513 +REACTION-LIST - PHOSGLYPHOS-RXN +REACTION-LIST - GAPOXNPHOSPHN-RXN +REACTION-LIST - F16ALDOLASE-RXN +REACTION-LIST - F16BDEPHOS-RXN +SPECIES - TAX-9606 +TAXONOMIC-RANGE - TAX-33208 +// +UNIQUE-ID - PWY-6886 +TYPES - Alcohol-Biosynthesis +TYPES - Super-Pathways +COMMON-NAME - 1-butanol autotrophic biosynthesis (engineered) +CHIMERIC? - T +CITATIONS - 21569861:EV-EXP-IDA:3524589540:brito +COMMENT - Background +/ +/Photosynthetic organisms use sunlight to generate reducing equivalents and incorporate |FRAME: CARBON-DIOXIDE| into organic molecules which range from sugars to alcohols |CITS: [19915552]|. Some of these alcohols can be used as an alternative renewable fuel. With the ongoing problems of global climate change, reducing |FRAME: CARBON-DIOXIDE| emissions by recycling |FRAME: CARBON-DIOXIDE| directly into fuels would be greatly beneficial. +/ +/ |FRAME: TAX-1140| was engineered to over express |FRAME: CPLX-105| with the resultant enhanced production of |FRAME: CPD-7000| and |FRAME: ISOBUTANOL| from |FRAME: CARBON-DIOXIDE| |CITS: [19915552]|. |FRAME: ISOBUTANOL| is a good substitute fuel for gasoline |CITS: [19915552]|. Another candidate biofuel replacement for gasoline is |FRAME: BUTANOL "Butanol"|. |FRAME: TAX-1488| synthesizes a mixture of |FRAME: ACETONE|, |FRAME: BUTANOL| and |FRAME: ETOH| (the ABE process) from the conversion of |FRAME: ACETYL-COA| via the |FRAME: PWY-6594| |CITS: [3540574]|. However, industrial production of |FRAME: BUTANOL| from |FRAME: TAX-1488| is not ideal, as the microorganism produces low yields, has limited tolerance to the products and strictly regulated pathways |CITS: [19756010]|. The |FRAME: PWY-6883| pathway from |FRAME: TAX-1488| was genetically engineered in |FRAME: TAX-562| for |FRAME: BUTANOL| production |CITS: [20143230]|. This pathway was subsequently engineered into |FRAME: TAX-1117 "cyanobacteria| for autotrophic |FRAME: BUTANOL| production. +/ +/The synthesis of one molecule of |FRAME: BUTANOL| via |FRAME: PWY-101| and the |FRAME: CALVIN-PWY| requires an input of 48 photons |CITS: [21569861]|. +/ +/ +/ +/About this Pathway +/ +/The |FRAME: BUTANOL| generating pathway is entirely engineered into |FRAME: TAX-1140| using genes from |FRAME: TAX-1488| and |FRAME: TAX-3039|. This superpathway is composed of three consecutive pathways for the production of |FRAME: BUTANOL|. The first two pathways are naturally occurring in cyanobacteria. The |FRAME: PWY-101 "photosynthesis pathway"| generates |FRAME: NADPH| which fuels the generation of |FRAME: GAP| via the |FRAME: CALVIN-PWY|. |FRAME: GAP| is converted to |FRAME: PYRUVATE| via glycolysis, which is in turn converted to |FRAME: ACETYL-COA|, the entry point into the third pathway. +/ +/An anaerobic environment is a prerequisite for production of |FRAME: BUTANOL|, as some of the enzymes including the product of the adhE2 gene are oxygen sensitive |CITS: [11790753]|. The pathway takes advantage of natural light cycles, with |FRAME: TAX-1140| accumulating reduced carbon during the day, and utilizing it at night to produce |FRAME: BUTANOL|. +/ +/ |FRAME: NADH| is the cofactor required by this pathway, and pyridine nucleotide transhydrogenase can regenerate NAD+ and NADPH |CITS: [15604828]|. Overexpression of the genes pntA and pntb which code for the subunits of this protein might enhance butanol production. +/ +CREDITS - SRI +CREDITS - brito +ENGINEERED? - T +INSTANCE-NAME-TEMPLATE - PWY-* +PREDECESSORS - ("1.2.1.13-RXN" "1.18.1.2-RXN") +PREDECESSORS - ("3PGAREARR-RXN" "RIBULOSE-BISPHOSPHATE-CARBOXYLASE-RXN") +PREDECESSORS - ("ACETYL-COA-ACETYLTRANSFER-RXN" "PYRUVDEH-RXN") +PREDECESSORS - ("PYRUVDEH-RXN" "PEPDEPHOS-RXN") +PREDECESSORS - ("PEPDEPHOS-RXN" "2PGADEHYDRAT-RXN") +PREDECESSORS - ("2PGADEHYDRAT-RXN" "3PGAREARR-RXN") +PREDECESSORS - PWY-101 +PREDECESSORS - CALVIN-PWY +PREDECESSORS - PWY-6883 +PRIMARIES - ("PEPDEPHOS-RXN" ("PHOSPHO-ENOL-PYRUVATE") ("PYRUVATE")) +PRIMARIES - ("1.2.1.13-RXN" ("NADPH") ("GAP")) +REACTION-LAYOUT - (CALVIN-PWY (:LEFT-PRIMARIES) (:DIRECTION :L2R) (:RIGHT-PRIMARIES)) +REACTION-LAYOUT - (PYRUVDEH-RXN (:LEFT-PRIMARIES PYRUVATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES CARBON-DIOXIDE ACETYL-COA)) +REACTION-LAYOUT - (PEPDEPHOS-RXN (:LEFT-PRIMARIES PYRUVATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (2PGADEHYDRAT-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :L2R) (:RIGHT-PRIMARIES WATER PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (3PGAREARR-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :R2L) (:RIGHT-PRIMARIES G3P)) +REACTION-LAYOUT - (PHOSGLYPHOS-RXN (:LEFT-PRIMARIES G3P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES DPG)) +REACTION-LAYOUT - (PWY-101 (:LEFT-PRIMARIES) (:DIRECTION :L2R) (:RIGHT-PRIMARIES)) +REACTION-LAYOUT - (PWY-6883 (:LEFT-PRIMARIES) (:DIRECTION :L2R) (:RIGHT-PRIMARIES)) +REACTION-LIST - CALVIN-PWY +REACTION-LIST - PYRUVDEH-RXN +REACTION-LIST - PEPDEPHOS-RXN +REACTION-LIST - 2PGADEHYDRAT-RXN +REACTION-LIST - 3PGAREARR-RXN +REACTION-LIST - PHOSGLYPHOS-RXN +REACTION-LIST - PWY-101 +REACTION-LIST - PWY-6883 +SPECIES - TAX-1488 +SPECIES - TAX-272562 +SPECIES - TAX-3039 +SPECIES - TAX-1140 +SUB-PATHWAYS - CALVIN-PWY +SUB-PATHWAYS - PWY-101 +SUB-PATHWAYS - PWY-6883 +TAXONOMIC-RANGE - TAX-186801 +TAXONOMIC-RANGE - TAX-33682 +TAXONOMIC-RANGE - TAX-1117 +// +UNIQUE-ID - PWY-6901 +TYPES - Sugars-And-Polysaccharides-Degradation +TYPES - Super-Pathways +COMMON-NAME - superpathway of glucose and xylose degradation +CITATIONS - 16672461:EV-EXP-IDA:3525451326:brito +COMMENT - Background +/ +/There is renewed interest in lignocellulosic biomass as a renewable feedstock for the production of |FRAME: ETOH| and other chemicals as result of increasing fuel costs and limited resources for fossil fuels |CITS: [16672461]|. |FRAME: ETOH "Ethanol"| production from lignocellulose is not a straightforward process. |FRAME: CELLULOSE "Cellulose"| and |FRAME: Hemicelluloses| form a complex with |FRAME: Lignins "lignin"| and need to be liberated first by delignification. |FRAME: CELLULOSE "Cellulose"| and |FRAME: Hemicelluloses| then need to be depolymerized to release free sugars such as |FRAME: Glucose "glucose"| and |FRAME: XYLOSE "xylose" |. These mixed hexose and pentose sugars then require fermentation to produce |FRAME: ETOH| |CITS: [9246788]|. +/ +/With the release of |FRAME: CELLULOSE| and |FRAME: Hemicelluloses| from delignification, low acid concentrations will hydrolyze |FRAME: Hemicelluloses| into monomeric sugars, while fungal cellulases are required to hydrolyze |FRAME: CELLULOSE| to glucose in a process called saccharification |CITS: [16209550]|. Fermentation of glucose to ethanol is also carried out by fungal cellulases which function optimally at 50°C and pH 5.0 |CITS: [10514249]|. The component pentose sugar of hemicellulose, xylose is not easily converted to ethanol by any organism but can be converted to lactate by lactic acid bacteria using the |FRAME: P122-PWY| pathway |CITS: [1660563]|. |FRAME: Lactate "Lactate"| can be used as a source of lactic acid polymers to create biodegradeable plastics |CITS: [15269531]|. The conversion of xylose to lactate by lactic acid bacteria has limitations industrially as two of the five carbons in the pentose are converted to |FRAME: ACET| |CITS: [11800488]|. +/ +/ +/About this Pathway +/ +/|FRAME: TAX-1398| is a Gram-positive thermophilic bacterial strain that can grow and ferment at pH 5.0 and temperatures of 60°C, conditions optimal for the hydrolysis of cellulose by fungal cellulases |CITS: [15269531]|. While the type strain, |FRAME: TAX-1121088|, is not able to grow on xylose, three other strains, including |FRAME: TAX-345219|, were able to convert both glucose and xylose to lactate |CITS: [16672461]|. The conversion of xylose to lactate in these organisms utilizes the |FRAME: NONOXIPENT-PWY|, unlike in other lactic acid bacteria which utilize the |FRAME: P122-PWY| pathway |CITS: [1660563]|. +/ +/It should be noted that while |FRAME: TAX-1398| is thermophilic, and fungal cellulases function optimally at 50°C, one of the enzymes in this pathway |FRAME: CPLX-8356| is thermolabile, and is rendered non-functional at 55°C |CITS: [7462149]|. +CREDITS - SRI +CREDITS - brito +INSTANCE-NAME-TEMPLATE - PWY-* +PATHWAY-LINKS - (GLC-6-P (TRANS-RXN-157 . :INCOMING)) +PREDECESSORS - ("RIB5PISOM-RXN" "RXN-9952") +PREDECESSORS - ("GAPOXNPHOSPHN-RXN" "2TRANSKETO-RXN") +PREDECESSORS - ("2TRANSKETO-RXN" "XYLULOKIN-RXN") +PREDECESSORS - PENTOSE-P-PWY +PREDECESSORS - ("DLACTDEHYDROGNAD-RXN" "PEPDEPHOS-RXN") +PREDECESSORS - ("L-LACTATE-DEHYDROGENASE-RXN" "PEPDEPHOS-RXN") +PREDECESSORS - ("PEPDEPHOS-RXN" "2PGADEHYDRAT-RXN") +PREDECESSORS - ("2PGADEHYDRAT-RXN" "3PGAREARR-RXN") +PREDECESSORS - ("3PGAREARR-RXN" "PHOSGLYPHOS-RXN") +PREDECESSORS - ("PHOSGLYPHOS-RXN" "GAPOXNPHOSPHN-RXN") +PREDECESSORS - XYLCAT-PWY +PRIMARIES - ("2TRANSKETO-RXN" ("XYLULOSE-5-PHOSPHATE") ("GAP")) +PRIMARIES - ("L-LACTATE-DEHYDROGENASE-RXN" ("PYRUVATE") ("L-LACTATE")) +PRIMARIES - ("PEPDEPHOS-RXN" ("PHOSPHO-ENOL-PYRUVATE") ("PYRUVATE")) +REACTION-LAYOUT - (PENTOSE-P-PWY (:LEFT-PRIMARIES) (:DIRECTION :L2R) (:RIGHT-PRIMARIES)) +REACTION-LAYOUT - (2TRANSKETO-RXN (:LEFT-PRIMARIES XYLULOSE-5-PHOSPHATE ERYTHROSE-4P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES GAP FRUCTOSE-6P)) +REACTION-LAYOUT - (DLACTDEHYDROGNAD-RXN (:LEFT-PRIMARIES D-LACTATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PYRUVATE)) +REACTION-LAYOUT - (L-LACTATE-DEHYDROGENASE-RXN (:LEFT-PRIMARIES L-LACTATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PYRUVATE)) +REACTION-LAYOUT - (PEPDEPHOS-RXN (:LEFT-PRIMARIES PYRUVATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (2PGADEHYDRAT-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :L2R) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (3PGAREARR-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :R2L) (:RIGHT-PRIMARIES G3P)) +REACTION-LAYOUT - (PHOSGLYPHOS-RXN (:LEFT-PRIMARIES G3P) (:DIRECTION :R2L) (:RIGHT-PRIMARIES DPG)) +REACTION-LAYOUT - (GAPOXNPHOSPHN-RXN (:LEFT-PRIMARIES GAP) (:DIRECTION :L2R) (:RIGHT-PRIMARIES DPG)) +REACTION-LAYOUT - (XYLCAT-PWY (:LEFT-PRIMARIES) (:DIRECTION :L2R) (:RIGHT-PRIMARIES)) +REACTION-LIST - PENTOSE-P-PWY +REACTION-LIST - 2TRANSKETO-RXN +REACTION-LIST - DLACTDEHYDROGNAD-RXN +REACTION-LIST - L-LACTATE-DEHYDROGENASE-RXN +REACTION-LIST - PEPDEPHOS-RXN +REACTION-LIST - 2PGADEHYDRAT-RXN +REACTION-LIST - 3PGAREARR-RXN +REACTION-LIST - PHOSGLYPHOS-RXN +REACTION-LIST - GAPOXNPHOSPHN-RXN +REACTION-LIST - XYLCAT-PWY +SPECIES - TAX-345219 +SPECIES - TAX-1398 +SUB-PATHWAYS - PENTOSE-P-PWY +SUB-PATHWAYS - XYLCAT-PWY +TAXONOMIC-RANGE - TAX-2 +// +UNIQUE-ID - PWY-6981 +TYPES - Polysaccharides-Biosynthesis +TYPES - Super-Pathways +COMMON-NAME - chitin biosynthesis +CITATIONS - 21700357:EV-EXP-TAS:3536355653:fulcher +CITATIONS - KRAMER05:EV-EXP-TAS:3536355653:fulcher +CITATIONS - 16075270:EV-EXP-TAS:3536358957:fulcher +CITATIONS - 14610026:EV-EXP-TAS:3536358957:fulcher +CITATIONS - 20561815:EV-EXP-TAS:3536358957:fulcher +COMMENT - General Background +/ +/|FRAME: CHITIN| is the second most abundant biologically produced polymer (|FRAME: CELLULOSE| is the most abundant). It is a linear homopolymer of |FRAME: N-ACETYL-D-GLUCOSAMINE| residues linked by β-1,4 glycosidic bonds. Note that in this pathway the final product |FRAME: CHITIN| is shown using its polymeric name in the chitin synthase polymerization reaction. |FRAME: CHITIN| exists is several crystalline forms termed α, β and γ |FRAME: CHITIN|. The most abundant form is α |FRAME: CHITIN|, which forms microfibrils arranged in an antiparallel manner resulting in high tensile strength. |FRAME: Chitosan|, which is partially deacetylated |FRAME: CHITIN|, is also found naturally. Both |FRAME: CHITIN| and |FRAME: Chitosan| are of interest in the chemical and pharmaceutical industries (reviewed in |CITS: [21700357]|). +/ +/|FRAME: CHITIN| is synthesized by some or all members of several lower eukaryote groups including fungi |CITS: [21700357]|, arthropods |CITS: [21700357]|, protists |CITS: [21775209 ][16400183]|, sponges |CITS: [17285638]|, coelenterates |CITS: [1345775,]| nematodes |CITS: [16098962]| and molluscs |CITS: [18083970]|. It has also been reported in algae (in chlorovirus CVK2-infected |FRAME:TAX-3071| |CITS: [12429521]|). Among prokaryotes, |FRAME: CHITIN| oligomers linked to fatty acids are secreted by some rhizobia during nodulation |CITS: [8146173]|. |FRAME: CHITIN| biosynthesis is best characterized in fungi and insects, which have conserved cellular machinery for |FRAME: CHITIN| biosynthesis. Linear |FRAME: CHITIN| chains are secreted into the extracellular matrix where microfibrils are assembled and organized. Chitin is well known as a component of insect cuticles, and is a structural polysaccharide in fungal cell walls (reviewed in |CITS: [21700357]| and |CITS: [KRAMER05]|). +/ +/As an essential component of fungal cell walls, |FRAME: CHITIN| biosynthesis during the cell cycle is highly regulated. Because chitin is absent in vertebrates and it appears to have a role in immune responses, its biosynthesis remains of interest as a drug target for fungal and other chitin-containing parasites (reviewed in |CITS: [20561815]|). +/ +/About This Pathway +/ +/The overall |FRAME: CHITIN| biosynthetic pathway in fungi and insects is highly conserved. The sugar source is |FRAME: GLC|, or its storage compounds |FRAME: Glycogens|, or |FRAME: TREHALOSE|. In insects |FRAME: GLC| may be derived from fat body glycogen via |FRAME: TREHALOSE|. Glycogen phosphorylase produces |FRAME: GLC-1-P|, which is converted to |FRAME: TREHALOSE|. In insects, |FRAME: TREHALOSE| enters the hemolymph (insect blood) and serves as an extracellular source of sugar. Trehalase, which is found in many insect tissues, hydrolyzes |FRAME: TREHALOSE| to produce intracellular |FRAME: GLC|. |FRAME: GLC| is converted to |FRAME: FRUCTOSE-6P| by the two cytosolic, glycolytic enzymes hexokinase (glucokinase) and glucose-6-phosphate isomerase (reviewed in |CITS: [21700357][KRAMER05][19725772]|. The spontaneous conversions of |FRAME: ALPHA-GLUCOSE| to its epimer |FRAME: GLC| and |FRAME: ALPHA-GLC-6-P| to its epimer |FRAME: GLC-6-P| are indicated here. +/ +/The pathway then branches off from glycolysis toward amino sugar biosynthesis, and glutamine:fructose-6-p aminotransferase is considered to be the first committed and rate-limiting step of amino sugar biosynthesis |CITS: [11716769][21700357][KRAMER05]|. This segment of the pathway involves amination, acetyl group transfer and isomerization steps. The |FRAME: N-ACETYL-D-GLUCOSAMINE-6-P| intermediate can also be supplied by chitin degradation reactions as shown in the pathway link. +/ +/The next reaction leads to formation of the activated sugar |FRAME: UDP-N-ACETYL-D-GLUCOSAMINE|. This activated sugar also participates in the eukaryotic N-linked glycosylation pathway (see pathway |FRAME: MANNOSYL-CHITO-DOLICHOL-BIOSYNTHESIS|). The final step in |FRAME: CHITIN| biosynthesis utilizes |FRAME: UDP-N-ACETYL-D-GLUCOSAMINE| in a polymerization reaction to form |FRAME: CHITIN|, catalyzed by chitin synthase. The chitin synthase reaction occurs in specialized microdomains of the plasma membrane. Chitin synthase is an integral membrane protein complex that polymerizes and extrudes chitin. +/ +/Important pathway enzymes include glutamine:fructose-6-p amidotransferase which appears to be rate-limiting, and chitin synthase which is the key enzyme of the pathway and the only enzyme specifically associated with chitin biosynthesis (reviewed in |CITS: [21700357]| and |CITS: [KRAMER05]|). +/ +/Chitin synthase encoding genes of fungi may be found in multiple copies and are divided into two families based on amino acid sequence motifs. Each family contains several classes. The yeast |FRAME: TAX-4932| contains three chitin synthase genes, CHS1, CHS2 and CHS3 which have different roles in the life cycle, with CHS3 producing most of the |FRAME: CHITIN| in this organism including the lateral cell wall (reviewed in |CITS: [21700357]|). In insects, only two chitin synthase encoding genes have been identified to date and are divided into class A and class B. Their enzyme products are specialized in formation of the cuticle and gut lining (peritrophic membranes). During the growth and development of both organisms, pathway enzymes are regulated at the transcriptional, posttranscriptional and intracellular localization levels (reviewed in |CITS: [21700357]| and |CITS: [KRAMER05]|). +/ +/|FRAME: CHITIN| can be degraded enzymatically by chitin deacetylases (EC 3.5.1.41) to produce |FRAME: Chitosan| (see |FRAME: MONOMER-16910|). Chitin deacetylases are found in fungi, some insects, and marine bacteria (reviewed in |CITS: [20161969]|). In the fungus |FRAME: TAX-290576| secreted chitin deacetylase may function in partial deacetylation of the cell wall chitin of fungal hyphae during colonization of plant tissue. This partial deacetylation may confer resistance to plant chitinases, which hydrolyze chitosan only poorly (in |CITS: [16878976]|). +CREDITS - caspi +CREDITS - SRI +CREDITS - fulcher +ENZYMES-NOT-USED - MONOMER-554 +INSTANCE-NAME-TEMPLATE - PWY-* +KEY-REACTIONS - CHITIN-SYNTHASE-RXN +PATHWAY-LINKS - (N-ACETYL-D-GLUCOSAMINE-6-P PWY-6906) +PATHWAY-LINKS - (TREHALOSE TRESYN-PWY) +PATHWAY-LINKS - (GLC-1-P PWY-5941 GLYCOCAT-PWY) +POLYMERIZATION-LINKS - (CHITIN CHITIN-SYNTHASE-RXN CHITIN-SYNTHASE-RXN) +PREDECESSORS - ("PGLUCISOM-RXN" "PHOSPHOGLUCMUT-RXN") +PREDECESSORS - ("PGLUCISOM-RXN" "GLUCOKIN-RXN") +PREDECESSORS - ("L-GLN-FRUCT-6-P-AMINOTRANS-RXN" "PGLUCISOM-RXN") +PREDECESSORS - ("CHITIN-SYNTHASE-RXN" "NAG1P-URIDYLTRANS-RXN") +PREDECESSORS - UDPNACETYLGALSYN-PWY +PREDECESSORS - PWY0-1182 +PREDECESSORS - TRESYN-PWY +PREDECESSORS - PWY-5941 +PRIMARIES - ("PHOSPHOGLUCMUT-RXN" ("GLC-1-P") ("D-glucopyranose-6-phosphate")) +PRIMARIES - ("CHITIN-SYNTHASE-RXN" ("UDP-N-ACETYL-D-GLUCOSAMINE" "CHITIN") ("CHITIN")) +PRIMARY-PRODUCTS - CHITIN +REACTION-LAYOUT - (PHOSPHOGLUCMUT-RXN (:LEFT-PRIMARIES GLC-1-P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES D-glucopyranose-6-phosphate)) +REACTION-LAYOUT - (PGLUCISOM-RXN (:LEFT-PRIMARIES D-glucopyranose-6-phosphate) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (CHITIN-SYNTHASE-RXN (:LEFT-PRIMARIES CHITIN UDP-N-ACETYL-D-GLUCOSAMINE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES CHITIN)) +REACTION-LAYOUT - (UDPNACETYLGALSYN-PWY (:LEFT-PRIMARIES) (:DIRECTION :L2R) (:RIGHT-PRIMARIES)) +REACTION-LAYOUT - (PWY0-1182 (:LEFT-PRIMARIES) (:DIRECTION :L2R) (:RIGHT-PRIMARIES)) +REACTION-LIST - PHOSPHOGLUCMUT-RXN +REACTION-LIST - PGLUCISOM-RXN +REACTION-LIST - CHITIN-SYNTHASE-RXN +REACTION-LIST - UDPNACETYLGALSYN-PWY +REACTION-LIST - PWY0-1182 +SPECIES - TAX-7159 +SPECIES - TAX-7460 +SPECIES - TAX-7091 +SPECIES - TAX-7227 +SPECIES - TAX-44386 +SPECIES - TAX-29058 +SPECIES - TAX-7004 +SPECIES - TAX-229990 +SPECIES - TAX-7130 +SPECIES - TAX-7380 +SPECIES - TAX-4932 +SPECIES - TAX-580239 +SPECIES - TAX-7010 +SPECIES - TAX-7107 +SPECIES - TAX-7108 +SUB-PATHWAYS - UDPNACETYLGALSYN-PWY +SUB-PATHWAYS - PWY0-1182 +TAXONOMIC-RANGE - TAX-6447 +TAXONOMIC-RANGE - TAX-6231 +TAXONOMIC-RANGE - TAX-6073 +TAXONOMIC-RANGE - TAX-6040 +TAXONOMIC-RANGE - TAX-5758 +TAXONOMIC-RANGE - TAX-6656 +TAXONOMIC-RANGE - TAX-4751 +// +UNIQUE-ID - PWY-6992 +TYPES - Sugars-And-Polysaccharides-Degradation +COMMON-NAME - 1,5-anhydrofructose degradation +CITATIONS - 16461673:EV-EXP-IMP:3546263330:brito +COMMENT - |FRAME: 15-ANHYDRO-D-FRUCTOSE| is a monosaccharide that is formed directly from starch or glycogen through the activity of |FRAME: EC-4.2.2.13|, during which its carbonyl group does not undergo hemiacetal bonding. The pathway for its production has been named |FRAME: PWY-7662 "the anhydrofructose pathway"|. It has been suggested that the pathway operates only when the organism is subjected to biotic and abiotic stresses |CITS: [16822618]|. +/ +/|FRAME: 15-ANHYDRO-D-FRUCTOSE| has been found in fungi, red algae, Escherichia coli C600 and rat liver tissue |CITS: [Baute91][9022716][10036159][9880813]|. It acts as an antioxidant |CITS: [11842320]|, an antibiotic |CITS: [22977551]|, and a precursor of several other antibiotics |CITS: [10446355]|. +/ +/This pathway describes a catabolic route for |FRAME: 15-ANHYDRO-D-FRUCTOSE| that has been described in several |FRAME: TAX-356| bacteria. +/ +/About this Pathway +/ +/The key enzyme in this pathway is the NAD(P)H-dependent |FRAME: MONOMER-16296|, which catalyzes the conversion of |FRAME: 15-ANHYDRO-D-FRUCTOSE| to |FRAME: CPD-9446|. The latter compound is presumably converted to |FRAME: MANNOSE| through a C1 oxygenation catalyzed by a P450 oxygenase enzyme |CITS: [16461673]|. +/The catabolism of D-mannose in Rhizobia proceeds by a two step conversion to |FRAME: FRUCTOSE-6P| via |FRAME: MANNOSE-6P| |CITS: [6286588]|. +/ +/|FRAME: FRUCTOSE-6P| is likely to be converted to |FRAME: D-glucopyranose-6-phosphate| via |FRAME: EC-5.3.1.9|, as it has been shown that a gpi mutant of |FRAME: TAX-382| is not able to grow on D-mannose |CITS: [762017]|. +/|FRAME: D-glucopyranose-6-phosphate| is fed to the oxidative branch of |FRAME: OXIDATIVEPENT-PWY "the pentose phosphate"| pathway, forming |FRAME: CPD-2961|, which enters the |FRAME: ENTNER-DOUDOROFF-PWY "Entner-Doudoroff pathway"| |CITS: [762017][3904617]|. +CREDITS - caspi +CREDITS - SRI +CREDITS - brito +INSTANCE-NAME-TEMPLATE - PWY-* +KEY-REACTIONS - 1.1.1.292-RXN +PATHWAY-LINKS - (MANNOSE ENTNER-DOUDOROFF-PWY) +PATHWAY-LINKS - (|D-glucopyranose-6-phosphate| OXIDATIVEPENT-PWY) +PATHWAY-LINKS - (15-ANHYDRO-D-FRUCTOSE PWY-7662) +PATHWAY-LINKS - (|D-glucopyranose-6-phosphate| GLYCOLYSIS) +PREDECESSORS - ("PGLUCISOM-RXN" "MANNPISOM-RXN") +PREDECESSORS - ("MANNPISOM-RXN" "MANNKIN-RXN") +PREDECESSORS - ("MANNKIN-RXN" "RXN-13064") +PREDECESSORS - ("RXN-13064" "1.1.1.292-RXN") +PREDECESSORS - ("1.1.1.292-RXN") +PRIMARIES - ("RXN-13064" ("CPD-9446") ("MANNOSE")) +PRIMARY-PRODUCTS - D-glucopyranose-6-phosphate +PRIMARY-REACTANTS - 15-ANHYDRO-D-FRUCTOSE +REACTION-LAYOUT - (PGLUCISOM-RXN (:LEFT-PRIMARIES D-glucopyranose-6-phosphate) (:DIRECTION :R2L) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (MANNPISOM-RXN (:LEFT-PRIMARIES CPD-15979) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (MANNKIN-RXN (:LEFT-PRIMARIES D-mannopyranose) (:DIRECTION :L2R) (:RIGHT-PRIMARIES CPD-15979)) +REACTION-LAYOUT - (RXN-13064 (:LEFT-PRIMARIES CPD-9446) (:DIRECTION :L2R) (:RIGHT-PRIMARIES D-mannopyranose)) +REACTION-LAYOUT - (1.1.1.292-RXN (:LEFT-PRIMARIES CPD-9446) (:DIRECTION :R2L) (:RIGHT-PRIMARIES 15-ANHYDRO-D-FRUCTOSE)) +REACTION-LIST - PGLUCISOM-RXN +REACTION-LIST - MANNPISOM-RXN +REACTION-LIST - MANNKIN-RXN +REACTION-LIST - RXN-13064 +REACTION-LIST - 1.1.1.292-RXN +SPECIES - TAX-106592 +SPECIES - TAX-382 +TAXONOMIC-RANGE - TAX-2 +// +UNIQUE-ID - PWY-7003 +TYPES - Alcohol-Biosynthesis +TYPES - Super-Pathways +COMMON-NAME - glycerol degradation to butanol +CITATIONS - 22052388:EV-EXP-IMP:3539119268:brito +COMMENT - Background +/ +/The production of biofuels from renewable feedstock is a growing field, in the face of dwindling supplies and the cost of petroleum-based fuels. The primary alcohol |FRAME: BUTANOL "butanol"| is an excellent example of a good biofuel, and is produced by several species of |FRAME: TAX-1485|. Butanol is produced by |FRAME: TAX-1488| and |FRAME: TAX-1501| by the process of acetone-butanol-ethanol (ABE) fermentation. However, this system is hampered by productivity limitations. To circumvent these issues |FRAME: TAX-1501| was chemically mutated to produce copious amounts of butanol using glycerol as the sole carbon source |CITS: [22052388]|. Glycerol is a good feedstock for butanol production because it is inexpensive and readily available, being a byproduct of biodiesel production. +/ +/ +/About this Pathway +/ +/The butanol biosynthesis pathway from glycerol, depicted here is a naturally occurring one in |FRAME: TAX-1501|, albeit a system with a low yield of butanol due to the limitations of the naturally occurring ABE fermentation mechanism. Using the same pathway, |FRAME: TAX-1501| was chemically mutated using N-methyl-N'-nitro-N-nitrosoguanidine (NTG) to become a hyper producer of butanol. +/ +/ +CREDITS - SRI +CREDITS - brito +INSTANCE-NAME-TEMPLATE - PWY-* +PREDECESSORS - ("PYRUFLAVREDUCT-RXN" "PEPDEPHOS-RXN") +PREDECESSORS - PWY-6583 +PREDECESSORS - ("PEPDEPHOS-RXN" "2PGADEHYDRAT-RXN") +PREDECESSORS - ("GAPOXNPHOSPHN-RXN" "TRIOSEPISOMERIZATION-RXN") +PREDECESSORS - ("TRIOSEPISOMERIZATION-RXN" "GLYCERONE-KINASE-RXN") +PREDECESSORS - ("3PGAREARR-RXN" "PHOSGLYPHOS-RXN") +PREDECESSORS - ("PHOSGLYPHOS-RXN" "GAPOXNPHOSPHN-RXN") +PREDECESSORS - ("2PGADEHYDRAT-RXN" "3PGAREARR-RXN") +PREDECESSORS - PWY-6131 +PRIMARIES - ("BUTANAL-DEHYDROGENASE-RXN" ("BUTYRYL-COA") ("BUTANAL")) +PRIMARIES - ("PYRUFLAVREDUCT-RXN" ("PYRUVATE") ("ACETYL-COA")) +REACTION-LAYOUT - (PWY-6583 (:LEFT-PRIMARIES) (:DIRECTION :L2R) (:RIGHT-PRIMARIES)) +REACTION-LAYOUT - (PEPDEPHOS-RXN (:LEFT-PRIMARIES PYRUVATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (2PGADEHYDRAT-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :L2R) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (3PGAREARR-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :R2L) (:RIGHT-PRIMARIES G3P)) +REACTION-LAYOUT - (PHOSGLYPHOS-RXN (:LEFT-PRIMARIES G3P) (:DIRECTION :R2L) (:RIGHT-PRIMARIES DPG)) +REACTION-LAYOUT - (GAPOXNPHOSPHN-RXN (:LEFT-PRIMARIES GAP) (:DIRECTION :L2R) (:RIGHT-PRIMARIES DPG)) +REACTION-LAYOUT - (TRIOSEPISOMERIZATION-RXN (:LEFT-PRIMARIES GAP) (:DIRECTION :R2L) (:RIGHT-PRIMARIES DIHYDROXY-ACETONE-PHOSPHATE)) +REACTION-LAYOUT - (PWY-6131 (:LEFT-PRIMARIES) (:DIRECTION :L2R) (:RIGHT-PRIMARIES)) +REACTION-LIST - PWY-6583 +REACTION-LIST - PEPDEPHOS-RXN +REACTION-LIST - 2PGADEHYDRAT-RXN +REACTION-LIST - 3PGAREARR-RXN +REACTION-LIST - PHOSGLYPHOS-RXN +REACTION-LIST - GAPOXNPHOSPHN-RXN +REACTION-LIST - TRIOSEPISOMERIZATION-RXN +REACTION-LIST - PWY-6131 +SPECIES - TAX-169679 +SPECIES - TAX-1488 +SPECIES - TAX-272562 +SPECIES - TAX-1501 +SUB-PATHWAYS - PWY-6583 +SUB-PATHWAYS - PWY-6131 +TAXONOMIC-RANGE - TAX-2 +// +UNIQUE-ID - PWY-7124 +TYPES - Ethylene-Biosynthesis +TYPES - Super-Pathways +COMMON-NAME - ethene biosynthesis V (engineered) +CITATIONS - UNGERER +CITATIONS - ungerer:EV-EXP-IDA:3558287301:brito +COMMENT - Background +/ +/Biologically, |FRAME: ETHYLENE-CMPD| is a plant hormone that plays a role in fruit ripening and senescence, see |FRAME: ETHYL-PWY|. While all plants produce ethylene as described in |FRAME: ETHYL-PWY|, two biosynthetic pathways for ethylene production have been reported from microorganisms, see |FRAME: PWY-6853| and |FRAME: PWY-6854|. The plant pathogen |FRAME: TAX-319| utilizes |FRAME: PWY-6853| to synthesize ethylene as a defence mechanism during host infection. +/ +/The |FRAME: TAX-319| efe gene product |FRAME: MONOMER-16773| mediates the synthesis of ethylene from the TCA cycle intermediate |FRAME: 2-KETOGLUTARATE| |CITS: [1770346]|. The enzyme catalyzes two simultaneous reactions. In one reaction 2-oxoglutarate is dioxygenated to form one molecule of ethylene and three molecules of carbon dioxide. In the other reaction both 2-oxoglutarate and |FRAME: ARG| are mono-oxygenated to yield |FRAME: SUC| plus |FRAME: CARBON-DIOXIDE| and |FRAME: CPD-13518|, respectively. The latter is further transformed to |FRAME: CPD0-1470| and |FRAME: L-DELTA1-PYRROLINE_5-CARBOXYLATE| |CITS: [1445291]|. +/ +/|FRAME: L-DELTA1-PYRROLINE_5-CARBOXYLATE| can be converted to |FRAME:GLT| by |FRAME:CPLX-6746|. +/The glutamate that is formed can be recycled back to L-arginine via the |FRAME: ARGSYNBSUB-PWY "acetyl cycle"|. +/ +/|FRAME: ETHYLENE-CMPD "Ethylene"| has a diverse array of uses commercially. It is an intermediate in the production of fuel as it can be hydrated to ethanol or polymerized to gasoline. It can also be used to synthesize a variety of plastics such as polystyrene and PVC, or fabrics such as polyester. It is currently obtained from fossil fuels at an ecological cost as its production results in the emission of huge amounts of carbon dioxide |CITS: [Ungerer]|. +/ +/ +/About this Pathway +/ +/This pathway utilizes carbon dioxide from photosynthesis to produce ethylene and demonstrates a carbon neutral method of obtaining sufficient amounts for commercial use. The |FRAME: TAX-319| efe gene was previously cloned into the yeast |FRAME: TAX-4932| which was then able to synthesize ethylene as a byproduct of glucose utilization via the TCA cycle, see |FRAME: PWY-7126| |CITS: [18640286]|. +/ +/In the current pathway, the |FRAME: TAX-319| efe gene was engineered into the cyanobacterium |FRAME: TAX-1148|. The efe gene was subsequently modified to eliminate potential hotspots that could cause gene inactivation |CITS: [16233410]|. Multiple copies of the mutated efe gene were introduced into the |FRAME: TAX-1148| genome under the control of the pea plant psbA promoter |CITS: [Ungerer]|. +/ +/Experimental data concluded that this synthetic pathway in |FRAME: TAX-1148| was able to phototrophically produce significant amounts of ethylene with no deleterious side effects on the organism |CITS: [Ungerer]|. +CREDITS - SRI +CREDITS - brito +ENGINEERED? - T +INSTANCE-NAME-TEMPLATE - PWY-* +PREDECESSORS - ("RXN-12538" "ISOCITDEH-RXN") +PREDECESSORS - ("ISOCITDEH-RXN" "ACONITATEHYDR-RXN") +PREDECESSORS - ("ACONITATEHYDR-RXN" "ACONITATEDEHYDR-RXN") +PREDECESSORS - ("ACONITATEDEHYDR-RXN" "CITSYN-RXN") +PREDECESSORS - ("CITSYN-RXN" "PEPCARBOX-RXN") +PREDECESSORS - ("PEPCARBOX-RXN" "2PGADEHYDRAT-RXN") +PREDECESSORS - ("2PGADEHYDRAT-RXN" "3PGAREARR-RXN") +PREDECESSORS - ("3PGAREARR-RXN" "RIBULOSE-BISPHOSPHATE-CARBOXYLASE-RXN") +PREDECESSORS - PHOTOALL-PWY +REACTION-LAYOUT - (RXN-12538 (:LEFT-PRIMARIES OXYGEN-MOLECULE 2-KETOGLUTARATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES WATER CARBON-DIOXIDE ETHYLENE-CMPD)) +REACTION-LAYOUT - (ISOCITDEH-RXN (:LEFT-PRIMARIES THREO-DS-ISO-CITRATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES NADPH CARBON-DIOXIDE 2-KETOGLUTARATE)) +REACTION-LAYOUT - (ACONITATEHYDR-RXN (:LEFT-PRIMARIES WATER CIS-ACONITATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES THREO-DS-ISO-CITRATE)) +REACTION-LAYOUT - (ACONITATEDEHYDR-RXN (:LEFT-PRIMARIES CIT) (:DIRECTION :L2R) (:RIGHT-PRIMARIES WATER CIS-ACONITATE)) +REACTION-LAYOUT - (CITSYN-RXN (:LEFT-PRIMARIES OXALACETIC_ACID WATER) (:DIRECTION :L2R) (:RIGHT-PRIMARIES CIT)) +REACTION-LAYOUT - (PEPCARBOX-RXN (:LEFT-PRIMARIES OXALACETIC_ACID) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (2PGADEHYDRAT-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :L2R) (:RIGHT-PRIMARIES WATER PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (3PGAREARR-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :R2L) (:RIGHT-PRIMARIES G3P)) +REACTION-LAYOUT - (PHOTOALL-PWY (:LEFT-PRIMARIES) (:DIRECTION :L2R) (:RIGHT-PRIMARIES)) +REACTION-LIST - RXN-12538 +REACTION-LIST - ISOCITDEH-RXN +REACTION-LIST - ACONITATEHYDR-RXN +REACTION-LIST - ACONITATEDEHYDR-RXN +REACTION-LIST - CITSYN-RXN +REACTION-LIST - PEPCARBOX-RXN +REACTION-LIST - 2PGADEHYDRAT-RXN +REACTION-LIST - 3PGAREARR-RXN +REACTION-LIST - PHOTOALL-PWY +SPECIES - TAX-319 +SPECIES - TAX-4932 +SPECIES - TAX-1140 +SPECIES - TAX-1148 +SUB-PATHWAYS - PHOTOALL-PWY +SYNONYMS - ethylene biosynthesis V (engineered) +TAXONOMIC-RANGE - TAX-4930 +TAXONOMIC-RANGE - TAX-2 +// +UNIQUE-ID - PWY-7218 +TYPES - Storage-Compounds-Biosynthesis +TYPES - Super-Pathways +COMMON-NAME - photosynthetic 3-hydroxybutanoate biosynthesis (engineered) +CITATIONS - 23333586:EV-EXP-IDA:3569781314:brito +COMMENT - Background +/ +/(S) and (R)-3-hydroxybutyrate serve as precursors for the synthesis of polyhydroxyalkanoates (PHAs), vitamins, antibiotics, pheromones, and flavor compounds |CITS: [10066830]||CITS: [23333586]|. PHAs are a microbially produced class of polyesters that can serve as renewable plastics, see |FRAME: PWY1-3|. However, microbial production of PHAs is a costly affair, and engineering microbes to produce hydroxyalkanoates is significantly cheaper. Furthermore, hydroxyalkanoates are small molecules which can be secreted into the extracellular millieu as opposed to PHAs which accumulate intracellularly as insoluble granules |CITS: [23333586]|. +/ +/While |FRAME: CPD-335| monomer units can be synthesized by depolymerization of microbially synthesized poly-(R)-3-hydroxybutyric acid (PHB), due to stereospecific constraints the synthesis of |FRAME: CPD-1843| from PHB is not possible |CITS: [19304817]|. This pathway allows for the synthesis of both entantiomers of 3-hydroxbutyrate. +/ +/About this Pathway +/ +/Photosynthetic organisms such as cyanobacteria use sunlight to generate reducing equivalents and incorporate |FRAME: CARBON-DIOXIDE| into organic molecules |CITS: [19915552]|. With the ongoing problems of global climate change, they are good candidates to produce renewable compounds by recycling |FRAME: CARBON-DIOXIDE|. |FRAME: PWY-7216| was previously engineered into |FRAME: TAX-511145| for the production of two enantiomers of 3-hydroxybutyrate, precursors in the synthesis of poly-hydroxyalkanoates which serve as renewable plastics. Engineering the pathway into |FRAME: TAX-1148| allows the synthesis of these compounds photosynthetically from sunlight and |FRAME: CARBON-DIOXIDE|. Given the increasing concerns about global warming and the environment, this would be an ecologically tolerable method of producing required precursors for the synthesis of plastics. +/ +/|FRAME: TAX-1148| is a photosynthetic cyanobacterium, and this pathway constitutes a link between photosynthesis and 3-hydroxybutyrate production, utilizing |FRAME: CARBON-DIOXIDE| as the carbon source. +/ +/It should be noted that wild type |FRAME: TAX-1148| naturally produces polyhydroxybutyrates. The most significant step in engineering this pathway was to clone the |FRAME: TAX-562| |FRAME: EG10995| gene, which encodes a thioesterase capable of cleaving coenzyme A from|FRAME: CPD-650| and |FRAME: S-3-HYDROXYBUTANOYL-COA|, which resulted in the extracellular accumulation of 3-hydroxybutyrate. Almost all the cloned genes for the last part of the pathway were under the control of a strong promoter Ptac |CITS: [8251644]|. +CREDITS - SRI +CREDITS - brito +ENGINEERED? - T +INSTANCE-NAME-TEMPLATE - PWY-* +PREDECESSORS - ("1.2.1.13-RXN" "1.18.1.2-RXN") +PREDECESSORS - PWY-101 +PREDECESSORS - ("ACETYL-COA-ACETYLTRANSFER-RXN" "PYRUVDEH-RXN") +PREDECESSORS - ("PYRUVDEH-RXN" "PEPDEPHOS-RXN") +PREDECESSORS - ("PEPDEPHOS-RXN" "2PGADEHYDRAT-RXN") +PREDECESSORS - ("2PGADEHYDRAT-RXN" "3PGAREARR-RXN") +PREDECESSORS - ("3PGAREARR-RXN" "RIBULOSE-BISPHOSPHATE-CARBOXYLASE-RXN") +PREDECESSORS - CALVIN-PWY +PREDECESSORS - PWY-7216 +PRIMARIES - ("1.2.1.13-RXN" ("DPG" "NADPH") ("GAP" "NADP")) +PRIMARIES - ("PYRUVDEH-RXN" ("PYRUVATE") ("ACETYL-COA")) +REACTION-LAYOUT - (PWY-101 (:LEFT-PRIMARIES) (:DIRECTION :L2R) (:RIGHT-PRIMARIES)) +REACTION-LAYOUT - (PYRUVDEH-RXN (:LEFT-PRIMARIES PYRUVATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES CARBON-DIOXIDE ACETYL-COA)) +REACTION-LAYOUT - (PEPDEPHOS-RXN (:LEFT-PRIMARIES PYRUVATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (3PGAREARR-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :R2L) (:RIGHT-PRIMARIES G3P)) +REACTION-LAYOUT - (2PGADEHYDRAT-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :L2R) (:RIGHT-PRIMARIES WATER PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (CALVIN-PWY (:LEFT-PRIMARIES) (:DIRECTION :L2R) (:RIGHT-PRIMARIES)) +REACTION-LAYOUT - (PWY-7216 (:LEFT-PRIMARIES) (:DIRECTION :L2R) (:RIGHT-PRIMARIES)) +REACTION-LIST - PWY-101 +REACTION-LIST - PYRUVDEH-RXN +REACTION-LIST - PEPDEPHOS-RXN +REACTION-LIST - 3PGAREARR-RXN +REACTION-LIST - 2PGADEHYDRAT-RXN +REACTION-LIST - CALVIN-PWY +REACTION-LIST - PWY-7216 +SPECIES - TAX-1488 +SPECIES - TAX-272562 +SPECIES - TAX-106590 +SPECIES - TAX-511145 +SPECIES - TAX-1148 +SUB-PATHWAYS - PWY-101 +SUB-PATHWAYS - CALVIN-PWY +SUB-PATHWAYS - PWY-7216 +SYNONYMS - photosynthetic 3-hydroxybutyrate biosynthesis (engineered) +TAXONOMIC-RANGE - TAX-2 +// +UNIQUE-ID - PWY-7238 +TYPES - Sucrose-Biosynthesis +COMMON-NAME - sucrose biosynthesis II +CITATIONS - RAMON08 +CITATIONS - 16661543 +CITATIONS - 17080591 +CITATIONS - 20696445 +CITATIONS - 14996213:EV-EXP-IMP:3572033341:dreher +CITATIONS - 23393426:EV-EXP-TAS:3572034230:dreher +CITATIONS - 16640603:EV-EXP:3572112590:dreher +CITATIONS - 16980562:EV-EXP:3572112590:dreher +COMMENT - General Background +/ +/|FRAME: SUCROSE Sucrose| is an important disaccharide in plants and plays a major role in moving carbon through the plant via the phloem from "source" tissues such as photosynthesizing leaves to "sink" tissues such as roots |CITS:[23393426]|. In the light, triose phosphate, the product of photosynthetic carbon fixation, is transported from the chloroplast into the cytoplasm where it is transformed to hexose phosphate by enzymes of the gluconeogenesis pathway. These hexoses are then used in |FRAME: SUCSYN-PWY sucrose biosynthesis|. However, as shown in this pathway, |FRAME: SUCROSE| is also produced from the |FRAME: PWY-6724 degradation of starch reserves| using |FRAME: MALTOSE| and |FRAME: GLC| exported from the chloroplast |CITS:[23393426]|. +/ +/About This Pathway +/ +/During |FRAME: PWY-6724 starch breakdown| in the chloroplast, |FRAME: MALTOSE| and |FRAME: GLC| are liberated through a cascade of different enzymatic reactions. |FRAME: MALTOSE| can then be transported to the cytosol via |FRAME: AT5G17520-MONOMER MEX1| while |FRAME: GLC| can be transported by |FRAME:AT5G16150-MONOMER pGlcT|. +/ +/In the cytosol, the |FRAME: MALTOSE| is used by |FRAME: AT2G40840-MONOMER DPE2| to attach glucosyl units to the poorly defined class of compounds referred to as |FRAME: Soluble-Heteroglycans Soluble HeteroGlycans| (SHG). This liberates one glucose directly, but |FRAME: AT3G46970-MONOMER PHS2| can also liberate the deposited glucose from SHG in the form of |FRAME: GLC-1-P| |CITS: [16980562][23393426][16640603]|. This can then be used in a series of reactions shared with the other |FRAME: SUCSYN-PWY sucrose biosynthesis pathway|. Namely, |FRAME: GLC-1-P| can be converted to |FRAME: CPD-12575| and then |FRAME:SUCROSE| via a |FRAME: SUCROSE-6P| intermediate. +/ +/Meanwhile, the |FRAME: GLC| derived from |FRAME: PWY-6724 starch degradation| can be converted to |FRAME: GLC-6-P| vias the activity of cytosolic hexokinase. This product can also then be funneled toward the production of |FRAME: GLC-1-P| via the activity of a |FRAME: AT5G51820-MONOMER phosphoglucomutase|. +/ +/There is another enzyme that can form sucrose - |FRAME: EC-2.4.1.13|. However, the name of this latter enzyme is misleading, since it has been shown that under most physiological conditions it catalyzes a sucrose cleavage reaction, and is thus involved in sucrose degradation |CITS: [plantbiochemistry97]| (see |FRAME: PWY-3801|). +CREDITS - PMN +CREDITS - dreher +INSTANCE-NAME-TEMPLATE - PWY-* +PATHWAY-LINKS - (MALTOSE (TRANS-RXN-239 . :INCOMING) PWY-6724) +PATHWAY-LINKS - ("D-glucopyranose" PWY-6724 (RXN-14352 . :INCOMING)) +PREDECESSORS - ("SUCROSE-PHOSPHATE-SYNTHASE-RXN" "PGLUCISOM-RXN") +PREDECESSORS - ("PGLUCISOM-RXN" "GLUCOKIN-RXN") +PREDECESSORS - ("GLUC1PURIDYLTRANS-RXN" "PHOSPHOGLUCMUT-RXN") +PREDECESSORS - ("PHOSPHOGLUCMUT-RXN" "GLUCOKIN-RXN") +PREDECESSORS - ("GLUCOKIN-RXN" "RXN-14354") +PREDECESSORS - ("RXN-14353" "RXN-14354") +PREDECESSORS - ("GLUC1PURIDYLTRANS-RXN" "RXN-14353") +PREDECESSORS - ("SUCROSE-PHOSPHATASE-RXN" "SUCROSE-PHOSPHATE-SYNTHASE-RXN") +PREDECESSORS - ("SUCROSE-PHOSPHATE-SYNTHASE-RXN" "GLUC1PURIDYLTRANS-RXN") +PRIMARIES - ("RXN-14354" ("MALTOSE") ("GLC")) +PRIMARIES - ("SUCROSE-PHOSPHATE-SYNTHASE-RXN" ("FRUCTOSE-6P" "CPD-12575") ("SUCROSE-6P")) +PRIMARY-PRODUCTS - SUCROSE +RATE-LIMITING-STEP - SUCROSE-PHOSPHATE-SYNTHASE-RXN +REACTION-LAYOUT - (GLUCOKIN-RXN (:LEFT-PRIMARIES Glucopyranose) (:DIRECTION :L2R) (:RIGHT-PRIMARIES D-glucopyranose-6-phosphate)) +REACTION-LAYOUT - (PHOSPHOGLUCMUT-RXN (:LEFT-PRIMARIES GLC-1-P) (:DIRECTION :R2L) (:RIGHT-PRIMARIES D-glucopyranose-6-phosphate)) +REACTION-LAYOUT - (PGLUCISOM-RXN (:LEFT-PRIMARIES D-glucopyranose-6-phosphate) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (GLUC1PURIDYLTRANS-RXN (:LEFT-PRIMARIES GLC-1-P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES CPD-12575)) +REACTION-LAYOUT - (RXN-14353 (:LEFT-PRIMARIES Soluble-Heteroglycans) (:DIRECTION :L2R) (:RIGHT-PRIMARIES GLC-1-P Soluble-Heteroglycans)) +REACTION-LAYOUT - (RXN-14354 (:LEFT-PRIMARIES Glucopyranose Soluble-Heteroglycans) (:DIRECTION :R2L) (:RIGHT-PRIMARIES MALTOSE Soluble-Heteroglycans)) +REACTION-LAYOUT - (SUCROSE-PHOSPHATASE-RXN (:LEFT-PRIMARIES SUCROSE-6P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES SUCROSE)) +REACTION-LAYOUT - (SUCROSE-PHOSPHATE-SYNTHASE-RXN (:LEFT-PRIMARIES FRUCTOSE-6P CPD-12575) (:DIRECTION :L2R) (:RIGHT-PRIMARIES SUCROSE-6P)) +REACTION-LIST - GLUCOKIN-RXN +REACTION-LIST - PHOSPHOGLUCMUT-RXN +REACTION-LIST - PGLUCISOM-RXN +REACTION-LIST - GLUC1PURIDYLTRANS-RXN +REACTION-LIST - RXN-14353 +REACTION-LIST - RXN-14354 +REACTION-LIST - SUCROSE-PHOSPHATASE-RXN +REACTION-LIST - SUCROSE-PHOSPHATE-SYNTHASE-RXN +SPECIES - TAX-4081 +SPECIES - TAX-3888 +SPECIES - TAX-4113 +SPECIES - TAX-3562 +SPECIES - ORG-5993 +SYNONYMS - sucrose biosynthesis II (from starch degradation intermediates) +SYNONYMS - sucrose biosynthesis II (plant cytosol) +TAXONOMIC-RANGE - TAX-33090 +// +UNIQUE-ID - PWY-7347 +TYPES - Sucrose-Biosynthesis +COMMON-NAME - sucrose biosynthesis III +CITATIONS - 23865613:EV-EXP-IDA:3585940247:caspi +COMMENT - General Background +/ +/|FRAME: SUCROSE Sucrose| is the major product of photosynthesis in most plants and is known to be essential for their growth, development, carbon storage, signal transduction and stress protection |CITS: [11005202]|. +/Sucrose is also found in cyanobacteria, and the ability to synthesize sucrose is a widespread feature of these organisms |CITS: [21054739]|. In addition, sucrose is produced by many nonphotosynthetic aerobic methanotrophic and methanol-utilizing bacteria |CITS: [1055047][12656177][14529181][23808151][23865613]|. +/ +/In photosynthetic organisms, the product of photosynthetic carbon fixation (|FRAME: GAP|) is transported from the chloroplast into the cytoplasm, where it is transformed to hexose phosphate by enzymes of the |FRAME: GLUCONEO-PWY gluconeogenesis| pathway. In plants, these hexose phosphates are used to synthesize sucrose, the form in which most fixed organic carbon is translocated from photosynthetic tissue to non-photosynthetic organs. Sucrose also provides substrates for plant storage glycosides such as |FRAME: Starch starch| and |FRAME: Fructans fructans|. Storage glycosides, including sucrose, are mobilized and utilized during seed germination and plant growth. +/ +/In marine and freshwater cyanobacteria, sucrose fulfils a different role. It is often synthesized in response to salt or temperature stress and seems to maintain the osmotic balance and to stabilize protein and membrane structure and function |CITS: [Reed86][7854254]|. Methanotrophic and methanol-utilizing bacteria also synthesize sucrose as a secondary osmotic compound, along with the major compatible solute |FRAME: ECTOINE|. +/ +/About This Pathway +/ +/Sucrose synthesis is performed by generating the phosphorylated form, |FRAME: SUCROSE-6P| (the "F" indicates that the phosphate group is attached to the furanose moiety), followed by dephosphorylation. The first step is catalyzed by |FRAME: EC-2.4.1.14|, which condenses |FRAME: FRUCTOSE-6P| with |FRAME: CPD-12575|. The second step is catalyzed by |FRAME: EC-3.1.3.24|, which hydrolyzes |FRAME: SUCROSE-6P| to |FRAME: SUCROSE|. In nonphotosynthetic bacteria the two functions are catalyzed by a single bifunctional enzyme |CITS: [23865613]|. +/ +/A similar pathway occurs in photosynthetic organisms. However, in those organisms both precursors originate from biosynthetic-derived carbon (see |FRAME: SUCSYN-PWY|). +CREDITS - SRI +CREDITS - caspi +INSTANCE-NAME-TEMPLATE - PWY-* +PATHWAY-LINKS - (CPD-12575 PWY-7343) +PATHWAY-LINKS - (|D-glucopyranose-6-phosphate| GLUCONEO-PWY) +PREDECESSORS - ("SUCROSE-PHOSPHATE-SYNTHASE-RXN" "PGLUCISOM-RXN") +PREDECESSORS - PWY-7343 +PREDECESSORS - ("SUCROSE-PHOSPHATASE-RXN" "SUCROSE-PHOSPHATE-SYNTHASE-RXN") +PRIMARIES - ("SUCROSE-PHOSPHATE-SYNTHASE-RXN" ("FRUCTOSE-6P" "CPD-12575") ("SUCROSE-6P")) +PRIMARY-PRODUCTS - SUCROSE +REACTION-LAYOUT - (PGLUCISOM-RXN (:LEFT-PRIMARIES D-glucopyranose-6-phosphate) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (SUCROSE-PHOSPHATASE-RXN (:LEFT-PRIMARIES SUCROSE-6P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES SUCROSE)) +REACTION-LAYOUT - (SUCROSE-PHOSPHATE-SYNTHASE-RXN (:LEFT-PRIMARIES FRUCTOSE-6P CPD-12575) (:DIRECTION :L2R) (:RIGHT-PRIMARIES SUCROSE-6P)) +REACTION-LIST - PGLUCISOM-RXN +REACTION-LIST - SUCROSE-PHOSPHATASE-RXN +REACTION-LIST - SUCROSE-PHOSPHATE-SYNTHASE-RXN +SPECIES - TAX-265072 +TAXONOMIC-RANGE - TAX-32011 +TAXONOMIC-RANGE - TAX-40222 +TAXONOMIC-RANGE - TAX-429 +TAXONOMIC-RANGE - TAX-39773 +// +UNIQUE-ID - PWY-7383 +TYPES - Fermentation +COMMON-NAME - anaerobic energy metabolism (invertebrates, cytosol) +CHIMERIC? - T +CITATIONS - 7984874:EV-EXP-TAS:3589730616:fulcher +CITATIONS - 22688819:EV-EXP-TAS:3589730616:fulcher +CITATIONS - 13973395:EV-EXP-IDA:3590246498:fulcher +CITATIONS - DEZWAANA73:EV-EXP-IDA-RADIO:3590246498:fulcher +CITATIONS - COLLICUTJM77:EV-EXP-IDA-RADIO:3590246498:fulcher +CITATIONS - FELBECKH80:EV-EXP-IDA:3590246498:fulcher +CITATIONS - KLUYTMANSJH83:EV-EXP-IDA:3590246498:fulcher +CITATIONS - SCHOTTLERU84:EV-EXP-IDA:3590246498:fulcher +COMMENT - General Background +/ +/Some invertebrates, protists and fungi must survive prolonged exposure to hypoxia or anoxia. These facultative anaerobes may contain either mitochondria that function anaerobically, or hydrogenosomes as cellular organelles in which reactions of anaerobic respiration occur. Most anaerobic mitochondria use endogenously produced electron acceptors such as |FRAME: FUM| to generate |FRAME: SUC| via membrane-bound fumarate reductase. This enzyme is usually associated with the electron carrier |FRAME: Rhodoquinones "rhodoquinone"|, proton-pumping, and ATP synthase. The pathway shown here has been experimentally demonstrated in some marine invertebrates, but variations of it can be found in other organisms such as the parasites |FRAME: TAX-6251| and |FRAME: TAX-6192| (see below) (reviewed in |CITS: [22688819][12594928][12417132][9693724][7998964]|). +/ +/Marine invertebrates can utilize several different anaerobic energy-yielding metabolic pathways when exposed to prolonged conditions of environmental or functional hypoxia or anoxia. These include opine and/or lactate production (see pathways |FRAME: PWY-7351| and |FRAME: PWY-5481|), phosphagen utilization (see |FRAME: MONOMER-18221|), as well as this pathway and the linked pathway |FRAME: PWY-7384| (together referred to as the aspartate-succinate pathway, see |FRAME: PWY-7389|). In addition, metabolic depression can also occur during anaerobiosis resulting in reduction of metabolism below the standard metabolic rate (reviewed in |CITS: [7984874][DEZWAANA96]|. +/ +/The anaerobic energy metabolism of parasites (metazoan, protozoan and fungal) has also been extensively studied (reviewed in |CITS: [22688819]|) (see pathway class |FRAME: Fermentation|). +/ +/About This Pathway +/ +/In marine invertebrates the cytosolic end product of glycolysis, |FRAME: PYRUVATE|, is a substrate for opine and lactate synthesis (as indicated by the pathway links). It is also a substrate for the coupled transamination reactions in which |FRAME: L-ALPHA-ALANINE| is produced and |FRAME: L-ASPARTATE| is transaminated to |FRAME: OXALACETIC_ACID| as shown here. |FRAME: L-ASPARTATE| transamination is thus coupled to |FRAME: Glycogens "glycogen"| fermentation |CITS: [13973395][SCHOTTLERU84]|. |FRAME: OXALACETIC_ACID "Oxaloacetate"| is reduced to |FRAME: MAL| by cytosolic malate dehydrogenase. |FRAME: MAL| is then transported into the mitochondrion where it is anaerobically metabolized to |FRAME: SUC|, |FRAME: PROPIONATE| (propionate) and |FRAME: ACET| (as shown in the linked pathway |FRAME: PWY-7384|). Mitochondrial |FRAME: MAL| can also be oxidized to |FRAME: OXALACETIC_ACID| and enter the TCA cycle which runs at a lower rate during anaerobiosis (|CITS: [FELBECKH80]| and reviewed in |CITS: [7984874]| (see |FRAME: PWY66-398|). +/ +/During the anaerobic degradation of |FRAME: L-ASPARTATE| in the cytosol, the |FRAME: NAD| produced by malate dehydrogenase allows continuous oxidation of |FRAME: GAP| in the glycolytic pathway (see pathway |FRAME: ANAGLYCOLYSIS-PWY|). Studies have shown that |FRAME: L-ASPARTATE| degradation and the concomitant synthesis of |FRAME: L-ALPHA-ALANINE| occurs during early anaerobiosis and suggest that |FRAME: L-ALPHA-ALANINE| is an end product |CITS: [SCHOTTLERU84]|. In addition, in some species alanine racemase can result in the production of both |FRAME: L-ALPHA-ALANINE| and |FRAME: D-ALANINE| |CITS: [11897200]|. +/ +/During sustained hypoxia, phosphoenolpyruvate carboxykinase preferentially catalyzes the carboxylation of |FRAME: PHOSPHO-ENOL-PYRUVATE| to |FRAME: OXALACETIC_ACID|. Under these conditions |FRAME: OXALACETIC_ACID| is derived from |FRAME: Glycogens "glycogen"| degradation |CITS: [SCHOTTLERU84]|. |FRAME: OXALACETIC_ACID "Oxaloacetate"| is reduced to |FRAME: MAL| and glycolytic |FRAME: NADH| is reoxidized. |FRAME: MAL| then enters the mitochondrion where it is both oxidized to |FRAME: PYRUVATE| and reduced to |FRAME: FUM| (referred to as malate dismutation), ultimately producing |FRAME: SUC|, |FRAME: PROPIONATE| (propionate) and |FRAME: ACET| (as indicated in the link to pathway |FRAME: PWY-7384|). +/ +/The GTP/ITP-dependent phosphoenolpyruvate carboxykinase (|FRAME: EC-4.1.1.32|) shown in this pathway has been demonstrated in |FRAME: TAX-6548| |CITS: [22491035]|, |FRAME: TAX-6251| |CITS: [3759946]|, |FRAME: TAX-6343| |CITS: [SCHOTTLERU81]| and |FRAME: TAX-6191| |CITS: [7118371]| species and predicted for |FRAME: TAX-6564| |CITS: [17486628]|. However some parasites such as trypanosomes as well as fungi and bacteria utilize an ATP-dependent phosphoenolpyruvate carboxykinase (|FRAME: EC-4.1.1.49|) |CITS: [7766679][8294043]|. +/ +/Note that the adult forms of the parasitic worms |FRAME: TAX-6252|, |FRAME: TAX-6253| and |FRAME: TAX-6192| have similar cytosolic anaerobic energy metabolism pathways except that |FRAME: OXALACETIC_ACID| is derived only from |FRAME: Glycogens "glycogen"| degradation and not from |FRAME: L-ASPARTATE| transamination (reviewed in |CITS: [22688819]|). +CREDITS - SRI +CREDITS - fulcher +IN-PATHWAY - PWY-7389 +INSTANCE-NAME-TEMPLATE - PWY-* +KEY-REACTIONS - 4.1.1.32-RXN +KEY-REACTIONS - MALATE-DEH-RXN +PATHWAY-LINKS - (PYRUVATE PWY-5481 PWY-7351) +PATHWAY-LINKS - (MAL PWY-7384) +PREDECESSORS - ("MALATE-DEH-RXN" "RXN-12481") +PREDECESSORS - ("RXN-12481") +PREDECESSORS - ("MALATE-DEH-RXN" "4.1.1.32-RXN") +PREDECESSORS - ("MALATE-DEH-RXN" "ASPAMINOTRANS-RXN") +PREDECESSORS - ("ASPAMINOTRANS-RXN") +PREDECESSORS - ("ASPAMINOTRANS-RXN" "ALANINE-AMINOTRANSFERASE-RXN") +PREDECESSORS - ("ALANINE-AMINOTRANSFERASE-RXN" "ASPAMINOTRANS-RXN") +PREDECESSORS - ("ALARACECAT-RXN" "ALANINE-AMINOTRANSFERASE-RXN") +PREDECESSORS - ("ALANINE-AMINOTRANSFERASE-RXN" "PEPDEPHOS-RXN") +PREDECESSORS - ("PEPDEPHOS-RXN") +PRIMARIES - ("RXN-12481" ("PHOSPHO-ENOL-PYRUVATE") ("OXALACETIC_ACID")) +PRIMARIES - ("4.1.1.32-RXN" ("PHOSPHO-ENOL-PYRUVATE") ("OXALACETIC_ACID")) +PRIMARIES - ("MALATE-DEH-RXN" ("OXALACETIC_ACID") ("MAL")) +PRIMARIES - ("ASPAMINOTRANS-RXN" ("L-ASPARTATE" "2-KETOGLUTARATE") ("GLT" "OXALACETIC_ACID")) +PRIMARIES - ("ALANINE-AMINOTRANSFERASE-RXN" ("GLT" "PYRUVATE") ("2-KETOGLUTARATE" "L-ALPHA-ALANINE")) +PRIMARIES - ("PEPDEPHOS-RXN" ("PHOSPHO-ENOL-PYRUVATE") ("PYRUVATE")) +REACTION-LAYOUT - (RXN-12481 (:LEFT-PRIMARIES OXALACETIC_ACID) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (4.1.1.32-RXN (:LEFT-PRIMARIES OXALACETIC_ACID) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (MALATE-DEH-RXN (:LEFT-PRIMARIES MAL) (:DIRECTION :R2L) (:RIGHT-PRIMARIES OXALACETIC_ACID)) +REACTION-LAYOUT - (ASPAMINOTRANS-RXN (:LEFT-PRIMARIES 2-KETOGLUTARATE L-ASPARTATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES GLT OXALACETIC_ACID)) +REACTION-LAYOUT - (ALARACECAT-RXN (:LEFT-PRIMARIES L-ALPHA-ALANINE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES D-ALANINE)) +REACTION-LAYOUT - (ALANINE-AMINOTRANSFERASE-RXN (:LEFT-PRIMARIES L-ALPHA-ALANINE 2-KETOGLUTARATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PYRUVATE GLT)) +REACTION-LAYOUT - (PEPDEPHOS-RXN (:LEFT-PRIMARIES PYRUVATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LIST - RXN-12481 +REACTION-LIST - 4.1.1.32-RXN +REACTION-LIST - MALATE-DEH-RXN +REACTION-LIST - ASPAMINOTRANS-RXN +REACTION-LIST - ALARACECAT-RXN +REACTION-LIST - ALANINE-AMINOTRANSFERASE-RXN +REACTION-LIST - PEPDEPHOS-RXN +SPECIES - TAX-6344 +SPECIES - TAX-6252 +SPECIES - TAX-6253 +SPECIES - TAX-141464 +SPECIES - TAX-29159 +SPECIES - TAX-6192 +SPECIES - TAX-6549 +SPECIES - TAX-6550 +SPECIES - TAX-29158 +SPECIES - TAX-6551 +SPECIES - TAX-6446 +SUPER-PATHWAYS - PWY-7389 +TAXONOMIC-RANGE - TAX-6433 +TAXONOMIC-RANGE - TAX-6231 +TAXONOMIC-RANGE - TAX-6157 +TAXONOMIC-RANGE - TAX-6340 +TAXONOMIC-RANGE - TAX-6447 +// +UNIQUE-ID - PWY-7385 +TYPES - Alcohol-Biosynthesis +COMMON-NAME - 1,3-propanediol biosynthesis (engineered) +CITATIONS - 14580573:EV-EXP-TAS:3589751627:caspi +COMMENT - |FRAME: CPD-347| (PDO) is produced in nature by a large number of bacteria, including Citrobacter, Clostridium, +/Enterobacter, Klebsiella and Lactobacillus species, via the fermentation of |FRAME: GLYCEROL|. +/A common problem with anaerobic growth is the generation of excess reducing equivalents in the form of NADH, whose reoxidation to NAD+ requires formation of a by-product that can serve as an electron sink. In the case of glycerol, the process comprises two steps - the rearrangement of glycerol to |FRAME: HYDROXYPROPANAL|, followed by its NADH-dependent reduction to |FRAME: CPD-347|, which is excreted from the cell. +/ +/PDO is used for the production of poly(propylene terephtalate), a polyester prepared from |FRAME: TEREPHTHALATE| and PDO that has highly desired properties for some large volume markets (such as fibers used in apparel and carpet applications). This pathway describes the production of PDO from D-glucose in an engineered |FRAME: TAX-562| strain that incorporates glycerol fermentation enzymes from |FRAME: TAX-573| and |FRAME: TAX-4932|. +/ +/The early part of the pathway involves native |FRAME: TAX-562| enzymes of glycolysis, up to the splitting of a |FRAME: FRUCTOSE-16-DIPHOSPHATE| molecule into |FRAME: GAP| and |FRAME: DIHYDROXY-ACETONE-PHOSPHATE|. +/ +/Two major changes were engineered into the |FRAME: TAX-562| host strain: the deletion of the PTS system, forcing the transport and phosphorylation of glucose to be performed by the |FRAME: EG12148| galactose permease and |FRAME: EC-2.7.1.2|, respectively, which is more energetically efficient than the PTS system, and the down-regulation of |FRAME: EC-1.2.1.12| (gap), resulting in less carbon being directed towards the TCA cycle, is thus more carbon available for fermentation to glycerol. +/ +/The conversion of |FRAME: DIHYDROXY-ACETONE-PHOSPHATE| to |FRAME: GLYCEROL| is carried out by two |FRAME: TAX-4932| enzymes: |FRAME: EC-1.1.1.8| (encoded by the |FRAME: YDL022W| gene) and |FRAME: EC-3.1.3.21| (encoded by |FRAME: YER062C|). +/ +/The conversion of |FRAME: GLYCEROL| to |FRAME: HYDROXYPROPANAL| is catalyzed by the coenzyme-B12-dependent |FRAME: CPLX-3581| from |FRAME: TAX-573|. The enzyme undergoes rapid "suicidal" inactivation by glycerol during catalysis resulting in damaged coenzyme B12, and requires a reactivation factor for continuous activity |CITS: [6997273]|. That factor is a heterotetramer containing two elongated 63 kDa alpha subunits (encoded by the dhaF gene) and two globular 14 kDa beta subunits (encoded by dhaG) |CITS: [10383983][12517345]|. Thus the introduction of the enzyme requires five genes - three genes encoding |FRAME: CPLX-3581| and two genes encoding its reactivation factor. +/ +/The last enzyme in the pathway is an |FRAME: TAX-562| enzyme - the |FRAME: CPLX0-7667| encoded by |FRAME: G7564|. Unlike the enzymes dedicated to the conversion of |FRAME: HYDROXYPROPANAL| to |FRAME: CPD-347|, which utilize NADH, this enzyme utilizes NADPH, and results in higher titers of PDO |CITS: [14580573]|. +CREDITS - SRI +CREDITS - caspi +ENGINEERED? - T +ENZYMES-NOT-USED - YIL053W-MONOMER +ENZYMES-NOT-USED - CPLX-4261 +ENZYMES-NOT-USED - YCL040W-MONOMER +INSTANCE-NAME-TEMPLATE - PWY-* +PREDECESSORS - ("GLUCOKIN-RXN" "RXN0-7077") +PREDECESSORS - ("6PFRUCTPHOS-RXN" "PGLUCISOM-RXN") +PREDECESSORS - ("PGLUCISOM-RXN" "GLUCOKIN-RXN") +PREDECESSORS - ("RXN0-6487" "GLYCEROL-DEHYDRATASE-RXN") +PREDECESSORS - ("GLYCEROL-DEHYDRATASE-RXN" "RXN-14965") +PREDECESSORS - ("RXN-14965" "1.1.1.8-RXN") +PREDECESSORS - ("1.1.1.8-RXN" "F16ALDOLASE-RXN") +PREDECESSORS - ("F16ALDOLASE-RXN" "6PFRUCTPHOS-RXN") +PRIMARIES - ("RXN0-7077" ("Glucopyranose") ("Glucopyranose")) +REACTION-LAYOUT - (GLUCOKIN-RXN (:LEFT-PRIMARIES Glucopyranose) (:DIRECTION :L2R) (:RIGHT-PRIMARIES D-glucopyranose-6-phosphate)) +REACTION-LAYOUT - (PGLUCISOM-RXN (:LEFT-PRIMARIES D-glucopyranose-6-phosphate) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (RXN0-7077 (:LEFT-PRIMARIES Glucopyranose) (:DIRECTION :L2R) (:RIGHT-PRIMARIES Glucopyranose)) +REACTION-LAYOUT - (RXN0-6487 (:LEFT-PRIMARIES CPD-347) (:DIRECTION :R2L) (:RIGHT-PRIMARIES HYDROXYPROPANAL)) +REACTION-LAYOUT - (GLYCEROL-DEHYDRATASE-RXN (:LEFT-PRIMARIES GLYCEROL) (:DIRECTION :L2R) (:RIGHT-PRIMARIES HYDROXYPROPANAL)) +REACTION-LAYOUT - (1.1.1.8-RXN (:LEFT-PRIMARIES GLYCEROL-3P) (:DIRECTION :R2L) (:RIGHT-PRIMARIES DIHYDROXY-ACETONE-PHOSPHATE)) +REACTION-LAYOUT - (RXN-14965 (:LEFT-PRIMARIES GLYCEROL-3P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES GLYCEROL)) +REACTION-LAYOUT - (F16ALDOLASE-RXN (:LEFT-PRIMARIES FRUCTOSE-16-DIPHOSPHATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES DIHYDROXY-ACETONE-PHOSPHATE)) +REACTION-LAYOUT - (6PFRUCTPHOS-RXN (:LEFT-PRIMARIES FRUCTOSE-6P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-16-DIPHOSPHATE)) +REACTION-LIST - GLUCOKIN-RXN +REACTION-LIST - PGLUCISOM-RXN +REACTION-LIST - RXN0-7077 +REACTION-LIST - RXN0-6487 +REACTION-LIST - GLYCEROL-DEHYDRATASE-RXN +REACTION-LIST - 1.1.1.8-RXN +REACTION-LIST - RXN-14965 +REACTION-LIST - F16ALDOLASE-RXN +REACTION-LIST - 6PFRUCTPHOS-RXN +SPECIES - TAX-511145 +SPECIES - TAX-573 +SPECIES - TAX-4932 +SYNONYMS - 1,3-PDO biosynthesis +TAXONOMIC-RANGE - TAX-4751 +TAXONOMIC-RANGE - TAX-2 +// +UNIQUE-ID - PWY-8004 +TYPES - Entner-Duodoroff-Pathways +TYPES - Super-Pathways +COMMON-NAME - Entner-Doudoroff pathway I +CITATIONS - 12981024:EV-EXP-IDA:3734891971:caspi +COMMENT - The Entner-Doudoroff pathway provides cells with an alternative to glycolysis for fermenting sugars. Using this pathway, the cells can maximize the production of reducing power at the expense of ATP production |CITS: [12981024]|. +/ +/The |FRAME: OXIDATIVEPENT-PWY "oxidative branch of the pentose phosphate pathway"| converts |FRAME: D-glucopyranose-6-phosphate| to |FRAME: CPD-2961| in two steps. Instead of proceeding to the |FRAME: NONOXIPENT-PWY "non-oxidative branch"| of that pathway, which forms several metabolite precursors, the Entner-Duodoroff pathway provides a shunt that returns |FRAME: CPD-2961| to glycolysis via the intermediate |FRAME: GAP|. +/ +/This pathway is important to |FRAME:TAX-562| because it enables the organism to metabolize sugar acids, which are significant nutrients in both of its habitats, intestinal and aquatic. Strains that are mutationally blocked in this pathway are unable to grow on gluconate, glucuronate, or galacturonate and are also unable to colonize the mouse intestine |CITS: [8751891]|. The uronic acids feed into the pathway's intermediate |FRAME: 2-KETO-3-DEOXY-6-P-GLUCONATE|, so the dependence of their metabolism on an intact Entner-Doudoroff pathway is clear |CITS: [9657988]|. The dependence of gluconate's metabolism on an intact Entner-Doudoroff pathway is less obvious because it is also metabolized via the pentose phosphate pathway. +/ +/Enzymes of the Entner-Doudoroff pathway are induced by growth on gluconate, glucuronate, or methyl-β-D-glucuronide; phosphate or carbon limitation |CITS: [15659677]|. +CREDITS - SRI +CREDITS - caspi +INSTANCE-NAME-TEMPLATE - PWY-* +KEY-REACTIONS - PGLUCONDEHYDRAT-RXN +KEY-REACTIONS - KDPGALDOL-RXN +PATHWAY-LINKS - (PYRUVATE PYRUVDEHYD-PWY) +PATHWAY-LINKS - (|D-glucopyranose-6-phosphate| (TRANS-RXN-157 . :INCOMING)) +PREDECESSORS - ("PEPDEPHOS-RXN" "2PGADEHYDRAT-RXN") +PREDECESSORS - ("2PGADEHYDRAT-RXN" "RXN-15513") +PREDECESSORS - ("RXN-15513" "PHOSGLYPHOS-RXN") +PREDECESSORS - ("PHOSGLYPHOS-RXN" "GAPOXNPHOSPHN-RXN") +PREDECESSORS - ("GAPOXNPHOSPHN-RXN" "KDPGALDOL-RXN") +PREDECESSORS - ("PGLUCONDEHYDRAT-RXN" "6PGLUCONOLACT-RXN") +PREDECESSORS - ("6PGLUCONOLACT-RXN" "GLU6PDEHYDROG-RXN") +PREDECESSORS - ENTNER-DOUDOROFF-PWY +PREDECESSORS - OXIDATIVEPENT-PWY +PRIMARIES - ("KDPGALDOL-RXN" ("2-KETO-3-DEOXY-6-P-GLUCONATE") ("GAP" "PYRUVATE")) +REACTION-LAYOUT - (PEPDEPHOS-RXN (:LEFT-PRIMARIES PYRUVATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (2PGADEHYDRAT-RXN (:LEFT-PRIMARIES 2-PG) (:DIRECTION :L2R) (:RIGHT-PRIMARIES PHOSPHO-ENOL-PYRUVATE)) +REACTION-LAYOUT - (RXN-15513 (:LEFT-PRIMARIES 2-PG) (:DIRECTION :R2L) (:RIGHT-PRIMARIES G3P)) +REACTION-LAYOUT - (PHOSGLYPHOS-RXN (:LEFT-PRIMARIES G3P) (:DIRECTION :R2L) (:RIGHT-PRIMARIES DPG)) +REACTION-LAYOUT - (GAPOXNPHOSPHN-RXN (:LEFT-PRIMARIES GAP) (:DIRECTION :L2R) (:RIGHT-PRIMARIES DPG)) +REACTION-LAYOUT - (6PGLUCONOLACT-RXN (:LEFT-PRIMARIES D-6-P-GLUCONO-DELTA-LACTONE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES CPD-2961)) +REACTION-LAYOUT - (GLU6PDEHYDROG-RXN (:LEFT-PRIMARIES D-glucopyranose-6-phosphate) (:DIRECTION :L2R) (:RIGHT-PRIMARIES D-6-P-GLUCONO-DELTA-LACTONE)) +REACTION-LAYOUT - (ENTNER-DOUDOROFF-PWY (:LEFT-PRIMARIES) (:DIRECTION :L2R) (:RIGHT-PRIMARIES)) +REACTION-LIST - PEPDEPHOS-RXN +REACTION-LIST - 2PGADEHYDRAT-RXN +REACTION-LIST - RXN-15513 +REACTION-LIST - PHOSGLYPHOS-RXN +REACTION-LIST - GAPOXNPHOSPHN-RXN +REACTION-LIST - 6PGLUCONOLACT-RXN +REACTION-LIST - GLU6PDEHYDROG-RXN +REACTION-LIST - ENTNER-DOUDOROFF-PWY +SPECIES - TAX-511145 +SPECIES - TAX-2336 +SUB-PATHWAYS - ENTNER-DOUDOROFF-PWY +SYNONYMS - ED pathway I +TAXONOMIC-RANGE - TAX-2759 +TAXONOMIC-RANGE - TAX-2 +// +UNIQUE-ID - PWY-8013 +TYPES - UDP-Nac-Galactosamine-Biosynthesis +COMMON-NAME - UDP-N-acetyl-D-galactosamine biosynthesis III +CITATIONS - 29507091:EV-EXP-IDA:3740159175:caspi +COMMENT - In both eukaryotes and prokaryotes, sugar and amino sugar residues are converted to sugar nucleotides prior to their incorporation into structural polysaccharides via UDP-sugar transferases. |FRAME: CPD-14795| (UDP-GalNAc) is the amino sugar nucleotide donor of |FRAME: N-acetyl-D-galactosamine| (GalNAc) residues for the biosynthesis of cell surface structures. +/ +/Most organisms, from bacteria to eukarya, synthesize |FRAME: CPD-14795| from |FRAME: UDP-N-ACETYL-D-GLUCOSAMINE| by the action of |FRAME: EC-5.1.3.7| (see |FRAME: PWY-5512|). While the acido- and thermophilic crenarchaeon |FRAME: TAX-111955| can synthesize |FRAME: UDP-N-ACETYL-D-GLUCOSAMINE| via the |FRAME: UDPNAGSYN-PWY| pathway, it does not have |FRAME: EC-5.1.3.7|. +/ +/Instead, the organism was found to produce |FRAME: CPD-14795| via a novel pathway that utilizes several enzyme activities that have not been observed previously |CITS: [29507091]|. +/ +/Many of the enzymes that participate in |FRAME: UDP-N-ACETYL-D-GLUCOSAMINE| biosynthesis are promiscious in |FRAME: TAX-111955| and are able to act on the comparable galactosamine substrate. +/ +/Like the |FRAME: UDPNAGSYN-PWY| pathway, this pathway starts with |FRAME: D-glucopyranose-6-phosphate|, which is converted to |FRAME: D-GLUCOSAMINE-6-P| by the actions of |FRAME: EC-5.3.1.9| and |FRAME: EC-2.6.1.16|. However, instead of being converted to |FRAME: GLUCOSAMINE-1P|, |FRAME: D-GLUCOSAMINE-6-P| is epimerized into |FRAME: D-GALACTOSAMINE-6-PHOSPHATE| by a novel enzyme, |FRAME: EC-5.1.3.42|. +/ +/The rest of the pathway is catalyzed by enzymes that also participate in |FRAME: UDP-N-ACETYL-D-GLUCOSAMINE| biosynthesis. |FRAME: MONOMER-20593 "Phosphohexosamine mutase"| (which also catalyzes the activity of |FRAME: EC-5.4.2.10|) catalyzes the conversion of |FRAME: D-GALACTOSAMINE-6-PHOSPHATE| to |FRAME: CPD0-1646|. This is followed by the action of the |FRAME: MONOMER-20592|, which catalyzes both acetylation and activation by UTP, thus forming the final product |FRAME: CPD-14795|. As the enzyme upstream, this enzyme also catalyzes the homologous reactions with glucosamine-based substrates during |FRAME: UDP-N-ACETYL-D-GLUCOSAMINE| biosynthesis. +/ +/The key enzyme of the pathway, |FRAME: EC-5.1.3.42|, has been found only in the |FRAME: TAX-28889 Crenarchaeota| |CITS: [29507091]|. +CREDITS - SRI +CREDITS - caspi +INSTANCE-NAME-TEMPLATE - PWY-* +KEY-REACTIONS - RXN-19878 +PREDECESSORS - ("L-GLN-FRUCT-6-P-AMINOTRANS-RXN" "PGLUCISOM-RXN") +PREDECESSORS - ("RXN-13760" "RXN-19880") +PREDECESSORS - ("RXN-19880" "RXN-19879") +PREDECESSORS - ("RXN-19878" "L-GLN-FRUCT-6-P-AMINOTRANS-RXN") +PREDECESSORS - ("RXN-19879" "RXN-19878") +PRIMARY-PRODUCTS - CPD-14795 +REACTION-LAYOUT - (PGLUCISOM-RXN (:LEFT-PRIMARIES D-glucopyranose-6-phosphate) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (RXN-13760 (:LEFT-PRIMARIES CPD-7246) (:DIRECTION :L2R) (:RIGHT-PRIMARIES CPD-14795)) +REACTION-LAYOUT - (RXN-19880 (:LEFT-PRIMARIES CPD0-1646) (:DIRECTION :L2R) (:RIGHT-PRIMARIES CPD-7246)) +REACTION-LAYOUT - (L-GLN-FRUCT-6-P-AMINOTRANS-RXN (:LEFT-PRIMARIES FRUCTOSE-6P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES D-GLUCOSAMINE-6-P)) +REACTION-LAYOUT - (RXN-19878 (:LEFT-PRIMARIES D-GLUCOSAMINE-6-P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES D-GALACTOSAMINE-6-PHOSPHATE)) +REACTION-LAYOUT - (RXN-19879 (:LEFT-PRIMARIES D-GALACTOSAMINE-6-PHOSPHATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES CPD0-1646)) +REACTION-LIST - PGLUCISOM-RXN +REACTION-LIST - RXN-13760 +REACTION-LIST - RXN-19880 +REACTION-LIST - L-GLN-FRUCT-6-P-AMINOTRANS-RXN +REACTION-LIST - RXN-19878 +REACTION-LIST - RXN-19879 +SPECIES - TAX-43687 +SPECIES - TAX-2285 +SPECIES - TAX-43080 +SPECIES - TAX-2287 +SPECIES - TAX-111955 +TAXONOMIC-RANGE - TAX-28889 +// +UNIQUE-ID - RUMP-PWY +TYPES - Energy-Metabolism +TYPES - Formaldehyde-Oxidation +COMMON-NAME - formaldehyde oxidation I +CITATIONS - 353476:EV-EXP:3303667584:caspi +COMMENT - General Background +/ +/The detoxification of the highly toxic formaldehyde is a major biochemical necessity for most life forms. In the case of methylotrophic bacteria, formaldehyde is not just a toxic compound, but also a central intermediate. It has been suggested that the formaldehyde concentration in the cytoplasm of a methylotroph would rise to 100mM in less than 1 minute if formaldehyde consumption stopped |CITS: [11073907]|. Several different pathways for formaldehyde detoxification are known in bacteria, encoded by unrelated or distantly related genes. +/ +/About This Pathway +/ +/This cyclic pathway for the oxidation of formaldehyde exists in methylotrophs that possess the ribulose-monophosphate (RuMP) pathway for formaldehyde assimilation (see |FRAME: PWY-1861|) |CITS: [1909921][ 6768606][353476]|. The pathway involves several enzymes that are used by the RuMP cycle, namely |FRAME:CPLX-3443| (HPS) and |FRAME: CPLX-3445| |CITS: [10658669]|. +/ +/Unlike the RuMP cycle, there is no net fixation of formaldehyde in this pathway due to the release of a CO2 molecule. Rather, the organisms use this pathway to generate reducing power in the form of NADH and NADPH. +/Most obligate methanotrophs do not employ this pathway, and instead use a linear pathway for formaldehyde oxidation using formaldehyde dehydrogenase (see |FRAME: PWY-1801|). The organisms that do use this pathway fall into three groups: Gram-negative obligate methylotrohps, Gram-positive facultative methylotrophs, and thermotollerant Bacillus spp. |CITS: [12351229][1909921]|. +/ +/Recently it has been shown that these enzymes are also present in heterotrophs such as B. subtilis, and that they play a role in formaldehyde detoxification in these organisms |CITS: [10572115][14532071]|. However, it does not seem that the oxidation pathway is used in the heterotrophs. 14C labeled formaldehyde was incorporated into cellular material, indicating that it was the RuMP assimilative pathway which took place |CITS: [14532071]|. +CREDITS - SRI +CREDITS - caspi +CREDITS - O-18 +CREDITS - pellegrini-toole +INSTANCE-NAME-TEMPLATE - PWY-* +KEY-REACTIONS - R10-RXN +KEY-REACTIONS - R12-RXN +PREDECESSORS - ("6PGLUCONOLACT-RXN" "GLU6PDEHYDROG-RXN") +PREDECESSORS - ("GLU6PDEHYDROG-RXN" "PGLUCISOM-RXN") +PREDECESSORS - ("PGLUCISOM-RXN" "R12-RXN") +PREDECESSORS - ("R10-RXN" "RXN-3341") +PREDECESSORS - ("RXN-3341" "6PGLUCONOLACT-RXN") +PREDECESSORS - ("R12-RXN" "R10-RXN") +REACTION-LAYOUT - (GLU6PDEHYDROG-RXN (:LEFT-PRIMARIES D-glucopyranose-6-phosphate) (:DIRECTION :L2R) (:RIGHT-PRIMARIES D-6-P-GLUCONO-DELTA-LACTONE)) +REACTION-LAYOUT - (PGLUCISOM-RXN (:LEFT-PRIMARIES D-glucopyranose-6-phosphate) (:DIRECTION :R2L) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (RXN-3341 (:LEFT-PRIMARIES CPD-2961) (:DIRECTION :L2R) (:RIGHT-PRIMARIES RIBULOSE-5P)) +REACTION-LAYOUT - (6PGLUCONOLACT-RXN (:LEFT-PRIMARIES D-6-P-GLUCONO-DELTA-LACTONE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES CPD-2961)) +REACTION-LAYOUT - (R12-RXN (:LEFT-PRIMARIES CPD-26) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (R10-RXN (:LEFT-PRIMARIES CPD-26) (:DIRECTION :R2L) (:RIGHT-PRIMARIES RIBULOSE-5P)) +REACTION-LIST - GLU6PDEHYDROG-RXN +REACTION-LIST - PGLUCISOM-RXN +REACTION-LIST - RXN-3341 +REACTION-LIST - 6PGLUCONOLACT-RXN +REACTION-LIST - R12-RXN +REACTION-LIST - R10-RXN +SPECIES - TAX-405 +SPECIES - ORG-5879 +SPECIES - ORG-5914 +SPECIES - ORG-5917 +SYNONYMS - dissimilatory RUMP cycle +TAXONOMIC-RANGE - TAX-2 +// +UNIQUE-ID - SUCSYN-PWY +TYPES - Sucrose-Biosynthesis +TYPES - Super-Pathways +COMMON-NAME - sucrose biosynthesis I (from photosynthesis) +CITATIONS - plantbiochemistry97:EV-EXP:3484934926:peifenz +CITATIONS - 21253566:EV-EXP-IMP:3506806446:dreher +CITATIONS - 15012202:EV-EXP-TAS:3506807107:dreher +COMMENT - General Background +/ +/|FRAME: SUCROSE Sucrose| is the major product of photosynthesis in most plants and is known to be essential for their growth, development, carbon storage, signal transduction and stress protection |CITS: [11005202]|. +/Sucrose is also found in cyanobacteria, and the ability to synthesize sucrose is a widespread feature of these organisms |CITS: [21054739]|. In addition, sucrose is produced by many nonphotosynthetic aerobic methanotrophic and methanol-utilizing bacteria |CITS: [1055047][12656177][14529181][23808151][23865613]|. +/ +/In photosynthetic organisms, the product of photosynthetic carbon fixation (|FRAME: GAP|) is transported from the chloroplast into the cytoplasm, where it is transformed to |FRAME: FRUCTOSE-6P| by enzymes of the |FRAME: GLUCONEO-PWY gluconeogenesis| pathway. In plants, |FRAME: FRUCTOSE-6P| is used to synthesize sucrose, the form in which most fixed organic carbon is translocated from photosynthetic tissue to non-photosynthetic organs. Sucrose also provides substrates for plant storage glycosides such as |FRAME: Starch starch| and |FRAME: Fructans fructans|. Storage glycosides, including sucrose, are mobilized and utilized during seed germination and plant growth. +/ +/In marine and freshwater cyanobacteria, sucrose fulfils a different role. It is often synthesized in response to salt or temperature stress and seems to maintain the osmotic balance and to stabilize protein and membrane structure and function |CITS: [Reed86][7854254]|. Methanotrophic and methanol-utilizing bacteria also synthesize sucrose as a secondary osmotic compound, along with the major compatible solute |FRAME: ECTOINE| (see |FRAME: PWY-7347|). +/ +/About This Pathway +/ +/Sucrose synthesis is performed by generating the phosphorylated form, |FRAME: SUCROSE-6P| (the "F" indicates that the phosphate group is attached to the furanose moiety), followed by dephosphorylation. The first step is catalyzed by |FRAME: EC-2.4.1.14|, which condenses |FRAME: FRUCTOSE-6P| with |FRAME: CPD-12575|. The second step is catalyzed by |FRAME: EC-3.1.3.24|, which hydrolyzes |FRAME: SUCROSE-6P| to |FRAME: SUCROSE|. +/In photosynthetic organisms both precursors originate from photosynthetic-derived carbon, via |FRAME: FRUCTOSE-6P| |CITS: [20026474]|. +/ +/Most plant possess another enzyme that can form sucrose - |FRAME: EC-2.4.1.13|. However, the name of this enzyme is misleading, since it has been shown that under most physiological conditions it catalyzes a sucrose cleavage reaction, and is thus involved in sucrose degradation |CITS: [plantbiochemistry97]| (see |FRAME: PWY-3801|). +CREDITS - SRI +CREDITS - caspi +CREDITS - THE-ARABIDOPSIS-INFORMATION-RESOURCE +CREDITS - dreher +CREDITS - Iourovitski +INSTANCE-NAME-TEMPLATE - PWY-* +PATHWAY-LINKS - (DIHYDROXY-ACETONE-PHOSPHATE CALVIN-PWY) +PATHWAY-LINKS - (G3P CALVIN-PWY) +PREDECESSORS - ("PGLUCISOM-RXN" "F16BDEPHOS-RXN") +PREDECESSORS - ("PHOSPHOGLUCMUT-RXN" "PGLUCISOM-RXN") +PREDECESSORS - ("SUCROSE-PHOSPHATE-SYNTHASE-RXN" "GLUC1PURIDYLTRANS-RXN") +PREDECESSORS - PWY-7343 +PREDECESSORS - ("SUCROSE-PHOSPHATE-SYNTHASE-RXN" "F16BDEPHOS-RXN") +PREDECESSORS - ("GAPOXNPHOSPHN-RXN" "PHOSGLYPHOS-RXN") +PREDECESSORS - ("F16ALDOLASE-RXN" "GAPOXNPHOSPHN-RXN") +PREDECESSORS - ("F16BDEPHOS-RXN" "F16ALDOLASE-RXN") +PREDECESSORS - ("SUCROSE-PHOSPHATASE-RXN" "SUCROSE-PHOSPHATE-SYNTHASE-RXN") +PRIMARIES - ("SUCROSE-PHOSPHATE-SYNTHASE-RXN" ("FRUCTOSE-6P" "CPD-12575") ("SUCROSE-6P")) +PRIMARIES - ("F16ALDOLASE-RXN" ("GAP" "DIHYDROXY-ACETONE-PHOSPHATE") ("FRUCTOSE-16-DIPHOSPHATE")) +PRIMARY-PRODUCTS - SUCROSE +RATE-LIMITING-STEP - SUCROSE-PHOSPHATE-SYNTHASE-RXN +RATE-LIMITING-STEP - PHOSPHOGLUCMUT-RXN +REACTION-LAYOUT - (PGLUCISOM-RXN (:LEFT-PRIMARIES D-glucopyranose-6-phosphate) (:DIRECTION :R2L) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (PWY-7343 (:LEFT-PRIMARIES) (:DIRECTION :L2R) (:RIGHT-PRIMARIES)) +REACTION-LAYOUT - (F16BDEPHOS-RXN (:LEFT-PRIMARIES FRUCTOSE-16-DIPHOSPHATE) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (F16ALDOLASE-RXN (:LEFT-PRIMARIES FRUCTOSE-16-DIPHOSPHATE) (:DIRECTION :R2L) (:RIGHT-PRIMARIES GAP DIHYDROXY-ACETONE-PHOSPHATE)) +REACTION-LAYOUT - (GAPOXNPHOSPHN-RXN (:LEFT-PRIMARIES GAP) (:DIRECTION :R2L) (:RIGHT-PRIMARIES DPG)) +REACTION-LAYOUT - (PHOSGLYPHOS-RXN (:LEFT-PRIMARIES G3P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES DPG)) +REACTION-LAYOUT - (SUCROSE-PHOSPHATASE-RXN (:LEFT-PRIMARIES SUCROSE-6P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES SUCROSE)) +REACTION-LAYOUT - (SUCROSE-PHOSPHATE-SYNTHASE-RXN (:LEFT-PRIMARIES FRUCTOSE-6P CPD-12575) (:DIRECTION :L2R) (:RIGHT-PRIMARIES SUCROSE-6P)) +REACTION-LIST - PGLUCISOM-RXN +REACTION-LIST - PWY-7343 +REACTION-LIST - F16BDEPHOS-RXN +REACTION-LIST - F16ALDOLASE-RXN +REACTION-LIST - GAPOXNPHOSPHN-RXN +REACTION-LIST - PHOSGLYPHOS-RXN +REACTION-LIST - SUCROSE-PHOSPHATASE-RXN +REACTION-LIST - SUCROSE-PHOSPHATE-SYNTHASE-RXN +SPECIES - TAX-3847 +SPECIES - TAX-3750 +SPECIES - TAX-4097 +SPECIES - TAX-4530 +SPECIES - TAX-39947 +SPECIES - TAX-4081 +SPECIES - TAX-3562 +SPECIES - ORG-5993 +SUB-PATHWAYS - PWY-7343 +SYNONYMS - sucrose biosynthesis I (from Calvin cycle intermediates) +SYNONYMS - sucrose biosynthesis I +TAXONOMIC-RANGE - TAX-1117 +TAXONOMIC-RANGE - TAX-33090 +// +UNIQUE-ID - UDPNACETYLGALSYN-PWY +TYPES - UDP-NAc-Glucosamine-Biosynthesis +COMMON-NAME - UDP-N-acetyl-D-glucosamine biosynthesis II +CITATIONS - [WIT98] +CITATIONS - 16408321:EV-EXP-TAS:3385759804:fulcher +COMMENT - In both eukaryotes and prokaryotes, sugar and amino sugar residues are converted to sugar nucleotides prior to their incorporation into structural polysaccharides via UDP-sugar transferases. In this pathway, UDP-N-acetyl-D-glucosamine (UDP-GlcNAc) is the amino sugar nucleotide donor of N-acetyl-D-glucosamine (GlcNAc) residues for the biosynthesis of glycosylated proteins and cell surface structures. Two variations of this pathway exist, one in eukaryotes and one in prokaryotes. In the eukaryotic pathway shown here, fructose-6-phosphate produced during +/glycolysis (see pathway |FRAME: ANAGLYCOLYSIS-PWY|) is transaminated and isomerized to glucosamine-6-phosphate, followed by acetylation to N-acetyl-D-glucosamine-6-phosphate, isomerization to N-acetyl-D-glucosamine-1-phosphate, and uridylation to UDP-GlcNAc. In prokaryotes, the first and last reactions are similar to those of eukaryotes, but in the second and third reactions, glucosamine-6-phosphate is isomerized to glucosamine-1-phosphate, followed by its N acetylation to N-acetyl-D-glucosamine-1-phosphate (see pathway |FRAME: UDPNAGSYN-PWY|). Reviewed in |CITS: [16408321]|. +/ +/In eukaryotes this cytosolic pathway is highly regulated. UDP-GlcNAc donates GlcNAc residues for the biosynthesis of several classes of compounds, including N-linked glycans (see pathway |FRAME: MANNOSYL-CHITO-DOLICHOL-BIOSYNTHESIS|), glycosylphosphatidylinositol (GPI)-anchored proteins, glycolipids, and |FRAME:CHITIN|, a +/homopolymer of GlcNac (in |CITS: [14555471]|). This pathway has been well studied both genetically and biochemically in yeast. The first committed, rate-limiting, step in hexosamine de novo biosynthesis is catalyzed by glucosamine-6-phosphate synthase (glutamine-fructose-6-phosphate amidotransferase). It is essentially irreversible and is regulated at the transcriptional and posttranslational levels, including feedback inhibition by UDP-GlcNAc (reviewed in |CITS: [16408321]|). +/ +/This pathway has received consderable attention since it has the potential to influence both leptin production |CITS: [9641678]| and leptin responsiveness |CITS: [23493533][25446204]|. +/ +/In some bacteria, some fungi (but not yeast), and metazoa, UDP-GlcNAc can be converted to UDP-N-acetyl-D-galactosamine by UDP-N-acetyl-D-glucosamine 4-epimerase. N-acetyl-D-galactosamine is a component of several different kinds of cell surface structures and glycosylated proteins (see pathway |FRAME: PWY-5512|). A UDP-N-acetylglucosamine 2-epimerase (EC 5.1.3.14) produces UDP-N-acetyl-D-mannosamine for N-glycosylated mannoprotein biosynthesis. Reviewed in |CITS: [16408321]|. +CREDITS - SRI +CREDITS - fulcher +CREDITS - hying +IN-PATHWAY - PWY-6981 +INSTANCE-NAME-TEMPLATE - PWY-* +PREDECESSORS - ("PGLUCISOM-RXN" "GLUCOKIN-RXN") +PREDECESSORS - ("L-GLN-FRUCT-6-P-AMINOTRANS-RXN" "PGLUCISOM-RXN") +PREDECESSORS - ("NAG1P-URIDYLTRANS-RXN" "PHOSACETYLGLUCOSAMINEMUT-RXN") +PREDECESSORS - ("PHOSACETYLGLUCOSAMINEMUT-RXN" "GLUCOSAMINEPNACETYLTRANS-RXN") +PREDECESSORS - ("GLUCOSAMINEPNACETYLTRANS-RXN" "L-GLN-FRUCT-6-P-AMINOTRANS-RXN") +PRIMARY-PRODUCTS - UDP-N-ACETYL-D-GLUCOSAMINE +REACTION-LAYOUT - (GLUCOKIN-RXN (:LEFT-PRIMARIES Glucopyranose) (:DIRECTION :L2R) (:RIGHT-PRIMARIES D-glucopyranose-6-phosphate)) +REACTION-LAYOUT - (PGLUCISOM-RXN (:LEFT-PRIMARIES D-glucopyranose-6-phosphate) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (NAG1P-URIDYLTRANS-RXN (:LEFT-PRIMARIES N-ACETYL-D-GLUCOSAMINE-1-P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES UDP-N-ACETYL-D-GLUCOSAMINE)) +REACTION-LAYOUT - (PHOSACETYLGLUCOSAMINEMUT-RXN (:LEFT-PRIMARIES N-ACETYL-D-GLUCOSAMINE-6-P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES N-ACETYL-D-GLUCOSAMINE-1-P)) +REACTION-LAYOUT - (GLUCOSAMINEPNACETYLTRANS-RXN (:LEFT-PRIMARIES D-GLUCOSAMINE-6-P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES N-ACETYL-D-GLUCOSAMINE-6-P)) +REACTION-LAYOUT - (L-GLN-FRUCT-6-P-AMINOTRANS-RXN (:LEFT-PRIMARIES FRUCTOSE-6P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES D-GLUCOSAMINE-6-P)) +REACTION-LIST - GLUCOKIN-RXN +REACTION-LIST - PGLUCISOM-RXN +REACTION-LIST - NAG1P-URIDYLTRANS-RXN +REACTION-LIST - PHOSACETYLGLUCOSAMINEMUT-RXN +REACTION-LIST - GLUCOSAMINEPNACETYLTRANS-RXN +REACTION-LIST - L-GLN-FRUCT-6-P-AMINOTRANS-RXN +SPECIES - TAX-7159 +SPECIES - TAX-5476 +SPECIES - TAX-7227 +SPECIES - TAX-9606 +SPECIES - TAX-10090 +SPECIES - TAX-10116 +SPECIES - TAX-4932 +SPECIES - TAX-9823 +SPECIES - ORG-5993 +SUPER-PATHWAYS - PWY-6981 +SYNONYMS - UDP-N-acetylgalactosamine biosynthesis +SYNONYMS - hexosamine biosynthetic pathway +TAXONOMIC-RANGE - TAX-2759 +// +UNIQUE-ID - UDPNAGSYN-PWY +TYPES - UDP-NAc-Glucosamine-Biosynthesis +COMMON-NAME - UDP-N-acetyl-D-glucosamine biosynthesis I +CITATIONS - :EV-EXP:3277650456:pkarp +COMMENT - |FRAME: UDP-N-ACETYL-D-GLUCOSAMINE| (UDP-GlcNAc) is an essential precursor of cell wall peptidoglycan, +/lipopolysaccharide and enterobacterial common antigen. This situates UDP-GlcNAc at a branch point in metabolism, +/each fork leading to synthesis of a major envelope component of the cell |CITS: [ColiSalII]|. The enzymes of these +/pathways are targets for development of novel antibacterial compounds (reviewed in |CITS: [17692001]|). +/ +/|FRAME: L-GLN-FRUCT-6-P-AMINOTRANS-CPLX|, or GFAT, catalyzes the first committed step in UDP-GlcNAc +/biosynthesis from fructose-6-phosphate. The product of this first reaction, |FRAME: D-GLUCOSAMINE-6-P|, can +/also be transported into the cell and utilized as a source of carbon; thus, expression of GFAT is controlled at several +/levels. For details on regulation and the mechanism of uncoupling it from the regulation of |FRAME: EG11198| +/expression, please see the protein page: |FRAME: L-GLN-FRUCT-6-P-AMINOTRANS-CPLX|. +/ +/|FRAME: D-GLUCOSAMINE-6-P| is then converted to |FRAME: GLUCOSAMINE-1P| by +/|FRAME: PHOSGLUCOSAMINEMUT-MONOMER|. The two final reactions of the pathway, transfer of an acetyl group +/from acetyl-CoA to form |FRAME: N-ACETYL-D-GLUCOSAMINE-1-P| and transfer of a uridyl group to form the +/final product, UDP-GlcNAc, are carried out by a bifunctional enzyme, GlmU, which contains two domains that carry out +/each reaction independently. +/ +/ +CREDITS - SRI +CREDITS - keseler +DBLINKS - (ECOCYC "UDPNAGSYN-PWY" NIL |paley| 3392397157 NIL NIL) +IN-PATHWAY - PWY-7332 +IN-PATHWAY - PWY-6404 +IN-PATHWAY - OANTIGEN-PWY +INSTANCE-NAME-TEMPLATE - PWY-* +PATHWAY-LINKS - (UDP-N-ACETYL-D-GLUCOSAMINE TEICHOICACID-PWY NAGLIPASYN-PWY PWY-5265) +PATHWAY-LINKS - (D-GLUCOSAMINE-6-P (TRANS-RXN-167A . :INCOMING)) +PREDECESSORS - ("L-GLN-FRUCT-6-P-AMINOTRANS-RXN" "PGLUCISOM-RXN") +PREDECESSORS - ("2.3.1.157-RXN" "5.4.2.10-RXN") +PREDECESSORS - ("5.4.2.10-RXN" "L-GLN-FRUCT-6-P-AMINOTRANS-RXN") +PREDECESSORS - ("NAG1P-URIDYLTRANS-RXN" "2.3.1.157-RXN") +PRIMARY-PRODUCTS - UDP-N-ACETYL-D-GLUCOSAMINE +REACTION-LAYOUT - (PGLUCISOM-RXN (:LEFT-PRIMARIES D-glucopyranose-6-phosphate) (:DIRECTION :L2R) (:RIGHT-PRIMARIES FRUCTOSE-6P)) +REACTION-LAYOUT - (5.4.2.10-RXN (:LEFT-PRIMARIES D-GLUCOSAMINE-6-P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES GLUCOSAMINE-1P)) +REACTION-LAYOUT - (L-GLN-FRUCT-6-P-AMINOTRANS-RXN (:LEFT-PRIMARIES FRUCTOSE-6P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES D-GLUCOSAMINE-6-P)) +REACTION-LAYOUT - (2.3.1.157-RXN (:LEFT-PRIMARIES GLUCOSAMINE-1P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES N-ACETYL-D-GLUCOSAMINE-1-P)) +REACTION-LAYOUT - (NAG1P-URIDYLTRANS-RXN (:LEFT-PRIMARIES N-ACETYL-D-GLUCOSAMINE-1-P) (:DIRECTION :L2R) (:RIGHT-PRIMARIES UDP-N-ACETYL-D-GLUCOSAMINE)) +REACTION-LIST - PGLUCISOM-RXN +REACTION-LIST - 5.4.2.10-RXN +REACTION-LIST - L-GLN-FRUCT-6-P-AMINOTRANS-RXN +REACTION-LIST - 2.3.1.157-RXN +REACTION-LIST - NAG1P-URIDYLTRANS-RXN +SPECIES - TAX-111955 +SPECIES - TAX-511145 +SUPER-PATHWAYS - PWY-7332 +SUPER-PATHWAYS - PWY-6404 +SUPER-PATHWAYS - OANTIGEN-PWY +SYNONYMS - UDP-N-acetyl-D-glucosamine biosynthesis +TAXONOMIC-RANGE - TAX-33154 +TAXONOMIC-RANGE - TAX-2157 +TAXONOMIC-RANGE - TAX-2 +// From 0214bee05626a71aff5a1873160151cb953341af Mon Sep 17 00:00:00 2001 From: y1zhou Date: Tue, 18 Jan 2022 16:39:37 -0500 Subject: [PATCH 31/42] fix(metacyc): avoid creating duplicated reaction nodes --- metabolike/parser/metacyc.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index db7c6df..4505283 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -128,6 +128,8 @@ def setup(self, force: bool = False): with self.neo4j_driver.session(database=self.db_name) as session: all_pws = session.run("MATCH (n:Pathway) RETURN n.mcId;").data() all_pws = [pw["n.mcId"] for pw in all_pws] + # TODO: add pathway annotations for superpathways as well. + # These pathway nodes are created during self.pathway_to_graph. for pw in all_pws: self.pathway_to_graph(pw, pw_dat, session) logger.debug(f"Added pathway annotation for {pw}") @@ -333,9 +335,10 @@ def reaction_to_graph( session.write_transaction( lambda tx: tx.run( """ + MATCH (r:Reaction {displayName: $reaction}) MERGE (pw:Pathway {mcId: $pathway}) ON CREATE SET pw.displayName = $pathway - MERGE (pw)-[:hasReaction]->(r:Reaction {displayName: $reaction}) + MERGE (pw)-[:hasReaction]->(r) """, reaction=rxn_id, pathway=v, @@ -379,7 +382,7 @@ def pathway_to_graph( session: The graph database session to use. """ lines = pw_dat[pw_id] - props: Dict[str, Union[str, List[str]]] = {} + props: Dict[str, Union[str, List[str]]] = {"displayName": pw_id} for k, v in lines: # Pathway node properties if k in {"SYNONYMS", "TYPES"}: @@ -432,7 +435,7 @@ def pathway_to_graph( session.write_transaction( lambda tx: tx.run( """ - MATCH (n:Pathway {displayName: $pw}) + MATCH (n:Pathway {mcId: $pw}) SET n += $props; """, pw=pw_id, @@ -741,9 +744,10 @@ def _link_node_to_citation( session.write_transaction( lambda tx: tx.run( f""" - MERGE (c:Citation {{mcId: $citation}}) - MERGE (:{node_type} {{displayName: $dn}})-[:hasCitation]->(c) - """, + MATCH (n:{node_type} {{displayName: $dn}}) + MERGE (c:Citation {{mcId: $citation}}) + MERGE (n)-[:hasCitation]->(c) + """, dn=node_display_name, citation=citation_id, ) From e4f608f5e6b565ad929712ac649c2bf8ff276c5c Mon Sep 17 00:00:00 2001 From: y1zhou Date: Tue, 18 Jan 2022 17:35:40 -0500 Subject: [PATCH 32/42] feat(metacyc): links between reactions, i.e. preceding events --- metabolike/parser/metacyc.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index 4505283..60743cb 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -430,6 +430,23 @@ def pathway_to_graph( taxon_range=v, ) ) + elif k == "PREDECESSORS": + rxns = v[2:-2].split('" "') # leading (" and trailing ") + r1, r2 = rxns[0], rxns[1:] # could have multiple predecessors + session.write_transaction( + lambda tx: tx.run( + """ + MATCH (r1:Reaction {canonical_id: $r1}), (r2:Reaction) + WHERE r2.canonical_id IN $r2 + UNWIND r2 AS pred + MERGE (pred)-[l:isPrecedingEvent]->(r1) + ON CREATE SET l.hasRelatedPathway = $pw + """, + r1=r1, + r2=r2, + pw=pw_id, + ) + ) # Write Pathway node properties session.write_transaction( From 4a37e4ecc2166e2c9b6698ead97738ab344edda5 Mon Sep 17 00:00:00 2001 From: y1zhou Date: Tue, 18 Jan 2022 22:11:57 -0500 Subject: [PATCH 33/42] fix(metacyc): change reactant/product to left/right to reflect direction of reaction --- metabolike/parser/metacyc.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index 60743cb..6ec6254 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -288,11 +288,11 @@ def sbml_to_graph(self, model: libsbml.Model): # Add reactants and products logger.debug(f"Adding reactants for Reaction {mcid}") reactants = r.getListOfReactants() - self._link_reaction_to_compound(mcid, reactants, "Reactant", session) + self._link_reaction_to_compound(mcid, reactants, "Left", session) logger.debug(f"Adding products for Reaction {mcid}") products = r.getListOfProducts() - self._link_reaction_to_compound(mcid, products, "Product", session) + self._link_reaction_to_compound(mcid, products, "Right", session) # Add associated gene products # This could be complicated where the child nodes could be: @@ -543,10 +543,10 @@ def _link_reaction_to_compound( reaction_id: The MetaCyc ID of the reaction. compounds: The list of compounds to link to the reaction. compound_type: The type of compound to link to the reaction. Should - be one of "Reactant" or "Product". + be one of "Left" or "Right". session: The Neo4j session to use. """ - if compound_type not in ["Reactant", "Product"]: + if compound_type not in ["Left", "Right"]: raise ValueError(f"Invalid compound type: {compound_type}") for cpd in compounds: logger.debug( From e1531ab87a78ef21b88278864e9dc22e6adbc823 Mon Sep 17 00:00:00 2001 From: y1zhou Date: Tue, 18 Jan 2022 22:51:45 -0500 Subject: [PATCH 34/42] fix(metacyc): only replace dash in resource ID, not in ID value --- metabolike/parser/metacyc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index 6ec6254..9a45366 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -668,9 +668,9 @@ def _split_uri(uri: str) -> Tuple[str, str]: Tuple of namespace and annotation term. """ # First three elements are from http://identifiers.org/ - uri = uri.replace("-", ".") # Ec-code res = uri.split("/")[3:] resource, identifier = res[0], res[1:] + resource = resource.replace("-", ".") # Ec-code resource = "".join(x.capitalize() for x in resource.split(".")) identifier = "".join(identifier) return resource, identifier From 8a6f2313ab2bf53b58ec7f0841ccae39bde854d8 Mon Sep 17 00:00:00 2001 From: y1zhou Date: Wed, 19 Jan 2022 12:37:13 -0500 Subject: [PATCH 35/42] feat(metacyc): rate limiting step of pathways --- metabolike/parser/metacyc.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index 9a45366..c1a1861 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -447,7 +447,19 @@ def pathway_to_graph( pw=pw_id, ) ) - + elif k == "RATE-LIMITING-STEP": + session.write_transaction( + lambda tx: tx.run( + """ + MATCH (pw:Pathway {mcId: $pw}), + (r:Reaction {canonical_id: $rxn}) + MERGE (pw)-[l:hasReaction]->(r) + ON MATCH SET l.isRateLimitingStep = true + """, + pw=pw_id, + rxn=v, + ) + ) # Write Pathway node properties session.write_transaction( lambda tx: tx.run( From bead30c025738ffc386b8e5a027de9f3fae3ec36 Mon Sep 17 00:00:00 2001 From: y1zhou Date: Wed, 19 Jan 2022 12:37:38 -0500 Subject: [PATCH 36/42] feat(metacyc): primary reactants and products of pathways --- metabolike/parser/metacyc.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index c1a1861..4617ada 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -460,6 +460,20 @@ def pathway_to_graph( rxn=v, ) ) + elif k in {"PRIMARY-PRODUCTS", "PRIMARY-REACTANTS"}: + relationship = "Product" if k == "PRIMARY-PRODUCTS" else "Reactant" + compound_id = f"META:{v}" + session.write_transaction( + lambda tx: tx.run( + f""" + MATCH (pw:Pathway {{mcId: $pw}}), + (cpd:Compound)-[:is]->(:RDF {{Biocyc: $compound_id}}) + MERGE (pw)-[:hasPrimary{relationship}]->(cpd) + """, + pw=pw_id, + compound_id=compound_id, + ) + ) # Write Pathway node properties session.write_transaction( lambda tx: tx.run( From 56d813c2630d70a8b915a0afc7cbf8aa3c221288 Mon Sep 17 00:00:00 2001 From: y1zhou Date: Wed, 19 Jan 2022 15:41:58 -0500 Subject: [PATCH 37/42] feat(metacyc): parse reaction layout and add primary metabolites in pathway The primary reactants and products are extracted from the REACTION-LAYOUT attribute, and the side is determined by DIRECTION fix #5 --- metabolike/parser/metacyc.py | 74 ++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index 4617ada..e8cbd51 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -474,6 +474,31 @@ def pathway_to_graph( compound_id=compound_id, ) ) + elif k == "REACTION-LAYOUT": + rxn_id, d = self._parse_reaction_layout(v) + if not rxn_id: + continue + # Two cypher statements for Reactant and Product compounds + for k, v in d.items(): + session.write_transaction( + lambda tx: tx.run( + f""" + MATCH (r:Reaction {{canonical_id: $rxn_id}}), + (cpds:Compound)-[:is]->(rdf:RDF) + WHERE rdf.Biocyc IN $compound_ids + UNWIND cpds AS cpd + MATCH (r)-[l:hasLeft|hasRight]->(cpd) + SET l.isPrimary{k}InPathway = CASE + WHEN l.isPrimary{k}InPathway IS NULL THEN [$pw] + WHEN $pw IN l.isPrimary{k}InPathway THEN l.isPrimary{k}InPathway + ELSE l.isPrimary{k}InPathway + [$pw] + END; + """, + rxn_id=rxn_id, + compound_ids=v, + pw=pw_id, + ) + ) # Write Pathway node properties session.write_transaction( lambda tx: tx.run( @@ -818,6 +843,55 @@ def _clean_props( return props + @staticmethod + def _parse_reaction_layout( + s: str, prefix: Optional[str] = "META:" + ) -> Tuple[str, Dict[str, List[str]]]: + """Parse the reaction layout from the ``reactions.dat`` file. + + The attribute has the following format: ``( (:LEFT-PRIMARIES + ...) (:DIRECTION :[L2R|R2L]) (:RIGHT-PRIMARIES ...))`` + + Args: + s: The layout string. + prefix: The prefix to add to the compound IDs. In the SBML file, + the BioCyc IDs are prefixed with ``META:``. + + Returns: + The reaction canonical ID, and a dictionary with the parsed layout + containing the following keys: - ``Reactant``: List of primary + reactant compounds. - ``Product``: List of primary product + compounds. + """ + m = re.compile( + r"\(([^\(]+) " # reaction ID + r"\(:LEFT-PRIMARIES ([^\)]+)\) " # left primary compounds + r"\(:DIRECTION :(L2R|R2L)\) " # reaction direction + r"\(:RIGHT-PRIMARIES ([^\)]+)\)\)" + ) + res = m.fullmatch(s) + if not res: + # Sometimes there's no left/right primaries and only a direction + # when the rxn_id is actually a pathway ID + return "", {} + + rxn_id, l_prim, direction, r_prim = res.groups() + # Use direction to determine which side are the reactants + if direction == "L2R": + reactants = l_prim.split(" ") + products = r_prim.split(" ") + else: + reactants = r_prim.split(" ") + products = l_prim.split(" ") + + d = { + "Reactant": reactants, + "Product": products, + } + if prefix: + d = {k: [f"{prefix}{e}" for e in v] for k, v in d.items()} + return rxn_id, d + def _snake_to_camel(s: str, sep: str = "-") -> str: """Convert snake_case to CamelCase. From e4c73391326ed2bd83081d2b1a0e551c08717ed3 Mon Sep 17 00:00:00 2001 From: y1zhou Date: Wed, 19 Jan 2022 18:06:17 -0500 Subject: [PATCH 38/42] feat(metacyc): parse pubs.dat and add citation annotations fix #15 --- metabolike/parser/metacyc.py | 53 ++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index e8cbd51..4b4e3d2 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -69,6 +69,7 @@ def __init__( db_name: Optional[str] = None, reactions: Optional[Union[str, Path]] = None, pathways: Optional[Union[str, Path]] = None, + publications: Optional[Union[str, Path]] = None, ): """ Args: @@ -91,6 +92,7 @@ def __init__( "sbml": self._validate_path(sbml), "reactions": self._validate_path(reactions), "pathways": self._validate_path(pathways), + "publications": self._validate_path(publications), } # Misc variables @@ -134,6 +136,18 @@ def setup(self, force: bool = False): self.pathway_to_graph(pw, pw_dat, session) logger.debug(f"Added pathway annotation for {pw}") + # Read publications file if given + if self.input_files["publications"]: + logger.info("Annotating publications") + pub_dat = self._read_dat_file(self.input_files["publications"]) + with self.neo4j_driver.session(database=self.db_name) as session: + all_cits = session.run("MATCH (n:Citation) RETURN n.mcId;").data() + all_cits = [c["n.mcId"] for c in all_cits] + + for cit in all_cits: + self.citation_to_graph(cit, pub_dat, session) + logger.debug(f"Added annotation for citation {cit}") + def setup_graph_db(self, **kwargs): """ Create Neo4j database and set proper constraints. `Reaction` nodes are @@ -511,6 +525,45 @@ def pathway_to_graph( ) ) + def citation_to_graph( + self, cit_id: str, pub_dat: Dict[str, List[List[str]]], session: db.Session + ): + pub_dat_id = re.sub(r"[\[\]]", "", cit_id.split(":")[0].upper()) + pub_dat_id = re.sub(r"-(\d+)$", r"\1", pub_dat_id) + if not pub_dat_id: + return + pub_dat_id = "PUB-" + pub_dat_id + # TODO: deal with evidence frames + + lines = pub_dat[pub_dat_id] + props: Dict[str, Union[str, List[str]]] = {"citationId": pub_dat_id} + for k, v in lines: + # Pathway node properties + if k == "AUTHORS": + _add_kv_to_dict(props, k, v, as_list=True) + elif k in { + "DOI-ID", + "PUBMED-ID", + "MEDLINE-ID", + "TITLE", + "SOURCE", + "YEAR", + "URL", + "REFERENT-FRAME", + }: + _add_kv_to_dict(props, k, v, as_list=False) + + session.write_transaction( + lambda tx: tx.run( + """ + MATCH (c:Citation {mcId: $cit_id}) + SET c += $props; + """, + cit_id=cit_id, + props=props, + ) + ) + @staticmethod def _validate_path(filepath: Optional[Union[str, Path]]) -> Optional[Path]: if not filepath: From e01222fe55b08bec0667578dd60c9e95a6ff51c8 Mon Sep 17 00:00:00 2001 From: y1zhou Date: Thu, 20 Jan 2022 11:11:01 -0500 Subject: [PATCH 39/42] refactor(metacyc): use shared session for all neo4j operations --- metabolike/parser/metacyc.py | 347 ++++++++++++++++++----------------- 1 file changed, 175 insertions(+), 172 deletions(-) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index 4b4e3d2..bb8e46e 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -83,6 +83,9 @@ def __init__( pathways: The path to the ``pathway.dat`` file. If given, the file will be parsed and pathway links will be added to the ``Reaction`` nodes. + publications: The path to the ``publication.dat`` file. If given, + the file will be parsed and annotations on ``Citation`` nodes + will be added. """ # Neo4j driver self.neo4j_driver = neo4j_driver @@ -107,48 +110,52 @@ def setup(self, force: bool = False): self.db_name: str = model.getMetaId().lower() # Setup Neo4j database and populate it with data - self.setup_graph_db(force=force) - self.sbml_to_graph(model) - - # Add additional information of reactions to the graph if given - if self.input_files["reactions"]: - logger.info("Adding additional reaction information to the graph") - rxn_dat = self._read_dat_file(self.input_files["reactions"]) - with self.neo4j_driver.session(database=self.db_name) as session: - all_rxns = session.run( - "MATCH (n:Reaction) RETURN n.displayName;" - ).data() - all_rxns = [r["n.displayName"] for r in all_rxns] + with self.neo4j_driver.session(database=self.db_name) as session: + self.setup_graph_db(session, force=force) + self.sbml_to_graph(model, session) + + # Add additional information of reactions to the graph if given + if self.input_files["reactions"]: + logger.info("Adding additional reaction information to the graph") + rxn_dat = self._read_dat_file(self.input_files["reactions"]) + + all_rxns = [ + r["n.displayName"] + for r in session.run("MATCH (n:Reaction) RETURN n.displayName;") + ] for rxn in all_rxns: self.reaction_to_graph(rxn, rxn_dat, session) logger.debug(f"Added extra info for reaction {rxn}") - # Read pathways file if given - if self.input_files["pathways"]: - logger.info("Creating pathway links") - pw_dat = self._read_dat_file(self.input_files["pathways"]) - with self.neo4j_driver.session(database=self.db_name) as session: - all_pws = session.run("MATCH (n:Pathway) RETURN n.mcId;").data() - all_pws = [pw["n.mcId"] for pw in all_pws] + # Read pathways file if given + if self.input_files["pathways"]: + logger.info("Creating pathway links") + pw_dat = self._read_dat_file(self.input_files["pathways"]) + + all_pws = [ + pw["n.mcId"] + for pw in session.run("MATCH (n:Pathway) RETURN n.mcId;") + ] # TODO: add pathway annotations for superpathways as well. # These pathway nodes are created during self.pathway_to_graph. for pw in all_pws: self.pathway_to_graph(pw, pw_dat, session) logger.debug(f"Added pathway annotation for {pw}") - # Read publications file if given - if self.input_files["publications"]: - logger.info("Annotating publications") - pub_dat = self._read_dat_file(self.input_files["publications"]) - with self.neo4j_driver.session(database=self.db_name) as session: - all_cits = session.run("MATCH (n:Citation) RETURN n.mcId;").data() - all_cits = [c["n.mcId"] for c in all_cits] + # Read publications file if given + if self.input_files["publications"]: + logger.info("Annotating publications") + pub_dat = self._read_dat_file(self.input_files["publications"]) + all_cits = [ + c["n.mcId"] + for c in session.run("MATCH (n:Citation) RETURN n.mcId;") + ] for cit in all_cits: self.citation_to_graph(cit, pub_dat, session) logger.debug(f"Added annotation for citation {cit}") - def setup_graph_db(self, **kwargs): + def setup_graph_db(self, session: db.Session, **kwargs): """ Create Neo4j database and set proper constraints. `Reaction` nodes are central in the schema (see README.rst). @@ -161,165 +168,161 @@ def setup_graph_db(self, **kwargs): raise # Set constraints - with self.neo4j_driver.session(database=self.db_name) as session: - logger.debug("Creating constraint for RDF nodes") + logger.debug("Creating constraint for RDF nodes") + r = session.run( + """CREATE CONSTRAINT IF NOT EXISTS + ON (r:RDF) ASSERT r.uri IS UNIQUE;""" + ).data() + if r: + logger.warning(f"Could not create constraint for RDF nodes: {r}") + + # Constraints automatically create indexes, so we don't need to + # create them manually. + for label in NODE_LABELS: + logger.debug(f"Creating constraint for {label} nodes") r = session.run( - """CREATE CONSTRAINT IF NOT EXISTS - ON (r:RDF) ASSERT r.uri IS UNIQUE;""" + f"""CREATE CONSTRAINT IF NOT EXISTS + ON (n:{label}) ASSERT n.mcId IS UNIQUE;""", ).data() if r: - logger.warning(f"Could not create constraint for RDF nodes: {r}") - - # Constraints automatically create indexes, so we don't need to - # create them manually. - for label in NODE_LABELS: - logger.debug(f"Creating constraint for {label} nodes") - r = session.run( - f"""CREATE CONSTRAINT IF NOT EXISTS - ON (n:{label}) ASSERT n.mcId IS UNIQUE;""", - ).data() - if r: - logger.warning( - f"Could not create constraint for {label} nodes: {r}" - ) + logger.warning(f"Could not create constraint for {label} nodes: {r}") - def sbml_to_graph(self, model: libsbml.Model): + def sbml_to_graph(self, model: libsbml.Model, session: db.Session): """ Populate Neo4j database with SBML data. Nodes are created for each SBML element using `MERGE` statements: https://neo4j.com/docs/cypher-manual/current/clauses/merge/#merge-merge-with-on-create """ - with self.neo4j_driver.session(database=self.db_name) as session: - # Compartments - logger.info("Creating Compartment nodes") - for c in model.getListOfCompartments(): - c: libsbml.Compartment - session.write_transaction( - lambda tx: tx.run( - """ - MERGE (c:Compartment {mcId: $mcId}) - ON CREATE - SET c.displayName = $name; - """, - mcId=c.getMetaId(), - name=c.getName(), - ), - ) + # Compartments + logger.info("Creating Compartment nodes") + for c in model.getListOfCompartments(): + c: libsbml.Compartment + session.write_transaction( + lambda tx: tx.run( + """ + MERGE (c:Compartment {mcId: $mcId}) + ON CREATE + SET c.displayName = $name; + """, + mcId=c.getMetaId(), + name=c.getName(), + ), + ) - # Compounds, i.e. metabolites, species - logger.info("Creating Compound nodes") - for s in model.getListOfSpecies(): - s: libsbml.Species - # Basic properties - mcid: str = s.getMetaId() - logger.debug(f"Creating Compound node {mcid}") - session.write_transaction( - lambda tx: tx.run( - """ - MATCH (cpt:Compartment {mcId: $compartment}) - MERGE (c:Compound {mcId: $mcId})-[:hasCompartment]->(cpt) - ON CREATE - SET c.displayName = $name, - c.charge = $charge, - c.chemicalFormula = $formula, - c.boundaryCondition = $boundaryCondition, - c.hasOnlySubstanceUnits = $hasOnlySubstanceUnits, - c.constant = $constant; - """, - mcId=mcid, - name=s.getName(), - compartment=s.getCompartment(), - charge=s.getCharge(), - formula=s.getPlugin("fbc").getChemicalFormula(), - boundaryCondition=s.getBoundaryCondition(), # unchanged by reactions - hasOnlySubstanceUnits=s.getHasOnlySubstanceUnits(), - constant=s.getConstant(), - ) + # Compounds, i.e. metabolites, species + logger.info("Creating Compound nodes") + for s in model.getListOfSpecies(): + s: libsbml.Species + # Basic properties + mcid: str = s.getMetaId() + logger.debug(f"Creating Compound node {mcid}") + session.write_transaction( + lambda tx: tx.run( + """ + MATCH (cpt:Compartment {mcId: $compartment}) + MERGE (c:Compound {mcId: $mcId})-[:hasCompartment]->(cpt) + ON CREATE + SET c.displayName = $name, + c.charge = $charge, + c.chemicalFormula = $formula, + c.boundaryCondition = $boundaryCondition, + c.hasOnlySubstanceUnits = $hasOnlySubstanceUnits, + c.constant = $constant; + """, + mcId=mcid, + name=s.getName(), + compartment=s.getCompartment(), + charge=s.getCharge(), + formula=s.getPlugin("fbc").getChemicalFormula(), + boundaryCondition=s.getBoundaryCondition(), # unchanged by reactions + hasOnlySubstanceUnits=s.getHasOnlySubstanceUnits(), + constant=s.getConstant(), ) + ) - # Add RDF annotations - logger.debug(f"Adding RDF nodes for Compound {mcid}") - cvterms: List[libsbml.CVTerm] = s.getCVTerms() - for cvterm in cvterms: - self._add_sbml_rdf_node("Compound", mcid, cvterm, session) - - # Gene products - logger.info("Creating GeneProduct nodes") - fbc: libsbml.FbcModelPlugin = model.getPlugin("fbc") - for gp in fbc.getListOfGeneProducts(): - gp: libsbml.GeneProduct - mcid = gp.getMetaId() - logger.debug(f"Creating GeneProduct node {mcid}") - session.write_transaction( - lambda tx: tx.run( - """ - MERGE (gp:GeneProduct {mcId: $mcId}) - ON CREATE - SET gp.displayName = $name, - gp.label = $label; - """, - mcId=mcid, - name=gp.getName(), - label=gp.getLabel(), - ), - ) - logger.debug(f"Adding RDF nodes for GeneProduct {mcid}") - cvterms: List[libsbml.CVTerm] = gp.getCVTerms() - for cvterm in cvterms: - self._add_sbml_rdf_node("GeneProduct", mcid, cvterm, session) - - # Reactions - logger.info("Creating Reaction nodes") - for r in model.getListOfReactions(): - r: libsbml.Reaction - mcid = r.getMetaId() - - # Basic properties - logger.debug(f"Creating Reaction node {mcid}") - session.write_transaction( - lambda tx: tx.run( - """ - MERGE (r:Reaction {mcId: $mcId}) - ON CREATE - SET r.displayName = $name, - r.reversible = $reversible, - r.fast = $fast; - """, - mcId=mcid, - name=r.getName(), - reversible=r.getReversible(), - fast=r.getFast(), - ), - ) + # Add RDF annotations + logger.debug(f"Adding RDF nodes for Compound {mcid}") + cvterms: List[libsbml.CVTerm] = s.getCVTerms() + for cvterm in cvterms: + self._add_sbml_rdf_node("Compound", mcid, cvterm, session) + + # Gene products + logger.info("Creating GeneProduct nodes") + fbc: libsbml.FbcModelPlugin = model.getPlugin("fbc") + for gp in fbc.getListOfGeneProducts(): + gp: libsbml.GeneProduct + mcid = gp.getMetaId() + logger.debug(f"Creating GeneProduct node {mcid}") + session.write_transaction( + lambda tx: tx.run( + """ + MERGE (gp:GeneProduct {mcId: $mcId}) + ON CREATE + SET gp.displayName = $name, + gp.label = $label; + """, + mcId=mcid, + name=gp.getName(), + label=gp.getLabel(), + ), + ) + logger.debug(f"Adding RDF nodes for GeneProduct {mcid}") + cvterms: List[libsbml.CVTerm] = gp.getCVTerms() + for cvterm in cvterms: + self._add_sbml_rdf_node("GeneProduct", mcid, cvterm, session) + + # Reactions + logger.info("Creating Reaction nodes") + for r in model.getListOfReactions(): + r: libsbml.Reaction + mcid = r.getMetaId() + + # Basic properties + logger.debug(f"Creating Reaction node {mcid}") + session.write_transaction( + lambda tx: tx.run( + """ + MERGE (r:Reaction {mcId: $mcId}) + ON CREATE + SET r.displayName = $name, + r.reversible = $reversible, + r.fast = $fast; + """, + mcId=mcid, + name=r.getName(), + reversible=r.getReversible(), + fast=r.getFast(), + ), + ) - # Add RDF nodes - logger.debug(f"Adding RDF nodes for Reaction {mcid}") - cvterms: List[libsbml.CVTerm] = r.getCVTerms() - for cvterm in cvterms: - self._add_sbml_rdf_node("Reaction", mcid, cvterm, session) - - # Add reactants and products - logger.debug(f"Adding reactants for Reaction {mcid}") - reactants = r.getListOfReactants() - self._link_reaction_to_compound(mcid, reactants, "Left", session) - - logger.debug(f"Adding products for Reaction {mcid}") - products = r.getListOfProducts() - self._link_reaction_to_compound(mcid, products, "Right", session) - - # Add associated gene products - # This could be complicated where the child nodes could be: - # 1. GeneProductRef - # 2. fbc:or -> GeneProductRef - # 3. fbc:and -> GeneProductRef - # 4. Arbitrarily nested fbc:or / fbc:and within cases 2 and 3 - gpa: libsbml.GeneProductAssociation = r.getPlugin( - "fbc" - ).getGeneProductAssociation() - if gpa is not None: - node = gpa.getAssociation() - self._add_sbml_gene_product_association_node(node, session, mcid) + # Add RDF nodes + logger.debug(f"Adding RDF nodes for Reaction {mcid}") + cvterms: List[libsbml.CVTerm] = r.getCVTerms() + for cvterm in cvterms: + self._add_sbml_rdf_node("Reaction", mcid, cvterm, session) + + # Add reactants and products + logger.debug(f"Adding reactants for Reaction {mcid}") + reactants = r.getListOfReactants() + self._link_reaction_to_compound(mcid, reactants, "Left", session) + + logger.debug(f"Adding products for Reaction {mcid}") + products = r.getListOfProducts() + self._link_reaction_to_compound(mcid, products, "Right", session) + + # Add associated gene products + # This could be complicated where the child nodes could be: + # 1. GeneProductRef + # 2. fbc:or -> GeneProductRef + # 3. fbc:and -> GeneProductRef + # 4. Arbitrarily nested fbc:or / fbc:and within cases 2 and 3 + gpa: libsbml.GeneProductAssociation = r.getPlugin( + "fbc" + ).getGeneProductAssociation() + if gpa is not None: + node = gpa.getAssociation() + self._add_sbml_gene_product_association_node(node, session, mcid) def reaction_to_graph( self, rxn_id: str, rxn_dat: Dict[str, List[List[str]]], session: db.Session From 3eaf68bfe9596bd5532754d5e6a8c01b747293fa Mon Sep 17 00:00:00 2001 From: y1zhou Date: Thu, 20 Jan 2022 11:13:08 -0500 Subject: [PATCH 40/42] refactor(metacyc): move reaction attributes inline to be consistent with other dat files --- metabolike/parser/metacyc.py | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index bb8e46e..26c36f4 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -41,16 +41,6 @@ "Taxa", ] -REACTION_ATTRIBUTES = { - # Relationship properties - "GIBBS-0", - "STD-REDUCTION-POTENTIAL", - "REACTION-DIRECTION", - "REACTION-BALANCE-STATUS", - "SYSTEMATIC-NAME", - "COMMENT", # TODO: link to other nodes -} - class Metacyc: """ @@ -346,7 +336,14 @@ def reaction_to_graph( # SYNONYMS is a special case because it is a list if k == "SYNONYMS": _add_kv_to_dict(props, k, v, as_list=True) - elif k in REACTION_ATTRIBUTES: + elif k in { + "GIBBS-0", + "STD-REDUCTION-POTENTIAL", + "REACTION-DIRECTION", + "REACTION-BALANCE-STATUS", + "SYSTEMATIC-NAME", + "COMMENT", # TODO: link to other nodes + }: _add_kv_to_dict(props, k, v, as_list=False) elif k == "IN-PATHWAY": session.write_transaction( From ec765344021abefd6371baf06f92429d55129aaa Mon Sep 17 00:00:00 2001 From: y1zhou Date: Thu, 20 Jan 2022 16:16:54 -0500 Subject: [PATCH 41/42] feat(metacyc): parse classes.dat and add information on Compartment and Taxa nodes fix #13 --- metabolike/parser/metacyc.py | 66 ++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index 26c36f4..aebdd97 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -60,6 +60,7 @@ def __init__( reactions: Optional[Union[str, Path]] = None, pathways: Optional[Union[str, Path]] = None, publications: Optional[Union[str, Path]] = None, + classes: Optional[Union[str, Path]] = None, ): """ Args: @@ -76,6 +77,9 @@ def __init__( publications: The path to the ``publication.dat`` file. If given, the file will be parsed and annotations on ``Citation`` nodes will be added. + classes: The path to the ``class.dat`` file. If given, the file + will be parsed and annotations on ``Compartment``, ``Taxa``, + and ``Compound`` nodes will be added. """ # Neo4j driver self.neo4j_driver = neo4j_driver @@ -86,6 +90,7 @@ def __init__( "reactions": self._validate_path(reactions), "pathways": self._validate_path(pathways), "publications": self._validate_path(publications), + "classes": self._validate_path(classes), } # Misc variables @@ -145,6 +150,12 @@ def setup(self, force: bool = False): self.citation_to_graph(cit, pub_dat, session) logger.debug(f"Added annotation for citation {cit}") + # Compartments, Taxon, and comments of Compounds in classes.dat + if self.input_files["classes"]: + logger.info("Adding common names from classes.dat") + class_dat = self._read_dat_file(self.input_files["classes"]) + self.classes_to_graph(class_dat, session) + def setup_graph_db(self, session: db.Session, **kwargs): """ Create Neo4j database and set proper constraints. `Reaction` nodes are @@ -564,6 +575,61 @@ def citation_to_graph( ) ) + def classes_to_graph( + self, class_dat: Dict[str, List[List[str]]], session: db.Session + ): + # Common names for cell components + all_cco = [ + c["n.displayName"] + for c in session.run("MATCH (n:Compartment) RETURN DISTINCT n.displayName;") + ] + for cco in all_cco: + if cco in class_dat: + props: Dict[str, Union[str, List[str]]] = {} + for k, v in class_dat[cco]: + if k == "COMMON-NAME": + _add_kv_to_dict(props, k, v, as_list=False) + elif k == "SYNONYMS": + _add_kv_to_dict(props, k, v, as_list=True) + + session.write_transaction( + lambda tx: tx.run( + """ + MATCH (c:Compartment {displayName: $cco}) + SET c += $props; + """, + cco=cco, + props=props, + ) + ) + + # Common names and synonyms for organisms. Some also have strain names + all_taxon = [ + n["n.mcId"] for n in session.run("MATCH (n:Taxa) RETURN DISTINCT n.mcId;") + ] + for taxa in all_taxon: + if taxa in class_dat: + props: Dict[str, Union[str, List[str]]] = {} + for k, v in class_dat[taxa]: + if k in {"COMMON-NAME", "STRAIN-NAME", "COMMENT"}: + _add_kv_to_dict(props, k, v, as_list=False) + elif k == "SYNONYMS": + _add_kv_to_dict(props, k, v, as_list=True) + # TODO: TYPES links the taxon + + session.write_transaction( + lambda tx: tx.run( + """ + MATCH (n:Taxa {mcId: $taxa}) + SET n += $props; + """, + taxa=taxa, + props=props, + ) + ) + + # TODO: Evidence code in citations are in the `Evidence` attr + @staticmethod def _validate_path(filepath: Optional[Union[str, Path]]) -> Optional[Path]: if not filepath: From fc7c749e366ff23b2ab2958063fab9f00c622bb2 Mon Sep 17 00:00:00 2001 From: y1zhou Date: Thu, 20 Jan 2022 18:10:29 -0500 Subject: [PATCH 42/42] feat(metacyc): add annotation of compounds Comments in Compound nodes require parsing. DBLINKS could be added to RDF ndoes. fix #16 --- metabolike/parser/metacyc.py | 100 ++++++++++++++++++++++++++++++++++- 1 file changed, 99 insertions(+), 1 deletion(-) diff --git a/metabolike/parser/metacyc.py b/metabolike/parser/metacyc.py index aebdd97..ad682b2 100644 --- a/metabolike/parser/metacyc.py +++ b/metabolike/parser/metacyc.py @@ -59,6 +59,7 @@ def __init__( db_name: Optional[str] = None, reactions: Optional[Union[str, Path]] = None, pathways: Optional[Union[str, Path]] = None, + compounds: Optional[Union[str, Path]] = None, publications: Optional[Union[str, Path]] = None, classes: Optional[Union[str, Path]] = None, ): @@ -80,6 +81,9 @@ def __init__( classes: The path to the ``class.dat`` file. If given, the file will be parsed and annotations on ``Compartment``, ``Taxa``, and ``Compound`` nodes will be added. + compounds: The path to the ``compound.dat`` file. If given, the + file will be parsed and annotations on ``Compound`` nodes will + be added. """ # Neo4j driver self.neo4j_driver = neo4j_driver @@ -91,6 +95,7 @@ def __init__( "pathways": self._validate_path(pathways), "publications": self._validate_path(publications), "classes": self._validate_path(classes), + "compounds": self._validate_path(compounds), } # Misc variables @@ -137,6 +142,26 @@ def setup(self, force: bool = False): self.pathway_to_graph(pw, pw_dat, session) logger.debug(f"Added pathway annotation for {pw}") + # Compounds in compounds.dat + if self.input_files["compounds"]: + logger.info("Annotating Compound nodes") + cpd_dat = self._read_dat_file(self.input_files["compounds"]) + + # All Compound node with RDF have BioCyc IDs + # The META: prefix in BioCyc IDs need to be stripped + all_cpds = [ + (cpd["c.displayName"], cpd["r.Biocyc"][5:]) + for cpd in session.run( + """ + MATCH (c:Compound)-[:is]->(r:RDF) + RETURN c.displayName, r.Biocyc; + """ + ) + ] # TODO: 38 POLYMER nodes don't have BioCyc IDs + for cpd, biocyc in all_cpds: + self.compounds_to_graph(cpd, biocyc, cpd_dat, session) + logger.debug(f"Added annotation for compound {cpd} with {biocyc}") + # Read publications file if given if self.input_files["publications"]: logger.info("Annotating publications") @@ -536,6 +561,75 @@ def pathway_to_graph( ) ) + def compounds_to_graph( + self, + cpd: str, + biocyc: str, + cpd_dat: Dict[str, List[List[str]]], + session: db.Session, + ): + """Annotate a compound node with data from the compound.dat file. + + Args: + cpd: The ``displayName`` of the compound. + biocyc: The biocyc id of the compound. + cpd_dat: The compound.dat data. + session: The neo4j session. + """ + lines = cpd_dat[biocyc] + c_props: Dict[str, Union[str, List[str]]] = {} + rdf_props: Dict[str, Union[str, List[str]]] = {} + for k, v in lines: + if k in { + "GIBBS-0", + "LOGP", + "MOLECULAR-WEIGHT", + "MONOISOTOPIC-MW", + "POLAR-SURFACE-AREA", + "PKA1", + "PKA2", + "PKA3", + "COMMENT", + }: + _add_kv_to_dict(c_props, k, v, as_list=False) + elif k == "SYNONYMS": + _add_kv_to_dict(c_props, k, v, as_list=True) + elif k in {"SMILES", "INCHI"}: + _add_kv_to_dict(rdf_props, k, v, as_list=False) + elif k == "DBLINKS": + pass # TODO: parse DBLINKS + elif k == "CITATIONS": + self._link_node_to_citation(session, "Compound", cpd, v) + + c_props = self._clean_props( + c_props, + num_fields=[ + _snake_to_camel(x) + for x in [ + "GIBBS-0", + "LOGP", + "MOLECULAR-WEIGHT", + "MONOISOTOPIC-MW", + "POLAR-SURFACE-AREA", + "PKA1", + "PKA2", + "PKA3", + ] + ], + enum_fields=[], + ) + session.write_transaction( + lambda tx: tx.run( + """ + MATCH (c:Compound {displayName: $cpd_id})-[:is]->(r:RDF) + SET c += $c_props, r += $rdf_props; + """, + cpd_id=cpd, + c_props=c_props, + rdf_props=rdf_props, + ) + ) + def citation_to_graph( self, cit_id: str, pub_dat: Dict[str, List[List[str]]], session: db.Session ): @@ -924,7 +1018,7 @@ def _link_node_to_citation( Args: session: Neo4j session. - node_type: Type of the node (Reaction or Pathway). + node_type: Type of the node (Reaction, Pathway, or Compound). node_display_name: ``displayName`` of the node. citation_id: ``mcId`` of the ``Citation`` node. """ @@ -948,7 +1042,11 @@ def _clean_props( Args: props: Properties to normalize. + num_fields: Fields that should be converted to float numbers. + enum_fields: Fields that should be converted to alphanumerical strings. + Returns: + A dictionary with normalized properties. """ for f in num_fields: if f in props: