Custom Structure Checker and Fixer in JPC

    Create custom structure checker

    Based on the documentation available here, you can create a custom structure checker action in Java programming language. As a result of your development, you need to get a jar file which contains the necessary action. The created jar file must be referenced in externalcheckersfixers.xml configuration file which is stored where it is defined in the jchem-psql configuration file.


    • jar file containing your custom standardizer action

    • externalcheckersfixers.xml containing custom structure checker action factory configuration

    Where to place the artifacts

    • Edit /etc/default/jchem-psql file

      Add the next line (example only) - defining the place of the externalcheckersfixers.xml - to the list of the JCHEM_PSQL_OPTS - in the jchem-psql file:


      Take care, use the absolute path of the xml file in the <dir> field.

    • Move the externalcheckersfixers.xml file in the above defined place and make it readable.

      The absolute path of the above generated jar file is defined in the externalcheckersfixers.xml.


      <?xml version="1.0" encoding="UTF-8"?>
         <checker class="com.checkers.MyChecker" editor-class="" id="MyChecker" jar="file:///home/somebody/custom-checkers.jar"/>
         <fixer class="com.checkers.MyFixer" id="MyFixer" jar="file:///home/somebody/custom-checkers.jar"/>

    Move the jar file in the above defined place and make it readable.

    Use the custom structure checker from cartridge

    • Stop Cartridge service.

      sudo service jchem-psql stop

    • Start Cartridge service

      sudo service jchem-psql start

    The cartridge is ready for use the custom structure checker and fixer:

    SELECT chemterm('check(''action_string’')','molecule');

    The action string of the custom checker/fixer is defined at Java code level.

    In place of the action string, the checker configuration xml (not the externalcheckersfixers.xml) can also be used. See examples in Chemical Terms/Structure checkers documentation page.

    SELECT chemterm('check(''mycheckerAction'')','[Na+].CC([O-])=O');
    SELECT chemterm('fix(''mycheckerAction->myfixerAction'')','[Na+].CC([O-])=O');