9
$\begingroup$

I'm writing a script and would like to use a "Gödel numbering" to search for specific reactions.

Is there any used procedure to assign an symbol (integer, possibly) to a chemical reaction, e.g.
$$\ce{CH4 + 2 O2 -> CO2 + 2 H2O} := 121231412?$$

$\endgroup$
2
  • $\begingroup$ To clarify, do you require reactions that are similar in some sense to generate similar numbers? $\endgroup$ Commented Mar 8, 2013 at 4:30
  • $\begingroup$ @RichardTerrett: Would be a feature, but isn't necessary. I don't expect the numbers/symbols to be accessible to a human. $\endgroup$
    – Nikolaj-K
    Commented Mar 8, 2013 at 8:07

4 Answers 4

5
$\begingroup$

My suggestion is to dabble in combining SMILES representations of the reactants and products and a stoichiometric matrix in a consistent fashion and then using a hashing function (Now that I think of it, I guess Godel numbering is an example of hashing) to assign the reaction a unique identifier. You need to use a representation of the reactants and products that unambiguously describes the molecular graph (including stereochemistry) so that stereo- and/or constitutional isomers cannot give rise to the same identifiers, and so that different orderings of atoms in a string describing identical molecules do not give rise to differing identifiers.

There exist a number of reaction ontologies that can be used to categorise and describe chemical reactions. KEGG RCLASS and RPAIR is one such example which gives rise to numerical identifiers, however I'm not totally clear on how it works and it appears to be tailored to metabolomics. It is however a good example of the kind of thing people are doing.

The CMLReact format is an XML format for representing chemical reactions that may be suitable for generating short identifiers from through hashing, however being XML it has enough cruft in it that chemically insignificant changes to a CMLReact file may give rise to differing derived identifiers. Open documentation of the format is sadly not terribly forthcoming on the internet however there is an library for reading and writing CMLReact in OpenBabel.

$\endgroup$
4
$\begingroup$

I don't know about Godel numbering specifically (though this is interesting, my being a math guy at heart), but there are existing textual systems for encoding molecules (not reactions that I know of). From these, you may be able to encode reactions.

Two examples are InChI and SMILES. These are Wikipedia links.

$\endgroup$
4
$\begingroup$

The existing answers are a little outdated. More recently there has been a good amount of work done towards extending the InChI identifiers (which encode chemicals) to the Reaction InChI, or RInChI (which encode reactions, as the name suggests). See e.g. Grethe, G.; Blanke, G.; Kraut, H.; Goodman, J. M. J. Cheminform. 2018, 10 (1), No. 22, for a very thorough description of how RInChI can be constructed.

Generally these tend to be quite long; so it was also considered desirable to perform some kind of hashing so create shorter keys called 'RInChIKeys', which is also described in the aforementioned paper. This will likely come closer to your idea of a 'symbol' representing a reaction, although in this case it is a string, not a number. Collisions are highly improbable, but in principle possible.

Software for generation of (R)InChI can be obtained from https://www.inchi-trust.org/downloads/; also, a small-ish database of reactions and RInChIs can be downloaded from http://www-rinchi.ch.cam.ac.uk/downloads/.

$\endgroup$
2
$\begingroup$

SMARTS are a canonical way of representing chemical reactions (and other pattern-matching problems). This is a formal language so you could assign a Goedel numbering to the SMARTS. If you need a library to handle SMARTS/SMILES etc., take a look at OpenBabel.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.