seams CLI¶
The engine command is seams. The parser is Argum (the same parser as
eonclient). Help, errors, ice-type counts, and --features are
colorized through Argum’s environmentColorStatus.
seams --help
seams --version
seams --features
seams read FILE
seams chill FILE
seams chill-plus FILE
seams cages FILE
seams rdf FILE
seams cn FILE
seams hbonds FILE
seams pairs FILE
seams density-z FILE
seams domains FILE
A positional command and a positional file are required. Missing
either, an unknown command, or a parse error exits 2.
Every command accepts --format text|json. Text is the human-readable
format documented below. JSON emits one JSON object per output frame on
stdout, with the fields schema (dseams.cli/v1), command, frame,
status, and text. The text field contains the command’s text output
without changing its contents. --strict-input returns 2 when a requested
frame has no atoms; without it, empty input retains the legacy text output.
Commands¶
The command positional help string is read | chill | chill-plus | cages | fingerprint | ions | rdf | cn | hbonds | pairs | density-z | domains. chill_plus is an accepted alias of chill-plus (not
listed in that help string).
command |
action |
stdout |
|---|---|---|
|
print the loaded cloud |
|
|
CHILL four-neighbour labels |
|
|
CHILL+ four-neighbour labels |
same as |
|
ice score on six-membered rings |
|
|
closed polyhedra whose ring-size census matches |
|
|
topology keys of the bonded graph |
|
|
the frame’s distinct keys as library lines |
|
|
atoms named by key libraries |
|
|
ions classed by their first water shell against the seeded cages |
|
|
partial site-site \(g_{IJ}(r)\) |
|
|
site-site coordination number |
|
|
cage degree on |
|
|
geometric hydrogen-bond count |
|
|
mutual-nearest contact pairs |
|
|
type-resolved \(\rho\) along one axis |
|
|
polar/apolar Stoddard component |
|
chill / chill-plus call nneigh::neighListO, then
chill::getCorrel / chill::getIceTypeNoPrint or
chill::getCorrelPlus / chill::getIceTypePlusNoPrint. Ice names
are the molSys::atom_state_type enumerators: cubic, hexagonal,
water, interfacial, clathrate, interClathrate, reCubic,
reHex, unclassified.
cages reports cage membership, not CHILL labels: hexagonal = HC
(Ih), cubic = DDC (Ic), water = neither. The bond graph is
--graph.
rdf and cn call rdf::partialRdf on LAMMPS type IDs from
--types I,J (default I = J = --type). --cutoff is rmax. --bins
is optional. The volume is nneigh::dumpVolume (det of dump H).
cn integrates the site-site RDF to that cutoff
(rdf::coordinationNumber). Help text and the cn header say
site-site. There is no cage CN and no --ions.
cn --ions --site SPEC builds site::ionCloud and prints the mean
unlike degree of type-1 (cation) vertices from
nneigh::neighList(cutoff, ions, 1, 2). The line contains cage.
pairs --site SPEC prints the size of
nneigh::mutualNearestUnlike(ions, 1, 2). That line contains
contact-pair, not ionicity. Both need --site.
density-z calls site::densityZ. --type 0 (default) keeps
every atom; --type I keeps that LAMMPS type. --axis is x,
y, or z (default z). --bins defaults to the bound span
over \(0.1\). Each slab volume is \(A_\perp \times dz\), with
\(A_\perp\) from dump H (recovered lx, ly, lz, not bound
spans). This is not an ice score.
chill, chill-plus, and cages call site::iceScoreAllowed.
When --family is not waterIce they print site::refuseIceScore
(the message names the family) and exit 2. They do not fall through
to atom_state_type::water. Unflagged seams chill stays
waterIce. If --family is absent and the frame has more than two
LAMMPS types, one stderr line names --family and the command
still exits 0.
An empty cloud (nop 0) still prints. chill / chill-plus print
nop 0. cages prints nop 0 graph KIND hexagonal 0 cubic 0 water 0. rdf / cn still emit their headers. hbonds prints
nop 0 hbonds 0. density-z prints # z rho and zero-density bins.
hbonds loads the heavy-atom cloud with --type and the hydrogen
cloud with --htype, then builds a cutoff neighbour list. Without
--donors it uses the water two-hydrogen-per-molecule set
(hAtomMolList). --donors passes every hydrogen index to
populateHbondsFromDonors. --hdist and --hangle are the acceptor-H
distance and the acceptor-centered O-O-H angle cutoffs (angle
between OO and OH); the C++ defaults stay the water values and are
not an ionic-liquid criterion.
Options¶
Names and help text are the Argum Option / Positional
definitions in src/seams_cli.cpp. Defaults are the C++
initializers (Argum does not write defaults into the help).
--help, --version, --features, and --print-config print and
exit 0 before any file is opened.
--tpp, --block, --resident, and --cell apply to the device
TUM ice score (seams cages) only. CHILL and \(q_{lm}\) stay on
the host.
--cutoff is in Angstrom. -k also applies to knn-union (the
same k feeds nneigh::kNearestNeighbourList). --graph is used
by cages and fingerprint; a fingerprint wants one graph, so
seeded (two graphs) falls back to cutoff there. --complete is used by cages and ions: it
passes true as the fifth argument of seededCageAffiliation.
--type¶
value |
single frame ( |
|
|---|---|---|
|
LAMMPS: type 2, then type 1 if that cloud is empty. chemfiles: keep every atom. XYZ: every atom is type 1 |
LAMMPS: every atom ( |
|
LAMMPS |
LAMMPS |
XYZ always stores type 1. Classification still uses --type after
the read (type 0 then becomes 1).
A mixed-type dump that is not the water guess needs --type I.
density-z treats 0 as every atom, not the oxygen guess.
See Ionic-liquid dumps.
--types¶
Used by rdf and cn. The Argum form is I,J (one comma). A bad
string exits 2 (bad --types (want I,J)). Omit the flag to set both
sides to --type. These are LAMMPS type IDs on the original cloud
(site-site). cn --ions is a different path (ionCloud cage degree).
|
single-frame load |
|
|---|---|---|
omitted |
same as |
same as |
|
keep type |
keep type |
|
every atom ( |
every atom ( |
cmdRdf / cmdCn then call rdf::partialRdf on those two integers.
typeOf still resolves a zero to the first atom (or 1).
seams read and the box¶
seams read prints gen::formatDumpBox: the three bound spans,
then xy xz yz when box.size() >= 6. There is no separate tilt
flag. seams rdf uses the same dump H (gen::periodicDist and
nneigh::dumpVolume). seams density-z uses recovered lx, ly, lz for \(A_\perp\), not bound spans. The in-plane sampler remains
rdf2::sampleRDF_AA; see
Sheared cells.
--graph¶
Used only by cages.
value |
graph |
|---|---|
|
mutual |
|
pairs inside |
|
mutual k-nearest ( |
|
union k-nearest ( |
nneigh::bondGraphFromName also accepts knn-mutual and mutual
as knn, and union as knn-union. seeded is handled in the CLI
and is not a BondGraph enumerator. Any other name throws
std::invalid_argument (unknown bond graph 'NAME' (use cutoff, knn, knn-union)) and cages exits 2.
Candidate cutoff for the knn graphs is --cutoff + 1.5.
Runtime knobs¶
Defaults live in the binary. An optional dotenv (SEAMS_CONFIG or
./seams.env) fills unset keys. The process environment wins the
file; CLI flags win the environment. seams --print-config dumps
the table.
variable |
default |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
occupancy picker ( |
|
occupancy picker ( |
|
|
|
empty |
Analysis choice (which command) is not this table.
File suffix¶
seams picks a reader from the path suffix
(path.find_last_of('.')):
suffix |
reader |
compile-time gate |
|---|---|---|
|
|
always |
|
|
|
|
|
|
anything else |
LAMMPS dump ( |
always |
A build without chemfiles or readcon-core treats .pdb / .gro /
.dcd / .con as LAMMPS dumps. seams --features reports those
gates.
Frame ranges¶
Omit --last, or set it equal to --frame, for one frame. That
path calls load and works for every linked suffix.
A range (--last > --frame) dispatches by suffix. LAMMPS dumps use
sinp::forEachLammpsFrame, with one handle per OpenMP worker and
deterministic output order. XYZ is a single-frame input and emits frame 1
at most. Chemfiles and readcon inputs are read serially until the requested
range or the first missing frame. --jobs 1 is serial; non-LAMMPS readers
do not use OpenMP workers.
--features¶
Heading Compile-time features: then one line per backend. Each
line is NAME: enabled or NAME: disabled.
printed name |
macro |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Colors¶
colorizerForFile(environmentColorStatus(), stdout). Argum’s
environmentColorStatus (first match wins):
condition |
result |
|---|---|
|
off |
|
on |
|
on |
|
off |
|
off |
|
allowed (TTY decides) |
|
allowed |
|
off |
otherwise |
TTY / |
Color roles on this binary:
role |
used for |
|---|---|
|
|
|
|
|
|
|
|
|
usage line; |
|
parse / missing-args / unknown-command; |
uncolored |
|
Exit status¶
code |
when |
|---|---|
|
success, including |
|
parse error, missing command or file, unknown command, unknown |
Examples¶
seams read input/traj/exampleTraj.lammpstrj
seams chill-plus input/traj/exampleTraj.lammpstrj --cutoff 3.5 --type 2
seams cages input/traj/mW_cubic.lammpstrj --type 1 --graph seeded
seams cages dump.lammpstrj --graph cutoff
seams cages dump.lammpstrj --graph knn
seams cages dump.lammpstrj --graph knn-union
seams chill-plus dump.lammpstrj --frame 1 --last 50 --jobs 8
seams rdf dump.lammpstrj --types 1,2 --cutoff 10 --bins 100
seams cn dump.lammpstrj --types 1,2 --cutoff 4.5
seams cn dump.lammpstrj --ions --site '1=cationHead,2=anion' --cutoff 6.0
seams pairs dump.lammpstrj --site '1=cationHead,2=anion'
seams hbonds dump.lammpstrj --type 2 --htype 1
seams hbonds dump.lammpstrj --donors
seams chill dump.lammpstrj --family ionicLiquid
Lua and Python are not this binary. See
yodaStruct
(require("dseams")) and
PydSEAMSlib
(pydseams).