dan2097 / opsin Goto Github PK
View Code? Open in Web Editor NEWOpen Parser for Systematic IUPAC Nomenclature. Chemical name to structure conversion
Home Page: https://opsin.ch.cam.ac.uk
License: MIT License
Open Parser for Systematic IUPAC Nomenclature. Chemical name to structure conversion
Home Page: https://opsin.ch.cam.ac.uk
License: MIT License
Original report by Noel O'Boyle (Bitbucket: baoilleach, GitHub: baoilleach).
I think 2-nosyl is a thing. Sometimes also called o-nosyl. Clearly OPSIN doesn't want to hear about a locant and just defaults to 4-nosyl. FWIW, the Wikipedia page (which I did not edit :-) at https://en.wikipedia.org/wiki/Sulfonyl has both 2- or 4- listed as synonyms of Ns.
Original report by Daniel Lowe (Bitbucket: dan2097, GitHub: dan2097).
Positioning of radical needs to be taking into account when determining if substitution is ambiguous
Original report by Nina Jeliazkova (Bitbucket: vedina, GitHub: vedina).
OPSIN 1.6.0 parses "Methyldibromo glutaronitrile" into
which is slightly different than what is found in CIR, ChemIDPlus and http://en.wikipedia.org/wiki/Methyldibromo_glutaronitrile
Original report by Steve Chapman (Bitbucket: isomerdesign, ).
4-propyl-9-hydroxynaphthoxazine fails parse with "Atom is in unphysical valency state! Element: O valency: 3"
IUPAC's default heteroatom placement for "oxazine" seems to be 1,4, but the parser seems to be defaulting to 1,2.
http://pubchem.ncbi.nlm.nih.gov/summary/summary.cgi?cid=57533&loc=ec_rcs
Original report by Daniel Lowe (Bitbucket: dan2097, GitHub: dan2097).
The most common source of ambiguity in names is substitution ambiguity. At the point of multiplying substituents for unlocanted substitution the StereoAnalyser should be used to detect the number of degenerate substitutable hydrogens and assure that the multiplier is this number (or 1 less e.g. pentachlorobenzene is also unambiguous)
Ambiguity detection would be off by default, and produce a result status of WARNING if detected.
Original report by Daniel Lowe (Bitbucket: dan2097, GitHub: dan2097).
Currently alpha/beta stereo are treated like other stereochemistry terms and applied to the stereoparent after it has been constructed. Alpha/beta stereochemistry indicates the position of a group relative to the plane of the unsubstituted parent, hence to do this in general the term must be associated with the atom through which the group that was added attached.
[The current implementation makes the assumption that the non-hydrogen is the atom added and hence fails when a position is double substituted]
Proposal: Keep alpha/beta stereochemistry in much the way it is originally parsed. In bridge assignment, suffix assignment and substitutent attachment add consider being preceded either by a locant or a stereochemistry element of this type. Once the group is attached, the stereochemistry term should be moved in front of the stereoparent and associanted with the atomid of the atom that attached to the stereoparent.
Bracketed alpha/beta stereochemistry can be handled as it is currently. Alpha/beta stereo directly in front of a stereoparent should probably be recognized at the point that it is currently applied.
Original report by Anonymous.
But mysteriously, dioxole is reported as potentially ambigous.
This might also be a good issue to track that the warning message
should contain the original name/surface "dioxol" rather than some
internal state "oxoxol".
Original report by Anonymous.
The website gives, among others, the following two ways to use a name with greek letters:
The romanised name for the letter e.g. lambda
The romanised name for the letter surrounded by dots e.g. .lambda.
However,
1,1-dioxo-1,2-dihydro-1lambda^6-thieno[2,3-d]isothiazol-3-one
is properly parsed while
1,1-dioxo-1,2-dihydro-1.lambda.^6-thieno[2,3-d]isothiazol-3-one and
1,1-dioxo-1,2-dihydro-1.lambda.6-thieno[2,3-d]isothiazol-3-one fail.
Original report by Steve Chapman (Bitbucket: isomerdesign, ).
Synthetic cannabinoid JWH-251 is commonly named "1-pentyl-3-(2-methylphenylacetyl)indole" which is parsed as "1-pentyl-3-(2-methyl-2-phenylacetyl)indole" rather than "1-pentyl-3-[(2-methylphenyl)acetyl]indole." The latter name evokes the correct depiction of JWH-251. (Credit Lee Fadness for this discovery)
However "1-pentyl-3-(3-methylphenylacetyl)indole" is parsed as "1-pentyl-3-[(3-methylphenyl)acetyl]indole," presumably because the parse that worked for the prior name fails for this one. Pragmatic but //inconsistant//.
Also, this variant parses correctly and consistently regardless of the locant: "1-pentyl-3-(2-methylphenacyl)indole".
Original report by Steve Chapman (Bitbucket: isomerdesign, ).
An HTML italic tag embedded in a name consistently evokes this response:
//Problem retrieving server error message! Is this server running?
Example:
This is a trivial issue when the cause is recognized and corrected, but the error message is sufficiently distracting that I suspect some never get past it.
Original report by pmortenson (Bitbucket: pmortenson, ).
Hi Dan,
Does OPSIN handle deuterated compounds? If if does, how would it expect these names to be formatted?
Thanks,
Paul
Original report by Anonymous.
I try to use opsin to convert this molecule name into smile:
acetic acid 2'-methyl-2'-(1",2",4"-trimethylpent-2"-enyloxy)propyl ester
can you tell me why it does not work ?
best regard,
Guillaume Godin
Original report by Daniel Lowe (Bitbucket: dan2097, GitHub: dan2097).
i.e. when (R), (S), (E) and (Z) are used on a molecule with multiple chiral centres in scope.
Original report by Daniel Lowe (Bitbucket: dan2097, GitHub: dan2097).
Add support for D,L and (R/S) as alternatives to DL and (RS)
Original report by Daniel Lowe (Bitbucket: dan2097, GitHub: dan2097).
OPSIN currently returns CML (Chemical Markup Language) as a XOM element. Changing this interface to a String would allow OPSIN's dependency on XOM to be removed and would provide access to the CML without knowledge of a 3rd party library. On the downside the signature of parseToCML would be changed.
This change would be part of a v2.0 release.
Original report by Steve Chapman (Bitbucket: isomerdesign, ).
"3-methanone(cyclopropyl)indole has no tokens unknown to OPSIN but does not conform to its grammar. From left to right it is unparsable due to the following being uninterpretable:(cyclopropyl)indole The following or which was not parseable: cyclopropyl)indole"
[Unparsable and vexatious name courtesy of Health Canada's Office of Controlled Substances and Creative Writing]
Original report by Anonymous.
The structures provided for known compounds such as 8,9-dihydro-2H,7H-2,9a-diaza-benzo[cd]azulene-1,6-dione and (7-methyl-7,8-dihydro-2H-1,6,9-trioxa-9a-borabenzo[cd]azulen-2-yl)methanamine generate unexpected structures.
Original report by Anonymous.
I believe that 3-methyl-4-(propyl-2,3-13C)octane is valid IUPAC specification for an isotopomer with 13C at the 2 and 3 atoms of the propyl group. However, OPSIN is not recognizing this.
A lot of stable isotope tracing experiments are generating NMR datasets with assigned isotopomers. Our abililty to utilize IUPAC depends on the ability of tools to process the isotopomer part of the IUPAC standard.
Original report by pmortenson (Bitbucket: pmortenson, ).
Me again!
We use Chemaxon's structure-to-name package, and then check the names by round-tripping them with OPSIN. We have noticed one class of names that always fail - here is an example:
[(1s,3r)-3-methylcyclobutyl]methanol
It was generated from this SMILES: C[C@H]1CC@HC1
Here there is relative stereochemistry across a symmetrical ring, so (R,S) and (S,R) are equivalent. Is this incorrect naming from Chemaxon, or just not a feature that is currently in OPSIN?
Thanks for all your help,
Paul
Original report by Anonymous.
Original report by Takayuki Kimura (Bitbucket: takayukiii, GitHub: takayukiii).
Hi, I used OPSIN to change IUPAC to SMILES and it worked well. Thank you.
I noticed one thing. The program asked me to change 'oxidetetrahydro-'
to 'oxidotetrahydro-' and this might be wrong. Thanks again.
Original report by Roy Garvey (Bitbucket: rgarvey, GitHub: rgarvey).
N-butyl-4-nitrobenzeneamine nona(4-nitrobenzeneamine)
elicits error message "non" indicates none. "nona" should probably be used. My guess is that the parser does not check the next character before deciding that the error has occurred. This error seems to be occurring generally when 'nine' items are being considered.
Original report by Steve Chapman (Bitbucket: isomerdesign, ).
"Fused ring systems involving non 6-membered rings which are not in a "chain" cannot currently be numbered e.g. indeno[2,1-c]pyridine can be numbered, benzo[cd]indole cannot"
I'm guessing that's why this parses fine:
while this does not:
I hesitate to label this a bug, but the alternatives are few. Perhaps "test-case" would be a useful option?
Original report by Steve Chapman (Bitbucket: isomerdesign, ).
Omitting the space makes a difference:
[9-Hydroxy-6-methyl-3-(5-phenylpentan-2-yl)oxy-5,6,6a,7,8,9,10,10a-octahydrophenanthridin-1-yl]acetate
[9-Hydroxy-6-methyl-3-(5-phenylpentan-2-yl)oxy-5,6,6a,7,8,9,10,10a-octahydrophenanthridin-1-yl] acetate
Simper cases exhibit the same behaviour: hexylacetate vs hexyl acetate.
Original report by Jiri Novotny (Bitbucket: gorgitko, GitHub: gorgitko).
Hello,
having this IUPAC: alkyl(dimethyl)[2-(hydroxyimino)-2-(pyridin-2-yl)ethyl]ammonium
I get this error: alkyl(dimethyl)[2-(hydroxyimino)-2-(pyridin-2-yl)ethyl]ammonium was uninterpretable due to the following section of the name: alkyl The following was not understandable in the context it was used: alk
Is it possible to also support these alkyl
(R
) groups? They are normally noted with *
in SMILES.
Thanks,
Jiri
Original report by Joe Polak (Bitbucket: JoePolak, GitHub: JoePolak).
Hello,
A user of ChemDoodle has reported that the name "(9S)-Cinchonan-9-ol" isn't supported by the name parser, which uses OPSIN 1.5. I checked with the live version on at http://opsin.ch.cam.ac.uk/, and got the following output:
"(9S)-Cinchonan-9-ol was uninterpretable due to the following section of the name: (9S)-Cinchonan-9-ol The following was not understandable in the context it was used: Cinch"
Thought you should know.
Joe Polak
Senior Developer
iChemLabs
Original report by Daniel Lowe (Bitbucket: dan2097, GitHub: dan2097).
e.g. Benzene-1,4-disulfonic acid 1-(ethylamide) 4-(propylamide)
Original report by Anonymous.
I've tried several names. InChI and CML look good, but the web page seems to be displaying the CML code twice instead of displaying the SMILES string and the CML.
Original report by Steve Chapman (Bitbucket: isomerdesign, ).
This it can handle: (2S)-2-[(5R,6R,7R,14S)-N-cyclopropylmethyl-4,5-epoxy-3-hydroxy-6-methoxymorphinan-7-yl]-3,3-dimethylpentan-2-ol
And this also: 6,14-ethanomorphinan
But it seems to trip over the ethano bridge in this:
(2S)-2-[(5R,6R,7R,14S)-N-cyclopropylmethyl-4,5-epoxy-6,14-ethano-3-hydroxy-6-methoxymorphinan-7-yl]-3,3-dimethylpentan-2-ol
Original report by Steve Chapman (Bitbucket: isomerdesign, ).
http://opsin.ch.cam.ac.uk/opsin/glyoxalylamine.png
http://opsin.ch.cam.ac.uk/opsin/glyoxalylamide.png
http://opsin.ch.cam.ac.uk/opsin/indol-3-ylglyoxalylamide.png
http://opsin.ch.cam.ac.uk/opsin/2-(indol-3-yl)glyoxalylamine.png
1.Amide has a charge on the nitrogen, the amine does not.
2.The commonplace name for a tryptamine precursor is indol-3-ylglyoxalylamide.which my be imperfect IUPAC but there you go. The structure this name produces is not the one typically desired. Adding a proper locant gives the correct structure.
Original report by Noel O'Boyle (Bitbucket: baoilleach, GitHub: baoilleach).
didehydro not handled correctly
Original report by Anonymous.
InChI generation error where SMILES and CML descriptions are created for:
Ammonium 3,13,16,19,22-pentaoxo-5,8,11-triaza-2,14,15,20,21-pentaoxa-1-ytterbatetracyclo[6.6.3.3{1,5}.3{1,11}]tricosane hydrate
Original report by AlisonChoy (Bitbucket: AlisonChoy, GitHub: AlisonChoy).
2-endoamino-benzobicyclo[2,2,1]-heptane
2-endoamino-benzobicyclo[2,2,1]-heptane was uninterpretable due to the following section of the name: 2-endo The following was not understandable in the context it was used: end
Original report by Daniel Lowe (Bitbucket: dan2097, GitHub: dan2097).
Structure should be Li+ AlH4-
Analgously for other metals
Possibly should use similar logic for off names like "sodium boron hydride" = sodium borohydride
Original report by Anonymous.
Hi Dan,
I noticed that OPSIN fails to parse the following name:
1lambda6,4-thiomorpholine-1,1-dione
however, both of the following are parsed fine:
1lambda6,4lambda3-thiomorpholine-1,1-dione (different name for the same compound)
1lambda6,2-benzothiazole-1,1-dione
So it looks like there isn't a problem with the 1,4 thiomorpholine numbering, and neither is it always necessry to specify lambda values for all locants. Is this a bug, or have I missed something?
Fantastic piece of software, by the way....
Original report by Daniel Lowe (Bitbucket: dan2097, GitHub: dan2097).
acetophenone has 2,2',3',4',5',6' locants. In many names the primed locants are treated as unprimed and if required the 2 position is referred to as alpha.
In principle changing the locants if an unprimed number 3 or 4 is detected would give better recall.
Original report by Daniel Lowe (Bitbucket: dan2097, GitHub: dan2097).
e.g. 4-benzofuran-2-yl-2-methyl-1,2,3,4-tetrahydroisoquinolin-4-ol
is currently noted as ambiguous and gives incorrect interpretation.
Original report by Steve Chapman (Bitbucket: isomerdesign, ).
Opsin parses thioacetic acid as thioacetic O-acid, i.e., the hydroxy moiety is undisturbed. ACD/Labs Name parses thioacetic acid as thioacetic S-acid, i.e. the carbonyl moiety is undisturbed.Wikipedia also favours the S-acid.
Opsin rejects the qualifier for the acid, e.g. thioacetic S-acid, thioacetic O-acid, but accepts it in an ester, e.g. Thioacetic acid S-methyl ester, Thioacetic acid O-methyl ester
I don't know that there is a right or wrong answer, just an ill-conceived overload of thio in this context with no clear guidance from IUPAC that I can find.
Original report by Noel O'Boyle (Bitbucket: baoilleach, GitHub: baoilleach).
Example: 6-phospho-2-O-methyl-D-mannose
Problem: The phospho should be interpreted as phosphono as it's biochemical nomenclature, but instead it's interpreted as *P(=O)(=O)
Original report by Noel O'Boyle (Bitbucket: baoilleach, GitHub: baoilleach).
Hi Daniel,
I'm not sure if people are misusing this or not, but levulinyl is sometimes used in the context of "Levulinyl chloride" or as a substituent on sugars (e.g. 3-O-levulinyl). OPSIN is happy with "Levulinic acid" but the chloride gives:
"Suffix: yl does not apply to the group it was associated with (type: acidStem) due to the group's subType: ylForNothing according to suffixApplicability.xml"
Original report by dbgerhard (Bitbucket: dbgerhard, GitHub: dbgerhard).
Hi folks, thanks for this amazing site.
I put in 1-butanol, and I expected the smiles code to be CCCCO but your system produced C(CCC)O. Can you check why your smiles code is inserting a branch? C(CCC)O would suggest a substituent where none exists. Thanks.
Original report by Daniel Lowe (Bitbucket: dan2097, GitHub: dan2097).
Something like:
phosphoric acid hydrogen 1,1'-binaphthyl-2,2'-diyl ester
should be interpretable
Original report by Anonymous.
Latest implementation presents above message when spiro involves transition metal center. No problem before server update of 21-23 Jan, 2016.
Original report by Steve Chapman (Bitbucket: isomerdesign, ).
I tried to construct this structure: 11,12-dihydroindolo[2,3-a]carbazole, by instead approaching the name as 11,12-dihydrobenzo[2,1-b:3,4-b']diindole.
That does in fact work, but the fully conjugated (didehydro) name benzo[2,1-b:3,4-b']diindole is rebuffed with "Could not assign all higher order bonds."
Still, this name benzo[1,2-b:3,4-b']diindole, and this name benzo[2,1-b:4,5-b']diindole are accepted, which seems odd. This name indolo[2,3-a]carbazole is also accepted.
Original report by Anonymous.
Insertion of a space in the failed example
4,4',4''-trimethyl(2,2':6',2''-terpyridine)-4,4',4''-tricarboxylate
as
4,4',4''-trimethyl (2,2':6',2''-terpyridine)-4,4',4''-tricarboxylate
made parseable.
Original report by Anonymous.
This is nit-picky but for the error given when the name "6,6-dimethyl-4-morpholino-2-(1H-pyrrolo[2,3-b]pyridin-5-yl)-8,9-dihydro-6H-[1,4]oxazino[3,4-e]purine" is given the error reads: "Invalid fusion descriptor: Heteroatom placement is ambigous as it is not present in both components of the fusion"
The word ambigous should be ambiguous.
Original report by Daniel Lowe (Bitbucket: dan2097, GitHub: dan2097).
e.g. benzamide, trifluoroacetic acid salt
Probably easiest to support through an extension of the CAS name preprocessor
Original report by Andrius Merkys (Bitbucket: merkys, GitHub: merkys).
Galactose should be cyclic, however, it is perceived as a linear molecule:
$ echo galactose | java -jar src/opsin-2.3.0-jar-with-dependencies.jar
Run the jar using the -h flag for help. Enter a chemical name to begin:
O=C[C@H](O)[C@@H](O)[C@@H](O)[C@H](O)CO
Original report by Richard Apodaca (Bitbucket: rapodaca, GitHub: rapodaca).
Salts containing the "hemisulfate" form are not recognized, for example, "pyridinium hemisulfate" (two pyridines and one sulfuric acid).
The term appears regularly in chemical supplier catalogs.
For charged groups, the behavior of "sulfate" groups is the same as that needed for "hemisulfate". For example, "pyridinium sulfate" gives the same structure that "pyridine hemisulfate" should give.
Original report by Noel O'Boyle (Bitbucket: baoilleach, GitHub: baoilleach).
7-Methylguanosine should have implicit +ve charge
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.