Structure Checker : Implementing Fixers

Creating Fixers for the new Checker

The new Checker has a custom error code, so the stock fixers cannot recognize it. You can use the @FixesExternal annotation to bind a fixer to a result.

Use a ChemAxon Fixer

If you want to use a ChemAxon fixer to fix the problem, the easiest way is to create a subclass of it, and use the @FixesExternal annotation.

Download the example and find "ExternalRemoveAtomMapFixer.java".

    @FixesExternal(DuplicateAtomMapChecker.DUPLICATE_ATOM_MAP_CHECKER_ERROR)
    @FixerInfo(
        name = "Remove duplicated atom maps",
        description = "Removes duplicated atom maps.",
        actionStringToken = "removeduplicatedmaps")
    public class ExternalRemoveAtomMapFixer extends RemoveAtomMapFixer {
    }

Create a new Fixer

To implement a new Fixer, you have to subclass the AbstractStructureFixer class, add the annotations as above, and implement the fix method.

Download the example and find "RemapReactionFixer.java".

     @FixesExternal(DuplicateAtomMapChecker.DUPLICATE_ATOM_MAP_CHECKER_ERROR)
    @FixerInfo(name = "Remap reaction",
            description = "Remaps the reaction with AutoMapper",
            actionStringToken = "remapreaction")
    public class RemapReactionFixer extends AbstractStructureFixer {

        @Override
        public boolean fix(StructureCheckerResult result) {
            boolean success = false;

            // check if we are trying to fix a reaction
            if (result.getMolecule().isReaction()) {

                // clear the current mapping
                AutoMapper.clearMaps(RxnMolecule.getReaction(result.getMolecule()));
                try {
                    // try to get complete mapping
                    AutoMapper.map(
                            RxnMolecule.getReaction(result.getMolecule()),
                            AutoMapper.COMPLETE);
                    success = true;
                } catch (AutoMapperException e) {
                    // AutoMapper failed
                }
            }
            return success;
        }
    }

Integration

Export all the classes to a JAR file, and use MarvinSketch Preferences to add the Checker and Fixers from it. Imported Checkers and Fixers will be available in all applications using Structure Checker.