Skip to content

topology

Molecular mechanics topology primitives.

import mlx_atomistic.topology

class Topology
def __init__(n_atoms: int, bonds: object = (), angles: object = (), dihedrals: object = (), impropers: object = (), exclusions: object = (), partial_charges: object | None = None, one_four_pairs: object = (), nonbonded_exception_pairs: object = (), exclude_bonds: bool = True, nonbonded_cutoff: float | None = None, eager_nonbonded_pair_limit: int | None = DEFAULT_EAGER_NONBONDED_PAIR_LIMIT, virtual_sites: object = (), virtual_site_types: object = ())

Programmatic molecular mechanics topology.

Parameters

NameTypeDefaultDescription
n_atomsint
bondsobject()
anglesobject()
dihedralsobject()
impropersobject()
exclusionsobject()
partial_chargesobject | NoneNone
one_four_pairsobject()
nonbonded_exception_pairsobject()
exclude_bondsboolTrue
nonbonded_cutofffloat | NoneNone
eager_nonbonded_pair_limitint | NoneDEFAULT_EAGER_NONBONDED_PAIR_LIMIT
virtual_sitesobject()
virtual_site_typesobject()

Properties

  • exclusion_set frozenset[tuple[int, int]] — Excluded nonbonded pairs as normalized Python pairs.
  • nonbonded_build_report dict[str, int | float | str | None] — Compact report for topology nonbonded pair handling.
  • nonbonded_pair_count int — Number of non-excluded full-system nonbonded pairs.
  • nonbonded_pair_policy str — Whether full nonbonded pairs were eagerly materialized or deferred.
  • one_four_set frozenset[tuple[int, int]] — 1-4 scaled nonbonded pairs as normalized Python pairs.

Methods

def from_sequences(*, n_atoms: int, bonds: Sequence[Sequence[int]] = (), angles: Sequence[Sequence[int]] = (), dihedrals: Sequence[Sequence[int]] = (), impropers: Sequence[Sequence[int]] = (), exclusions: Sequence[Sequence[int]] = (), partial_charges: Sequence[float] | None = None, one_four_pairs: Sequence[Sequence[int]] | None = None, nonbonded_exception_pairs: Sequence[Sequence[int]] = (), exclude_bonds: bool = True, nonbonded_cutoff: float | None = None, eager_nonbonded_pair_limit: int | None = DEFAULT_EAGER_NONBONDED_PAIR_LIMIT, virtual_sites: Sequence[object] = (), virtual_site_types: Sequence[str] = ()) -> Topology

Create a topology from Python sequences.

Parameters

NameTypeDefaultDescription
n_atomsint
bondsSequence[Sequence[int]]()
anglesSequence[Sequence[int]]()
dihedralsSequence[Sequence[int]]()
impropersSequence[Sequence[int]]()
exclusionsSequence[Sequence[int]]()
partial_chargesSequence[float] | NoneNone
one_four_pairsSequence[Sequence[int]] | NoneNone
nonbonded_exception_pairsSequence[Sequence[int]]()
exclude_bondsboolTrue
nonbonded_cutofffloat | NoneNone
eager_nonbonded_pair_limitint | NoneDEFAULT_EAGER_NONBONDED_PAIR_LIMIT
virtual_sitesSequence[object]()
virtual_site_typesSequence[str]()

Returns

  • Topology
def nonbonded_pair_scales(*, one_four_scale: float = 1.0) -> mx.array

Return cached per-pair 1-4 scaling factors for all nonbonded pairs.

Parameters

NameTypeDefaultDescription
one_four_scalefloat1.0

Returns

  • mx.array
def nonbonded_pairs(pairs = None) -> mx.array

Return nonbonded pairs with topology exclusions removed.

Parameters

NameTypeDefaultDescription
pairsNone

Returns

  • mx.array
def pair_scales(pairs, *, one_four_scale: float = 1.0) -> mx.array

Return per-pair 1-4 scaling factors.

Parameters

NameTypeDefaultDescription
pairs
one_four_scalefloat1.0

Returns

  • mx.array