Bug in Tautomerize Plugin?

User 7a95044e7d

29-11-2013 09:15:42

Dear Support,


The molecule created out of the SMILEs "[O-][N+](=O)c1ccc(cc1)C(=O)Cn2ccnc2" causes an error during the TautomerizeAction procedure.


It drops out with the follwing exception:


Exception in thread "main" java.lang.NullPointerException
    at chemaxon.calculations.CanonicResonant.isAnilSubExist(CanonicResonant.java:1180)
    at chemaxon.calculations.CanonicResonant.setFGScore(CanonicResonant.java:1015)
    at chemaxon.calculations.CanonicResonant.setResonantScore(CanonicResonant.java:721)
    at chemaxon.calculations.CanonicResonant.calcCanonicalResonant(CanonicResonant.java:319)
    at chemaxon.calculations.Tautomerization.setCommonForm(Tautomerization.java:1640)
    at chemaxon.calculations.Tautomerization.initCalc(Tautomerization.java:1925)
    at chemaxon.calculations.Tautomerization.calculateDACouples(Tautomerization.java:11326)
    at chemaxon.calculations.Tautomerization.createDACouples(Tautomerization.java:11288)
    at chemaxon.calculations.CanonicTautomer.calcCanonicalTautomer(CanonicTautomer.java:476)
    at chemaxon.calculations.Tautomerization.generateCanonicTautomer(Tautomerization.java:808)
    at chemaxon.calculations.Tautomerization.createCanonicTautomer(Tautomerization.java:744)
    at chemaxon.calculations.Tautomerization.createStandardTautomer(Tautomerization.java:869)
    at chemaxon.marvin.calculations.TautomerizationPlugin.run(TautomerizationPlugin.java:810)
    at chemaxon.standardizer.actions.TautomerizeAction.standardize1(TautomerizeAction.java:72)
    at chemaxon.standardizer.AbstractStandardizerAction.standardize(AbstractStandardizerAction.java:147)
    at chemaxon.standardizer.runner.BasicStandardizerRunner$1.standardize(BasicStandardizerRunner.java:131)
    at chemaxon.standardizer.runner.BasicStandardizerRunner$1.run(BasicStandardizerRunner.java:93)
    at chemaxon.standardizer.runner.BasicStandardizerRunner.standardizeAndWait(BasicStandardizerRunner.java:263)
    at chemaxon.standardizer.Standardizer.standardize(Standardizer.java:370)
    at databasepreparation.ChemaxonTautomerBug.tautomerize(ChemaxonTautomerBug.java:45)
    at databasepreparation.ChemaxonTautomerBug.<init>(ChemaxonTautomerBug.java:26)
    at databasepreparation.ChemaxonTautomerBug.main(ChemaxonTautomerBug.java:52)


 


I attached my code. Is this a bug?


 


Cheers,


Matthias

User 851ac690a0

29-11-2013 14:53:38

Hi,


 


Yes, this is a bug. It will be fixed in the 6.2 release. 


 


Jozsi

User 7a95044e7d

03-12-2013 10:24:03

Thanks Joszi,


Is there already a release date set for v6.2?


 


I came upon another thing (bug?) related to the tautomerize plugin:


Given the SMILES "[O-][N+](=O)c1ccccc1c2oc(\\C=C\\3/C(=O)ON=C3c4ccccc4)cc2", after calling the tautomerize plugin and extracting the SMILES, I end up with:


"[O-]C1=[O+][N-]C(=C1[CH+]C1=CC=C(O1)C1=CC=CC=C1[N+]([O-])=O)C1=CC=CC=C1"


I consider this tautomer as not stable, ad my following calculations drop out on this structure.


 


This is how I call tautomerize:


private void tautomerize(Molecule molecule) throws PluginException {
        StandardizerConfiguration configuration = new StandardizerConfiguration();
        configuration.addAction(new TautomerizeAction( Collections.emptyMap() ));
        Standardizer standardizer = new Standardizer(configuration);
        standardizer.standardize(molecule);
    }


 


What is your opinion on that?


 


Best regards, and thank you very much for your support!


 


Matthias

User 851ac690a0

03-12-2013 17:58:54

Hi,


Yes, this is a bug too. This will be fixed in the 6.2 version as well.


 


The 6.2 version is under beta test. It will be released soon, but I don't know the exact date.


The generated structure is a "minor resonance contributor". The standard molecule should be  this one :"[O-][N+](=O)c1ccccc1-c1ccc(\C=C2/C(=O)ON=C2c2ccccc2)o1"  


By the way. How do you created this input smiles?  


"[O-][N+](=O)c1ccccc1c2oc(\\C=C\\3/C(=O)ON=C3c4ccccc4)cc2"


 


This smiles format  is not handled correctly by CXN softwares. We try to develop a fix for this problem too. 


 


Jozsi

User 7a95044e7d

04-12-2013 09:05:39

Thank you very much for your feedback.


The SMILES in question is a canonical SMILES of a compound stored in the ChEMBL database. I suppose it was created using Pipeline Pilot (they use it to calculate some of the given molecular properties). But I'm neither 100% sure about that, nor do I have a possibility to test this assumption myself.


 


> This smiles format is not handled correctly by CXN softwares.



Would this also be the reason for the loss of information on the directionality of double bounds? Information on cis/trans configuration is somehow not kept when performing tautomer identification.


 


If I use the following code, this is actually not the case. The SMILES would be:


"[O-][N+](=O)c1ccccc1-c1ccc(\C=C2/C(=O)ON=C2c2ccccc2)o1" keeping cis/trans information.


 


This was however not my preferred way of calculating a canonical tautomer, as the runtime is much higher for this calculation.


 


private void tautomerize(Molecule molecule) throws PluginException {



        TautomerizationPlugin plugin = new TautomerizationPlugin();

        plugin.setDominantTautomerDistributionCalculation(true);
        plugin.setpH(7.4);
        plugin.setMolecule(molecule);
        plugin.setTakeCanonicalForm(true);
        plugin.setProtectCharge(true);
        plugin.run();

        molecule = plugin.getStructure(0);
        plugin.standardize(molecule);
    }


 


Best,


Matthias



 

User 851ac690a0

05-12-2013 14:44:01

Hi,


 


Would this also be the reason for the loss of information on the directionality of double bounds?

No.  Unfortunately this is one more additional bug..


The stereo information is not protected,in certain molecules,  whenever the tautomerization action invoked in the standardization process.


We can fix this bug by the 6.3 version.


 


 I am attaching a sample code for creating of standard tautomer by using of the TautomerizationPLugin. To keep fixed the E/Z stereo information the "tp.setProtectDoubleBondStereo(true)"  otiption should be adjusted as true.


 


Jozsi