Skip to content
Agentmart
Submit a tool

chem-conformer-search

Generate molecular conformers with RDKit ETKDG, relax with MLIPs, and rank by energy with Boltzmann weighting.

Skill by learningmatter-mit

IndexedMIT★ 183
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/learningmatter-mit-chem-conformer-search

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Generate molecular conformers with RDKit ETKDG, relax with MLIPs, and rank by energy with Boltzmann weighting.

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found
Runs as
Python package

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/chem-conformer-search

What's inside

Skill name
chem-conformer-search
Description
Generate molecular conformers with RDKit ETKDG, relax with MLIPs, and rank by energy with Boltzmann weighting.
License
MIT
Instructions
108 lines in SKILL.md · view on GitHub

Before installing

  • Ships executable scripts

Files (13)

  • SKILL.md
  • README.md · examples/aspirin/
  • conf_000.xyz · examples/aspirin/
  • conf_001.xyz · examples/aspirin/
  • conformer_results.json · examples/aspirin/
  • README.md · examples/ibuprofen_kmeans/
  • conf_000.xyz · examples/ibuprofen_kmeans/
  • conf_001.xyz · examples/ibuprofen_kmeans/
  • conf_002.xyz · examples/ibuprofen_kmeans/
  • conf_003.xyz · examples/ibuprofen_kmeans/
  • conf_004.xyz · examples/ibuprofen_kmeans/
  • conformer_results.json · examples/ibuprofen_kmeans/
  • conformer_search.py · scripts/

SKILL.md (first lines)

# Molecular Conformer Search & Ranking

## Goal

Generate a diverse ensemble of low-energy conformers for a given molecule. The workflow combines:
1.  **Stochastic sampling** using RDKit's ETKDG algorithm (Experimental Torsion Distance Geometry).
2.  **High-accuracy relaxation** using Machine Learning Interatomic Potentials (MLIPs) to get near-DFT quality geometries and energies.
3.  **Deduplication** and **Boltzmann weighting** to identify the most relevant conformers at finite temperature.

> [!IMPORTANT]
> This skill is optimized for **organic molecules** and uses `MACE-OFF23` models by default. For inorganic clusters, switch to `MACE-OMAT` or `MatGL` models.

### Recommended Models

- **MACE-OFF23**: `MACE-OFF23-small` (default), `MACE-OFF23-medium` — trained on organic molecules (Env: `mlip`)
- **MACE-MH**: `MACE-MH-1` with head `omol` — multi-head model with molecular head (Env: `mlip`)
- **UMA**: `uma-s-1p1` with head `omol` — general molecular model (Env: `fairchem`)

## 1. Prerequisites

- **Environment**: `mlip` (recommended as it includes both `mace` and `rdkit`; commands run through `venv/run mlip ...`).
- **Input**: SMILES string or a structure file (`.xyz`, `.sdf`, `.mol2`, `.pdb`).

## 2. Methodology

1.  **Generation**: Generate `N` initial conformers using RDKit's `EmbedMultipleConfs` with ETKDGv3.
2.  **Relaxation**: Optimize the geometry of *each* conformer using the selected MLIP (fmax = 0.01 eV/Å).
3.  **Deduplication/Clustering**: Filter redundant conformers by simple RMSD thresholding (default), Hierarchical clustering, or K-Means clustering. Only the lowest-energy conformer in each cluster is kept.
4.  **Ranking**: Sort unique conformers by energy.
5.  **Boltzmann Weighting**: Calculate population probability $P_i$ at temperature $T$:
    $$P_i = \frac{e^{-(E_i - E_{min}) / k_B T}}{\sum_j e^{-(E_j - E_{min}) / k_B T}}$$

## 3. Usage

### Basic Usage (SMILES)

Generate 30 conformers for a molecule (e.g., aspirin) and relax with MACE-OFF23:

```bash
${CLAUDE_SKILL_DIR}/../../venv/run mlip python ${CLAUDE_SKILL_DIR}/scripts/conformer_search.py \
    --smiles "CC(=O)Oc1ccccc1C(=O)O" \
    --num_conformers 30 \
    --output_dir research/aspirin_conformers
```

### Advanced Usage (Structure File + Options)

```bash
${CLAUDE_SKILL_DIR}/../../venv/run mlip python ${CLAUDE_SKILL_DIR}/scripts/conformer_search.py \
    --structure my_molecule.sdf \
    --num_conformers 100 \
    --rms_threshold 0.5 \
    --dedup_threshold 0.1 \
    --temperature 298.15 \
    --model_type mace \
    --model_name MACE-OFF23-small \
    --device cuda \
    --output_dir research/my_molecule_search
```

### Key Parameters

| Argument | Default | Description |
|:---|:---|:---|
| `--smiles` | - | SMILES string of the molecule |
| `--structure` | - | Path to input structure file (alternative to SMILES) |
| `--num_conformers` | 50 | Number of initial conformers to generate with RDKit |
| `--rms_threshold` | 0.2 | RDKit pruning threshold (Å) to discard similar initial conformers |
| `--clustering` | `rmsd` | Method to filter conformers: `rmsd`, `hierarchical`, or `kmeans` |
| `--dedup_threshold` | 0.1 | Post-relaxation RMSD threshold (Å) to merge identical conformers or cut for hierarchical |
| `--num_clusters` | 5 | Number of clusters if `--clustering kmeans` is used |
| `--energy_threshold` | 0.5 | Max energy above global minimum (eV) to keep before RMSD comparison. Set to 0 to disable |
| `--fmax` | 0.01 | Force convergence criterion for relaxation (eV/Å) |
| `--temperature` | 298.15 | Temperature (K) for Boltzmann weighting |
| `--model_type` | `mace` | MLIP backend (`mace`, `matgl`, `fairchem`) |
| `--model_name` | `MACE-OFF23-small` | Specific model checkpoint to use |

## 4. Output Files

The output directory will contain:

1.  **`conformer_results.json`**: A summary file containing:
    -   List of unique conformers with their energies, relative energies, and Boltzmann weights.
    -   Paths to the corresponding XYZ files.
    -   Metadata (model used, parameters).
2.  **`conf_000.xyz`, `conf_001.xyz`, ...**: The relaxed structures of the unique conformers, sorted by energy (000 is the global minimum found).

## 5. Examples

See `examples/aspirin` for a complete example run on Acetylsalicylic acid.

## 6. Constraints

- **Environment**: Use the environment matching the chosen model: `mlip` (MACE or MatGL) or `fairchem` (FairChem/UMA). All include RDKit.
- **Input**: Either `--smiles` or `--structure` must be provided, but not both.
- **Molecule Type**: Optimized for organic molecules. For inorganic clusters, switch to `MACE-OMAT` or `MatGL` models.
- **Non-periodic**: All conformers are treated as non-periodic (isolated molecules).

## 7. References

- Riniker, S.; Landrum, G. A., "Better Informed Distance Geometry: Using What We Know To Improve Conformation Generation", *J. Chem. Inf. Model.*, 2015, 55, 2562. [DOI](https://doi.org/10.1021/acs.jcim.5b00654)

---

**Author:** Bowen Deng
**Contact:** [GitHub @learningmatter-mit](https://github.com/learningmatter-mit)

From learningmatter-mit/AtomisticSkills, MIT.

More from learningmatter-mit/AtomisticSkills

Signals

Stars
183
Forks
31
Open issues
0
Last commit (this folder)
Oct 5, 2026 (23 days ago)
Last release
Oct 6, 2026 (22 days ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from learningmatter-mit

Cite this page

chem-conformer-search skill. Agent Mart. https://agentmart.dev/skills/learningmatter-mit-chem-conformer-search (last updated 2026-10-24)