mod corekey¶
- module corekey¶
Prospective superbasin identity from the topology of a structure’s core.
The isomers that pile up on an icosahedral shelf differ by where a few surface atoms sit; their interiors are one Mackay core deformed by symmetry operations. A key that reads only the interior contact network therefore names the superbasin a structure belongs to on first sight, before any revisit, and does so from topology alone: no reference structure, no order parameter, no size rule.
The key is the d-SEAMS construction carried over to clusters and coloured: primitive rings of the core contact graph in the shortest-path sense of Franzblau (Phys. Rev. B 1991, 44, 4925), each coloured by its size and by the species and coordination of its atoms, joined wherever two rings share a bond, and the coloured ring graph hashed by Weisfeiler–Lehman refinement. Rings and the cages they close are what separate packing families in a network (Goswami, Goswami and Singh, J. Chem. Inf. Model. 2020, 60, 2169), and a network built from rings is what a water cage census and a metal core census have in common.
A key is not a proof of identity: two cores with the same refined colouring hash together. It is a prospective label for a superbasin, and the exact witnesses elsewhere in the crate decide identity where it matters.
Variables
- const MAX_RING: usize¶
Rings longer than this are not part of the key.
- const WL_ROUNDS: usize¶
Weisfeiler–Lehman refinement rounds.
Functions
- fn contact_cutoff(x: ArrayView1<f64>) -> f64¶
The contact cutoff the key uses:
RING_CUTOFF_SCALEtimes the median nearest-neighbour distance, which sits between the first and second shells of every packing measured here and, unlike a histogram minimum, cannot slip a shell on a strained decahedron.
- fn contact_neighbours(x: ArrayView1<f64>, n: usize, cutoff: f64) -> Vec<Vec<usize>>¶
Contact adjacency lists at
cutoff.
- fn core_atoms(neighbours: &[Vec<usize>], rule: CoreRule) -> Vec<usize>¶
Atoms the rule admits, by index.
- fn core_key(x: ArrayView1<f64>, species: &[u32], cutoff: f64, rule: CoreRule) -> CoreKey¶
Superbasin key of a structure.
speciesis one atomic number per atom or empty for a single species;cutoffis the contact distance. The core is taken byruleon the full contact graph, rings are found on the core-induced subgraph, and the coloured ring graph is refined and hashed.
- fn core_key_nn(x: ArrayView1<f64>, species: &[u32], rule: CoreRule) -> CoreKey¶
core_keyat the structure’s own contact cutoff.
- fn primitive_rings(nb: &[Vec<usize>], max_ring: usize) -> Vec<Vec<usize>>¶
Primitive rings of a graph up to
max_ring, as sorted-by-walk member lists starting from their smallest vertex.A cycle is primitive when every pair of its vertices is joined along the cycle by a shortest path of the whole graph, which is Franzblau’s criterion: no chord, and no shortcut through vertices off the ring.
Enums
- enum CoreRule¶
Which atoms count as the core.
- NearMaximum¶
Atoms whose coordination is within
slackof the largest observed.- slack: usize¶
Allowed shortfall from the largest coordination.
- AtLeast(usize)¶
Atoms with at least this coordination.
Traits implemented
Structs and Unions