SMSD
SMSD copied to clipboard
MCS Code not working with CDK 2.x
I tried to get the MCS search running using the latest CDK 2.3 based on code here: https://github.com/asad/SMSD/blob/master/core/src/test/java/example/MCSSearch.java
I hit a problem. Code is essentially like this:
IAtomContainer query = ChemUtils.generate2D(smilesParser.parseSmiles('NC1=CC=CC=C1'))
IAtomContainer target = ChemUtils.generate2D(smilesParser.parseSmiles('NC1=CC(=CC=C1)C(O)=O'))
ExtAtomContainerManipulator.percieveAtomTypesAndConfigureAtoms(query);
ExtAtomContainerManipulator.percieveAtomTypesAndConfigureAtoms(target);
query = ExtAtomContainerManipulator.removeHydrogens(query);
target = ExtAtomContainerManipulator.removeHydrogens(target);
ExtAtomContainerManipulator.aromatizeMolecule(query);
ExtAtomContainerManipulator.aromatizeMolecule(target);
query = new AtomContainer(query);
target = new AtomContainer(target);
boolean bondSensitive = true;
boolean ringMatch = false;
boolean stereoMatch = true;
boolean fragmentMinimization = true;
boolean energyMinimization = true;
Isomorphism comparison = new Isomorphism(query, target, Algorithm.DEFAULT, bondSensitive, ringMatch, false);
comparison.setChemFilters(stereoMatch, fragmentMinimization, energyMinimization);
AtomAtomMapping firstAtomMapping = comparison.getFirstAtomMapping();
The problem comes from the line comparison.setChemFilters(stereoMatch, fragmentMinimization, energyMinimization)
java.lang.IllegalArgumentException: setFlag() must be provided a valid CDKConstant and not used for custom properties
at org.openscience.cdk.silent.ChemObject.setFlag(ChemObject.java:315)
at org.openscience.cdk.ChemObjectRef.setFlag(ChemObjectRef.java:168)
at org.openscience.cdk.AtomRef.setFlag(AtomRef.java:40)
at org.openscience.smsd.filters.EnergyFilter.getMappedMoleculeEnergies(EnergyFilter.java:109)
at org.openscience.smsd.filters.EnergyFilter.sortResults(EnergyFilter.java:62)
at org.openscience.smsd.filters.EnergyFilter.sortResults(EnergyFilter.java:44)
at org.openscience.smsd.filters.ChemicalFilters.sortResultsByEnergies(ChemicalFilters.java:105)
at org.openscience.smsd.BaseMapping.setChemFilters(BaseMapping.java:95)
Looks like something in the CDK API has changed?