R-group Decomposition Developer's Guide

Introduction

Given a scaffold structure with attached R1, R2, ... nodes as query, RGroupDecomposition determines the possible R-group decompositions of given target molecule. A decomposition consists of the matching scaffold and the R1, R2, ... ligands with attachment points.

Architecture

RGroupDecomposition includes methods to set the query and the target MolSearch. Each decomposition corresponds to a group hit, see findFirstGroup() and findNextGroup().

The search hit has to cover full fragments, that is, extra ligands not corresponding to some query R-atom are not allowed. If the query does not contain R-atoms then it is automatically modified: all implicit hydrogens are replaced by different R-atoms attached by any-bonds.

Since JChem 5.3, decompositions are returned in a dedicated Decomposition result object, see findFirstDecomposition() and findNextDecomposition() .

Output in table form is returned in findLigandTable() .

Since JChem 5.3, it is also possible to generate a Markush structure in form of an RgMolecule which covers a list of specified targets. The root structure is the specified scaffold (query) and R-group definitions are determined by the decompositions of the targets. This functionality is implemented in MarkushGenerator.

For a detailed description of specific search options, methods and API usage examples, refer to the RGroupDecomposition and MarkushGenerator class headers.

Examples

A list of API usage examples can be found in the RGroupDecomposition and MarkushGenerator class headers.

In case of database search the hits can also be retrieved as R-group decomposition result objects. Refer to the JChemSearch guide for details. It is more efficient to apply database search in case of many targets since JChemSearch uses parallel processing while RGroupDecomposition is run on a single thread.