Skip to main content

Ensemble Generation

Generate an initial conformer ensemble for a molecular structure.

from atomiverse import Atoms, EnsembleGeneration

atoms = Atoms.from_smiles("CCO")

job = EnsembleGeneration(
atoms=atoms,
charge=0,
multiplicity=1,
)
job.submit()

result = job.require_result()
for conformer in result.conformers:
print(conformer.rank, conformer.energy)

Inputs

atoms is the input structure.

charge and multiplicity describe the total charge and spin multiplicity.

mode controls the search:

  • ConformerMode.STANDARD runs a fast conformer generator.
  • ConformerMode.TIGHT runs a tighter GFN-FF conformer search.

is_transition_state=True switches to transition-state conformer generation. Transition-state jobs require active_atoms.

solvation is supported only in tight mode and must use ALPB.

from atomiverse import (
ConformerMode,
EnsembleGeneration,
ImplicitSolvation,
SolvationMethod,
)

job = EnsembleGeneration(
atoms=atoms,
charge=0,
multiplicity=1,
mode=ConformerMode.TIGHT,
solvation=ImplicitSolvation(
method=SolvationMethod.ALPB,
solvent="water",
),
)

Transition-State Ensembles

job = EnsembleGeneration(
atoms=ts_guess,
charge=0,
multiplicity=1,
mode=ConformerMode.STANDARD,
is_transition_state=True,
active_atoms=[1, 4, 7],
)

active_atoms uses zero-based atom indices from the input structure.

Results

result.conformers is an ordered list. Each conformer contains:

  • atoms: the conformer geometry
  • energy: an optional conformer energy
  • rank: the one-based rank in the returned ensemble

Completed ensembles are cached by canonical chemistry identity, charge, multiplicity, mode, transition-state settings, and solvation.