Skip to content

NMR

Completed results expose both chemical shifts and typed J-coupling predictions through result.predicted_couplings.

NMR workflow - predict Nuclear Magnetic Resonance spectra.

NMRPeak dataclass

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

An NMR peak.

NMRCoupling dataclass

NMRCoupling(nuclei: tuple[int, int], atom_pairs: tuple[tuple[int, int], ...], bond_distance: int, coupling: float, uncertainty: float | None, conformer_deviation: float | None, model: str)

Predicted scalar coupling between symmetry-equivalent atom pairs.

Attributes:

Name Type Description
nuclei tuple[int, int]

atomic numbers of the coupled nuclei

atom_pairs tuple[tuple[int, int], ...]

symmetry-equivalent pairs of 0-indexed atom indices

bond_distance int

number of bonds separating the nuclei

coupling float

predicted coupling constant, in Hz

uncertainty float | None

model uncertainty, in Hz

conformer_deviation float | None

standard deviation across conformers, in Hz

model str

model used for the prediction

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.

predicted_couplings property

predicted_couplings: list[NMRCoupling]

Predicted scalar coupling constants.

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[NMRResult]

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

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[NMRResult]

submitted workflow

Raises:

Type Description
HTTPStatusError

request to the API fails