mod occupancy¶
- module occupancy¶
Occupancy leave. Not Hyperband successive-halving.
Packing identity (DECAF)
Per-center SOAP class histograms. Two structures share a book cell iff (|h-h’|_1 le)
crate::catalog::PACKING_MERGE(= 0.20). A cell is not a packing: a live LJ75 book holds tens of icosahedral cells.A packing is a single-linkage community of cells at
crate::catalog::PACKING_LINK(= 0.35), and a structure belongs to the community it chains to. No radius around one reference can do this job. Measured on 69 quenched LJ75 icosahedral isomers within (8varepsilon) of the ico floor (examples/decaf_packing_separator): the shelf reaches L1 (0.56) from its own reference while ico-Marks is (0.4267), so the shelf spread straddles the gap. Under single linkage the shelf chains into one community and Marks stands alone, and the same radius keeps 153 of 154 LJ38 shelf isomers with ico and Oh on its own.Inverted Gelman–Rubin
On the family-label series of assigned walks, (hat R <)
crate::catalog::MIXED_RHAT(= 1.01) (Vehtari et al. 2021) with (n_{mathrm{assigned}} ge 2) is collapse: extras Leave. Distinct packing labels are unmixed and do not force Leave.Ranking
Champion of a family: lowest energy. Keep (lfloor n_{mathrm{extra}} / eta rfloor) extras, (eta =)
crate::catalog::REDUCTION_FACTOR(= 3). Surplus Leave. Rank as soon as DECAF assigns a family. This is a keep fraction, not a Li–Jamieson resource schedule.Superbasin
Chatterjee–Voter AS-KMC: an intra-well hop with bias height (v_i ge N_f w_0) is frequent. Refuse the accept with probability (1/2) ((alpha = 2)). That is the well exit. A Feynman–Kac epoch later resamples with the same ranking; it is not the exit.
Leave start
Another packing community already on file and packing not saturated: take a catalog representative of the least-occupied community. Cells of one packing are a superbasin; they are not OtherFamily, and a draw that only clears the cell grain hands the extra an isomer of the packing it is leaving. Champion leftover walks those isomers.
Extra ArchiveHole is a rung of the Leave ladder (
crate::known_basin::leave_packing_rung): a covering direction of the DECAF feature, pointed away from the packings on file, pulled back through (J_mu). Its size is one rung, not a grain. Wales and Doye put the LJ75 ico-Marks barriers at 8.69 and 7.48 (varepsilon), so a quench from a Cartesian 0.35 cap is a projector onto the packing it started in, whatever direction it took. A rung whose quench lands back in the same packing is not refused into another hole of the same size: the hop loop walks the rest of the ladder (crate::known_basin::leave_packing_ladder) with the invert armed and reports a refusal only when the ladder is spent. Occupancy extras do not draw a random cluster.Modes
Serial recommended: independent seeds, each tries to find the published GM. Hit rate (58/72 Oh) is that mode. Occupancy: the ensemble divides the PES. Each DECAF family has one champion (lowest energy) that walks isomers. Extras of that family Leave. Success is find-and-certify the putative GM, not every replica landing on it.
Stop
A mixing certificate names a putative: uniquely deepest, occupant mixed. A mixed competitor is required only when a competitor is on file. A lone mixed floor is Gelman–Rubin on the sampled mode. MixingCertified on two packing families still needs leftover dwell. A mixed ico floor plus a mixed shallower competitor is not MixingCertified on that pair alone. Unseen funnels are leftover-dwell and EI, not a second R-hat. Packing Good–Turing names completeness of the seen codebook (
packing_saturated). Leftover-SOAP arrivals stay the hole generator; leftover Good–Turing is not the stop. Hop re-observes of the same well are not draws. A saturated packing census of shallow families is not retire: extras keep Leaving so an unseen funnel can still appear. Replicas retire when a mixing putative is certified and that packing census is saturated and leftover SOAP has dwelt under the unseen-mass ceiling (or the packing book holds one family) and FunnelModel EI on the seen packings is exhausted and the rematched family floor is met. After the book exists, single linkage atcrate::catalog::PACKING_LINKfolds cells of one packing into one community. Leave continues only while that compacted book still has holes: a community with no well arrivals, or Chao1 incomplete on the merged well counts. A one-community book is answered by the cells it folds, since Good–Turing on a single type has (n_1=0) whatever the sample is and certifies nothing. Leftover FES modes of one packing are not a packing hole. The floor is the Fiedler split of the hop graph after DECAF labels the sides, the packing community count of the book, or the book-map FES basin count. A Franzblau primitive-ring floor is reported beside it and does not retire.CATALOG_MIN_FAMILIESis an override. Occupant (hat R) usescrate::catalog::CERTIFY_MIN_SAMPLEStraces; two-point quenches on two random-start families are not a certificate. A published energy (Cambridge or otherwise) is a score, not a stop. Leftover-SOAP saturation on one family is collapse, not completeness.Variables
- const CHAMPION_RANK: u32¶
Champion of the occupied packing has no TIS interface.
- const COMPACT_RMAX_OVER_CBRT: f64¶
Hop
containsphere in units of (sigma N^{1/3}). Published compact minima are (0.46)–(0.63); a straight chain is (sim 2.5).
- const DEFAULT_MIN_OCCUPIED_FAMILIES: usize¶
Default floor on rematched occupied families.
1is Good–Turing alone: stop when no new packings appear.
- const ESTY_Z95: f64¶
Esty (1983), Ann. Statist. 11:905-912, one-sided 95% normal quantile (Phi^{-1}(0.95)).
- const INTERFACE_HORIZON: f64¶
Fixed leftover-SOAP horizon for the TIS ladder. Unit leftover descriptors sit in a ball of diameter 2. Live
max(lambda)is not a horizon: it collapses every interface onto the well.
- const LEAVE_CROSSING_HOPS: usize¶
Measured LJ75 Marks crossings sit at hops 4160, 6226, and 4411 of about 11000. A 4000-hop floor expires before every named hit.
- const LEAVE_REFUSAL_DWELL: usize¶
Consecutive refused Leaves after which an extra goes back to hopping.
A Leave that returns the replica to the packing it started in has installed nothing, and the checkpoint it spent is a checkpoint plain hopping did not get. On LJ75 that is every Leave: the book shows one community for the whole run, so extras keep drawing holes, and no walk out of the sealed icosahedral minimum leaves it at all – twenty-four raw quenches dropped along a transformed trajectory reaching four times the DECAF distance to Marks every one returned to the floor.
Three rather than one, because a Leave may legitimately need a second arm at a wider rung, and because the packing test is a threshold on a histogram distance and one reading either side of it is not evidence.
- const LEFTOVER_SAT_DWELL: usize¶
Consecutive leftover-sat samples required before leftover dwell. Live leftover_dwell is
leftover_dwell_from_census: a one-shot leftover-SOAP nick does not flip the dwell bit.
- const OCCUPANCY_EI_MIN_OBS: usize¶
Bank and CSA turn FunnelModel EI on at three observed morphologies.
- const OCCUPANCY_SEAM_CONDUCTANCE: f64¶
Bridge referee seam, kept as a named report threshold. It is not a family-floor witness: without (lambda_2) a positive conductance is one community (
Hop.no_spectrum_is_one_community).
- const PITMAN_YOR_DISCOUNT: f64¶
Default Pitman–Yor discount. (d=0) is the Dirichlet process.
- const PITMAN_YOR_THETA: f64¶
Default Pitman–Yor concentration. Not a retire knob.
Functions
- fn assign_interfaces(extras: &[(u32, f64)], horizon: f64) -> Vec<InterfaceSeat>¶
Assign extras increasing leftover-SOAP interfaces. Champion is omitted. Seats are ordered by leftover-SOAP (lambda), not replica id.
- fn hops_per_core_hour(hops: u64, wall_secs: f64, cores: u32) -> Option<f64>¶
Hop throughput on one worker. Serial LJ75 was about 75000; occupancy talking about 200.
- fn in_interface_ensemble(max_lambda: f64, threshold: f64) -> bool¶
Whether this sample belongs in interface ensemble (i).
- fn interface_ladder(n_extras: usize, horizon: f64) -> Vec<f64>¶
TIS ladder: (n) interfaces equally spaced out to
horizon.
- fn is_occupancy_leave_action(action: &str) -> bool¶
Actions that must land off the occupied leftover-SOAP well.
- fn leave_crossing_slices(checkpoint_interval: usize) -> usize¶
Quiet checkpoint slices a replica must walk before the first Leave.
- fn leave_defers(quiet: usize, patience: usize, crossing_slices: usize) -> bool¶
Defer Leave while the replica is inside its recovered quiet stretch or the measured crossing floor, whichever is longer.
- fn leave_shot_accepted(family_changed: bool, trial_lambda: f64, threshold: f64) -> bool¶
Leave accepts a DECAF family change or an interface crossing.
- fn leftover_birth_probability(n: u64, k: u64) -> f64¶
pitman_yor_p_newat the default ((theta, d)).
- fn leftover_dwell_from_census(saturated: bool, esty_stable: bool, sat_streak: u32) -> bool¶
Live leftover dwell from a leftover-SOAP census nick plus the consecutive saturated-sample streak.
Leftover SOAP saturates after a handful of leftover-well arrivals. A one-shot hatch-stable nick would re-open Leave before the measured Marks crossings. The streak is independent leftover samples, not repeated diagnostic reports.
- fn leftover_esty_stable(n: u64, n1: u64, n2: u64, ceiling: f64) -> bool¶
Leftover dwell: hatch-stable and the Esty upper bound sits under the ceiling. (n_1=0) has variance 0, so the bound is 0.
- fn leftover_esty_upper(n: u64, n1: u64, n2: u64) -> Option<f64>¶
One-sided Esty upper bound (hat p_0 + z_{0.95}sqrt{mathrm{Var}}).
- fn leftover_esty_var(n: u64, n1: u64, n2: u64) -> Option<f64>¶
Esty variance of the Good–Turing unseen-mass estimator: (n_1/n^2 + 2n_2/n^2 - n_1^2/n^3).
- fn leftover_hatch_stable(n: u64, n1: u64, ceiling: f64) -> bool¶
Hatch-stable leftover dwell from the Good–Turing increment.
Good, I. J. (1953), Biometrika 40:237-264. A new singleton sends (nmapsto n+1), (n_1mapsto n_1+1) and (hat p_0’=(n_1+1)/(n+1)). Under (n_1le n) the hatch is the larger estimator, so dwell is exactly (hat p_0’ <) ceiling (
Hop.hatch_stable_iff_next). No consecutive-record count.
- fn leftover_lambda(current: &[f64], centroid: &[f64]) -> f64¶
Leftover-SOAP order parameter: distance from the occupied-well centroid.
- fn leftover_sat_dwell(consecutive: &[bool]) -> bool¶
Leftover dwell from consecutive leftover-sat bits, newest last.
The last
LEFTOVER_SAT_DWELLsamples must all be saturated. A one-shot nick, or a nick then a hatch, is not a dwell.
- fn lens_ring_displacement(coordinates: &[f64], dr: &mut [f64])¶
Scale a Cartesian increment so leave-ring atoms move more.
Champion leftover SOAP does not call this. Occupancy archive holes and packing kicks do. A uniform ring support is a global scale; the hop’s RMS cap removes it.
- fn occupancy_book_holes(communities: usize, community_wells: &[u64], fes_minima: usize, cells: super::packing::GoodTuringSample) -> bool¶
Whether the sparsified book still has holes extras should Leave into.
A packing community with no well arrivals is a hole. FES basins reopen a hole only while a second community exists: leftover wells of one packing stay one Chao1 sample even when the leftover cloud has more than one density mode.
One community is the case that lied. A single merged bin has (n_1=0) by construction, so Chao1 called it complete while the raw DECAF cells underneath still carried half their mass in singletons. Good–Turing on one type carries no information about unseen types, so a one-community book falls back to the completeness of the finer codebook it was folded from: while new cells keep arriving, packings may still be arriving too.
- fn occupancy_compact(coordinates: &[f64]) -> Option<OccupancyCompact>¶
Compactness census at the Franzblau first-neighbour cutoff.
- fn occupancy_complete(mixing_certified: bool, catalog_saturated: bool, n_occupied_families: usize) -> Option<OccupancyCertificate>¶
Generic occupancy completeness.
n_occupied_familiesis the DECAF packing count, not leftover-SOAP basin count. Leftover dwell is unknown here, so two-family MixingCertified is not emitted.
- fn occupancy_complete_at(mixing_certified: bool, catalog_saturated: bool, leftover_dwell: bool, n_occupied_families: usize, min_occupied_families: usize) -> Option<OccupancyCertificate>¶
Completeness at an explicit family floor. MixingCertified needs leftover dwell unless the book has one packing family (
Hop.leftoverOk). A mixed ico floor plus a mixed shallower competitor is not MixingCertified on that pair alone.
- fn occupancy_ei_exhausted(max_ei: f64, n_obs: usize, noise: f64) -> bool¶
Jones, Schonlau & Welch (1998), J. Global Optim. 13:455-492: (mathrm{EI}tomax(f_{min}-mu,0)) as (sigmato 0), so (sigma=0) and (muge f_{min}) give (mathrm{EI}=0) at observed sites. Unseen families are leftover-dwell, not a far-field GP probe. Exhausted when the FunnelModel has the bank observation floor and the largest EI at observed packings is at most the model’s noise.
- fn occupancy_family_floor(conductance: Option<f64>, algebraic_connectivity: Option<f64>, n_left: usize, n_right: usize, distinct_packing_sides: bool) -> usize¶
Family floor from the landscape Fiedler split after DECAF labels the sides.
The hop-graph Fiedler vector names two leftover-SOAP communities. Two when both live sides are nonempty, DECAF labels them as distinct packings, and the cut is a bottleneck: conductance is zero (disconnected) or strictly below algebraic connectivity. On the normalised Laplacian (lambda_2in[0,2]), (c<lambda_2) implies the Cheeger bound (c^2<2lambda_2) (
Hop.code_cut_is_cheeger). A missing (lambda_2) is not a substitute cut. A superbasin, a one-sided split, or a well-mixed graph is one community.CATALOG_MIN_FAMILIESremains an override.
- fn occupancy_fes(xy: &[[f64; 2]], weights: Option<&[f64]>) -> Result<OccupancyFes, OccupancyFesError>¶
Map free energy from landfold points, optional per-point weights.
Density is a Gaussian KDE. (F_i/kT = -ln(rho_i/rho_{max})). Minima of (F) are continuous maxima of (rho), located by mean shift from every observed point and merged at a scale-relative tolerance. Bandwidth is (max(mathrm{medianNN}, mathrm{diameter}/3)), broad enough that a connected interpolant chain remains a single basin.
Returns an error for non-finite coordinates, malformed weights, or a non-empty sample with no positive density mass.
- fn occupancy_fes_delta(counts: &[u64]) -> Option<f64>¶
Discrete packing (Delta F/kT = ln(n_{max}/n_2)) from leftover-well counts. None when fewer than two occupied families have wells.
- fn occupancy_fes_from_histograms(histograms: &[Vec<f64>]) -> Result<OccupancyFes, OccupancyFesError>¶
Landfold map of DECAF histograms, then
occupancy_fes.
- fn occupancy_is_cluster(coordinates: &[f64]) -> bool¶
Whether the coordinates are one compact cluster, not a chain or fragments.
- fn occupancy_landfold_floor(histograms: &[Vec<f64>], family: &[usize]) -> usize¶
Torgerson 2-D map of DECAF histograms under L1, then
occupancy_map_floor.
- fn occupancy_landfold_split(histograms: &[Vec<f64>], family: &[usize]) -> (usize, usize, usize)¶
Landfold floor and 2-means side counts of DECAF histograms.
- fn occupancy_leave_adopt(action: &str, walked_off: bool) -> Option<OccupancyLeaveAdopt>¶
Occupancy Leave that walked away from the known packing mean (mu_k) is taken. A catalog_leave that sits at (mu_k) is refused. DECAF isomer grain is not this bit: ico isomers already split at
super::packing::PACKING_MERGEand a raw polish of those walks back onto the occupied packing. Reseeds take the new start even when the invert span did not rise.
- fn occupancy_leave_by_birth(other_family_in_catalog: bool, packing_saturated: bool, packing_communities: usize, ei_exhausted: bool, p_new: f64, draw: f64, leftover_dwell: bool) -> OccupancyLeaveTarget¶
occupancy_leave_by_eiwith a leftover birth draw.Birth reopens ArchiveHole only after leftover SOAP has hatched. While leftover is unsaturated the extra Walks: a Pitman–Yor draw must not interrupt the long chain that finds Marks.
- fn occupancy_leave_by_ei(other_family_in_catalog: bool, packing_saturated: bool, packing_communities: usize, ei_exhausted: bool, leftover_dwell: bool) -> OccupancyLeaveTarget¶
occupancy_leave_targetwith the FunnelModel EI bit.A one-community book is Walk only once EI on the seen packings is exhausted: the hole then has no remaining improvement to chase. While leftover SOAP is still hatching, extras Walk: Marks is a long uninterrupted walk, not an ArchiveHole or OtherFamily draw. Two communities with exhausted EI Walk: amorphous packings above the floor are not worth occupying.
- fn occupancy_leave_new_class(origin: &[f64], trial: &[f64]) -> bool¶
Leave has found a new class: a different DECAF family, or a different Franzblau ring histogram on the same SOAP merge radius.
The cell grain. Isomers of one packing clear it, so it names a book cell and is not the Leave accept.
occupancy_leave_new_packingis.
- fn occupancy_leave_new_packing(origin: &[f64], trial: &[f64]) -> bool¶
Leave has installed a packing: the quenched trial chains to no packing on file, the origin included.
Single linkage at
crate::catalog::PACKING_LINKover a throwaway book of the origin, the published references and the trial. Measured on 69 quenched LJ75 icosahedral isomers,occupancy_leave_new_classadopts 6 of them on a ring-count change alone and adopts every one whose cell L1 clears the merge grain, which is how a run counts 47 distinct energies and no Marks. Ring counts stay out of the accept: the shelf reaches ring-share L1 0.0789 from its own reference while ico-Marks is 0.0824, and a 0.0035 margin does not decide a packing.
- fn occupancy_leave_target(other_family_in_catalog: bool, packing_saturated: bool, packing_communities: usize) -> OccupancyLeaveTarget¶
Leave destination. OtherFamily is a draw from another packing community on the sparsified book (communities >= 2). Leftover wells of one packing (communities < 2) stay ArchiveHole even when DECAF split them. After packing saturation OtherFamily only rematches communities on file. Packing saturation does not disable that draw: ArchiveHole is only for a one-community book.
- fn occupancy_map_floor(xy: &[[f64; 2]], family: &[usize]) -> usize¶
Secondary family floor from a 2-D folding of packing histograms.
Torgerson MDS of DECAF L1, then a 2-means split. Two when the sides rematch to distinct packings and the centroids do not overlap. Live rematch is the wrong input: fold the packing book so a family extras have Left still sits on the map. A 2-means split is a bipartition, not a leftover-cloud count; FES maxima stay the landfold figure path.
occupancy_sparsify_bookmerges leftover wells on the same side and names holes. The hop-graph Fiedler split stays the live floor; this count is the book floor.
- fn occupancy_map_fold(histograms: &[Vec<f64>], fold: OccupancyFold) -> Option<(Vec<[f64; 2]>, [f64; 2])>¶
Torgerson map and the two leading eigenvalues of the Gram matrix.
- fn occupancy_map_from_histograms(histograms: &[Vec<f64>]) -> Option<Vec<[f64; 2]>>¶
Torgerson (1952) classical MDS of DECAF L1 after a Ceriotti switch.
Raw L1 stretches a leftover-family chain so 2-means splits the ends. The switch (F(d)=1-1/(1+(d/sigma)^2)) with (sigma) the median pairwise L1 keeps intra-funnel distances short.
- fn occupancy_map_split(xy: &[[f64; 2]], family: &[usize]) -> (usize, usize, usize)¶
Map floor and the 2-means side counts.
- fn occupancy_min_families() -> usize¶
Occupied-family floor. Spectral split unless
CATALOG_MIN_FAMILIESis set.
- fn occupancy_retire(certificate: OccupancyCertificate, catalog_saturated: bool, leftover_dwell: bool, ei_exhausted: bool, n_occupied_families: usize) -> bool¶
Replica retire. Mixing certified, packing Good–Turing, leftover dwell (or one packing family on the book), FunnelModel EI exhausted on seen packings, and the rematched family floor. CatalogSaturated names census completeness and does not retire: extras keep Leaving.
catalog_saturatedis packing-family saturation, not leftover-SOAP.leftover_dwellis consecutive saturated independent leftover samples, not repeated diagnostic reports or a one-shot leftover nick. Required whenever the packing book holds more than one family (Hop.leftover_unsaturated_does_not_retire). A single book family is Boender–Rinnooy Kan on one cell (Hop.one_book_family_waives_leftover): leftover-SOAP hatches are intra-well and do not block. Live rematch of last candidates after extras Leave is not that count. A one-community Fiedler floor with many DECAF packings is not that case.ei_exhaustedis Jones remaining improvement on observed FunnelModel morphologies, not a far-field GP probe.n_occupied_familiesis the packing-book occupied-family count (visits > 0), not live rematch of last candidates and not a leftover-SOAP basin count. One book family is Boender–Rinnooy Kan on one cell. Many book families with extras already Left is not.
- fn occupancy_retire_at(certificate: OccupancyCertificate, catalog_saturated: bool, leftover_dwell: bool, ei_exhausted: bool, n_occupied_families: usize, min_occupied_families: usize) -> bool¶
Retire at an explicit family floor. Good–Turing alone is floor 1. Leftover dwell is required unless the book has one packing family (
Hop.leftoverOk: leftover_dwell || n_occupied_families < 2).
- fn occupancy_ring_census(coordinates: &[f64]) -> Option<crate::structure::RingCensus>¶
Franzblau census of one structure, or
Nonebelow three atoms.
- fn occupancy_ring_class_changed(origin: &[f64], trial: &[f64]) -> bool¶
Franzblau (1991), Phys. Rev. B 44:4925: a new ring class is a packing signal SOAP (L^1) merge can miss. Icosahedra are 5-ring rich; octahedra and Marks are not.
- fn occupancy_ring_floor(profiles: &[(usize, usize, usize)]) -> usize¶
Secondary family floor from Franzblau primitive-ring profiles.
One (triangles, squares, pentagons) per occupied DECAF family. Two when two occupied families differ in those counts; one when every occupied family shares a profile, so leftover ico wells of one packing stay one community. This is not the hop-graph Fiedler split and it does not retire.
- fn occupancy_ring_profile(coordinates: &[f64]) -> Option<(usize, usize, usize)>¶
Franzblau (tri, sq, pent) at
crate::structure::RING_CUTOFF_SCALEtimes the structure’s median nearest-neighbour distance.
- fn occupancy_ring_split(profiles: &[(usize, usize, usize)]) -> (usize, usize, usize)¶
Ring floor, distinct-profile count, and profile count.
- fn occupancy_sparsify_book(histograms: &[Vec<f64>], family: &[usize], wells: &[u64]) -> OccupancyBookMap¶
Compact the book into packing communities.
Single linkage at
super::packing::PACKING_LINKover the DECAF cells, so isomers of one packing chain together and a packing that chains to nothing on file stands alone. The landfold Torgerson plane stays the figure and the reported floor; it is no longer what counts packings, since a forced 2-means bipartition of an isomer cloud has only ever one answer. Leave continues whileOccupancyBookMap::holes.
- fn occupancy_sparsify_packing(book: &super::packing::PackingBook) -> OccupancyBookMap¶
Landfold-sparsify the occupied packing book.
- fn packing_role(same_family: bool, energy: f64, best_of_family: Option<f64>) -> PackingRole¶
Per-family energy class, not the catalog-wide incumbent. Equal energy to the family best is Champion here; the coordinator keeps one replica via family_champion_replicas so extras Leave.
- fn pitman_yor_p_new(n: u64, k: u64, theta: f64, discount: f64) -> f64¶
Lijoi–Mena–Prunster / Pitman–Yor discovery probability ((theta + d K)/(n + theta)).
Leave birth on leftover arrivals. Packing Good–Turing stays the census. Not an estimator of (F).
- fn promote_one_sided(seats: &mut [InterfaceSeat]) -> bool¶
Promote an extra that already cleared the next threshold, without waiting for the neighbor to cross this one.
- fn published_energy_score(best: f64, published: Option<f64>) -> bool¶
Published energy match. A score for known hurdles, never a stop.
- fn retis_exchange_adjacent(seats: &mut [InterfaceSeat]) -> bool¶
Swap adjacent interface seats when both extras have crossed and the higher (lambda) sits on the lower interface. The ordering guard is what makes the move settle: two samples that each satisfy the other’s interface would otherwise trade seats on every request.
- fn retis_should_swap(lambda_a: f64, thresh_a: f64, lambda_b: f64, thresh_b: f64) -> bool¶
RETIS swap: each sample already satisfies the other’s interface.
- fn ring_leave_weight(origin: (usize, usize, usize), atom: [u32; 3]) -> f64¶
Atom weight when leaving
origin.Five-rings, when the occupied packing has them, are the Franzblau fivefold signature: extras move those atoms. Otherwise extras move three-rings. Uniform incidence is a global scale and does not steer.
- fn ring_novelty(origin: (usize, usize, usize), trial: (usize, usize, usize)) -> usize¶
L1 of two Franzblau profiles. Leave prefers a larger value.
- fn seat_extras(previous: &[InterfaceSeat], extras: &[(u32, f64)], horizon: f64) -> Vec<InterfaceSeat>¶
Seat extras on the TIS ladder, keeping the rank each replica already holds in
previous. An interface is an ensemble a replica owns until an exchange move hands it on: ranking every request by live (lambda) leavesretis_exchange_adjacentandpromote_one_sidedwith an ordering they can never repair, and discards their result on the next request. Unseated extras take the free ranks in (lambda) order, so an emptypreviousis the fresh ladder.
Enums
- enum OccupancyCertificate¶
Why occupancy may retire a replica.
- MixingCertified¶
Occupant chains mixed onto a uniquely deepest attractor. A competitor, when one exists, must be mixed and less occupied.
- CatalogSaturated¶
Packing Good–Turing unseen mass is small, and the rematched family count meets the measured Fiedler-and-DECAF floor.
Implementations
- impl OccupancyCertificate¶
Functions
- fn as_str(self) -> &'static str¶
Stable token for worker logs (
mixingorsaturated).
- enum OccupancyFesError¶
Invalid input to the continuous occupancy free-energy estimator.
- WeightCountMismatch¶
A weight vector must have one entry per landfold point.
- points: usize¶
Number of landfold points.
- weights: usize¶
Number of supplied weights.
- NoPositiveWeight¶
A non-empty sample needs positive density mass.
The histograms do not define a finite Torgerson map.
- enum OccupancyFold¶
How DECAF L1 becomes the Torgerson metric.
OccupancyFold::Switchis the production floor. Far L1 pairs share one value (Leansat_far_cannot_tell), so a packing fork collapses to a line.OccupancyFold::Asinhkeeps far L1 ordered.- Switch¶
(F(d)=1-1/(1+(d/sigma)^2)). Intra-funnel short; far pairs saturate.
- Asinh¶
(F(d)=mathrm{asinh}(d/sigma)/(2,mathrm{asinh},1)). Unbounded.
- Identity¶
Raw L1. No transfer.
- enum OccupancyLeaveAdopt¶
How an occupancy Leave updates the live chain.
- Quench¶
Take the quenched trial as the live minimum.
- HoleStep¶
The quench sat in the occupied packing. Keep the unquenched hole step.
- Refuse¶
Same-packing hole with the ladder spent. Do not adopt; the extra stays put and the hop loop draws another Leave.
- enum OccupancyLeaveTarget¶
Where an occupancy extra goes when it Leaves.
OtherFamily is a draw from another packing community on the sparsified book. That is how Leave divides the surface once there is something to divide, and the draw has to clear the packing grain: a candidate that only clears the cell grain is an isomer of the packing the extra is leaving. ArchiveHole is a rung of the packing ladder in the DECAF (nu=3) feature (the same
local_nu3_zrows as packing identity), not SOAP leftover (p_i-mu) and not a named morphology.Walk is what a one-packing book asks for. An extra Leaves so the ensemble stops spending two replicas on one funnel, and that trade is only worth making when the Leave has somewhere to go. Measured on the sealed LJ75 icosahedral minimum: a packing-ladder rung, sized by bisection to spend exactly its barrier, quenches back to the floor it started on at every rung from 1.32 to 42.3 (varepsilon), which is five times the ico-Marks barrier in one displacement. So with one community on the book an ArchiveHole is a move with no measured yield, and the replica taking it is not exploring, it is idling. Meanwhile the walk does cross: 3 of 64 independent LJ75 walks at 400k evaluations reached the Marks minimum, each at hop 4160, 6226 and 4411 of about 11000. Coordination earns its keep by keeping walks off each other’s basins through the shared bias and the catalog, not by standing 47 of 48 replicas still against a single funnel.
- OtherFamily¶
Coordinator has a representative of a different packing community.
- ArchiveHole¶
First rung of the packing ladder in the DECAF (nu=3) feature.
- Walk¶
Nothing to divide yet: keep walking, and let the shared bias hold this replica off the basins the others are on.
- enum PackingRole¶
Role of one walk against DECAF packing families.
- FamilyChampion¶
Lowest energy occupant of this family. Isomer walk.
- FamilyExtra¶
Same family, not the champion. Leave or keep-fraction extra.
- NovelFamily¶
No catalog or live walk shares this packing.
Structs and Unions
- struct InterfaceSeat¶
One leftover-SOAP interface seat owned by the catalog RPC.
- replica: u32¶
Replica that holds this seat.
- rank: u32¶
Interface rank.
CHAMPION_RANKis the A-ensemble isomer walk.
- threshold: f64¶
Threshold (lambda_i) this extra must reach.
- lambda: f64¶
Highest leftover-SOAP (lambda) this replica has posted.
Implementations
- impl InterfaceSeat¶
Functions
- fn champion(replica: u32) -> Self¶
Occupied-packing champion: no interface, isomer walk only.
- fn extra(replica: u32, rank: u32, threshold: f64) -> Self¶
Extra on interface
rankwith threshold (lambda_i).
- struct LeaveFrame¶
One frame on the occupancy Leave path.
- coordinates: Vec<f64>¶
Cartesian coordinates at this frame.
- leftover: Vec<f64>¶
Leftover-SOAP descriptor at this frame.
- lambda: f64¶
Leftover-SOAP (lambda) from the occupied centroid.
- struct LeavePath¶
Path the extra shoots from. OPS keeps the furthest frame; a failed quench does not throw away the climb toward the interface.
Implementations
- impl LeavePath¶
Functions
- fn clear(&mut self)¶
Drop the climbing window. Once the Leave is issued the frames that led to it describe a funnel the chain has left, and a later shoot taken from them re-enters it.
- fn max_lambda(&self) -> f64¶
Highest leftover-SOAP (lambda) on the path.
- fn push(&mut self, coordinates: Vec<f64>, leftover: Vec<f64>, lambda: f64)¶
Append one checkpoint. The path is a short climbing window.
- fn shoot_coordinates(&self) -> Option<&[f64]>¶
Coordinates to shoot from.
- fn shoot_index(&self) -> Option<usize>¶
Interior frame with the highest (lambda), else the last frame.
- fn shoot_leftover(&self) -> Option<&[f64]>¶
Leftover-SOAP descriptor at the shoot frame.
- struct OccupancyBookMap¶
Landfold-sparsified occupancy book.
Leftover DECAF wells that land on the same side of a floor-1 split are one packing. Floor-2 keeps two communities.
Self::holesis whether Leave should continue: a second community on the map with no well arrivals, more FES basins than occupied well-sides, or Chao1 incomplete on the merged well counts.- points: Vec<OccupancyLandfoldPoint>¶
Occupied book cells in family-index order.
- floor: usize¶
Landfold floor (1 or 2).
- left: usize¶
2-means left count.
- right: usize¶
2-means right count.
- communities: usize¶
Sparsified community count.
- community_wells: Vec<u64>¶
Merged leftover-well counts, one entry per community.
- occupied_communities: usize¶
Communities that have had a well arrival.
Self::communitiescounts cells that have not chained, and with a handful of cells that is almost always more than one: two icosahedral cells count as two packings until an intermediate cell arrives to join them. Single linkage separates a cloud, not a pair, which is whatHop.component_avoidssays. A packing an extra can be sent to is one a walk has actually arrived in.
- cells: super::packing::GoodTuringSample¶
Good–Turing sample of the raw DECAF cells the communities fold. A one-community book is certified against this, not against its own single merged bin.
- fes_minima: usize¶
Book-map FES basin count (
occupancy_feson the Torgerson plane).
- fes_delta: Option<f64>¶
(Delta F/kT) between the two deepest book-map FES basins.
- holes: bool¶
Continue Leave while this is set.
Implementations
- impl OccupancyBookMap¶
Functions
- fn entropy(&self) -> f64¶
Shannon entropy (H=-sum p_kln p_k) of the arrivals across packing communities, in nats.
Hole counting says how many communities have never been reached. It says nothing about how the arrivals are spread over the ones that have, and that spread is what a double funnel is: a run can hold every community on the book and still put all but a handful of its arrivals in one of them.
Hmeasures that directly, andSelf::entropy_ceilingis what it would be if the arrivals were even.
- fn entropy_ceiling(&self) -> f64¶
(ln F) over occupied communities: the entropy an even spread would have, and the ceiling
Self::entropyis measured against.
- fn most_surprising(&self) -> Option<usize>¶
The community an extra should Leave for: the most surprising one.
Ties go to the earlier community, which is the one discovered first, so a run does not oscillate between two equally rare packings while neither gets sampled.
- fn sample(&self) -> super::packing::GoodTuringSample¶
Good–Turing sample of the sparsified well counts.
- fn saturated(&self) -> bool¶
Chao1 completeness of the sparsified communities.
- fn surprisal(&self) -> Vec<f64>¶
Surprisal (-ln p_k) of each community, in nats, in
Self::community_wellsorder.This is what ranks a Leave target. A community holding three wells and one holding three thousand are equally present on the book and are not equally worth leaving for; the surprisal separates them, and a community with no arrivals is infinitely surprising, which is the hole the count already finds.
- struct OccupancyCompact¶
Contact-graph compactness of one quenched structure.
A cluster is one connected first-neighbour component with a cycle (Franzblau ring, or at least
Ncontacts). A path or a forest is not a cluster: (ele N-c) and no primitive ring. A straight chain saturates (R_g^2=a^2(N^2-1)/12). GMIN’s spherical container is the same refusal of evaporated or unravelled atoms.- n: usize¶
Atom count.
- components: usize¶
First-neighbour connected components.
- edges: usize¶
Undirected contact edges.
- rings: usize¶
Franzblau 3-, 4- and 5-rings summed.
- rg2: f64¶
Squared radius of gyration.
- path_rg2: f64¶
Straight-path (R_g^2) at the structure’s median NN.
- rmax_over_cbrt: f64¶
Largest atom–COM distance over (N^{1/3}). Published LJ minima sit in (0.46)–(0.63); the hop container is (0.9).
Implementations
- impl OccupancyCompact¶
Functions
- fn is_cluster(&self) -> bool¶
Connected contact graph with a cycle, inside the hop container. Not a chain, not fragments, not an unravelled ring.
- fn is_pathlike(&self) -> bool¶
One component, a forest, no primitive ring: a path or a tree.
- struct OccupancyFes¶
Occupancy free energy. (F/kT = -ln(rho/rho_{max})).
Discrete packing FES uses leftover-well counts per DECAF family. The landfold-map FES uses a Gaussian KDE on the Torgerson plane. Equal occupancy is (Delta F = 0), not a DECAF L1 split. This does not retire.
- minima: usize¶
Local minima of (F/kT).
- delta: Option<f64>¶
(Delta F/kT) between the two deepest minima.