ensemblelab is an open source Python library for quantitative analysis of molecular conformational ensembles. It provides functionality for ensemble analysis (basin visualization, RMSD heatmapping, etc.) with simple object-based workflows.
How many conformers are enough?
Computational conformer generation often requires choosing a sampling size in advance. EnsembleLab is being developed to investigate how sampling size affects ensemble level structural and energetic properties, with the eventual goal of developing adaptive methods for choosing an appropriate sampling size for a given molecule.
Current work
EnsembleLab currently provides tools for conformer generation, optimization, filtering, RMSD analysis, torsional analysis, clustering, and molecular descriptors. These components form the foundation for studying convergence of conformational ensembles as sampling size increases.
pip install -e ".[dev]"
pytestConformer: EnsembleLab native object type storing ASEAtoms-based molecules; records conformer energy in kcal/mol and optimization type.Ensemble: EnsembleLab native object storingConformerobjects.Mol: RDKit-native molecule object.Atoms: ASE-native atomic structure object.
The package currently provides conformer generation, single-stage optimization, filtering, and RMSD-based analysis. Import the public functions directly from ensemblelab:
from ensemblelab import Ensemble, generate
from ensemblelab.optimizers import BaseOptimizer, MMFFOptimizer, GFN2xTBOptimizer, HierarchicalOptimizer
from ensemblelab.analysis.rmsd import rmsd_matrix, rmsd_heatmapYou can also find updated drafts of documentation in /docs, where docs will be pushed during development. The wiki will receive periodic batch updates.
- Generate: implemented and documented.
- Optimize: implemented and documented.
- Filter: implemented and documented.
- Analysis: implemented for RMSD-based geometry analysis and documented.
- Display: implemented and documented for inspection summaries.
- Descriptors: in progress.
- Clustering: initial functionality complete.
- Utils: in progress.