Pose Analysis 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],
)
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 |
PoseAnalysisMDResult
dataclass
PoseAnalysisMDResult(
workflow_data: dict[str, Any],
workflow_type: str,
workflow_uuid: str,
complete: bool = True,
)
Bases: WorkflowResult
Result from a Pose-Analysis Molecular Dynamics (MD) workflow.
trajectories
property
Results from each trajectory replicate.
Each trajectory contains RMSD values, contact analysis, and cluster assignments.
hydration_sites
property
Hydration sites identified across all trajectories.
average_rmsds
property
Average ligand RMSD per trajectory (Angstrom).
minimized_protein_uuid
property
UUID of the energy-minimized protein structure.
get_minimized_protein
Fetch the energy-minimized protein structure.
.. note:: Makes one API call on first access. Results are cached. Call clear_cache() to refresh.
Returns:
| Type | Description |
|---|---|
Protein | None
|
Protein object or None if not available. |
get_atom_distances
Fetch interatomic distances over the trajectory for specified atom pairs.
Atom indices can be found in the contacts field of each trajectory,
which provides ligand_atom_index and protein_atom_index for each contact.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
atom_pairs
|
list[tuple[int, int]]
|
List of (atom_i, atom_j) index pairs (0-indexed). |
required |
replicate
|
int
|
Trajectory replicate index (default 0). |
0
|
Returns:
| Type | Description |
|---|---|
list[list[float]]
|
List of distance arrays, one per pair, over all frames (Angstrom). |
Raises:
| Type | Description |
|---|---|
HTTPError
|
If the API request fails. |
download_trajectories
download_trajectories(
replicates: list[int],
name: str | None = None,
path: Path | str | None = None,
) -> Path
Download DCD trajectory files for specified replicates.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
replicates
|
list[int]
|
List of replicate indices to download. |
required |
name
|
str | None
|
Custom name for the tar.gz file (without extension). |
None
|
path
|
Path | str | None
|
Directory to save the file to. Defaults to current directory. |
None
|
Returns:
| Type | Description |
|---|---|
Path
|
Path to the downloaded tar.gz file. |
Raises:
| Type | Description |
|---|---|
HTTPError
|
If the API request fails. |
submit_pose_analysis_md_workflow
submit_pose_analysis_md_workflow(
protein: Protein | ProteinUUID,
initial_smiles: str,
num_trajectories: int = 4,
equilibration_time_ns: float = 1,
simulation_time_ns: float = 10,
temperature: float = 300,
pressure_atm: float = 1.0,
langevin_timescale_ps: float = 1.0,
timestep_fs: float = 2,
constrain_hydrogens: bool = True,
nonbonded_cutoff: float = 8.0,
ionic_strength_M: float = 0.0,
water_buffer: float = 10.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
|
equilibration_time_ns
|
float
|
Equilibration time per trajectory, in ns. |
1
|
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. |
2
|
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 Å. |
10.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. |