Topologies and residues¶
This page contains the full reference for topologies and residues. The
input format page provides a high-level summary with minimal examples.
topologies¶
topologies is an array of topology objects. Each topology contains the molecular data, fragmentation, and connectivity for a single system. Batched mode is achieved by listing multiple topologies with a shared driver/model/keywords configuration.
topology fields¶
Field |
Type |
Required |
Notes |
|---|---|---|---|
|
string |
No |
Defaults to |
|
array of string |
Yes* |
Atomic symbols (“H”, “C”, etc). Required if |
|
array of float |
Yes* |
Flat XYZ array (length = 3 * atoms). Required if |
|
string |
Yes* |
Path to XYZ file; EXESS will read it instead of |
|
array of float |
No |
Flat XYZ velocity array (Angstrom/ps). |
|
array of string |
No |
Atom labels. |
|
array of float |
No |
Per-atom partial charges. |
|
array of int |
No |
Per-atom formal charges. Defaults to 0 for all atoms. |
|
array of bonds |
No |
Bond list for covalent fragmentation. |
|
array of int |
No |
One entry per bond. |
|
array of arrays |
No |
Zero-indexed atom indices per fragment. If omitted, EXESS assumes a single fragment containing all atoms. |
|
array of int |
No |
Per-fragment formal charges. Defaults to 0 per fragment if omitted. |
|
array of float |
No |
Per-fragment partial charges. |
|
array of int |
No |
Per-fragment multiplicities (open-shell systems). Defaults to 1 per fragment if omitted. |
|
array of two ints |
No |
First/last water molecule treated classically. |
Inputs require either symbols + geometry or xyz, but not both.
Notes:
labelscan be used to annotate specific atoms (e.g., alpha carbons in residues).partial_charges,formal_charges, andlabelsmust match the length ofsymbolsif provided.connectivityis a perceived bond list and should not be treated as a definitive source of bond information.stereochemistryis only valid ifconnectivityis present and must match its length.velocitiesare used for dynamics; they are present only in v1 inputs but are supported.fragmentsmust include each atom exactly once when provided.rush-py expects topology JSON inputs (symbols + geometry). It does not accept
xyzpaths.
geometry¶
Example layout:
"geometry": [
-4.3997, 1.0764, 7.7009,
-3.9597, 0.2664, 7.3109,
-4.4297, 0.9964, 8.7009
]
symbols¶
"symbols": ["O", "H", "H"]
xyz¶
xyz can be used instead of geometry and symbols, including for fragmented systems (it is compatible with fragmentation keywords). Standard XYZ files begin with the atom count, followed by a comment line and then element + XYZ positions:
3
O -1.1570 0.0630 -0.4817
H -1.1570 0.8180 -1.0766
H -1.1570 -0.6920 -1.0766
Example usage in EXESS:
{
"topologies": [
{ "xyz": "/path/to/water.xyz" }
]
}
connectivity¶
Connectivity is required when a covalent bond is broken across fragments. EXESS will add hydrogen caps to satisfy valences and remove them after the calculation.
A bond entry is [atom_index_1, atom_index_2, bond_order].
EXESS defines the following bond order values (single/double/triple bonds are the most common values):
0: Unspecified1: Single2: Double3: Triple4: Quadruple5: Quintuple6: Sextuple250: FiveAndAHalf251: FourAndAHalf252: ThreeAndAHalf253: TwoAndAHalf254: OneAndAHalf255: Ring
Example:
"connectivity": [
[1, 4, 1],
[9, 12, 1]
]
A covalent fragmentation example with two ethane fragments connected across a C-C bond uses connectivity: [[1, 4, 1]] to signal a single bond between atom indices 1 and 4. EXESS uses this information to apply hydrogen caps on broken valences during fragmentation and removes them after the calculation.
stereochemistry¶
EXESS accepts a list of integers aligned with the connectivity list:
0: None1: Up-1: Down2: Either3: CisOrTrans
fragments¶
Fragment indices are zero-indexed. Example for five water fragments:
"fragments": [
[0, 1, 2],
[3, 4, 5],
[6, 7, 8],
[9, 10, 11],
[12, 13, 14]
]
fragment_formal_charges / fragment_multiplicities¶
If
fragment_formal_chargesis omitted, EXESS sets fragment charges to the sum of per-atomformal_chargeswhen provided, otherwise 0.If
fragment_multiplicitiesis omitted, EXESS sets multiplicity to 1 for every fragment.If
fragmentsis omitted, EXESS assumes a single fragment containing all atoms and derives defaults accordingly.
Example for a single, unfragmented system:
{
"topologies": [
{
"geometry": [
-4.3997, 1.0764, 7.7009,
-3.9597, 0.2664, 7.3109,
-4.4297, 0.9964, 8.7009
],
"symbols": ["O", "H", "H"],
"fragment_formal_charges": [0],
"fragment_multiplicities": [1]
}
]
}
topology validation checks¶
Validation checks when constructing inputs:
geometrymust be length3 * len(symbols).labels,partial_charges, andformal_chargesmust matchsymbolslength if present.connectivityatom indices must be valid and may not reference the same atom twice.stereochemistryis only valid whenconnectivityis present and must be the same length.velocitiesmust be length3 * len(symbols)if present.fragmentsmust not duplicate atoms; each atom should appear in exactly one fragment.fragment_formal_charges,fragment_partial_charges, andfragment_multiplicitiesmust matchfragmentslength when provided.
waters¶
waters is a two-element array identifying the first and last water molecule to be treated classically (used by some QMMM/Q4ML workflows).
residues¶
residues is an optional array of residue definitions used for TRC-based workflows and QMMM. Each element is a Residues object:
Field |
Type |
Notes |
|---|---|---|
|
array[int] |
Optional list of residue indices with labels. |
|
array of array[string] |
Optional labels per residue. |
|
array of array[int] |
Atom indices per residue. |
|
array[string] |
Residue names. |
|
array[int] |
Residue numbers. |
|
array[string] |
Required PDB-style insertion codes (use empty strings when not applicable). |
residues is typically aligned one-to-one with topologies (same index). It is required for QMMM and other workflows that rely on residues, and it is often generated by converting PDB/TRC inputs. insertion_codes is required; use empty strings when there are no insertion codes.