Skip to content
Back to skills

047 Datamol 3735cad8

ASecurity

The `datamol.conformers` module provides tools for generating and analyzing 3D molecular conformations.

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 11, 2026
datapython

Security analysis

A100/100

Scanned October 11, 2026

npx -y skills add tools-only/X-Skills --skill 047-datamol_3735cad8 --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 047 Datamol 3735cad8?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 047 Datamol 3735cad8
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tools-only-047-datamol-3735cad8/badge)](https://www.skillsdirectory.com/skills/tools-only-047-datamol-3735cad8)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
# Datamol Conformers Module Reference

The `datamol.conformers` module provides tools for generating and analyzing 3D molecular conformations.

## Conformer Generation

### `dm.conformers.generate(mol, n_confs=None, rms_cutoff=None, minimize_energy=True, method='ETKDGv3', add_hs=True, ...)`
Generate 3D molecular conformers.
- **Parameters**:
  - `mol`: Input molecule
  - `n_confs`: Number of conformers to generate (auto-determined based on rotatable bonds if None)
  - `rms_cutoff`: RMS threshold in Ångströms for filtering similar conformers (removes duplicates)
  - `minimize_energy`: Apply UFF energy minimization (default: True)
  - `method`: Embedding method - options:
    - `'ETDG'` - Experimental Torsion Distance Geometry
    - `'ETKDG'` - ETDG with additional basic knowledge
    - `'ETKDGv2'` - Enhanced version 2
    - `'ETKDGv3'` - Enhanced version 3 (default, recommended)
  - `add_hs`: Add hydrogens before embedding (default: True, critical for quality)
  - `random_seed`: Set for reproducibility
- **Returns**: Molecule with embedded conformers
- **Example**:
  ```python
  mol = dm.to_mol("CCO")
  mol_3d = dm.conformers.generate(mol, n_confs=10, rms_cutoff=0.5)
  conformers = mol_3d.GetConformers()  # Access all conformers
  ```

## Conformer Clustering

### `dm.conformers.cluster(mol, rms_cutoff=1.0, already_aligned=False, centroids=False)`
Group conformers by RMS distance.
- **Parameters**:
  - `rms_cutoff`: Clustering threshold in Ångströms (default: 1.0)
  - `already_aligned`: Whether conformers are pre-aligned
  - `centroids`: Return centroid conformers (True) or cluster groups (False)
- **Returns**: Cluster information or centroid conformers
- **Use case**: Identify distinct conformational families

### `dm.conformers.return_centroids(mol, conf_clusters, centroids=True)`
Extract representative conformers from clusters.
- **Parameters**:
  - `conf_clusters`: Sequence of cluster indices from `cluster()`
  - `centroids`: Return single molecule (True) or list of molecules (False)
- **Returns**: Centroid conformer(s)

## Conformer Analysis

### `dm.conformers.rmsd(mol)`
Calculate pairwise RMSD matrix across all conformers.
- **Requirements**: Minimum 2 conformers
- **Returns**: NxN matrix of RMSD values
- **Use case**: Quantify conformer diversity

### `dm.conformers.sasa(mol, n_jobs=1, ...)`
Calculate Solvent Accessible Surface Area (SASA) using FreeSASA.
- **Parameters**:
  - `n_jobs`: Parallelization for multiple conformers
- **Returns**: Array of SASA values (one per conformer)
- **Storage**: Values stored in each conformer as property `'rdkit_free_sasa'`
- **Example**:
  ```python
  sasa_values = dm.conformers.sasa(mol_3d)
  # Or access from conformer properties
  conf = mol_3d.GetConformer(0)
  sasa = conf.GetDoubleProp('rdkit_free_sasa')
  ```

## Low-Level Conformer Manipulation

### `dm.conformers.center_of_mass(mol, conf_id=-1, use_atoms=True, round_coord=None)`
Calculate molecular center.
- **Parameters**:
  - `conf_id`: Conformer index (-1 for first conformer)
  - `use_atoms`: Use atomic masses (True) or geometric center (False)
  - `round_coord`: Decimal precision for rounding
- **Returns**: 3D coordinates of center
- **Use case**: Centering molecules for visualization or alignment

### `dm.conformers.get_coords(mol, conf_id=-1)`
Retrieve atomic coordinates from a conformer.
- **Returns**: Nx3 numpy array of atomic positions
- **Example**:
  ```python
  positions = dm.conformers.get_coords(mol_3d, conf_id=0)
  # positions.shape: (num_atoms, 3)
  ```

### `dm.conformers.translate(mol, conf_id=-1, transform_matrix=None)`
Reposition conformer using transformation matrix.
- **Modification**: Operates in-place
- **Use case**: Aligning or repositioning molecules

## Workflow Example

```python
import datamol as dm

# 1. Create molecule and generate conformers
mol = dm.to_mol("CC(C)CCO")  # Isopentanol
mol_3d = dm.conformers.generate(
    mol,
    n_confs=50,           # Generate 50 initial conformers
    rms_cutoff=0.5,       # Filter similar conformers
    minimize_energy=True   # Minimize energy
)

# 2. Analyze conformers
n_conformers = mol_3d.GetNumConformers()
print(f"Generated {n_conformers} unique conformers")

# 3. Calculate SASA
sasa_values = dm.conformers.sasa(mol_3d)

# 4. Cluster conformers
clusters = dm.conformers.cluster(mol_3d, rms_cutoff=1.0, centroids=False)

# 5. Get representative conformers
centroids = dm.conformers.return_centroids(mol_3d, clusters)

# 6. Access 3D coordinates
coords = dm.conformers.get_coords(mol_3d, conf_id=0)
```

## Key Concepts

- **Distance Geometry**: Method for generating 3D structures from connectivity information
- **ETKDG**: Uses experimental torsion angle preferences and additional chemical knowledge
- **RMS Cutoff**: Lower values = more unique conformers; higher values = fewer, more distinct conformers
- **Energy Minimization**: Relaxes structures to nearest local energy minimum
- **Hydrogens**: Critical for accurate 3D geometry - always include during embedding

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.