void OECreateInChI(std::string &str, const OEMolBase &mol,
                   const OEInChIOptions& = OEInChIOptions())

Creates an standard InChI or a non-standard InChI string representing a given molecule.


Setting any options will by default return a non-standard InChI.


The underlying InChI code is v1.05 released on January 27, 2017.


The OECreateInChI is rigorously tested to ensure that it generates the identical InChI string as the standalone InChI utility program.

Performance of OECreateInChI to generate standard InChI
Database Size Number of failures Success Rate
eMolecules 9.1M 1,350 99.97 %
ChEMBL_23 1.7M 8,255 99.52 %

Many failures are due to the problem that OEChem and InChI handle some incorrect bond stereo configurations differently. See example in Difference due atom stereo perception

Additionally there are approximately 7,300 structures in ChEMBL_23 where the InChI, SMILES and SDF forms for the record are in disagreement resulting in ambiguity for the expected or reference InChI.

Difference due atom stereo perception
InChI standalone InChI=1S/C3H7NO2/c1-2(4)3(5)6/h2H,4H2,1H3,(H,5,6)
OECreateInChI InChI=1S/C3H7NO2/c1-2(4)3(5)6/h2H,4H2,1H3,(H,5,6)/t2-/m1/s1

See example in Difference due atom stereo perception

See also