Skip to content

Conformer Search

Conformer-search workflow - find low-energy molecular conformations.

ConformerSearchResult dataclass

ConformerSearchResult(workflow_data: dict[str, Any], workflow_type: str, workflow_uuid: str, complete: bool = True)

Bases: WorkflowResult

Result from a conformer-search workflow.

num_conformers property

num_conformers: int

Number of conformers found.

conformer_uuids property

conformer_uuids: list[list[str | None]]

List of conformer UUIDs (nested for multistage optimization).

radii_of_gyration property

radii_of_gyration: list[float | None]

Radius of gyration for each conformer (A), None where it failed.

sasa property

sasa: list[float | None]

Solvent accessible surface area for each conformer (A^2), None where it failed.

polar_sasa property

polar_sasa: list[float | None]

Polar solvent accessible surface area for each conformer (A^2), None where it failed.

dipoles property

dipoles: list[float | None]

Dipole moment magnitude about the center of mass for each conformer (Debye).

None where the method reports no dipole.

ensemble_properties property

ensemble_properties: ConformerProperties | None

Ensemble properties weighted by boltzmann_weights.

Each property is averaged over the conformers that have it: SASA, polar SASA, Rg, the root-mean-square dipole (Debye), and per-atom Mulliken charges. When the run computed them, it also holds stick spectra with every conformer's lines, each intensity scaled by its conformer's population: excitation_energies (Hartree) with oscillator_strengths (UV-vis) and rotatory_strengths (ECD), and vibrational_frequencies (cm^-1) with ir_intensities (km/mol). Pass them to rowan.broaden_spectrum for the spectrum. Rotatory strengths are omitted when the conformers differ in stereochemistry, since mixing enantiomers cancels the ECD signal.

boltzmann_weights property

boltzmann_weights: list[float]

Population of each conformer at the weighting temperature (sum to 1.0).

From free energies when every conformer has frequencies, else from ground-state energies. Empty for workflows run before weights were reported.

weighting_temperature property

weighting_temperature: float

Temperature of boltzmann_weights and ensemble_properties (K).

get_energies

get_energies(relative: bool = False) -> list[float]

Get conformer energies.

Parameters:

Name Type Description Default
relative bool

return relative energies in kcal/mol (relative to the lowest energy conformer). If False (default), return absolute energies in Hartree

False

Returns:

Type Description
list[float]

list of conformer energies ordered by energy (lowest first)

get_conformers

get_conformers(n: int | None = None) -> list[Molecule]

Fetch conformer molecules.

Parameters:

Name Type Description Default
n int | None

number of conformers to fetch (default: all). Conformers are ordered by energy, so n=5 returns the 5 lowest-energy conformers

None

Returns:

Type Description
list[Molecule]

molecules

Note

Makes one API call per conformer.

get_conformer

get_conformer(index: int, stage: int = -1) -> Calculation

Fetch a conformer's calculation data by index.

Note

Makes one API call per conformer on first access. Results are cached. Call clear_cache() to refresh.

Parameters:

Name Type Description Default
index int

conformer index (0-based)

required
stage int

optimization stage (-1 for final stage)

-1

Returns:

Type Description
Calculation

calculation object with molecule and energy data

Raises:

Type Description
IndexError

index is out of range

ValueError

conformer UUID is None

submit_conformer_search_workflow

submit_conformer_search_workflow(initial_molecule: StructureInput | SMILES | None = None, conf_gen_settings: ConformerGenSettings | None = None, final_method: Method | str = 'aimnet2_wb97md3', solvent: SolventInput = None, transition_state: bool = False, frequencies: bool = False, weighting_temperature: float = 298.15, multistage_opt_settings: MultiStageOptSettings | None = None, conformer_clustering_settings: ConformerClusteringSettings | None = None, initial_conformers: Sequence[StructureInput] | None = None, name: str = 'Conformer Search Workflow', folder_uuid: str | None = None, folder: Folder | None = None, max_credits: int | None = None, webhook_url: str | None = None, is_draft: bool = False) -> Workflow[ConformerSearchResult]

Submits a conformer-search workflow to the API.

Runs in one of two modes:

  • Generate (default): build conformers from initial_molecule using conf_gen_settings, then optimize, deduplicate, and rank them.
  • Screen-only: pass initial_conformers (and leave conf_gen_settings as None) to skip generation and run only optimize / deduplicate / rank on conformers you already have. Useful when geometries come from another tool (RDKit, CREST, OMEGA), a crystal or MD ensemble, or a previous workflow, and you want consistent optimized energies and a deduplicated ranked ensemble.

Parameters:

Name Type Description Default
initial_molecule StructureInput | SMILES | None

molecule to perform the conformer search on (omit when using initial_conformers). A 3D structure for any generator; a SMILES string is also accepted when conf_gen_settings is ETKDGSettings or OpenConfSettings (which build geometry from topology)

None
conf_gen_settings ConformerGenSettings | None

conformer generation method and settings. Defaults to OpenConfSettings(). Available options (importable directly from rowan):

  • ETKDGSettings -- RDKit ETKDG, fast, good for most small molecules (SMILES ok)
  • OpenConfSettings -- OpenConf generator (SMILES ok)
  • iMTDGCSettings -- CREST iMTD-GC metadynamics, more thorough (3D structure only)
  • MonteCarloMultipleMinimumSettings -- MCMM conformer search (3D structure only)
None
final_method Method | str

method to use for the final optimization. Ignored if multistage_opt_settings is provided

'aimnet2_wb97md3'
solvent SolventInput

solvent to use for the final optimization. Ignored if multistage_opt_settings is provided

None
transition_state bool

whether to optimize the transition state. Ignored if multistage_opt_settings is provided

False
frequencies bool

compute vibrational frequencies of each conformer at the optimization level, for the ensemble IR spectrum. Ignored if multistage_opt_settings is provided; set its frequencies instead

False
weighting_temperature float

temperature for the conformer populations, in Kelvin. With frequencies, populations use free energies at this temperature

298.15
multistage_opt_settings MultiStageOptSettings | None

optimization stages and singlepoint settings for ranking conformers. When provided, takes precedence over final_method / solvent / transition_state. When omitted, an MSO is built from those three params. Constraints remain active during conformer generation, but are omitted from transition-state refinement stages

None
conformer_clustering_settings ConformerClusteringSettings | None

cluster the generated ensemble (ReSCoSS k-means on 3D-shape descriptors) and keep only representative conformers for downstream optimization. Not supported with initial_conformers

None
initial_conformers Sequence[StructureInput] | None

pre-generated 3D conformers to optimize, deduplicate, and rank directly, skipping conformer generation (screen-only mode). Requirements (all enforced):

  • mutually exclusive with initial_molecule
  • conf_gen_settings must be None
  • every conformer must be a real 3D structure (no SMILES)
  • every conformer must be the same molecule with identical atom ordering -- conformers are compared atom-by-atom during deduplication, so atom i must be the same atom in every conformer. Read them from one multi-conformer source (one RDKit mol, an SDF, an MD trajectory) rather than assembling them separately
None
name str

name of the workflow

'Conformer Search Workflow'
folder_uuid str | None

UUID of the folder to place the workflow in

None
folder Folder | None

destination folder

None
max_credits int | None

maximum credits for the workflow

None
webhook_url str | None

URL that Rowan will POST to when the workflow completes

None
is_draft bool

save as a draft without starting execution

False

Returns:

Type Description
Workflow[ConformerSearchResult]

submitted workflow

Raises:

Type Description
HTTPStatusError

request to the API fails