Repository navigation
Releases: MarkYoungIV/abacuscopilot
Release list
AbacusCopilot v0.1.38.4
v0.1.38.4
A release focused on fixing non-orthogonal (monoclinic / trigonal / triclinic) cell handling across MD, elasticity, and structure editing, plus more robust default library resolution.
Fixed
- MD trajectory analysis, triclinic cells (tasks 3107, 3104). LAMMPS dump →
MD_dumpconversion now parses theBOX BOUNDStilt columns (xy,xz,yz) and writes the true 3×3 lattice. Previously the tilts were dropped and the bounding-box lengths were written as a diagonal cell, overestimating the volume by 10–20% for sheared boxes. The minimum-image convention was transposed (inv(cell.T)→inv(cell), matching the codebase'scart = frac @ cellconvention); non-orthogonal cells now use a 26-neighbor image search matching ASE. The same fix applies to POSCAR export, probability-density gridding, MSD unwrapping, and the van Hove non-Gaussian parameter. The PyTorch/MPS fast path is restricted to orthogonal cells, where it is exact. - Elastic constants (task 1201). The stability verdict now applies the general Born criterion — positive definiteness of the 6×6 elastic matrix (Mouhat & Coudert, PRB 90, 224104) — instead of cubic-only inequalities for every crystal system. All six eigenvalues and the softest strain mode are printed, and
elastic_properties.datgains a minimum-eigenvalue line. - EOS (tasks 110, 1202).
scale_*directories now generatecalculation relaxINPUT files (ions relaxed at each fixed scaled cell) instead of plain SCF, which kept non-equilibrium fractional coordinates and produced a too-stiff E(V) curve with an overestimated B₀. The fitter readsrunning_relax.log, falling back torunning_scf.logfor existing SCF-based directories. Fixed atoms (m 0 0 0) now trigger a warning since relax cannot move them. - Library resolution (0.1.38c). The default
sg15family now owns the library lists: they are re-derived from the bundled SG15 + lanthanide roots on every load, so stale entries from another series (e.g. a leftover Dojo directory) can no longer supply files.customand explicitly picked families are unaffected. The default-basis tie-break no longer falls back to alphabetical order and picks the smallest (SZ) orbital: the canonical DZP basis ranks first, then any parseable DZP-like basis, then minimal ones, then rcut closest to 7 au. - Structure editing (tasks 401, 402; 0.1.38.4). Supercell construction and lattice redefinition multiplied the transformation matrix on the wrong side (
L @ M→M @ L), which for non-orthogonal cells produced vectors that were not integer combinations of the originals —Redefined.STRUwas not a supercell of the input at all. The fractional-coordinate transform is transposed to match (f' = f @ M⁻¹), and the convention now matches the standard TRANSMAT convention, so integer matrices can be copied across verbatim. The replica-offset search is now bounded by the row sums of |M| (allowing negative components); previously a matrix with negative entries could silently yield fewer than |det M| offsets and write a cell with too few atoms.
Added
- Regression tests: triclinic MD handling vs. brute force (
tests/test_md_triclinic.py), structure editing validated against an independent reference output incl. non-orthogonal cells (tests/test_structure_editing.py), family-owned library lists and DZP-before-SZ ranking (tests/test_config.py,tests/test_library_resolution.py), and elastic/EOS mechanics checks (tests/test_mechanics_tasks.py). CHANGELOG.mddocumenting all 0.1.38-series changes.
AbacusCopilot v0.1.37
v0.1.37
A short summary of what changed since v0.1.36.
Setting up is simpler
~/.abacuscopilot/config.yamlnow explains itself — every value has a short note next to it.- Task 9901 no longer asks for pseudopotential or orbital folders. They are found automatically, or chosen once from the library-family prompt.
- If a library folder in your config was moved or deleted (by an upgrade, say), it is repaired automatically instead of leaving every calculation without libraries.
A tidier PP-Orb folder
- One folder per library series now.
PP-Orb/SG15-Version1p0/holds both the pseudopotentials and the orbitals, instead of two separate folders at the top level. scripts/upgrade.shmoves old installs to the new layout and cleans up the leftover folders.
Fewer silent mistakes
-
A second series kept inside
PP-Orb/— for exampleDojo-NC-FRorABACUS-APNS-PPORBs-v1— can no longer be picked up by accident during a normal SG15 calculation. Those series ship files with the same names as SG15 (Dojo has a plainLi.upf), so this used to give you the wrong pseudopotential with no warning at all. -
When a file is missing for one element, the warning now names the series that does have it:
Tip: ABACUS-APNS-PPORBs-v1 has La_gga_9au_100Ry_4s2p2d1f.orb -
The prompt defaults (k-spacing, ecutwfc, SCF threshold, …) can no longer show a value that differs from the one actually saved.
Your Deep Potential model files are never modified
- abacuscopilot used to rename and convert a DP model whenever it could not load it. That could happen to a perfectly good model, and the replacement could not be read by ABACUS. It now only inspects the model and reports what it found. Nothing is renamed or rewritten by abacuscopilot.
- If the model named in INPUT cannot be used, the models in the directory are listed so you can pick another.
Credit
- Tasks 1101 (Work Function) and 1102 (Macroscopic Avg), new in v0.1.36, were contributed by @xdzhu. Thank you!
Installing
Download the tarball below and run:
tar xzf abacuscopilot_v0.1.37_20260912.tar.gz
cd abacuscopilot
./setup.shAlready installed? Upgrade in place instead:
bash scripts/upgrade.sh abacuscopilot_v0.1.37_20260912.tar.gzAbacusCopilot v0.1.36
AbacusCopilot v0.1.36
New features
- Task 1101 — Work Function: reads ABACUS's raw
OUT.ABACUS/ElecStaticPot.cubeandrunning_scf.logand computes the work functionΦ = V_vacuum − E_Fermi. The vacuum level is derived from the largest periodic atom-free gap identified from the cube's atom coordinates, with surface-adjacent regions excluded. No dependency on zstar. - Task 1102 — Macroscopic Avg: periodic double-window macroscopic average of the potential, plus the corresponding work function. The averaging period is configurable via
--period(defaults to a quarter of the c-axis length).
Both tasks previously existed in a hidden state (functionality unverified) and are enabled as of this release.
Credits
The work-function implementation was contributed by @xdzhu (Xudong Zhu) — see #3.
Usage
abacuscopilot -task 1101 # work function
abacuscopilot -task 1102 # periodic double-window macroscopic averageInputs may also be given explicitly: --file ElecStaticPot.cube --log OUT.ABACUS/running_scf.log.
Notes
- This package is built on top of the v0.1.35b release package: only the 5 files affected by the changes above were replaced; everything else is identical to v0.1.35b (573 members, verified file by file).
AbacusCopilot v0.1.35b
AbacusCopilot v0.1.35b
One-liner: Calibrates the kspacing → KPT mesh generation to exactly reproduce what ABACUS computes at run time — the kspacing convergence test (Task 108) now predicts the same grids the server KPT actually gets — and corrects the kspacing unit label everywhere (it is 1/bohr, not 2π/Å).
What's new
- Task 108 kspacing → KPT calibration (
io/kpt_file.auto_mp_kptsnow replicates ABACUSK_Vectors::read_kpoints, module_cell/klist.cpp v3.10.1): grids follow
nk_i = max(1, int(|b_i| · 2π / (kspacing · lat0) + 1))with kspacing in 1/bohr and int() truncation — not ceil. The old rule over-predicted the mesh by ~2× and mis-grouped duplicate runs. Verified to reproduce the real ABACUS-written KPT across the full 16-point sweep (kspacing 0.10 → 4 4 3 … 0.40 → 1 1 1). - Unit labels fixed from "2π/Å" to "1/bohr" in every kspacing prompt (kspacing convergence test, auto-KPT Task 301, NEB, global default) and the docs.
- kspacing convergence test default sweep changed to 0.40 → 0.10 (step −0.02), matching the ABACUS manual suggestion (kspacing < 0.25).
- New regression tests pinning the ABACUS-faithful grid mapping (tests 229 → 231, all green).
Install / Upgrade
- New install: unpack →
./setup.sh. - Server upgrade:
bash upgrade.sh abacuscopilot_v0.1.35b_20260909.tar.gz(offline-safe; preserves your config and any extra PP-Orb libraries).
Version: v0.1.35b (2026-09-09) · 231 tests pass
AbacusCopilot v0.1.35
AbacusCopilot v0.1.35
At a glance: introduces a configurable pseudopotential/orbital library "family" system (new APNS and Dojo-NC-FR external series); orbital resolution is now tier-aware with user-selectable rcut; the STRU full-calc flow is fully wired into INPUT generation, removing drift between modules; the XC wizard now defaults to PBE; plus a batch of auto-detection / deploy / upgrade / packaging polish. Tests: 158 → 229.
Highlights
- Library "family" system (core)
libraries.family:sg15(default) |apns|dojoncfr|custom, switchable globally & persisted in config;libraries.families.*registers external series.- New module
library_families.py:KNOWN_FAMILIESregistry + interactive family picker. - Missing-element policy split: a missing element in a registered user family (APNS/Dojo) is a hard error (hint to switch series); built-in SG15 keeps the yellow soft warning.
- Family resolution wired throughout: INPUT generation, STRU writing, NEB reaction paths, full-calc.
- New Dojo-NC-FR family: ONCVPSP v3.3.0 fully-relativistic (SOC,
lspinorb 1); flatPseudopotential/+Orbitals_v2.0/{El}_{SZ,DZP,TZDP}/. - Tier-aware orbital resolution: SZ/DZP/TZDP tier gating — a missing tier is a hard error, never silently substituted by another tier.
libraries.rcut_policy=7(default) |min|max: pick which rcut copy to use among the multi-rcut Dojo orbitals.- STRU full-calc (tasks 201/202/207) fully wired into INPUT generation: shares the 8 interactive helpers and the canonical
_auto_prepare_filestail of the INPUT module, so the same answers produce byte-identical INPUT; now also copiessub.abacus. - XC wizard default PBE (was PBEsol); PBEsol is the alternative. INPUT keeps the
#dft_functional pbesolhint. - Family auto-detection: if APNS / Dojo-NC-FR already exist under the package
PP-Orb/, the picker auto-registers their paths — no manual path entry. upgrade.shno longer drops extra libraries on upgrade: top-level entries missing from the newPP-Orb/are merged back from the old install (built-in SG15 is never overwritten).- Packaging cleanup: make_tarball excludes external series and stray archives (
*.zip/*.7z/*.tar.gz/*.tgz); newPP-Orb/README.mdplaceholder guides users.
Bug fixes
- Fixed a test that leaked a pytest tmp dir into the real
~/.abacuscopilot/config.yaml(tests now monkeypatch all persist functions). - Fixed SG15 auto-detection absorbing directories of registered families (APNS/Dojo) into the default library list → registered dirs are excluded; switching back to sg15 no longer mixes series.
Install / upgrade
- Fresh install: extract →
./setup.sh. - Server upgrade:
bash upgrade.sh abacuscopilot_v0.1.35_20260908.tar.gz(offline-safe; keeps config and the platform bader binary; auto-restores extra PP-Orb libraries from the old install). - To use Dojo-NC-FR / APNS: drop the library folder(s) into the package
PP-Orb/(the picker auto-detects & registers them), or fill inlibraries.familiespaths in config.
Version: v0.1.35 (2026-09-08) · 229 tests pass
AbacusCopilot v0.1.34b
Hotfix for issue #1 — task 3303 crashed for all users.
task 3303 (atst-tools NEB Config):
- Fixed the crash
TypeError: argument should be a str or an os.PathLike object where __fspath__ returns a str, not 'list'that aborted task 3303 right after the basis-type prompt when generatingneb.yamlfrom NEB image directories. - Cause:
pseudo_library/orbital_libraryin the config are lists of directories (multi-library / lanthanide support), but task 3303 treated them as a single directory and calledPath(<list>). - Fix: the auto-copy step now walks every configured library recursively (e.g. the nested
SG15_ONCV_v1.0_upf/bundle) for the exact.upf/.orbfilename resolved in each image STRU, then stages it into the run and image directories.
Fixes #1 (reported by @cyhshidai). 158 tests pass.
AbacusCopilot v0.1.34
NEB & post-processing batch:
- NEB: PBC minimum-image displacement + endpoint alignment; POSCAR/CONTCAR velocity-tail cleanup; upf/orb auto-staging; single-GPU endpoint caching; 4-GPU parallel driver (auto GPU count, free-GPU pick, OMP from sub.abacus).
- task 701 SCF convergence fix; task 3101 now 'Trajectory -> PDB' (accepts ASE .traj); 3306 analysis robustness.
- setup.sh offline-mirror rewrite; upgrade.sh added.
AbacusCopilot v0.1.33
Interactive command-line pre/post-processing copilot for the ABACUS DFT software.
The full release tarball (abacuscopilot_v0.1.33_20260831.tar.gz, attached) ships the SG15 + lanthanide pseudopotential/orbital libraries under PP-Orb/ for out-of-the-box use — they are intentionally not in the git repo.
Highlights
- Menu-driven interactive TUI +
abacuscopilot -task NNNCLI mode - Pre-processing: INPUT/STRU/KPT generation, structure editing, PDB↔STRU/POSCAR/CIF interop, lanthanide (Sm) f-core support
- Post-processing: SCF convergence, band structures, DOS/PDOS, charge density, population (Mulliken), MD analysis (MSD via FFT autocorrelation, van Hove), mechanics, phonons
- GPL-3.0 licensed
Notes
- Work Function (1101/1102), Bader (1304), Hirshfeld (1305), RESP (1306) are currently hidden pending validation.
- Install:
./setup.sh(creates conda env) orpip install -e .