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]

Radius of gyration for each conformer (A).

sasa property

sasa: list[float]

Solvent accessible surface area for each conformer (A^2).

polar_sasa property

polar_sasa: list[float]

Polar solvent accessible surface area for each conformer (A^2).

get_energies

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

Get conformer energies.

Parameters:

Name Type Description Default
relative bool

If True, 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]

List of Molecule objects.

.. 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

If the index is out of range.

ValueError

If the 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,
    multistage_opt_settings: MultiStageOptSettings | None = None,
    conformer_clustering_settings: ConformerClusteringSettings
    | None = None,
    initial_conformers: list[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

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
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.

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 list[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

Folder object to store the workflow in.

None
max_credits int | None

Maximum number of credits to use for the workflow.

None
webhook_url str | None

URL that Rowan will POST to when the workflow completes.

None
is_draft bool

If True, submit the workflow as a draft without starting execution.

False

Returns:

Type Description
Workflow

Workflow object representing the submitted workflow.

Raises:

Type Description
requests.HTTPError

if the request to the API fails.