dpdata v1.1.0
Highlights
- Broader format support and interoperability: added DeepMD HDF5 mixed-system and deepmd/lmdb formats, aligned the LMDB backend with DeePMD-kit, and substantially expanded EXTXYZ support with stress, unit conversion, tag synonyms, and improved ASE compatibility.
- Improved compatibility with major simulation codes: added support for CP2K 2025 output and strengthened parsing and conversion for VASP, LAMMPS, ABACUS, Quantum ESPRESSO, DFTB+, GROMACS, PWmat, PSI4, Amber, and more.
- More robust data handling: improved mixed-system loading, optional frame properties, atom/species ordering, sliced-system metadata isolation, malformed/incomplete frame handling, and diagnostics for missing or inconsistent data.
- Faster and cleaner workflows: optimized loading of selected LAMMPS dump frames, removed the monty serialization dependency, and made LMDB an optional dependency.
- Refreshed documentation and project experience: redesigned the README and documentation landing page, expanded the generated format reference and CLI skill documentation, and refreshed project metadata and references.
What’s Changed
New features and format support
- feat(extxyz): support stress header, improve robustness and ASE compatibility by @SchrodingersCattt in #983
- feat(extxyz): add unit convert and tag synonym matching by @SchrodingersCattt in #678
- feat(deepmd): add hdf5 mixed format by @njzjz in #981
- feat(lmdb): align backend with DeePMD-kit by @OutisLi in #1012
- refactor(lmdb): rename format to deepmd/lmdb by @njzjz-bot in #1051
- feat(lammps): load selected dump frames efficiently by @njzjz-bot in #1041
- fix(deepmd): expose unlabeled mixed-system loading by @njzjz-bot in #1033
Format compatibility and correctness
- fix: Support CP2K 2025 output format for energy and forces (fixes #850) by @newtontech in #978
- fix: skip empty frame properties when dumping deepmd format (#977) by @wanghan-iapcm in #982
- fix: handle tuple dtype in DataType repr and error message by @CedricConday in #1005
- fix(psi4): honor requested input method by @rathodkunj2005 in #1006
- fix: add missing elements 104-118 (Rf~Og) to periodic_table.json by @SchrodingersCattt in #1009
- fix: preserve atom order in map_atom_types by @rathodkunj2005 in #1007
- fix: build pymatgen Molecule species from atom_types order (#994) by @CedricConday in #1010
- fix(deepmd/hdf5): skip empty optional frame arrays on dump (#996) by @CedricConday in #1011
- fix(abacus): omit unavailable MD force labels by @njzjz-bot in #1024
- fix(abacus): preserve scalar spin-constraint separators by @njzjz-bot in #1022
- fix(driver): preserve hybrid driver configs by @njzjz-bot in #1017
- fix(system): copy first append and support absolute paths by @njzjz-bot in #1015
- fix(amber): omit malformed SQM force labels by @njzjz-bot in #1023
- fix(pwmat): use selected frame cell for coordinates by @njzjz-bot in #1021
- fix(gromacs): preserve first-seen element order by @njzjz-bot in #1031
- fix(vasp): skip malformed OUTCAR force frames by @njzjz-bot in #1030
- fix(dftbplus): parse all geometry and force rows by @njzjz-bot in #1018
- fix(rdf): avoid mutating selection defaults by @njzjz-bot in #1016
- fix(vasp): collect OUTCAR files from multiple directories by @njzjz-bot in #1034
- fix(system): isolate sliced system metadata by @njzjz-bot in #1014
- fix(qe): honor angstrom cells without cel files by @njzjz-bot in #1029
- fix(vasp): warn when POTCAR and POSCAR species order disagree by @njzjz in #1046
- fix(vasp): report frames dropped for a missing OUTCAR energy by @njzjz in #1047
- fix(vasp): read every frame of an ML-only OUTCAR by @njzjz in #1048
- fix(cp2k): say what is missing from an AIMD output directory by @njzjz in #1049
- fix(lammps): distinguish neutral charge and dipole columns by @njzjz-bot in #1020
- fix(vasp): interpret negative POSCAR scale as volume by @njzjz-bot in #1019
- Raise error when from_deepmd_npy_mixed with not-a-directory para. by @iProzd in #432
- fix(lammps): emit valid spin atom style sections by @njzjz-bot in #1032
- fix(lammps): tolerate incomplete and commented dump frames by @njzjz in #1045
Dependencies and packaging
- build: replace openbabel-wheel with openbabel by @njzjz-bot in #974
- fix(serialization): remove monty dependency by @njzjz in #979
- chore(lmdb): allow missing LMDB imports by @njzjz in #945
Documentation and testing
- docs: repoint jupyterlite xeus channel to prefix.dev by @wanghan-iapcm in #1035
- test(ase): re-enable trajectory multisystem coverage by @njzjz-bot in #1025
- docs: refresh project metadata and references by @njzjz-bot in #1027
- docs(skills): expand extxyz format documentation in dpdata-cli skill by @SchrodingersCattt in #1036
- docs(formats): expand generated format reference by @njzjz in #1044
- docs: redesign README and documentation landing page by @njzjz in #1056
Maintenance
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #972
- chore(deps): bump codecov/codecov-action from 6 to 7 by @dependabot[bot] in #976
- chore(deps): bump actions/checkout from 6 to 7 by @dependabot[bot] in #980
- chore(release): pin PyPI workflow actions by @njzjz-bot in #1026
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #1038
- chore(deps): bump actions/setup-python from 6 to 7 by @dependabot[bot] in #1043
- chore(deps): bump pypa/gh-action-pypi-publish from 1.14.0 to 1.14.1 by @dependabot[bot] in #1042
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #1050
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #1053
- chore(deps): bump pypa/gh-action-pypi-publish from 1.14.1 to 1.14.2 by @dependabot[bot] in #1054
- chore(deps): bump CodSpeedHQ/action from 4 to 5 by @dependabot[bot] in #1055
New Contributors
- @newtontech made their first contribution in #978
- @CedricConday made their first contribution in #1005
- @rathodkunj2005 made their first contribution in #1006
- @OutisLi made their first contribution in #1012
Full Changelog: https://github.com/deepmodeling/dpdata/compare/v1.0.2…v1.1.0