Use when converting molecular file formats, generating 3D coordinates, searching conformers, computing descriptors/fingerprints, or filtering chemical libraries with OpenBabel. Covers both pybel Python API and obabel command-line tool.
OpenBabel 3.1.1. Two interfaces: pybel (Python API, high-level) and obabel (CLI, batch processing). Supports 146 formats, MMFF94/UFF/GAFF force fields.
from openbabel import pybel
# Read SMILES → generate 3D → write SDF
mol = pybel.readstring('smi', 'CC(=O)Oc1ccccc1C(=O)O') # aspirin
mol.make3D(forcefield='mmff94', steps=500)
mol.write('sdf', 'aspirin.sdf', overwrite=True)
# Read SDF → SMILES
for mol in pybel.readfile('sdf', 'library.sdf'):
print(mol.write('can').strip()) # canonical SMILES
| Task | Reference |
|---|---|
| pybel Python API: read, write, 3D, descriptors, fingerprints, SMARTS | references/pybel-python.md |
| obabel CLI: conversion, --gen3d, --conformer, filtering, pH, split | references/obabel-cli.md |
| Format codes, fingerprint types, descriptors, Tanimoto | references/formats-fingerprints.md |
| pybel | obabel CLI | |
|---|---|---|
| Use case | Scripted workflows, per-molecule logic | Batch conversion, library filtering |
| Import | from openbabel import pybel | subprocess or shell |
| Speed | Moderate | Fast (C++ core) |
| Flexibility | High (per-atom access) | Moderate (flags) |
conda install -c conda-forge openbabel # recommended (includes C++ libs)
pip install openbabel # Linux/macOS only
# Verify
python -c "from openbabel import pybel; print(pybel.readstring('smi','C').molwt)"
obabel --version
from openbabel import pybel
pybel.informats # dict: {'sdf': 'MDL MOL format', 'smi': 'SMILES format', ...}
pybel.outformats # dict of writable formats
pybel.fps # list of fingerprint types: ['FP2', 'FP3', 'FP4', 'MACCS']
pybel.descs # list of descriptor names
pybel.forcefields # list of available force fields
| Task | Prefer |
|---|---|
| Drug-like 3D (ETKDGv3) | RDKit |
| Non-organic / unusual atoms | OpenBabel (UFF) |
| Format not in RDKit (CIF, XYZ, etc.) | OpenBabel |
| SMARTS filtering (speed) | OpenBabel CLI |
| Fingerprints (ECFP) | RDKit |
| Fingerprints (FP2/FP3/MACCS) | OpenBabel |
rdkit — complementary: ETKDGv3 conformers, ECFP fingerprints, reactionsase — ASE reads XYZ/CIF; OpenBabel converts to those formatsscientific-skills:datamol — fast preprocessing, also wraps RDKit