===================== One task, four fronts ===================== The task is CHILL+ on frame 1 of ``input/traj/mW_cubic.lammpstrj``, LAMMPS type 1. The result is 4096 cubic sites. ``docs/tutorials/test_cross_language.py`` runs the fronts. .. table:: +----------+-----------------------------------------------------------------------+-------+ | language | call | cubic | +==========+=======================================================================+=======+ | CLI | ``seams chill-plus input/traj/mW_cubic.lammpstrj --type 1 --frame 1`` | 4096 | +----------+-----------------------------------------------------------------------+-------+ | Python | ``pydseams.read(path, atom_type=1).chill_plus().cubic`` | 4096 | +----------+-----------------------------------------------------------------------+-------+ | R | ``sum(chill_plus(read_frame(path, type=1L))$name =`` "cubic")= | 4096 | +----------+-----------------------------------------------------------------------+-------+ | Julia | ``chill_plus(read_frame(path; type=1)).counts["cubic"]`` | 4096 | +----------+-----------------------------------------------------------------------+-------+ Python is ``pip install pydseamslib``. The import is ``pydseams``. ``import pydseamslib`` is the same package. The package name the d-SEAMS paper should use is ``pydseamslib``. R is ``bindings/r/dseams``. Julia is ``bindings/julia/Dseams`` and calls ``libseams_lang`` with ``ccall``. Every front defaults to the cutoff neighbour list (``graph = "cutoff"``, pairs closer than ``cutoff``, 3.5 Å). ``graph = "mutual"`` is the mutual four-nearest list with candidates inside ``cutoff + 1.5``, under the same name on every front. On this lattice the two lists label the same sites cubic. On the mixed TIP4P dump (``input/traj/exampleTraj.lammpstrj``, type 2) they do not: .. table:: +--------+---------------------------------------------------+ | front | mutual-list call | +========+===================================================+ | CLI | ``seams chill-plus FILE --type 2 --graph mutual`` | +--------+---------------------------------------------------+ | Python | ``frame.chill_plus(graph``"mutual")= | +--------+---------------------------------------------------+ | R | ``chill_plus(frame, graph = "mutual")`` | +--------+---------------------------------------------------+ | Julia | ``chill_plus(frame; graph = "mutual")`` | +--------+---------------------------------------------------+ The cutoff list gives 12 interClathrate and 238 water. The mutual list gives 1 clathrate, 7 interClathrate, and 242 water. A cage signature takes the same face-edge window on every front. The default is ``2.65,3.15`` in the coordinate units of the file. ``none`` leaves the cage bound to the face census. .. table:: +--------+--------------------------------------------------------------------------------------------+ | front | call | +========+============================================================================================+ | CLI | ``seams cages FILE --signature 512 --cage-edge none`` | +--------+--------------------------------------------------------------------------------------------+ | Python | ``frame.cages_by_signature("512", edge``"none")= | +--------+--------------------------------------------------------------------------------------------+ | Lua | ``dseams.cages_by_signature(frame, "512", {edge = "none"})`` | +--------+--------------------------------------------------------------------------------------------+ | C | ``seams_frame_signature_edge(frame, 3.5, 1, "cutoff", "512", "none", &n_cages, &n_atoms)`` | +--------+--------------------------------------------------------------------------------------------+ A null C edge string keeps the default. Set the window to the heavy-atom contact range of the model. Widen it for a compressed cell or a guest that stretches a cage. A nanometre file uses ``0.265,0.315``. ``tests/chill_plus_fronts.py`` (Meson test ``chill_plus_fronts_agree``) runs all four fronts on that dump with both lists. It checks the histograms on all four and the per-atom labels on Python, R, and Julia. The Python front needs a pydseamslib whose ``chill_plus`` takes ``graph``.