
Datamol
Generate and cluster 3D molecular conformers with datamol/RDKit-backed APIs when building cheminformatics or drug-discovery Python backends.
Install
npx skills add https://github.com/k-dense-ai/scientific-agent-skills --skill datamolWhat is this skill?
- `dm.conformers.generate` with ETKDGv3 default embedding and optional UFF energy minimization
- Automatic `n_confs` when omitted, RMS cutoff filtering, and `add_hs=True` for embedding quality
- Embedding method options: ETDG, ETKDG, ETKDGv2, ETKDGv3
- `dm.conformers.cluster` for RMS-based conformer grouping with centroid options
- Copy-paste Python examples using `dm.to_mol` and `GetConformers()`
Adoption & trust: 516 installs on skills.sh; 27.6k GitHub stars; 2/3 security scanners passed (skills.sh audits).
Recommended Skills
Journey fit
Conformer generation is implementation work—library calls, parameters, and returned molecular objects—rather than market validation or launch distribution. The skill documents server-side scientific computation APIs (`dm.conformers.*`), which belong on the backend shelf for computational products.
Common Questions / FAQ
Is Datamol safe to install?
skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.
SKILL.md
READMESKILL.md - Datamol
# 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_cutof