Analysis Operations#
Lightweight masks and cross-mask interaction accounting are exposed from
tmol.ops. For fragment-aware accounting that depends on score-layer
metadata, use tmol.score.calculate_fragment_interactions().
High-level batched scoring operations.
- tmol.ops.build_coord_mask_for_mask_and_interacting_atoms(pose_stack: PoseStack, mask: Tensor[slice(None, None, None), slice(None, None, None)], interaction_distance: float = 5.0, *, max_workspace_bytes: int | None = None) Tensor[slice(None, None, None), slice(None, None, None)][source]#
Select masked blocks and nearby side-chain atoms.
- Parameters:
pose_stack – Poses containing coordinates shaped
[n_poses, n_atoms, 3].mask – Selected blocks shaped
[n_poses, n_blocks].interaction_distance – Maximum atom-to-selected-atom distance in Angstroms.
max_workspace_bytes – Temporary-memory cap for batched pairwise differences. Defaults to 256 MiB; smaller values use more chunks.
- Returns:
Coordinate mask shaped
[n_poses, n_atoms]. All atoms in selected blocks are included; only side-chain atoms are added from other blocks.- Raises:
ValueError – If
max_workspace_bytesis not positive.
- tmol.ops.build_coord_mask_for_mask_and_nearby_blocks(pose_stack: PoseStack, mask: Tensor[slice(None, None, None), slice(None, None, None)]) Tensor[slice(None, None, None), slice(None, None, None)][source]#
Select masked blocks and side chains of centroid-adjacent blocks.
- Parameters:
pose_stack – Poses to select from.
mask – Selected blocks shaped
[n_poses, n_blocks].
- Returns:
Coordinate mask shaped
[n_poses, max_n_atoms].
- tmol.ops.build_sidechain_coord_mask(pose_stack: PoseStack) Tensor[slice(None, None, None), slice(None, None, None)][source]#
Select side-chain atoms in each pose.
- Parameters:
pose_stack – Poses supplying block types and coordinate layout.
- Returns:
Mask shaped
[n_poses, max_n_atoms]. Non-polymers contribute all real atoms; polymers exclude their declared main-chain atoms.
- tmol.ops.calculate_block_pair_ddg(pose_stack: PoseStack, mask: Tensor[slice(None, None, None), slice(None, None, None)] | Tensor, mask2: Tensor[slice(None, None, None), slice(None, None, None)] | None = None, sfxn: ScoreFunction | None = None, sum_terms: bool = True, minimize: bool = True, pack: bool = False, database: ParameterDatabase | None = None, return_pose_stack: bool = False, *, memory_efficient: bool = False, max_workspace_bytes: int | None = None) Tensor | tuple[Tensor, PoseStack][source]#
Score interactions between two block sets in each pose.
- Parameters:
pose_stack – Poses to score.
mask – First set shaped
[n_poses, n_blocks]. For single-site scans, integer indices shaped[n_poses]avoid a dense pair-mask reduction.mask2 – Optional second block set. The complement of
maskis used by default.sfxn – Score function; defaults to beta2016 on the pose device.
sum_terms – Sum score terms into one value per pose.
minimize – Minimize selected and nearby side-chain atoms before scoring.
pack – Repack selected and adjacent blocks before minimization.
database – Parameter database used to construct the Dunbrack sampler.
return_pose_stack – Return the packed/minimized poses with their scores.
memory_efficient – Use a lower-memory Boolean-mask reduction. Its floating- point summation order may differ from the default path.
max_workspace_bytes – Optional temporary-memory cap for the batched nearby-atom search used by minimization. Defaults to 256 MiB.
- Returns:
Scores shaped
[n_poses]or[n_terms, n_poses]. When requested, returns(scores, scored_pose_stack).
- tmol.ops.compute_block_adjacency(block_centroids: Tensor[slice(None, None, None), slice(None, None, None), 3], block_furthest_dist: Tensor[slice(None, None, None), slice(None, None, None)], constant: float = 5.0) Tensor[slice(None, None, None), slice(None, None, None), slice(None, None, None)][source]#
Find blocks whose enclosing spheres are within a fixed gap.
- Parameters:
block_centroids – Centroids shaped
[n_poses, n_blocks, 3].block_furthest_dist – Enclosing radii shaped
[n_poses, n_blocks].constant – Maximum gap between two enclosing spheres.
- Returns:
Adjacency shaped
[n_poses, n_blocks, n_blocks]with a false diagonal and false entries for padding blocks.
- tmol.ops.compute_block_centroids_and_furthest_dist(pose_stack: PoseStack) tuple[Tensor[slice(None, None, None), slice(None, None, None), 3], Tensor[slice(None, None, None), slice(None, None, None)]][source]#
Compute each block’s centroid and enclosing radius.
- Parameters:
pose_stack – Poses to summarize.
- Returns:
Centroids shaped
[n_poses, n_blocks, 3]and maximum distances shaped[n_poses, n_blocks]. Padding blocks contain NaNs.
- tmol.ops.res_mask_to_coord_mask(pose_stack: PoseStack, mask: Tensor[slice(None, None, None), slice(None, None, None)]) Tensor[slice(None, None, None), slice(None, None, None)][source]#
Expand a block-level selection into an atom coordinate mask.
- Parameters:
pose_stack – Poses supplying the block-to-coordinate layout.
mask – Selected blocks shaped
[n_poses, n_blocks].
- Returns:
Selected real atoms shaped
[n_poses, max_n_atoms].