Skip to content

steering

Steered molecular dynamics utilities.

import mlx_atomistic.steering

class SteeredCOMBiasPotential
def __init__(ligand_indices: object, direction: object, target: float, k: float, masses: object | None = None, name: str = 'steered_com_bias')

Moving harmonic restraint on a ligand center-of-mass projection.

Parameters

NameTypeDefaultDescription
ligand_indicesobject
directionobject
targetfloat
kfloat
massesobject | NoneNone
namestr'steered_com_bias'

Methods

def collective_variable(positions: mx.array) -> mx.array

Return ligand COM projection onto the steering direction.

Parameters

NameTypeDefaultDescription
positionsmx.array

Returns

  • mx.array
def energy_forces(positions: mx.array, cell: Cell | None = None, pairs: mx.array | None = None) -> tuple[mx.array, mx.array]

Return the steering COM-bias energy and per-atom forces.

Parameters

NameTypeDefaultDescription
positionsmx.arrayAtomic coordinates, shape (n_atoms, 3).
cellCell | NoneNoneAccepted for interface uniformity but unused. Defaults to None.
pairsmx.array | NoneNoneAccepted for interface uniformity and ignored; the term uses its stored index list. Defaults to None.

Returns

  • tuple[mx.array, mx.array] — An (energy, forces) tuple: scalar energy and per-atom forces of shape (n_atoms, 3).
def potential_energy(positions: mx.array, cell: Cell | None = None) -> mx.array

Return the steering COM-bias energy 0.5 * k * (cv - target)**2.

Parameters

NameTypeDefaultDescription
positionsmx.arrayAtomic coordinates, shape (n_atoms, 3).
cellCell | NoneNoneAccepted for interface uniformity but unused. Defaults to None.

Returns

  • mx.array — The bias energy as a scalar array.
class SteeredNVTResult
def __init__(sampled_positions: mx.array, sampled_velocities: mx.array, sampled_steps: mx.array, sampled_time: mx.array, diagnostic_steps: mx.array, diagnostic_time: mx.array, potential_energy: mx.array, kinetic_energy: mx.array, total_energy: mx.array, potential_energy_by_term: dict[str, mx.array], temperature: mx.array, pair_count: mx.array, rebuild_count: mx.array, constraint_max_error: mx.array, sampled_cv: mx.array, sampled_target: mx.array, sampled_bias_energy: mx.array, sampled_work: mx.array, diagnostic_cv: mx.array, diagnostic_target: mx.array, diagnostic_bias_energy: mx.array, diagnostic_work: mx.array, final_state: SimulationState, target_temperature: float)

Trajectory and steering diagnostics from an NVT SMD run.

Parameters

NameTypeDefaultDescription
sampled_positionsmx.array
sampled_velocitiesmx.array
sampled_stepsmx.array
sampled_timemx.array
diagnostic_stepsmx.array
diagnostic_timemx.array
potential_energymx.array
kinetic_energymx.array
total_energymx.array
potential_energy_by_termdict[str, mx.array]
temperaturemx.array
pair_countmx.array
rebuild_countmx.array
constraint_max_errormx.array
sampled_cvmx.array
sampled_targetmx.array
sampled_bias_energymx.array
sampled_workmx.array
diagnostic_cvmx.array
diagnostic_targetmx.array
diagnostic_bias_energymx.array
diagnostic_workmx.array
final_stateSimulationState
target_temperaturefloat
def simulate_steered_nvt(positions, velocities, *, masses = None, ligand_indices, direction, target_start: float, target_velocity: float, k: float, cell: Cell | None = None, force_terms: ForceTerm | list[ForceTerm] | tuple[ForceTerm, ...] | None = None, neighbor_manager: NeighborListManager | None = None, config: SimulationConfig | None = None, thermostat: LangevinThermostat | None = None, constraints: DistanceConstraints | None = None) -> SteeredNVTResult

Run Langevin NVT while steering a ligand COM projection.

Parameters

NameTypeDefaultDescription
positions
velocities
massesNone
ligand_indices
direction
target_startfloat
target_velocityfloat
kfloat
cellCell | NoneNone
force_termsForceTerm | list[ForceTerm] | tuple[ForceTerm, ...] | NoneNone
neighbor_managerNeighborListManager | NoneNone
configSimulationConfig | NoneNone
thermostatLangevinThermostat | NoneNone
constraintsDistanceConstraints | NoneNone

Returns

  • SteeredNVTResult