# List of functional groups in a molecule

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

## 3 Answers

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