SMSD icon indicating copy to clipboard operation
SMSD copied to clipboard

MCS Code not working with CDK 2.x

Open tdudgeon opened this issue 6 years ago • 0 comments

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?

tdudgeon avatar Aug 14 '19 09:08 tdudgeon