Daylight v4.9
Release Date: 1 February 2008


dt_commonsubstruct - Generates a SMARTS for the common substructure of a set

Generic Prototype

dt_commonsubstruct(dt_Handle, dt_Integer, dt_Integer) => dt_String

C Prototype

#include "dt_smarts.h"

dt_String dt_commonsubstruct(dt_Integer *len, dt_Handle objects, dt_Integer minpath, dt_Integer flags)

FORTRAN Prototype

include ''

integer*4 dt_f_commonsubstruct(object, flags, minpath, string)

integer*4 object
integer*4 minpath
integer*4 flags
character*() string


Returns a newly-generated SMARTS string for the common substructure of a set of molecules or reactions. The algorithm finds shared common sets of linear paths for the given input molecules and then combines them to create a common subgraph. A SMARTS is then generated from the common subgraph.

The parameter 'minpath' controls the length of the smallest path which is used to identify common substructures. When the value zero is used the algorithm will generate the most inclusive common substructure. When a non-zero value is used, no paths of that length (number of bonds) or less will be used in the computation; this will be the lower bounds on the size of the smallest disconnected fragment in the resulting common substructure.

The parameter 'flags' controls the options on the computation. Possible values are:


Default computation: Includes ring count as part of topology, excludes lone-atom paths from computation, and ignores TORDER hints.
Generate SMARTS with ring/non-ring topology in atom expressions.
Generate the SMARTS solely from the atoms with TORDER properties set (eg. from dt_transform()).

The options DX_CSS_SIMPLE_TOPOLOGY and DX_CSS_USE_TORDER_ONLY can be combined with a bitwise-OR of the individual options.

For topology, the choices are simple topology or full topology (default). In the case of simple topology, the generated SMARTS atoms will be labeled with 'R0' or 'R', for non-ring and ring atoms, respectively. For full topology, the generated SMARTS atoms will be labeled with 'R0', 'R1', 'R2', etc. depending on the number of SSSR rings for each atom.

For the TORDER hint, one can use the algorithm to identify the common reacting core from the result of a set of tranforms. The algorithm will use the torder integer properties, automatically assigned by the function dt_transform(), to create the SMARTS for the reacting core.

Note that the SMARTS string is new and is not owned by any object; the user is responsible for deallocating the string when it is no longer needed.

Return Value

Returns a new SMARTS string. For objects other than molecules and reactions the commonsubstruct is defined as the 'invalid string'.

Related Topics

dt_smartin(3) dt_smarts_opt(3)