# Openbabel

> 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.

- Skill: `kdevos12/openbabel` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add kdevos12/openbabel`
- Raw SKILL.md: https://api.skillmd.com/api/skills/kdevos12/openbabel/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: Kdevos12 (https://skillmd.com/u/kdevos12)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/kdevos12/openbabel

---


# OpenBabel — Chemical Format Conversion & Manipulation

OpenBabel 3.1.1. Two interfaces: **pybel** (Python API, high-level) and **obabel** (CLI, batch processing). Supports 146 formats, MMFF94/UFF/GAFF force fields.

## When to Use This Skill

- Converting between molecular formats: SMILES ↔ SDF ↔ MOL2 ↔ PDB ↔ InChI ↔ CIF ↔ XYZ ↔ 100+ others
- Generating 3D coordinates from SMILES (quick alternative to RDKit ETKDGv3)
- Conformer searching with force field scoring
- Protonation state at given pH
- Computing molecular descriptors (LogP, TPSA, MR) and fingerprints
- SMARTS substructure filtering of large libraries
- Batch library processing (split, deduplicate, filter)
- Converting formats unsupported by RDKit (CIF, VASP POSCAR, XYZ, etc.)

## Quick Start

```python
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
```

## Router — What to Read

| 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` |

## Two Interfaces

| | 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) |

## Installation

```bash
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
```

## Key Global Variables

```python
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
```

## Relation to RDKit

| 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 |

## Related Skills

- `rdkit` — complementary: ETKDGv3 conformers, ECFP fingerprints, reactions
- `ase` — ASE reads XYZ/CIF; OpenBabel converts to those formats
- `scientific-skills:datamol` — fast preprocessing, also wraps RDKit

