Changelog¶
The C++ engine is this repository. Python is pydseams
(PydSEAMSlib). Lua is
require("dseams") (yodaStruct).
The release history is CHANGELOG.md (Keep a Changelog, assembled by towncrier). This page is the narrative cut used in the book.
2.9.2¶
Every host stage of the ring pipeline threads. The cutoff neighbour
list and the index-ordered list come from a threaded cell list that
bins molecules in fractional coordinates of the recovered triclinic
cell and builds each row on one thread, equal row for row to the
minimum-image reference; the ID-to-index conversion threads too.
bench_strong times every stage and their sum as the best of five
pinned runs. On a 16-core workstation the 65536-molecule pipeline
falls from 906 to 99 ms.
2.9.1¶
The OpenMP target offload of the Steinhardt kernel compiles with
nvc++ 23.7 against CUDA 12.2 on an A100 and matches the serial and
threaded host results bit for bit; SEAMS_OFFLOAD=0 keeps the host
path.
2.9.0¶
cage::findBySignature enumerates closed polyhedra by their
ring-size census (seams cages --signature), key libraries stack
across hop counts with the depth that named each atom
(topo::matchLibraries), guests are placed in enumerated cages by
periodic centroids (site::guestOccupancy, --guest-types), ion
environments list their shell and site::shellRingCensus counts the
rings through it, and --per-atom FILE writes a LAMMPS dump with the
engine’s per-atom decision for OVITO or VMD.
2.8.0¶
Topology keys (topo::localKey, topo::fingerprint, nauty
certificate or Weisfeiler-Leman hash), key libraries
(seams fingerprint --emit-library, --library), ions read against
the cage assignment (seams ions), vertex colours by species, the
embedded CON reader, and a refusal of CON and chemfiles input when
their reader is absent. The CLI preserves frame order for parallel
LAMMPS ranges, dispatches ranges for XYZ, chemfiles, and readcon
inputs, and offers versioned JSONL output through --format json.
--strict-input makes empty-frame handling an explicit error. XYZ
input accepts coordinate-only rows and records its single frame as
frame 1. seams cages --graph seeded --complete turns on the ring
completion.
2.7.0¶
ring::seededCageAffiliation takes an optional completion flag.
ring::ringAdjacentCompletion fills the last vertex of any six-ring
whose other vertices carry a cage label, iterated to a fixed point,
separately for the hexagonal cage (HC) and double-diamond cage (DDC)
labels. The rule is stated and proven in lean/ (Mathlib): the
completion is the least fixed point above the seed, empty on an empty
seed, sound, and independent of visiting order; the edge-sharing
rule it replaces is shown unsound on a five-vertex instance.
tests/walk_compare walks a trajectory and prints per-frame
CHILL+ and cage labels with their largest clusters. The
reproducibility workflow moved to the dseams2_repro package.
2.6.0¶
Meson links FlexiBLAS when pkg-config or libflexiblas is present,
and falls back to the conda-forge libblas / liblapack ABI
packages. The reproducibility campaign no longer configures in-tree
Python; bindings come from pydseamslib on PyPI. The nucleation
notebook reads CageScore fields. Figshare Lua demos resolve
example_lua from yodaStruct.
2.5.0¶
--family (default waterIce) is an input. Ice scores refuse
non-water families and name the family. seams cn --ions is cage
degree on site::ionCloud; seams pairs is the mutual-nearest
contact-pair count, not ionicity. seams domains is the largest
polar or apolar Stoddard component. seams density-z is
type-resolved \(\rho(z)\) with slab volume from dump H. Running CN
and the first minimum of \(g_{IJ}\) come from rdf::runningCN /
firstMinimumBin. Dump writers emit xy, xz, yz when the cloud
carries tilt.
2.4.0¶
Partial 3D site-site \(g_{IJ}(r)\) and coordination numbers under
the dump MIC, via seams rdf and seams cn. Site chemistry is a
site::Table of LAMMPS types and optional atom-ID overrides;
site::ionCloud collapses each ion molID to one unwrapped COM
vertex. Hydrogen bonds accept an explicit donor-H index set
(populateHbondsFromDonors). seams hbonds --donors uses every
hydrogen as a donor candidate; water cutoffs stay on that command
and are not an ionic-liquid criterion. In-plane RDF normalization
uses the dump-cell volume \(|\det H|\) and the restricted-triclinic
in-plane area \(lx \times ly\), not the particle AABB or bound-span
product.
2.3.4¶
Steinhardt, hydrogen-bond, and cluster wraps use the dump minimum image, not an independent-axis wrap on bound spans.
2.3.3¶
Cutoff fallbacks and the skin Verlet refresh use the dump 3x3 minimum image, not a diagonal of bound spans.
2.3.2¶
Cutoff lists take the LAMMPS dump 3x3, not a diagonal of bound
spans. Device ice-score batches pass lammpsBoxToLinkcell when
the dump tilt is present. linkcell wrap pin is v0.3.1.
2.3.1¶
neighList, halfNeighList, and the in-plane RDF sampler use
the vesin cell list (same helper as neighListO). Brute force
remains the fallback. The GPU ice-score workspace is unchanged.
2.3.0¶
The TUM ice score (mutual four-nearest graph, primitive hexagons,
HC/DDC) runs as a device-resident frame batch when gpulite and
linkcell 0.3.0 are present. CHILL and \(q_{lm}\) stay on the
host. Runtime knobs are twelve-factor: SEAMS_CONFIG or
./seams.env, then the environment, then CLI flags.
seams --print-config dumps the table. Examples and the README
use seams / pydseams / require("dseams"); the 2020
yodaStruct -c / conf.yaml surface is gone.
The C++ API in the book is Doxygen via doxyrest (api/index).
2.2.5¶
subprojects/linkcell.wrap is v0.2.4. A static libyodaLib.a
no longer passes liblinkcell.so to ar. Wrap consumers link
the static archive. Dump doubles parse with strtod on Apple libc++.
2.2.4¶
Periodic k-nearest graphs via d-SEAMS/linkcell v0.2.2.
kNearestNeighbourList / kNearestNeighbourPair write packed
n*k nominations. Mutual and union come from one walk. The LAMMPS
dump box is bound spans plus xy, xz, yz; periodicDistSq recovers
H. Empty frames no longer abort the walker.
Docs orgmode covers the seams CLI, the Nix flake, and the
three-repo split.
2.2.3¶
The seams CLI uses Argum. Help, errors, ice-type counts, and
--features are colorized. NO_COLOR turns the colors off.
2.2.2¶
The compiled Python surface is pydseams.yoda. _core remains an
alias.
2.2.1¶
Flake package for
libyodaLibandseams(Meson, not the CMake-erayodaStructderivation).Live LAMMPS dump session (
nLammpsFrames,forEachLammpsFrame):seams --frame N --last M --jobs J.BondGraphat runtime:cutoff,knn,knn-union.seams cages --graphaddsseeded.LAMMPS readers bind
xu~/~yu~/~zuandxs~/~ys~/~zswhenx y zare absent.
2.2.0¶
seams CLI: read, chill, chill-plus, cages. This is the
engine command line.
2.1.2¶
Removed CMake-era Nix entrypoints that still named the product
yodaStruct. Build with pixi or nix build.
2.1.1¶
CHILL interfacial walk uses the same four-neighbour star as c_ij.
Atoms without four recorded bonds go to water. Seeded affiliation
floods HC and DDC separately.
2.1.0¶
The C++ engine is this repository. Front ends are not.
The
yodaStructLua/Fennel CLI moved to https://github.com/d-SEAMS/yodaStruct .-Dwith_lua=enabledis an error that names that repository.Python bindings remain in https://github.com/d-SEAMS/PydSEAMSlib (moved in 2.0.1).
C++
getCorrel/getIceTypefamily andreclassifyWaterreturnvoid.
2.0.1¶
Python bindings moved to PydSEAMSlib. This repository is the C++ engine.
2.0.0¶
Meson replaces CMake. License is MIT. Optional vesin neighbour lists, Highway SIMD, chemfiles, and readcon-core. Catch2 suite for the engine.
1.0.0¶
Initial release. See Goswami et al., J. Chem. Inf. Model. 2020, 60, 2169-2177.