Terminology and modeling choices#

This page collects distinctions that recur across TMol workflows. It is a concept guide, not a replacement for the API reference.

PoseStack, pose, block, and atom#

A tmol.pose.PoseStack stores one or more molecular systems as padded tensors on one PyTorch device. n_poses is the batch dimension. Padding lets systems with different numbers of atoms and blocks share a tensor layout; real_atoms and block-index tensors distinguish molecular entries from padding.

TMol uses block where Rosetta users often expect residue. A block can be an amino acid, nucleotide, ligand fragment, ion, or another chemical unit described by one RefinedResidueType. A one-pose PoseStack is still a PoseStack; there is no separate Rosetta-compatible Pose class.

ParameterDatabase and PackedBlockTypes#

tmol.database.ParameterDatabase is the immutable source of chemical definitions and scoring parameters. Extending it for a ligand or custom residue returns a new database.

tmol.pose.PackedBlockTypes contains the block types and device-resident setup data used by a PoseStack. Reuse it when constructing compatible structures on the same device. It is not a cache of conformation energies.

Deposited atoms and built atoms#

PDB or mmCIF atom records describe deposited coordinates. TMol selects chemical types and may build supported missing atoms from its database. Histidine state, termini, disulfides, missing atoms, and noncanonical chemistry therefore need to be checked in the I/O build context rather than assumed to round-trip unchanged.

Prefer mmCIF through Biotite when metadata, explicit ligand bonds, or noncanonical chemistry matter. PDB remains useful as a compatibility format, but it cannot represent every input decision losslessly.

The no_optH choice#

Hydroxyl and other movable polar hydrogens can be optimized during preparation. Use no_optH=False when you want the standard optimization step and the score function needed to choose those conformations. Use no_optH=True when the incoming proton geometry is authoritative, when you are intentionally deferring that choice, or when a lightweight preprocessing path is more important than optimizing those hydrogens.

The choice changes coordinates and can change scores. Record it as part of a reproducible workflow rather than treating it as an implementation detail.

Score units and score differences#

TMol reports weighted score units. They are not calibrated kcal/mol and are not guaranteed to equal scores from Rosetta, even when names or weight sets are similar.

A block-pair score, interface sum, mutation-score difference, or calculate_block_pair_ddg() result describes the exact computational experiment used to produce it. Such values are not automatically physical binding free energies or experimentally calibrated ΔΔG values.

Rendered scorers and changing coordinates#

A tmol.score.ScoreFunction renders a PyTorch module for a particular PoseStack layout. You can generally reuse that module while changing only the coordinate tensor. If block types, atom counts, connectivity, or batch layout change, render a new scorer for the new stack.

Cartesian and kinematic movement#

Cartesian minimization directly changes selected atom coordinates. Kinematic minimization changes internal and rigid-body degrees of freedom selected by a tmol.kinematics.MoveMap over a tmol.kinematics.FoldForest. These are different coordinate models, so their trajectories and convergence behavior should not be compared without matching masks, weights, stopping rules, and iteration budgets.

See the optimization workflow and Tutorial 05 for executable examples.