Skip to content

Releases: MarkYoungIV/abacuscopilot

AbacusCopilot v0.1.38.4

Choose a tag to compare

@MarkYoungIV MarkYoungIV released this 26 Sep 09:34

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_dump conversion now parses the BOX BOUNDS tilt 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's cart = frac @ cell convention); 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.dat gains a minimum-eigenvalue line.
  • EOS (tasks 110, 1202). scale_* directories now generate calculation relax INPUT 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 reads running_relax.log, falling back to running_scf.log for 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 sg15 family 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. custom and 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.STRU was 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.md documenting all 0.1.38-series changes.

AbacusCopilot v0.1.37

Choose a tag to compare

@MarkYoungIV MarkYoungIV released this 14 Sep 02:11

v0.1.37

A short summary of what changed since v0.1.36.

Setting up is simpler

  • ~/.abacuscopilot/config.yaml now 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.sh moves old installs to the new layout and cleans up the leftover folders.

Fewer silent mistakes

  • A second series kept inside PP-Orb/ — for example Dojo-NC-FR or ABACUS-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 plain Li.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.sh

Already installed? Upgrade in place instead:

bash scripts/upgrade.sh abacuscopilot_v0.1.37_20260912.tar.gz

AbacusCopilot v0.1.36

Choose a tag to compare

@MarkYoungIV MarkYoungIV released this 12 Sep 14:51

AbacusCopilot v0.1.36

New features

  • Task 1101 — Work Function: reads ABACUS's raw OUT.ABACUS/ElecStaticPot.cube and running_scf.log and 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 average

Inputs 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

Choose a tag to compare

@MarkYoungIV MarkYoungIV released this 09 Sep 07:04

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_kpts now replicates ABACUS K_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

Choose a tag to compare

@MarkYoungIV MarkYoungIV released this 09 Sep 03:42

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_FAMILIES registry + 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); flat Pseudopotential/ + 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_files tail of the INPUT module, so the same answers produce byte-identical INPUT; now also copies sub.abacus.
  • XC wizard default PBE (was PBEsol); PBEsol is the alternative. INPUT keeps the #dft_functional pbesol hint.
  • 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.sh no longer drops extra libraries on upgrade: top-level entries missing from the new PP-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); new PP-Orb/README.md placeholder 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 in libraries.families paths in config.

Version: v0.1.35 (2026-09-08) · 229 tests pass

AbacusCopilot v0.1.34b

Choose a tag to compare

@MarkYoungIV MarkYoungIV released this 06 Sep 12:10

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 generating neb.yaml from NEB image directories.
  • Cause: pseudo_library / orbital_library in the config are lists of directories (multi-library / lanthanide support), but task 3303 treated them as a single directory and called Path(<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 / .orb filename 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

Choose a tag to compare

@MarkYoungIV MarkYoungIV released this 04 Sep 10:51

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

Choose a tag to compare

@MarkYoungIV MarkYoungIV released this 31 Aug 00:46

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 NNN CLI 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) or pip install -e .