Skip to content

Pose Analysis MD

Pose-analysis MD accepts selectable small-molecule, protein, and water force fields. Mean and medoid structures are available through the same result helpers as protein MD.

Pose-analysis MD workflow - molecular dynamics simulations for ligand-protein complexes.

TrajectoryResult dataclass

TrajectoryResult(
    uuid: str,
    ligand_rmsd: list[float],
    contacts: list[BindingPoseContact],
    sasa: list[float | None],
    polar_sasa: list[float | None],
    isotropic_radius_of_gyration: list[float],
    cluster_centroid_indices: list[int],
    cluster_indices_by_frame: list[int],
    mean_structure_uuid: str | None = None,
    median_structure_frame_index: int | None = None,
)

Results from a single MD trajectory replicate.

Parameters:

Name Type Description Default
uuid str

UUID of the trajectory calculation.

required
ligand_rmsd list[float]

Ligand RMSD values over time (Angstrom).

required
contacts list[BindingPoseContact]

Ligand-protein contacts with occupancy over the trajectory.

required
sasa list[float | None]

Solvent-accessible surface area per analyzed frame (populated when analysis_interval_ps is set).

required
polar_sasa list[float | None]

Polar solvent-accessible surface area per analyzed frame (populated when analysis_interval_ps is set).

required
isotropic_radius_of_gyration list[float]

Radius of gyration per analyzed frame.

required
cluster_centroid_indices list[int]

Frame indices of the cluster centroids (populated when clustering is set).

required
cluster_indices_by_frame list[int]

Cluster assignment for each frame (populated when clustering is set).

required
mean_structure_uuid str | None

UUID of the coordinate-averaged structure.

None
median_structure_frame_index int | None

Frame index of the medoid structure.

None

PoseAnalysisMDResult dataclass

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

Bases: _MolecularDynamicsResult

Result from a Pose-Analysis Molecular Dynamics (MD) workflow.

trajectories property

trajectories: list[TrajectoryResult]

Results from each trajectory replicate.

Each trajectory contains RMSD values, contact analysis, and cluster assignments.

hydration_sites property

hydration_sites: list[HydrationSite]

Hydration sites identified across all trajectories.

average_rmsds property

average_rmsds: list[float | None]

Average ligand RMSD per trajectory (Angstrom).

messages property

messages: list[Message]

Any messages or warnings from the workflow.

submit_pose_analysis_md_workflow

submit_pose_analysis_md_workflow(
    protein: Protein | ProteinUUID,
    initial_smiles: str,
    num_trajectories: int = 4,
    small_molecule_ff: Literal[
        "off_sage_2_0_0",
        "off_sage_2_2_1",
        "off_sage_2_3_0",
        "mango_1_0_0",
    ] = "off_sage_2_3_0",
    protein_ff: ProteinForceField
    | str = ProteinForceField.FF14SB,
    water_ff: WaterForceField | str = WaterForceField.TIP3P,
    equilibration_time_ns: float = 0.5,
    simulation_time_ns: float = 10,
    temperature: float = 300,
    pressure_atm: float = 1.0,
    langevin_timescale_ps: float = 1.0,
    timestep_fs: float = 4,
    hydrogen_mass: float = 3,
    constrain_hydrogens: bool = True,
    nonbonded_cutoff: float = 8.0,
    ionic_strength_M: float = 0.0,
    water_buffer: float = 8.0,
    ligand_residue_name: str = "LIG",
    protein_restraint_cutoff: float | None = 7.0,
    protein_restraint_constant: float = 100,
    save_solvent: bool = False,
    num_solvent_to_save: int | None = None,
    analysis_interval_ps: float | None = None,
    clustering: KMeansClusteringSettings
    | GreedyClusteringSettings
    | None = None,
    validate_forcefield: bool = True,
    name: str = "Pose-Analysis MD 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 Pose-Analysis Molecular Dynamics (MD) workflow to the API.

Parameters:

Name Type Description Default
protein Protein | ProteinUUID

Holo protein on which MD will be run. Can be input as a UUID or a Protein object.

required
initial_smiles str

SMILES for the ligand.

required
num_trajectories int

Number of trajectories to run.

4
small_molecule_ff Literal['off_sage_2_0_0', 'off_sage_2_2_1', 'off_sage_2_3_0', 'mango_1_0_0']

Force field for the ligand.

'off_sage_2_3_0'
protein_ff ProteinForceField | str

Force field for proteins.

FF14SB
water_ff WaterForceField | str

Force field for water.

TIP3P
equilibration_time_ns float

Equilibration time per trajectory, in ns.

0.5
simulation_time_ns float

Simulation time per trajectory, in ns.

10
temperature float

Temperature, in K.

300
pressure_atm float

Pressure, in atm.

1.0
langevin_timescale_ps float

Timescale for the Langevin integrator, in ps⁻¹.

1.0
timestep_fs float

Timestep, in femtoseconds.

4
hydrogen_mass float

Hydrogen mass, in atomic mass units.

3
ligand_residue_name str

Name of the residue corresponding to the ligand.

'LIG'
constrain_hydrogens bool

Whether to use SHAKE to freeze bonds to hydrogen.

True
nonbonded_cutoff float

Nonbonded cutoff for particle-mesh Ewald, in Å.

8.0
ionic_strength_M float

Ionic strength of the solution, in M (molar).

0.0
water_buffer float

Amount of water to add around the protein, in Å.

8.0
protein_restraint_cutoff float | None

Cutoff past which alpha-carbons will be constrained, in Å, measured from the ligand. None applies no restraints.

7.0
protein_restraint_constant float

Force constant for backbone restraints, in kcal/mol/Ų.

100
save_solvent bool

Whether to save solvent molecules.

False
num_solvent_to_save int | None

Number of solvent molecules to save (the N nearest the ligand each frame). None saves all solvent when save_solvent is True.

None
analysis_interval_ps float | None

Interval at which to compute per-frame SASA and polar SASA, in ps. None disables those analyses.

None
clustering KMeansClusteringSettings | GreedyClusteringSettings | None

How to cluster trajectory frames. None disables clustering; pass a KMeansClusteringSettings (num_clusters) or GreedyClusteringSettings (cutoff_angstrom).

None
validate_forcefield bool

if True (default), validate the protein forcefield compatibility before submitting. Raises an error early if the protein cannot be parameterized or has clashing residues.

True
name str

Name of the workflow.

'Pose-Analysis MD 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.