7
$\begingroup$

Is there a standard way how can the index over a molecular structure be kept in the computer?

A molecule is a graph, where nodes have labels (chemical element type), and edges are chemical bonds.

There is SMILES representation that determines the molecular structure, but SMILES representation isn't unique.

One can take the set of all possible SMILES representations for one molecule, sort them alphanumerically, and pick the first element. This would be a unique string that is in one-to-one relationship with a molecule, and would satisfy my request.

But is there a standard way how to have a value that is in one-to-one relationship with a molecule that can be used as an index in the database that has many molecules in it?

By extension, how to efficiently search a set of molecules and, given a particular molecule, find a set of the closest structural matches? What characteristics of the molecules should be memorized that would allow such search to be efficient?

$\endgroup$
2
  • $\begingroup$ You might want to flip through CCDC ConQuest manual and refer to CSD's Python API. There is no quick and dirty how-to's. $\endgroup$
    – andselisk
    Feb 25, 2019 at 3:38
  • $\begingroup$ @andselisk This document describes how to use the system that does something like this, but not how it does it. $\endgroup$ Feb 25, 2019 at 6:17

3 Answers 3

7
$\begingroup$

A molecule is a graph, where nodes have labels (chemical element type), and edges are chemical bonds.

while fairly common and acceptable for an initial approach, this models fails to catch many types of isomers and tautomers. There is no well-established general approach because the basic definitions are kinda wonky and the subjects itself is extremely complex. For example, monomethylbulvalene would for all intents and purposes work as a single compound yet a set of different molecules would be present in all reasonably analyzed samples.

By extension, how to efficiently search a set of molecules and, given a particular molecule, find a set of the closest structural matches?

That's a part of QSAR big problem: to identify "similar" molecules. It doesn't work reliably.

What characteristics of the molecules should be memorized that would allow such search to be efficient?

There are specialized graph databased that aim to solve the problem of efficient search on graph-like structures, but see above.

$\endgroup$
5
$\begingroup$

You might want to look at

W.-D. Ihlenfeldt, J. Gasteiger, “Hash Codes for the Identification and Classification of Molecular Structure Elements”, J. Comput. Chem. 1994, 15, 793–813.

with the reference implementation being available in the CACTVS toolkit available at https://www.xemistry.com/academic/

These hash codes allow for the identification of organic molecules independent from numbering schemes including stereochemistry.

They do not comprise any similarity information, rather even similar molecules exhibit distinct hash codes.

$\endgroup$
4
$\begingroup$

There are multiple ways to do this:

  1. As you mention, SMILES strings - it is possible to have 'canonical' SMILES
  2. InChI - another standard for representing structures in a canonical way
  3. Various numbering systems (CAS Registry Number, etc)

As you point out, one way to get a unique identifier is to make some line notation (like SMILES) and then sort all the representations for a chemical and pick the alphabetically 'largest'.

The difficulty with that approach is that some chemicals are highly symmetric. For example, the fullerenes - although, realistically most chemicals are asymmetric (as are most graphs). The more symmetries a structure has, the more different ways there are to write it in some line notation.

Practically speaking, to efficiently search a database of structures for a query it makes sense to use techniques like 'fingerprints' to filter candidates. Simply string matching the canonical form against the database will work, of course.

$\endgroup$
2
  • 3
    $\begingroup$ No doubt, CAS numbers are handy to use. However, note potential difficulties with CAS registry numbers: except the last figure (a check digit) it basically is a book keeping owned by The American Chemical Society. Other than SMILES or InChI, it is not structure related -- it is impossible to compute it (e.g. openbabel) with a structure in hand. Using CAS numbers, the OP would need to keep a dictionary of CAS RNs, including instances where multiple CAS numbers point to the same molecular structure and settle an agreement with ACS to use such a dictionary, too (like wikipedia did). $\endgroup$
    – Buttonwood
    Feb 25, 2019 at 21:54
  • 1
    $\begingroup$ Related notes on InChI: Pubchem, InChI, SMILES, and uniqueness and Structure that breaks InChI $\endgroup$ May 8, 2019 at 16:25

Your Answer

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

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