bug in pKaPlugin.setMolecule()

User 870ab5b546

16-07-2012 14:33:31

The code (JChem 5.9.0):


    public static double[][] pKapKbAtoms(Molecule origMol, int stageIndex)
throws PluginException {
final String SELF = "pKaFunctions.pKapKbAtoms: ";
debugPrintMRV(SELF + "getting pKas for:\n", origMol);
final Molecule molecule = origMol; // we may reassign it.
ChemUtils.stripMetalsNoClone(molecule); // replace metals with - charges
final int atmCt = molecule.getAtomCount(); // get after stripping metals
final double[][] specialCasePKs = specialCasePKs(origMol);
if (!Utils.isEmpty(specialCasePKs)) {
debugPrint(SELF + "special case of values for ", origMol,
": ", specialCasePKs);
return specialCasePKs;
} // if the molecule is a special case
final double[][] allPKaPKbs = new double[atmCt][2];
try {
molecule.aromatize(MoleculeGraph.AROM_BASIC);
molecule.calcHybridization();
final pKaPlugin plugin = new pKaPlugin();
// next line makes where pKa and pKb are
// stored NOT dependent on charge of atom
plugin.setMicropKaCalc(true);
plugin.setpKaPrefixType(pKaPlugin.DYNAMICpKaPREFIX);
plugin.setMaxIons(8);
plugin.setBasicpKaLowerLimit(SMALLEST_PKA);
plugin.setAcidicpKaUpperLimit(LARGEST_PKA);
plugin.setConsiderTautomerization(true);
debugPrintMRV(SELF + "setting pKaPlugin molecule to:\n", origMol);
plugin.setMolecule(molecule);
plugin.run();

The output:


pKaFunctions.pKapKbAtoms: setting pKaPlugin molecule to:
<?xml version="1.0"?><cml version="ChemAxon file format v5.9.0, generated by v5.9.0">
<MDocument><MChemicalStruct><molecule molID="m1"><atomArray atomID="a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15" elementType="C C C C C C O C C C C N C C C" formalCharge="-1 0 0 0 0 0 0 0 0 0 0 1 0 0 0" x2="60.52819687961292 59.758213820296206 60.52823076085524 62.068230760731 62.83821382004771 62.06819687948868 58.2182138202962 62.83819687948866 62.06819687948867 60.528162998370576 59.75817993905387 60.528196879612906 62.83817993880541 62.068162998246365 59.19451775778487" y2="41.88061869555607 40.546929793163436 39.21322132942643 39.21320176808206 40.54689067047469 41.880599134211685 40.54692979316344 43.21427825603973 44.54795737786775 47.21537430534176 45.88168540294914 44.547976939212134 45.881646280260405 47.2153547439974 43.77797693921213"></atomArray><bondArray><bond atomRefs2="a1 a2" order="A"></bond><bond atomRefs2="a1 a6" order="A"></bond><bond atomRefs2="a2 a3" order="A"></bond><bond atomRefs2="a2 a7" order="1"></bond><bond atomRefs2="a3 a4" order="A"></bond><bond atomRefs2="a4 a5" order="A"></bond><bond atomRefs2="a5 a6" order="A"></bond><bond atomRefs2="a6 a8" order="1"></bond><bond atomRefs2="a8 a9" order="1"></bond><bond atomRefs2="a12 a9" order="1"></bond><bond atomRefs2="a9 a13" order="1"></bond><bond atomRefs2="a10 a11" order="1"></bond><bond atomRefs2="a10 a14" order="1"></bond><bond atomRefs2="a11 a12" order="1"></bond><bond atomRefs2="a12 a15" order="2"></bond><bond atomRefs2="a13 a14" order="1"></bond></bondArray></molecule></MChemicalStruct></MDocument>
</cml>

java.lang.ArrayIndexOutOfBoundsException: 0
at chemaxon.calculations.Tautomerization.isCarbonAraRing(Tautomerization.java:2317)
at chemaxon.calculations.Tautomerization.excludeCarbonAraAceptors(Tautomerization.java:2202)
at chemaxon.calculations.Tautomerization.initCalc(Tautomerization.java:1753)
at chemaxon.calculations.Tautomerization.calculateDACouples(Tautomerization.java:9574)
at chemaxon.calculations.Tautomerization.createDACouples(Tautomerization.java:9564)
at chemaxon.calculations.CanonicResonant.calcCanonicalResonant(CanonicResonant.java:242)
at chemaxon.calculations.Tautomerization.setCommonForm(Tautomerization.java:1369)
at chemaxon.calculations.Tautomerization.initCalc(Tautomerization.java:1538)
at chemaxon.calculations.Tautomerization.calculateDACouples(Tautomerization.java:9574)
at chemaxon.calculations.Tautomerization.createDACouples(Tautomerization.java:9564)
at chemaxon.calculations.CanonicTautomer.calcCanonicalTautomer(CanonicTautomer.java:429)
at chemaxon.calculations.Tautomerization.generateCanonicTautomer(Tautomerization.java:640)
at chemaxon.calculations.Tautomerization.createCanonicTautomer(Tautomerization.java:584)
at chemaxon.marvin.calculations.TautomerizationPlugin.run(TautomerizationPlugin.java:708)
at chemaxon.marvin.calculations.pKaPlugin.createModifiedInputMolecule(pKaPlugin.java:653)
at chemaxon.marvin.plugin.CalculatorPlugin.setMolecule(CalculatorPlugin.java:784)
at chemaxon.marvin.plugin.CalculatorPlugin.setMolecule(CalculatorPlugin.java:726)
at chemaxon.marvin.plugin.CalculatorPlugin.setMolecule(CalculatorPlugin.java:709)
at com.epoch.chem.pKaFunctions.pKapKbAtoms(pKaFunctions.java:125)
at com.epoch.chem.pKaFunctions.pKapKbMolecule(pKaFunctions.java:62)
at com.epoch.mechanisms.MechRuleFunctions.pKaCheck(MechRuleFunctions.java:895)
at com.epoch.evals.impl.MechRule.isResponseMatching(MechRule.java:239)

??  Is this bug fixed in the latest version of JChem?

ChemAxon afdac7b783

17-07-2012 07:49:40

Yes, it has been fixed since version 5.9.1.


BR,



Viktoria