Skip to content

NMR

NMR workflow - predict Nuclear Magnetic Resonance spectra.

NMRPeak dataclass

NMRPeak(
    nucleus: int, shift: float, atom_indices: tuple[int, ...]
)

An NMR peak.

NMRResult dataclass

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

Bases: WorkflowResult

Result from a Nuclear Magnetic Resonance (NMR) workflow.

chemical_shifts property

chemical_shifts: list[float | None]

Per-atom NMR chemical shifts (Boltzmann-weighted ensemble average).

Index corresponds to atom index in the molecule. Returns None for atoms without NMR-active nuclei (e.g., oxygen).

per_conformer_chemical_shifts property

per_conformer_chemical_shifts: list[list[float | None]]

Chemical shifts for each conformer before Boltzmann averaging.

Outer list is per-conformer, inner list is per-atom.

boltzmann_weights property

boltzmann_weights: list[float]

Boltzmann weights for each conformer (sum to 1.0).

conformer_uuids property

conformer_uuids: list[str]

UUIDs of the conformer calculations.

predicted_peaks property

predicted_peaks: dict[int, list[NMRPeak]]

Predicted NMR peaks grouped by nucleus atomic number.

Keys are atomic numbers (1 for 1H, 6 for 13C). Peaks with equivalent atoms are merged and shifts are averaged.

symmetry_equivalent_nuclei property

symmetry_equivalent_nuclei: list[list[int]]

Groups of symmetry-equivalent atom indices (0-indexed).

Atoms in the same group have equivalent chemical environments and are averaged together in predicted_peaks.

submit_nmr_workflow

submit_nmr_workflow(
    initial_molecule: StructureInput,
    solvent: SolventInput = "chloroform",
    do_csearch: bool = False,
    do_optimization: bool = True,
    name: str = "NMR 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 Nuclear Magnetic Resonance (NMR) prediction workflow to the API.

Parameters:

Name Type Description Default
initial_molecule StructureInput

Molecule to predict NMR spectra for.

required
solvent SolventInput

Solvent for NMR calculation (default: chloroform). Must be an NMR-supported solvent (see rowan.NMR_SUPPORTED_SOLVENTS); others raise ValueError. A solvated AIMNet2 singlepoint reweights the conformer ensemble, using CPCM-X where supported and otherwise ALPB.

'chloroform'
do_csearch bool

Whether to perform a conformational search. Requires do_optimization.

False
do_optimization bool

Whether to optimize conformer geometries.

True
name str

Name of the workflow.

'NMR Workflow'
folder_uuid str | None

UUID of the folder to store 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.