Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
247 commits
Select commit Hold shift + click to select a range
30351e9
feat: add DeePMD property tools
zhaiwenxi May 27, 2026
e9fe00f
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] May 27, 2026
db05969
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] May 28, 2026
311a620
Merge pull request #1 from zhaiwenxi/add-property-tools
zhaiwenxi May 29, 2026
05479d4
Add SMILES coordinate generation for property tools
zhaiwenxi May 30, 2026
4445f1d
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] May 30, 2026
9be45cd
Merge branch 'deepmodeling:master' into master
zhaiwenxi May 30, 2026
d5df6fa
Merge pull request #2 from zhaiwenxi/add-property-tools
zhaiwenxi May 30, 2026
52033d7
feat: add dpa_tools as self-contained subpackage (PR 1)
zirenjin Jun 1, 2026
3e0c3f9
feat: add dp dpa CLI subcommand group (Branch A)
zirenjin Jun 1, 2026
ffe609c
feat: centralize deepmd API calls into _backend.py chokepoint (Branch B)
zirenjin Jun 1, 2026
beb7b42
Merge branch-b-backend (_backend.py chokepoint)
zirenjin Jun 1, 2026
ab024dc
fix: use yield fixture for contract test hook cleanup (prevents state…
zirenjin Jun 1, 2026
da3f26f
docs: add dpa_tools Python and CLI API reference
zirenjin Jun 1, 2026
bb3c971
Merge pull request #3 from zirenjin/master
zhaiwenxi Jun 1, 2026
57f61bd
feat: merge property_tools SMILES pipeline into dpa_tools
zirenjin Jun 1, 2026
f61f0c2
feat: auto-detect format in dp dpa data convert, unify SMILES+structu…
zirenjin Jun 1, 2026
392a1a5
chore: remove deepmd_property_tools, migrate tests+data to dpa_tools
zirenjin Jun 1, 2026
871d600
chore: rename DATA/ → demo/
zirenjin Jun 1, 2026
8a8ec93
docs: update README — add SMILES pipeline, auto_convert, demo data
zirenjin Jun 1, 2026
ae78fea
refactor: fold mft into fit --strategy mft, batch-convert into conver…
zirenjin Jun 1, 2026
fbfb5a0
docs: update README for refactored CLI and API (mft→fit, batch-conver…
zirenjin Jun 1, 2026
5bb1b53
feat: auto-download built-in pretrained models via resolve_pretrained…
zirenjin Jun 1, 2026
6404230
refactor: extract sklearn pipeline, lazy-load MFT ckpt, harden test-o…
zirenjin Jun 2, 2026
c234de4
feat: multi-property frozen_sklearn — accept list target_key, per-pro…
zirenjin Jun 2, 2026
8976994
fix: remove duplicate method definitions from DPAFineTuner refactor
zirenjin Jun 2, 2026
4ac473e
fix: remove empty except in _unwrap_multioutput, drop unused pipeline…
zirenjin Jun 2, 2026
217868c
fix: update property_tools_tests CI after migration to dpa_tools
zirenjin Jun 2, 2026
3b1ed2c
fix: pin numpy<2.2 in lightweight CI for Python 3.10 compat
zirenjin Jun 2, 2026
93b2c5d
Merge pull request #4 from zirenjin/master
zhaiwenxi Jun 2, 2026
d39d659
Merge branch 'deepmodeling:master' into master
zhaiwenxi Jun 2, 2026
d5d3f5b
Merge branch 'deepmodeling:master' into master
zhaiwenxi Jun 3, 2026
afd4211
Clean up dpa_tools property workflow
claude Jun 4, 2026
1e9c698
Merge branch 'deepmodeling:master' into master
zhaiwenxi Jun 4, 2026
1feef03
Merge pull request #5 from zhaiwenxi/dpa-tools-property-workflow-cleanup
zhaiwenxi Jun 4, 2026
83db772
Fix CI dependency installation
claude Jun 4, 2026
b91c71f
Merge branch 'deepmodeling:master' into master
zhaiwenxi Jun 4, 2026
21d80f6
Merge pull request #6 from zhaiwenxi/dpa-tools-property-workflow-cleanup
zhaiwenxi Jun 4, 2026
4f55772
Fix dpa tools CI test stability
zhaiwenxi Jun 4, 2026
e938570
Merge branch 'deepmodeling:master' into master
zhaiwenxi Jun 5, 2026
63b4130
Fix macOS x86 wheel test extras
zhaiwenxi Jun 5, 2026
bfde8f8
Fix dpa tools CI setup
zhaiwenxi Jun 5, 2026
f6f75d0
Remove dpa tools demo data
zhaiwenxi Jun 5, 2026
94ea40c
Guard descriptor extraction grad requirement
zhaiwenxi Jun 5, 2026
8824949
Merge pull request #7 from zhaiwenxi/fix-dpa-tools-ci-tests
zhaiwenxi Jun 6, 2026
76cad17
Merge branch 'deepmodeling:master' into master
zhaiwenxi Jun 6, 2026
f8a0220
feat(dpa_tools): quickstart demo, convert() glob support, cleanup
zirenjin Jun 6, 2026
54196fb
docs(dpa_tools): fine-tuning-first READMEs and demo fixes
zirenjin Jun 6, 2026
892ab07
docs: fix predict example to capture .predictions
zirenjin Jun 6, 2026
e28d4dd
feat(demo): demonstrate all four fine-tuning strategies
zirenjin Jun 6, 2026
c80e2ab
Merge pull request #8 from zirenjin/docs/dpa-tools-readme
zhaiwenxi Jun 7, 2026
a625981
Merge pull request #9 from zirenjin/master
zhaiwenxi Jun 7, 2026
17c87b0
Merge branch 'deepmodeling:master' into master
zhaiwenxi Jun 7, 2026
e28c130
refactor(demo): replace fit_evaluate.py with quickstart.ipynb and upd…
zirenjin Jun 8, 2026
d8dfc77
docs(dpa_tools): update README
zirenjin Jun 8, 2026
6f10474
docs(demo): update quickstart notebook
zirenjin Jun 8, 2026
537d0a3
docs(demo): update quickstart notebook
zirenjin Jun 8, 2026
8d35b91
Merge pull request #10 from zirenjin/master
zhaiwenxi Jun 8, 2026
242d718
feat(dpa_tools): add formula_to_npy — composition formula CSV + POSCA…
zirenjin Jun 8, 2026
88cad4f
fix(formula): auto-detect CSV delimiter (tab or comma)
zirenjin Jun 8, 2026
ec44e80
docs: remove redundant formula_to_npy example in README
zirenjin Jun 8, 2026
b18861d
docs(finetuner): rewrite DPAFineTuner class docstring — all 4 strateg…
zirenjin Jun 8, 2026
83e775d
refactor: move dpa_tools to top-level package, update all import paths
zirenjin Jun 8, 2026
91dfae4
docs: update demo path to examples/dpa_tools
zirenjin Jun 8, 2026
4bdbfc4
refactor: promote dpa from dp subcommand to standalone CLI
zirenjin Jun 8, 2026
3d3a695
docs: remove stale dpa_tools section from top-level README
zirenjin Jun 8, 2026
0ce0037
fix: include dpa_tools in wheel.packages so pip install ships it
zirenjin Jun 9, 2026
8a83a84
docs: add input_formats.md for dpa data convert; test: add formula pi…
zirenjin Jun 9, 2026
1207d2f
feat(DPATrainer): add _validate_fparam for per-frame condition input
zirenjin Jun 9, 2026
0a1081b
feat(DPAFineTuner): accept and forward fparam_dim to DPATrainer / MFT…
zirenjin Jun 9, 2026
adea98f
feat(MFTFineTuner): add fparam_dim support with validation and fittin…
zirenjin Jun 9, 2026
1d772eb
feat(cli): add --fparam-dim argument to dpa fit subcommand
zirenjin Jun 9, 2026
17dc9d2
test(fparam): add 14 tests for fparam support across all strategies
zirenjin Jun 9, 2026
e334a98
docs: rename CLI command from dpa to dpaad (package: dpa-adapt)
zirenjin Jun 9, 2026
38a6b05
docs: rename DPA Tools to dpa-adapt (ADAPT), restructure quick start …
zirenjin Jun 9, 2026
9eb7229
refactor: rename dpa_tools -> dpa_adapt, dpa-tools -> dpa-adapt
zirenjin Jun 9, 2026
1fed517
fix: replace os.environ.setdefault with standard os.environ.get pattern
zirenjin Jun 9, 2026
d3c5550
docs: update dpa-adapt README and quick_start notebook
zirenjin Jun 9, 2026
124099b
Update dpa-adapt docs and example README
zhaiwenxi Jun 9, 2026
ce01d7c
Merge branch 'master' into docs/update-dpa-adapt-example
zhaiwenxi Jun 9, 2026
3e96f10
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 9, 2026
c5eddb2
Merge pull request #12 from zhaiwenxi/docs/update-dpa-adapt-example
zhaiwenxi Jun 9, 2026
a53f38f
fix: update cibuildwheel from v3.4 to v4.0 for newer manylinux images
zirenjin Jun 10, 2026
74ecc4c
fix: update test imports from deepmd.dpa_adapt to dpa_adapt
zirenjin Jun 10, 2026
15740eb
refactor: rename property_tools_tests.yml to dpa_adapt_tests.yml
zirenjin Jun 10, 2026
b3e2b2c
fix: re-apply deepmd.dpa_adapt -> dpa_adapt import fixes after rebase
zirenjin Jun 10, 2026
d151db3
fix: add retry logic to docker build step for registry timeouts
zirenjin Jun 10, 2026
b797881
fix: use temp files instead of heredocs for docker tag/label parsing
zirenjin Jun 10, 2026
c819c26
debug: add verbose output for docker tag/label parsing
zirenjin Jun 10, 2026
b52dc0e
fix: use bash array for docker args to preserve spaces in label/tag v…
zirenjin Jun 10, 2026
e93ca07
Merge pull request #13 from zirenjin/master
zhaiwenxi Jun 10, 2026
510392a
Merge branch 'deepmodeling:master' into master
zhaiwenxi Jun 11, 2026
e445128
Merge dpa-adapt updates
zhaiwenxi Jun 11, 2026
53bbeec
Fix formula auto_convert seed argument
zhaiwenxi Jun 11, 2026
d71ae5e
Merge pull request #14 from zhaiwenxi/merge-preserve-both
zhaiwenxi Jun 11, 2026
ad757f0
Update DPA adapt input format handling
zhaiwenxi Jun 12, 2026
9ecabda
Merge pull request #15 from zhaiwenxi/merge-preserve-both
zhaiwenxi Jun 12, 2026
bc7336e
Resolve pretrained model names across DPA adapt strategies
zhaiwenxi Jun 12, 2026
c09bfd4
Update DPA adapt implementation and docs
zhaiwenxi Jun 12, 2026
9f1a26b
Merge pull request #16 from zhaiwenxi/dpa-adapt-resolve-pretrained-al…
zhaiwenxi Jun 12, 2026
5a6400c
Update dpa-adapt docs and CLI naming
zhaiwenxi Jun 12, 2026
2767008
Merge pull request #17 from zhaiwenxi/dpa-adapt-resolve-pretrained-al…
zhaiwenxi Jun 12, 2026
7abb52e
refactor(dpa-adapt): unify conversion entrypoint
zirenjin Jun 12, 2026
0ad7865
fix(dpa-adapt): support headerless formula inputs
zirenjin Jun 12, 2026
b904848
fix(dpa-adapt): support common formula delimiters
zirenjin Jun 12, 2026
b89fa6d
Merge pull request #18 from zirenjin/master
zhaiwenxi Jun 13, 2026
2eb5f8c
Merge branch 'deepmodeling:master' into master
zhaiwenxi Jun 13, 2026
61a8e5f
Update dpa_adapt scripts and docs
zhaiwenxi Jun 13, 2026
2e476ec
Handle path-like pretrained model paths
zhaiwenxi Jun 13, 2026
a1d8832
Merge pull request #19 from zhaiwenxi/fix-dpa-adapt-pathlike-cli
zhaiwenxi Jun 13, 2026
c6a09ca
Update dpa_adapt README example
zhaiwenxi Jun 13, 2026
9237515
Merge pull request #20 from zhaiwenxi/update-dpa-adapt-readme
zhaiwenxi Jun 13, 2026
d3c55ee
feat(dpa_adapt): auto-read fparam.npy for all strategies, remove cond…
zirenjin Jun 13, 2026
159db76
docs(dpa_adapt): clarify group_by usage for cross-validation
zirenjin Jun 13, 2026
441d31d
fix(tests/dpa_adapt): update tests for removed conditions= param and …
zirenjin Jun 14, 2026
26fccd1
Merge pull request #21 from zirenjin/master
zhaiwenxi Jun 14, 2026
aaee72f
docs: show lr and batch size for dpa adapt tuning
zhaiwenxi Jun 15, 2026
2a48e27
feat(dpa_adapt): auto-detect single vs multi-system in attach_labels
zirenjin Jun 15, 2026
8e7c1ff
Merge pull request #22 from zhaiwenxi/docs-dpa-adapt-lr-batch-size
zhaiwenxi Jun 15, 2026
e3fe821
docs: remove extxyz format (broken in dpdata 1.0.2)
zirenjin Jun 15, 2026
b8e0868
Merge pull request #23 from zirenjin/master
zhaiwenxi Jun 15, 2026
771bcdd
feat: support scripted prediction for dpa adapt training
zhaiwenxi Jun 15, 2026
e155bfe
Merge pull request #25 from zhaiwenxi/feat-dpa-adapt-scripted-trainin…
zhaiwenxi Jun 15, 2026
8125a77
feat(dpa_adapt): add predict() to MFTFineTuner for downstream propert…
zirenjin Jun 15, 2026
7b8bd61
Merge pull request #26 from zirenjin/master
zhaiwenxi Jun 15, 2026
7900e78
Merge branch 'deepmodeling:master' into master
zhaiwenxi Jun 15, 2026
8ee150a
docs: add dpa adapt finetune evaluation example
zhaiwenxi Jun 15, 2026
33cfc41
Merge pull request #27 from zhaiwenxi/feat-dpa-adapt-scripted-trainin…
zhaiwenxi Jun 15, 2026
8aabdbe
Merge branch 'deepmodeling:master' into master
zhaiwenxi Jun 15, 2026
945d524
fix: guard _sklearn._device assignment against None
zirenjin Jun 16, 2026
53325b6
Merge branch 'deepmodeling:master' into master
zhaiwenxi Jun 16, 2026
1af9d60
fix(pt): stop plain pt dp test from eager-loading pt_expt custom-op f…
Jun 16, 2026
59e8c4e
test(pt_expt): snapshot full _registered set in tabulate_ops test
Jun 16, 2026
a107933
docs: update dpa_adapt README to match actual scripts
Jun 17, 2026
e6cc10b
Merge pull request #28 from zhaiwenxi/update-dpa-adapt-readme
zhaiwenxi Jun 17, 2026
1881021
Merge branch 'deepmodeling:master' into master
zhaiwenxi Jun 17, 2026
734c79c
docs: rename scripts to frozen_sklearn / frozen_head for clarity
Jun 17, 2026
6c1fea3
Merge pull request #29 from zhaiwenxi/update-dpa-adapt-readme
zhaiwenxi Jun 17, 2026
0c1671c
feat(dpa_adapt): expose decay_steps, warmup_steps, and fitting_net_pa…
Jun 17, 2026
de9c87b
docs(dpa_adapt): expand frozen_head/finetune parameter reference in g…
Jun 17, 2026
b1476c9
feat(dpa_adapt): add decay_steps and warmup_steps support to MFT stra…
Jun 17, 2026
9ca0229
docs(dpa_adapt): restructure strategy docs into separate subsections …
Jun 17, 2026
ab5fbc7
Merge pull request #30 from zhaiwenxi/update-dpa-adapt-readme
zhaiwenxi Jun 17, 2026
e046dd9
refactor(dpa_adapt): unify MFT type_map, fix defaults, improve error …
Jun 17, 2026
7e92052
fix(dpa_adapt): add property_name to MFTFineTuner test constructions
Jun 17, 2026
7a99bb7
Merge branch 'zhaiwenxi:master' into master
zirenjin Jun 17, 2026
e1f4c4d
fix(tests): set mock torch.Tensor to a real class to fix Python 3.14 …
zirenjin Jun 17, 2026
02a7c44
Merge pull request #33 from zhaiwenxi/refactor-mft-type-map
zhaiwenxi Jun 17, 2026
cbba69f
Merge branch 'zhaiwenxi:master' into master
zirenjin Jun 17, 2026
2d0212e
fix(ci): handle network timeout errors in uv retry script
zirenjin Jun 17, 2026
419d326
Fix unicode headers in dp test detail output
zhaiwenxi Jun 18, 2026
a692ac4
Harden dpa_adapt subprocess and example workflows
zhaiwenxi Jun 18, 2026
b9417f2
Merge pull request #35 from zhaiwenxi/fix-utf8-test-detail-output
zhaiwenxi Jun 19, 2026
96a7bb7
Merge branch 'master' into master
zhaiwenxi Jun 19, 2026
c9b59d7
Merge pull request #31 from zirenjin/master
zhaiwenxi Jun 19, 2026
4127b14
ci: align build wheel workflow with upstream
zhaiwenxi Jun 19, 2026
b186cdb
Merge pull request #36 from zhaiwenxi/sync-build-wheel-upstream
zhaiwenxi Jun 20, 2026
cee0193
Merge branch 'deepmodeling:master' into master
zhaiwenxi Jun 20, 2026
5bd3e07
Merge branch 'deepmodeling:master' into master
zhaiwenxi Jun 22, 2026
7111f67
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 22, 2026
ac282d1
Merge branch 'deepmodeling:master' into master
zhaiwenxi Jun 23, 2026
9dd6b4b
Update DPA-ADAPT demo and README links
zhaiwenxi Jun 23, 2026
97e9b8e
Merge pull request #38 from zhaiwenxi/adapt-demo-readme-update
zhaiwenxi Jun 24, 2026
dd6dc9e
Merge branch 'deepmodeling:master' into master
zhaiwenxi Jun 24, 2026
fe37779
fix(dpa-adapt): address cache and freeze review blockers
zirenjin Jun 24, 2026
c137d19
fix(dpa-adapt): fall back to forward_embedding() when descriptor hook…
zirenjin Jun 24, 2026
ffeaa12
test(dpa-adapt): skip forward_embedding tests when torch is mocked in CI
zirenjin Jun 24, 2026
11a47f8
Fix DPA-ADAPT docs and backend helpers
zhaiwenxi Jun 24, 2026
1e755b2
fix(dpa-adapt): use dict access for forward_embedding return value
zirenjin Jun 24, 2026
80edb38
test(dpa-adapt): return dict from forward_embedding test fake
zirenjin Jun 24, 2026
717c86d
Merge pull request #40 from zhaiwenxi/adapt-demo-readme-update
zhaiwenxi Jun 24, 2026
b70429c
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 24, 2026
6ea7846
Merge pull request #39 from zirenjin/master
zhaiwenxi Jun 24, 2026
c51e764
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 24, 2026
94ed4f3
fix(dpa-adapt): handle descriptor embedding fallback
zirenjin Jun 24, 2026
5526d1d
Clean up DPA-ADAPT docs workflow
zhaiwenxi Jun 24, 2026
6c3de92
Remove root DPA-ADAPT data utility script
zhaiwenxi Jun 24, 2026
683b792
Rename DPA-ADAPT docs entrypoint
zhaiwenxi Jun 24, 2026
fb6374e
Clean up DPA-ADAPT docs and tests
zhaiwenxi Jun 24, 2026
cb15eca
Merge branch 'zhaiwenxi:master' into master
zirenjin Jun 24, 2026
e54eb3a
feat(dpa-adapt): validate per-set fparam.npy row counts
zirenjin Jun 24, 2026
72d04eb
Validate MFT aux_prob at construction
zhaiwenxi Jun 24, 2026
ff2663d
Merge pull request #42 from zhaiwenxi/dpa-adapt-docs-cleanup
zhaiwenxi Jun 24, 2026
eb7ee64
Merge pull request #43 from zhaiwenxi/fix-mft-aux-prob-validation
zhaiwenxi Jun 24, 2026
9e148db
Organize DPA-ADAPT docs navigation
zhaiwenxi Jun 24, 2026
bd602f1
Merge pull request #41 from zirenjin/master
zhaiwenxi Jun 25, 2026
8d33ecc
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 25, 2026
443913e
style(dpa-adapt): route CLI output through logger to satisfy ruff T201
zirenjin Jun 25, 2026
564b077
Merge pull request #44 from zhaiwenxi/fix-mft-aux-prob-validation
zhaiwenxi Jun 25, 2026
f5f0bac
Fix DPA adapt cache and CLI edge cases
zhaiwenxi Jun 25, 2026
e4d37c6
Merge pull request #46 from zhaiwenxi/fix/dpa-adapt-cache-cli
zhaiwenxi Jun 25, 2026
651edda
Merge pull request #45 from zirenjin/master
zhaiwenxi Jun 25, 2026
d6f3d70
Fix dpa_adapt pre-commit hook failures
zhaiwenxi Jun 25, 2026
8e1493b
Merge branch 'deepmodeling:master' into master
zhaiwenxi Jun 25, 2026
e3b6126
Merge pull request #47 from zhaiwenxi/fix/pre-commit-hooks
zhaiwenxi Jun 25, 2026
bc1fddd
Merge branch 'deepmodeling:master' into master
zhaiwenxi Jun 25, 2026
8966070
fix(dpa-adapt): resolve all pre-commit ruff errors and descriptor hoo…
zirenjin Jun 25, 2026
dd91555
Merge pull request #48 from zirenjin/master
zhaiwenxi Jun 25, 2026
2c6bcfd
style(dpa-adapt): fix DeepMD → DeePMD capitalization
zirenjin Jun 26, 2026
63a2902
Fix dpa_adapt pre-commit formatting
zhaiwenxi Jun 26, 2026
71f8bb2
Merge branch 'zhaiwenxi:master' into master
zirenjin Jun 26, 2026
659d090
Merge branch 'deepmodeling:master' into master
zhaiwenxi Jun 26, 2026
ebb2f58
Fix remaining dpa_adapt capitalization checks
zhaiwenxi Jun 26, 2026
3ed1d68
@
zhaiwenxi Jun 26, 2026
289bb96
Merge branch 'zhaiwenxi:master' into master
zirenjin Jun 26, 2026
5e082a0
fix(dpa-adapt): resolve desc_cache ↔ finetuner import cycle
zirenjin Jun 26, 2026
6b5277f
Merge pull request #49 from zhaiwenxi/fix/codeql-issues
zhaiwenxi Jun 26, 2026
6d15369
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 26, 2026
e38f5da
fix(dpa-adapt): drop dead setup in skipped CV test
zirenjin Jun 26, 2026
bf81301
docs(dpa-adapt): fix Input Formats numbering and cap CLI section depth
zirenjin Jun 26, 2026
89d353e
Merge zhaiwenxi/master into master
zirenjin Jun 26, 2026
d4cad11
Merge pull request #50 from zirenjin/master
zhaiwenxi Jun 26, 2026
c7902f8
fix(dpa-adapt): address PR review blockers (MFT, fparam, stray test)
zirenjin Jun 26, 2026
4bc28e8
fix(dpa-adapt): drop unused _LOG in desc_cache (CodeQL)
zirenjin Jun 26, 2026
fb27489
Merge pull request #51 from zirenjin/master
zhaiwenxi Jun 27, 2026
c6f9e91
Merge branch 'deepmodeling:master' into master
zhaiwenxi Jun 27, 2026
f29e7d8
Merge branch 'deepmodeling:master' into master
zhaiwenxi Jun 27, 2026
8e2d088
Fix dpa-adapt review follow-ups
zhaiwenxi Jun 27, 2026
eaf5c59
Merge zhaiwenxi/fix-dpa-adapt-review-followups into master
zirenjin Jun 27, 2026
9b854aa
test(dpa-adapt): lock multi-system attach_labels shape semantics
zirenjin Jun 27, 2026
c6b40ce
fix(dpa-adapt): remove duplicate _LOG assignment and add debug loggin…
zhaiwenxi Jun 27, 2026
6de5846
Fix DPA adapt type map validation
zhaiwenxi Jun 27, 2026
d40d008
Merge pull request #52 from zhaiwenxi/fix/dpa-adapt-review-followups
zhaiwenxi Jun 28, 2026
e2a6f4a
Merge branch 'master' into master
zhaiwenxi Jun 28, 2026
70b5988
Revert "Merge branch 'master' into master"
zhaiwenxi Jun 28, 2026
629dc3f
Merge branch 'master' into master
zhaiwenxi Jun 28, 2026
4df4321
Merge pull request #53 from zirenjin/master
zhaiwenxi Jun 28, 2026
e2a0524
Merge branch 'master' into master
zhaiwenxi Jun 28, 2026
21f0b97
refactor(dpa-adapt): remove formula-table conversion feature
zirenjin Jun 30, 2026
5f5e735
chore(dpa-adapt): remove local output paths from .gitignore
zirenjin Jun 30, 2026
d6e4ed3
Merge pull request #54 from zirenjin/chore/remove-formula-feature
zhaiwenxi Jun 30, 2026
c47834c
Merge branch 'master' into master
zhaiwenxi Jun 30, 2026
ba1f17c
fix(dpa-adapt): resolve type-map validation, cache identity, label lo…
zirenjin Jun 30, 2026
6605d5d
style(dpa-adapt): remove redundant quotes from type annotation in _ha…
zirenjin Jun 30, 2026
9f6ca86
style(dpa-adapt): apply isort and ruff format to changed modules
zirenjin Jun 30, 2026
13f3fb4
Merge branch 'zhaiwenxi:master' into chore/remove-formula-feature
zirenjin Jun 30, 2026
83b5116
refactor(dpa-adapt): extract shared validators/helpers to remove revi…
zirenjin Jun 30, 2026
d3ab17d
test(dpa-adapt): stop mock-torch test files from leaking into the ses…
zirenjin Jun 30, 2026
8807d3d
Merge pull request #55 from zirenjin/chore/remove-formula-feature
zhaiwenxi Jul 1, 2026
88f5dad
Merge branch 'master' into master
zhaiwenxi Jul 1, 2026
a7624ca
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jul 1, 2026
3f1f947
Merge branch 'master' into master
zhaiwenxi Jul 1, 2026
7a1afbe
Fix CodeQL torch import warnings
zhaiwenxi Jul 1, 2026
b8d63ed
Potential fix for pull request finding 'CodeQL / Unused global variable'
zhaiwenxi Jul 1, 2026
8b636d9
Potential fix for pull request finding 'CodeQL / Unused global variable'
zhaiwenxi Jul 1, 2026
f06ddce
Merge pull request #56 from zhaiwenxi/fix-codeql-torch-imports
zhaiwenxi Jul 1, 2026
6268058
Merge branch 'master' into master
zhaiwenxi Jul 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/test_python.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ jobs:
HOROVOD_WITH_MPI: 1
# https://cmake.org/cmake/help/latest/variable/CMAKE_POLICY_VERSION_MINIMUM.html
CMAKE_POLICY_VERSION_MINIMUM: 3.5
UV_HTTP_TIMEOUT: 120
- run: dp --version
- name: Get durations from cache
uses: actions/cache@v6
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ For more information, check the [documentation](https://deepmd.readthedocs.io/).
- **implements the Deep Potential series models**, which have been successfully applied to finite and extended systems, including organic molecules, metals, semiconductors, insulators, etc.
- **implements MPI and GPU supports**, making it highly efficient for high-performance parallel and distributed computing.
- **highly modularized**, easy to adapt to different descriptors for deep learning-based potential energy models.
- **adapts pre-trained DPA models to downstream atomistic property prediction tasks with DPA-ADAPT**, a new Python API and CLI that supports frozen-descriptor scikit-learn heads, frozen property-head training, full end-to-end fine-tuning, and multi-task fine-tuning with an auxiliary force-field task. DPA-ADAPT trains on `deepmd/npy` systems and provides conversion pipelines for SMILES tables and structure or calculation files handled through dpdata. See the [DPA-ADAPT guide](doc/dpa_adapt/overview.md) and supported [input formats](doc/dpa_adapt/input_formats.md).

### License and credits

Expand Down Expand Up @@ -103,6 +104,7 @@ The code is organized as follows:

- `examples`: examples.
- `deepmd`: DeePMD-kit python modules.
- `dpa_adapt`: DPA-ADAPT package for adapting pre-trained DPA models; see the [guide](doc/dpa_adapt/overview.md) and [input formats](doc/dpa_adapt/input_formats.md).
- `source/lib`: source code of the core library.
- `source/op`: Operator (OP) implementation.
- `source/api_cc`: source code of DeePMD-kit C++ API.
Expand Down
2 changes: 2 additions & 0 deletions deepmd/__about__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# SPDX-License-Identifier: LGPL-3.0-or-later
__version__ = "0.0.0"
4 changes: 2 additions & 2 deletions deepmd/entrypoints/test.py
Original file line number Diff line number Diff line change
Expand Up @@ -307,8 +307,8 @@ def save_txt_file(
append : bool, optional
if true file will be appended instead of overwriting, by default False
"""
flags = "ab" if append else "w"
with fname.open(flags) as fp:
flags = "a" if append else "w"
with fname.open(flags, encoding="utf-8") as fp:
np.savetxt(fp, data, header=header)


Expand Down
4 changes: 2 additions & 2 deletions doc/cli.rst
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
.. _cli:

Command line interface
======================
DeePMD-kit command line interface
=================================

.. argparse::
:module: deepmd.tf.entrypoints.main
Expand Down
55 changes: 55 additions & 0 deletions doc/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@

# -- Path setup --------------------------------------------------------------

from __future__ import (
annotations,
)

import datetime

# If extensions (or modules to document with autodoc) are in another directory,
Expand Down Expand Up @@ -224,3 +228,54 @@
bibtex_bibfiles = ["../CITATIONS.bib"]

remove_from_toctrees = ["autoapi/**/*", "API_CC/*", "api_c/*", "api_core/*"]


# Auto-generated CLI reference pages (sphinx-argparse) nest a section per
# subcommand and per argument group. Under the global ``:numbered:`` toctree
# this explodes into unhelpful deep numbers (e.g. ``9.3.3.6.3.1.1.``). Cap the
# section numbering at the given depth (number of dotted components); headings
# deeper than that are left unnumbered. Only the listed pages are affected.
from typing import (
TYPE_CHECKING,
)

from docutils import (
nodes,
)

if TYPE_CHECKING:
from sphinx.application import (
Sphinx,
)

cli_secnumber_max_depth = {
"dpa_adapt/cli": 5,
}


def _cap_cli_secnumbers(app: Sphinx, doctree: nodes.document, docname: str) -> None:
"""Drop section numbers below ``cli_secnumber_max_depth`` for CLI pages."""
max_depth = cli_secnumber_max_depth.get(docname)
if max_depth is None:
return
secnumbers = app.env.toc_secnumbers.get(docname)
if not secnumbers:
return
# The empty anchor "" holds the page chapter number (e.g. ``(9, 3)``).
# It must be dropped from the map, otherwise the writer falls back to it for
# the now-unnumbered deep sections; re-attach it to the page title instead.
page_number = secnumbers.get("")
app.env.toc_secnumbers[docname] = {
anchor: number
for anchor, number in secnumbers.items()
if anchor != "" and len(number) <= max_depth
}
if page_number:
for title in doctree.findall(nodes.title):
title["secnumber"] = page_number
break


def setup(app: Sphinx) -> dict[str, bool]:
app.connect("doctree-resolved", _cap_cli_secnumbers)
return {"parallel_read_safe": True, "parallel_write_safe": True}
10 changes: 10 additions & 0 deletions doc/dpa_adapt/cli.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
DPA-ADAPT command line interface
================================

The ``dpaad`` command is a short alias for ``dpa-adapt`` and exposes the same
subcommands and options.

.. argparse::
:module: dpa_adapt.cli
:func: get_parser
:prog: dpa-adapt
15 changes: 15 additions & 0 deletions doc/dpa_adapt/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
DPA-ADAPT
=========

DPA-ADAPT adapts pretrained DPA models to downstream atomistic property
prediction tasks through Python APIs and the standalone ``dpa-adapt`` CLI.
It supports frozen-descriptor scikit-learn heads, frozen property-head
training, full fine-tuning, and multi-task fine-tuning with an auxiliary
force-field task.

.. toctree::
:maxdepth: 2

overview
input_formats
cli
146 changes: 146 additions & 0 deletions doc/dpa_adapt/input_formats.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
# Input Formats

> **Project/package name:** `dpa-adapt`
> **Python import:** `dpa_adapt`
> **Main CLI:** `dpa-adapt`
> **Optional short alias:** `dpaad`
> **Display name:** DPA-ADAPT — Atomistic DPA Adaptation for Property Tasks

`dpa-adapt data convert` and the Python `dpa_adapt.convert()` helper
auto-detect the input type and route it to the correct pipeline:
**SMILES table** → RDKit 3D conformer generation,
**structure files** → dpdata (auto-detect or explicit `--fmt`).

## SMILES Tables (CSV)

**Trigger:** file extension `.csv` **and** a SMILES column.
By default, the converter reads `SMILES`/`smiles`; use `--smiles-col` for
other column names such as `smi` or `mol`. Or pass `--fmt smiles` explicitly.

| Parameter | Default | Description |
| ------------------ | ------------- | ------------------------------------------------------------------------------------------------------------------ |
| `--smiles-col` | `SMILES` | Column name for SMILES strings |
| `--property-col` | `Property` | Input table column to read target values from; also used as the output label name |
| `--train-ratio` | `0.9` | Fraction of samples used for training set |
| `--mol-dir` | — | Directory of pre-generated `.mol`, `.sdf`, `.xyz`, or `.pdb` structure files (skips RDKit 3D conformer generation) |
| `--mol-template` | `id{row}.mol` | Filename template under `--mol-dir`; use `{row}` for the CSV row index |
| `--split-seed` | `42` | Random seed for train/valid splitting |
| `--conformer-seed` | `42` | Random seed for RDKit 3D conformer generation |

```bash
# Auto-detected via SMILES column
dpa-adapt data convert --input molecules.csv --output ./npy \
--property-col homo
# Short alias
dpaad data convert --input molecules.csv --output ./npy \
--property-col homo

# Explicit fmt + custom column names
dpa-adapt data convert --input data.csv --output ./npy --fmt smiles \
--smiles-col smi --property-col GAP --train-ratio 0.85 \
--split-seed 42 --conformer-seed 43
# Short alias
dpaad data convert --input data.csv --output ./npy --fmt smiles \
--smiles-col smi --property-col GAP --train-ratio 0.85 \
--split-seed 42 --conformer-seed 43
```

## Structure Files via dpdata

**Trigger:** inputs not routed to the SMILES pipeline. This means `--fmt` is
not `smiles`; when `--fmt` is omitted, CSV inputs are routed here only if they
do not contain a recognized SMILES column.
Calls dpdata for format auto-detection or explicit conversion.

### Common Formats

| `--fmt` value | Typical file(s) | Notes |
| -------------------------------------------------------- | ----------------------------- | -------------------------------------- |
| `xyz` | `*.xyz` | Plain XYZ |
| `vasp/poscar` / `vasp/contcar` | `POSCAR`, `CONTCAR` | VASP input/final structure |
| `vasp/outcar` | `OUTCAR` | VASP output (energies, forces, stress) |
| `vasp/xml` | `vasprun.xml` | VASP XML output |
| `vasp/string` | VASP structure string | VASP structure from a string |
| `abacus/stru` / `stru` | `STRU` | ABACUS input structure |
| `abacus/scf` / `abacus/pw/scf` / `abacus/lcao/scf` | SCF output | ABACUS SCF calculation |
| `abacus/md` / `abacus/pw/md` / `abacus/lcao/md` | MD output | ABACUS molecular dynamics |
| `abacus/relax` / `abacus/pw/relax` / `abacus/lcao/relax` | Relax output | ABACUS relaxation |
| `cp2k/aimd_output` | CP2K MD output | CP2K AIMD output file |
| `cp2k/output` | CP2K SCF output | CP2K single-point output |
| `deepmd/raw` | `set.*/` dirs | DeePMD-kit raw format |
| `deepmd/comp` / `deepmd/npy` | `set.*/` dirs | DeePMD-kit compressed/npy format |
| `deepmd/npy/mixed` | mixed `deepmd/npy` dir | DeePMD-kit mixed npy format |
| `deepmd/hdf5` | `*.hdf5` | DeePMD-kit HDF5 format |
| `lammps/dump` / `dump` | `dump.*` | LAMMPS dump trajectory |
| `lammps/lmp` / `lmp` | `*.lmp` | LAMMPS data file |
| `qe/cp/traj` | CP trajectory | Quantum ESPRESSO Car-Parrinello MD |
| `qe/pw/scf` | PWscf output | Quantum ESPRESSO PWscf |
| `siesta/output` | Siesta output | SIESTA SCF output |
| `siesta/aimd_output` | Siesta MD output | SIESTA AIMD output |
| `gaussian/log` | `*.log` | Gaussian log file |
| `gaussian/fchk` | `*.fchk` | Gaussian formatted checkpoint |
| `gaussian/md` | Gaussian MD output | Gaussian MD trajectory |
| `gaussian/gjf` | `*.gjf` | Gaussian input file |
| `amber/md` | Amber MD output | Amber MD trajectory |
| `gromacs/gro` / `gro` | `*.gro` | GROMACS coordinate file |
| `pwmat/output` / `pwmat/movement` / `pwmat/mlmd` | `REPORT`, `MOVEMENT`, `MLMD` | PWmat output / movement / MLMD |
| `pwmat/final.config` / `pwmat/atom.config` | `final.config`, `atom.config` | PWmat final/input structure |
| `fhi_aims/output` / `fhi_aims/md` | FHI-aims output/MD | FHI-aims calculation or MD trajectory |
| `fhi_aims/scf` | FHI-aims SCF output | FHI-aims SCF |
| `psi4/out` | Psi4 output | Psi4 calculation output |
| `psi4/inp` | Psi4 input | Psi4 input file |
| `orca/spout` | ORCA output | ORCA single-point output |
| `sqm/out` | SQM output | SQM output |
| `sqm/in` | SQM input | SQM input |
| `openmx/md` | OpenMX MD output | OpenMX MD trajectory |
| `n2p2` | n2p2 output | n2p2/NNPack output |
| `dftbplus` | DFTB+ output | DFTB+ detailed.xml |
| `mol` / `mol_file` | `*.mol` | MDL Molfile |
| `sdf` / `sdf_file` | `*.sdf` | MDL SDFile |
| `ase/structure` | Any ASE format | ASE structure (single frame) |
| `ase/traj` | Any ASE trajectory | ASE trajectory (multi-frame) |
| `pymatgen/structure` | pymatgen objects | pymatgen Structure |
| `pymatgen/molecule` | pymatgen objects | pymatgen Molecule |
| `pymatgen/computedstructureentry` | pymatgen objects | pymatgen ComputedStructureEntry |
| `lmdb` | LMDB dir | DeePMD-kit LMDB format |
| `list` | List-format dir | List of system directories |
| `3dmol` | 3Dmol format | 3Dmol.js format |

You can omit `--fmt` and let dpdata infer the input format from the file name
or content. For example, files named `POSCAR`, `OUTCAR`, or `*.xyz` are often
recognized automatically. Use `--fmt` when the file name is ambiguous or
auto-detection fails.

### Single file

```bash
dpa-adapt data convert --input POSCAR --output ./npy
dpaad data convert --input POSCAR --output ./npy

dpa-adapt data convert --input OUTCAR --output ./npy --fmt vasp/outcar
dpaad data convert --input OUTCAR --output ./npy --fmt vasp/outcar

dpa-adapt data convert --input traj.xyz --output ./npy --fmt xyz
dpaad data convert --input traj.xyz --output ./npy --fmt xyz
```

### Glob patterns

When `--input` contains wildcards (`*`, `?`, `[`), conversion uses mirrored
batch output:

- **1 or more matches** → each matched file is converted into an output
directory that mirrors its path relative to the non-wildcard prefix.
- **0 matches** → `FileNotFoundError`.
- A `manifest.json` is written into the output root, recording converted and
skipped files.

```bash
# Glob output mirrors the input tree under ./npy_root
dpa-adapt data convert --input "calcs/**/OUTCAR" --output ./npy_root --fmt vasp/outcar
dpaad data convert --input "calcs/**/OUTCAR" --output ./npy_root --fmt vasp/outcar
```

For example, `calcs/run1/OUTCAR` is written as `npy_root/run1/OUTCAR/`.
When `--strict` is set, the first conversion error fails immediately. Without
it, errors are skipped and logged in the manifest.
Loading
Loading