SMILES in.
A checked IUPAC name out.
Orthonym builds the name from the rules of the IUPAC 2013 recommendations, aiming at the Preferred IUPAC Name. Then OPSIN, which never saw your structure, reads the name back, and the two structures are compared by InChIKey. Every name carries its tier. When no name passes, you get the reason instead of a guess.
orthonym "CCO"ethanol
The first command, the five examples, and what --provenance prints.
Use it from code
from orthonym import name_compound
name_compound, its parameters and the provenance fields, on one page.
Install. Needs Python 3.10+ and a Java 11+ runtime.
pip install "git+https://github.com/Steinbeck-Lab/Orthonym.git"
orthonym --fetch-jars
No installing? Name a structure in the web app.
Examples of each tier
pin_verified
1,3,7-trimethyl-3,7-dihydro-1H-purine-2,6-dione
orthonym "Cn1cnc2c1c(=O)n(C)c(=O)n2C"caffeine
- InChIKey of your structure
RYYVLZVUVIJVGH-UHFFFAOYSA-N- InChIKey of what OPSIN read back
RYYVLZVUVIJVGH-UHFFFAOYSA-N
Same molecule: a verified Preferred IUPAC Name.
pin_unverified
(2S,3R,4E)-2-aminooctadec-4-ene-1,3-diol
orthonym --emit-tier valid "CCCCCCCCCCCCC/C=C/[C@H]([C@H](CO)N)O"sphingosine
Read back by OPSIN to the same molecule; its preferred status is not certified.
best_effort
cis-decahydronaphthalene
orthonym --emit-tier best-effort "C1CC[C@H]2CCCC[C@H]2C1"cis-decalin
From a last-resort producer; OPSIN read it back to the same molecule.
abstain
inorganic compound (not supported)
orthonym --on-failure label "O=[U](=O)=O"uranium trioxide
Declined, with the reason code UNSUPPORTED_ELEMENT. By default the name is empty and the reason goes to the error stream.
Every line is the engine's own output. What the tiers mean.
Find your way
Orthonym is described in a ChemRxiv preprint. Please cite it.