Does anyone know if there's a tool for listing the functional groups present in a molecule?


3 Answers 3


Norbert Haider from the University of Vienna has been working on the identification of functional groups for quite a while.

You might want to have a look at his checkmol/matchmol tool, which natively reads from MDL, Alchemy, and Sybyl mol files.

Other input formats may be processed after converting them using Open Babel.


RDKit is an option with a python interface. Here's an example using rdkit to find furan groups in 2-Acetylfuran:

from rdkit import Chem
mol = Chem.MolFromInchi("InChI=1S/C6H6O2/c1-5(7)6-3-2-4-8-6/h2-4H,1H3")
furan_smarts = "o1cccc1"
furan = Chem.MolFromSmarts(furan_smarts)
Chem.Mol.GetSubstructMatches(mol, furan, uniquify=True)
>>> ((7, 3, 1, 2, 5),)

The length of the outer tuple is the number of matched substructures, while the integers in the inner tuple are the indices of the molecule's atoms.

Here are some other smarts strings:

aldehydes: [CX3H1](=O)[#6]
esters: [#6][CX3](=O)[OX2H0][#6]
ketones: [#6][CX3](=O)[#6]
amides: C(=O)-N
thiol groups: [SH]

The FP4 fingerprint in Open Babel matches a set of SMARTS patterns for functional groups against a molecule. Usually the results is a binary fingerprint, but the "-xs" option below prints out the names of the matching patterns. Here are the results for acetamide, for example:

> obabel -:CC(=O)N -ofpt -xfFP4 -xs
Primary_carbon  Carboxylic_acid_derivative      Amide   Primary_amide   C_ONS_bond      1,3-Tautomerizable

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.