MDL Query Depiction

In order to depict an MDL query the query molecule has to be imported by calling the OEReadMDLQueryFile function. The rest of the process is identical to depicting a molecule. First the OEPrepareDepiction function has to be called to generate the 2D atom coordinates, then the image can be created by rendering the molecule (OERenderMolecule).

Listing 1: Example of MDL query depiction

#include <openeye.h>

#include <oesystem.h>
#include <oechem.h>
#include <oedepict.h>

using namespace OESystem;
using namespace OEChem;
using namespace OEDepict;

int main(int argc,  char* argv[])
{
  if (argc != 3)
    OEThrow.Usage("%s <mdlquery> <imagefile>", argv[0]);

  oemolistream ifs(argv[1]);
  OEGraphMol qmol;
  OEReadMDLQueryFile(ifs, qmol);
  OEPrepareDepiction(qmol);
  OERenderMolecule(argv[2], qmol);
  return 0;
}

See also

OEReadMDLQueryFile function in the OEChem TK manual

Atom Query Features

The depiction of the following MDL atom query features is supported:

  1. The 8th column in the atom block is used to define the number of allowed hydrogens for an atom. (See examples in Table: Example of depicting hydrogen count)

    • (H0) means no hydrogen atoms allowed unless explicitly drawn.
    • (Hn) means atom must have n or more implicit hydrogen(s)
    Examples of depicting hydrogen count
    query    
    ../_images/MDLHCount-01-query.png ../_images/MDLHCount-01-match-0.png ../_images/MDLHCount-01-match-1.png
    ../_images/MDLHCount-02-query.png ../_images/MDLHCount-02-match-0.png ../_images/MDLHCount-02-match-1.png
  2. Query atom types:

    • A = any atom type except hydrogen
    • Q = any atom type except hydrogen and carbon
    • L = atom list

    The M  ALS line in the property block is used to list alternative atom types for an atom. (See examples in Table: Examples of depicting query atom types)

    Examples of depicting query atom types
    query target target target
    ../_images/MDLGenericAtom-01-query.png ../_images/MDLGenericAtom-01-match-0.png ../_images/MDLGenericAtom-01-match-1.png ../_images/MDLGenericAtom-01-match-2.png
    ../_images/MDLGenericAtom-02-query.png ../_images/MDLGenericAtom-02-match-0.png ../_images/MDLGenericAtom-02-match-1.png ../_images/MDLGenericAtom-02-match-2.png
    ../_images/MDLGenericAtom-03-query.png ../_images/MDLGenericAtom-03-match-0.png ../_images/MDLGenericAtom-03-match-1.png ../_images/MDLGenericAtom-03-match-2.png
    ../_images/MDLGenericAtom-04-query.png ../_images/MDLGenericAtom-04-match-0.png ../_images/MDLGenericAtom-04-match-1.png ../_images/MDLGenericAtom-04-match-2.png
  3. M  CHG line in the property block is used to define atom formal charges. (See examples in Table: Example of depicting formal charge)

    Examples of depicting formal charge
    query target target
    ../_images/MDLCharge-01-query.png ../_images/MDLCharge-01-match-0.png ../_images/MDLCharge-01-match-1.png
  4. M  RBC line in the property block is used to limit the number of allowed ring bonds attached to an atom. (See examples in Table: Example of depicting ring count)

    • (r0) means no ring bond allowed
    • (r*) means as drawn
    • (rn) means n number of ring bonds allowed
    Examples of depicting ring count
    query target target
    ../_images/MDLRingCount-01-query.png ../_images/MDLRingCount-01-match-0.png ../_images/MDLRingCount-01-match-1.png
    ../_images/MDLRingCount-02-query.png ../_images/MDLRingCount-02-match-0.png ../_images/MDLRingCount-02-match-1.png
  5. M  SUB line in the property block is used set the number of allowed substitutions of an atom. (See examples in Table: Examples of depicting substitution count)

    • (s0) means no substitution allowed
    • (s*) means as drawn
    • (sn) means n number of substitution(s) allowed
    Examples of depicting substitution count
    query target target
    ../_images/MDLSubCount-01-query.png ../_images/MDLSubCount-01-match-0.png ../_images/MDLSubCount-01-match-1.png
    ../_images/MDLSubCount-02-query.png ../_images/MDLSubCount-02-match-0.png ../_images/MDLSubCount-02-match-1.png
  6. M  UNS line in the property block is used to specify whether or not an atom is unsaturated, i.e., having at least one multiple bond. (See examples in Table: Examples of depicting unsaturated property)

    Examples of depicting unsaturated property
    query target target
    ../_images/MDLUnsaturated-01-query.png ../_images/MDLUnsaturated-01-match-0.png ../_images/MDLUnsaturated-01-match-1.png

Bond Query Features

The depiction of the following MDL bond query features is supported:

  1. Alternative bond types in the bond block (4 = aromatic, 5 = single or double, 6 = single or aromatic, 7 = double or aromatic, 8 = any bond). (See examples in Table: Examples of depicting query bond types)

    Examples of depicting query bond types
    query target target target
    ../_images/MDLGenericBond-01-query.png ../_images/MDLGenericBond-01-match-0.png ../_images/MDLGenericBond-01-match-1.png ../_images/MDLGenericBond-01-match-2.png
    ../_images/MDLGenericBond-02-query.png ../_images/MDLGenericBond-02-match-0.png ../_images/MDLGenericBond-02-match-1.png ../_images/MDLGenericBond-02-match-2.png
    ../_images/MDLGenericBond-03-query.png ../_images/MDLGenericBond-03-match-0.png ../_images/MDLGenericBond-03-match-1.png ../_images/MDLGenericBond-03-match-2.png

    See also

  2. The 6th column in the atom block describes bond topology. (See examples in Table: Examples of depicting bond topology)

    • (rn) means that it can only mapped to ring bond
    • (ch) means that it can only mapped to chain bond
    Examples of depicting bond topology
    query target target
    ../_images/MDLTopology-01-query.png ../_images/MDLTopology-01-match-0.png ../_images/MDLTopology-01-match-1.png
    ../_images/MDLTopology-02-query.png ../_images/MDLTopology-02-match-0.png ../_images/MDLTopology-02-match-1.png
  3. Double bond stereochemistry is considered if both ends of the bond are marked with stereo care flags in the atom block. (See examples in Table: Examples of depicting bond stereo care)

    Examples of depicting bond stereo care
    query target target
    ../_images/MDLBondStereo-01-query.png ../_images/MDLBondStereo-01-match-0.png ../_images/MDLBondStereo-01-match-1.png
    ../_images/MDLBondStereo-02-query.png ../_images/MDLBondStereo-02-match-0.png ../_images/MDLBondStereo-02-match-1.png

See also

R-group Depiction

OEDepict TK can also depict R-group information by interpreting the M  RGP line in the property block of an MDL file (See examples in Table: Examples of depicting R-groups)

Examples of depicting R-groups
../_images/RGroup-01.png ../_images/RGroup-02.png