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.