mlcolvar.core.transform.descriptors.TorsionalAngles

class mlcolvar.core.transform.descriptors.TorsionalAngles(indices: list | ndarray | Tensor, n_atoms: int, mode: str | list, PBC: bool, cell: float | list = None, scaled_coords: bool = False)[source]

Bases: Transform

Torsional angle defined by a set of 4 atoms from their positions. Can compute a single angle or multiple angles.

__init__(indices: list | ndarray | Tensor, n_atoms: int, mode: str | list, PBC: bool, cell: float | list = None, scaled_coords: bool = False) Tensor[source]
Initialize a torsional angle object.

Can compute a single angle or multiple angles based on the indices key. The cell size to be used for PBC and/or scaled coordinates needs to be provided. This can be done in one of two ways, exclusively: - Fixed cell (e.g., NVT simulations), at initialization, using the cell keyword, for a fixed cell only.

This mode supports torchscript of the preprocessing module and can be used with the PLUMED interface.

  • Varying cells, at runtime (e.g., NPT simulations), using the cell entry in the forward method or adding the cell data in the dataset used for training. This mode doesn’t support torchscript of the preprocessing module, as it is not supported in the PLUMED interface.

Parameters:
  • indices (Union[list, np.ndarray, torch.Tensor]) – Indices of the 4 ordered atoms defining the torsional angle(s). It can be: - A single 4-element list/array: [a1, a2, a3, a4] for one angle - A list of 4-element lists: [[a1, a2, a3, a4], [b1, b2, b3, b4], …] for multiple angles

  • n_atoms (int) – Number of atoms in the positions tensor used in the forward.

  • mode (Union[str, list]) – Which quantities to return among ‘angle’, ‘sin’ and ‘cos’

  • PBC (bool) – Switch for Periodic Boundary Conditions use

  • cell (Union[float, list, None]) – Dimensions of the real cell for fixed cell mode, orthorombic-like cells only. For varying cell mode, this argument must be left as None and the cell must be provided at runtime. Note that only fixed cell mode supports torchscript of the preprocessing module.

  • scaled_coords (bool, optional) – Switch for coordinates scaled on cell’s vectors use, by default False

Returns:

Depending on mode selection, the torsional angle(s) in radiants, their sine and their cosine. Shape: [batch_size, n_angles * n_modes]

Return type:

torch.Tensor

Methods

__init__(indices, n_atoms, mode, PBC[, ...])

Initialize a torsional angle object.

compute_torsional_angle(pos[, cell])

forward(x[, cell])

Define the computation performed at every call.

forward(x, cell: float | list | Tensor = None)[source]

Define the computation performed at every call.

Should be overridden by all subclasses.

Note

Although the recipe for forward pass needs to be defined within this function, one should call the Module instance afterwards instead of this since the former takes care of running the registered hooks while the latter silently ignores them.

setup_from_datamodule(datamodule)

Initialize parameters based on pytorch lighting datamodule.

Attributes

MODES

T_destination

call_super_init

dump_patches

training