MDescriptor 0.2.2__tar.gz → 0.2.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/PKG-INFO +84 -9
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/README.md +57 -3
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/src/common/control.cpp +5 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/src/common/nep.cpp +15 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/src/standalone/ace.cpp +1 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/src/standalone/mtp.cpp +3 -0
- mdescriptor-0.2.3/docs/descriptor-inventory.md +110 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/pyproject.toml +28 -3
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/scripts/check_descriptor_inventory.py +37 -6
- mdescriptor-0.2.3/src/mdescriptor/__init__.py +89 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/_version.py +3 -3
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/core/adapter.py +314 -100
- mdescriptor-0.2.3/src/mdescriptor/core/control.py +88 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/core/descriptor.py +38 -4
- mdescriptor-0.2.3/src/mdescriptor/core/errors.py +108 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/core/input.py +64 -8
- mdescriptor-0.2.3/src/mdescriptor/core/json_value.py +112 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/core/model_adapter.py +62 -29
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/core/options.py +3 -27
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/core/result.py +202 -32
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/core/species.py +30 -10
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/_kernels/ace.py +104 -27
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/_kernels/c00ps_mlff.py +1 -1
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/_kernels/core.py +23 -4
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/_kernels/extra.py +9 -3
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/_kernels/mtp.py +7 -1
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/_kernels/soap_turbo.py +43 -4
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/models/__init__.py +15 -15
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/models/resource.py +2 -0
- mdescriptor-0.2.3/src/mdescriptor/registry/__init__.py +211 -0
- mdescriptor-0.2.3/src/mdescriptor/registry/builtins.py +653 -0
- mdescriptor-0.2.3/src/mdescriptor/registry/info.py +581 -0
- mdescriptor-0.2.3/src/mdescriptor/registry/model_defaults.py +41 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/registry/spec.py +5 -0
- mdescriptor-0.2.3/tests/contracts/test_descriptor_info.py +383 -0
- mdescriptor-0.2.3/tests/contracts/test_input_schema.py +48 -0
- mdescriptor-0.2.3/tests/contracts/test_public_api.py +472 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/contracts/test_result_schema.py +41 -1
- mdescriptor-0.2.3/tests/external_reference/__init__.py +1 -0
- mdescriptor-0.2.3/tests/external_reference/test_deepmd.py +113 -0
- mdescriptor-0.2.3/tests/external_reference/test_dscribe.py +289 -0
- mdescriptor-0.2.3/tests/external_reference/test_featomic.py +356 -0
- mdescriptor-0.2.3/tests/external_reference/test_nep_adapters.py +45 -0
- mdescriptor-0.2.3/tests/external_reference/test_pyxtalff.py +144 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/dpa4/manifest.json +10 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/dpa4c/manifest.json +10 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/ewaldsummatrix/manifest.json +2 -2
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/nep/manifest.json +10 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/sinematrix/manifest.json +1 -1
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_ace.py +30 -1
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_all_descriptors.py +0 -86
- mdescriptor-0.2.3/tests/test_soap_acsf_advanced.py +40 -0
- mdescriptor-0.2.2/docs/descriptor-cpp-plan.md +0 -75
- mdescriptor-0.2.2/docs/descriptor-inventory.md +0 -93
- mdescriptor-0.2.2/docs/ecosystem-comparison.md +0 -90
- mdescriptor-0.2.2/docs/file-inventory.md +0 -276
- mdescriptor-0.2.2/docs/plan.md +0 -60
- mdescriptor-0.2.2/docs/real-data-benchmark.md +0 -70
- mdescriptor-0.2.2/src/mdescriptor/__init__.py +0 -53
- mdescriptor-0.2.2/src/mdescriptor/core/control.py +0 -34
- mdescriptor-0.2.2/src/mdescriptor/core/errors.py +0 -38
- mdescriptor-0.2.2/src/mdescriptor/registry/__init__.py +0 -68
- mdescriptor-0.2.2/src/mdescriptor/registry/builtins.py +0 -50
- mdescriptor-0.2.2/tests/contracts/test_public_api.py +0 -208
- mdescriptor-0.2.2/tests/reference/test_dscribe_reference.py +0 -153
- mdescriptor-0.2.2/tests/test_soap_acsf_advanced.py +0 -114
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/CMakeLists.txt +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/LICENSE +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/include/mdescriptor/ace.hpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/include/mdescriptor/descriptor.hpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/include/mdescriptor/detail/batch.hpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/include/mdescriptor/detail/blas.hpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/include/mdescriptor/detail/control.hpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/include/mdescriptor/detail/math3.hpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/include/mdescriptor/detail/species.hpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/include/mdescriptor/dpa4.hpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/include/mdescriptor/dpa4_wigner.hpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/include/mdescriptor/dpa4c.hpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/include/mdescriptor/extra.hpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/include/mdescriptor/local_descriptors.hpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/include/mdescriptor/mtp4.hpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/include/mdescriptor/mtp_cinf_coeffs.hpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/include/mdescriptor/neighbor.hpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/include/mdescriptor/nep.hpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/src/bindings/module.cpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/src/common/descriptor_common.hpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/src/common/extra_common.hpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/src/common/local_common.hpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/src/common/local_spherical_common.hpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/src/common/matrix_common.hpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/src/common/neighbor.cpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/src/model_backed/dpa4.cpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/src/model_backed/dpa4_wigner.cpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/src/model_backed/dpa4c.cpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/src/standalone/acsf.cpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/src/standalone/atomic_composition.cpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/src/standalone/c00ps_mlff.cpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/src/standalone/coulomb_matrix.cpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/src/standalone/ead.cpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/src/standalone/ewald_sum_matrix.cpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/src/standalone/matrix_dispatch.cpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/src/standalone/mbtr.cpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/src/standalone/mtp4.cpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/src/standalone/neighbor_list.cpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/src/standalone/rotational_descriptors.cpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/src/standalone/sine_matrix.cpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/src/standalone/soap.cpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/src/standalone/soap_turbo.cpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/src/standalone/sorted_distances.cpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/src/standalone/spherical_expansion.cpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/cpp/src/standalone/spherical_expansion_by_pair.cpp +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/scripts/benchmark_dpa_native.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/scripts/benchmarking/__init__.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/scripts/benchmarking/benchmark_openmp_small.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/scripts/benchmarking/run_descriptor_benchmark.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/scripts/build_reference_wheel.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/scripts/descriptor_reference.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/scripts/generate_descriptor_goldens.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/scripts/promote_descriptor_golden.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/scripts/run_benchmark.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/scripts/verify_wheel.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/_native.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/_native.pyi +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/core/__init__.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/__init__.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/_kernels/__init__.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/_kernels/dpa4.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/_kernels/dpa4c.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/_kernels/local.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/_kernels/nep.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/_kernels/rotational.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/__init__.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/LICENSE-LGPL-3.0-or-later.txt +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/NOTICE.md +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/__init__.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/__init__.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/api.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/common.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/__init__.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/array_api.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/common.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/__init__.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/base_descriptor.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/__init__.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/activation.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/attention.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/attn_res.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/block.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/cartesian.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/edge_cache.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/embedding.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/ffn.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/grid_net.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/indexing.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/mlp.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/norm.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/projection.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/radial.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/so2.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/so3.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/utils.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/wignerd.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4c.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4c_nn/__init__.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4c_nn/bispectrum.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4c_nn/charge_state.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4c_nn/geometry.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4c_nn/pair_film.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4c_nn/readout.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4c_nn/spin.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/make_base_descriptor.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/__init__.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/env_mat.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/exclude_mask.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/lebedev.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/lebedev_rules.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/neighbor_graph/__init__.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/neighbor_graph/builder.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/neighbor_graph/csr.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/neighbor_graph/from_ijs.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/neighbor_graph/graph.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/neighbor_graph/pairs.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/neighbor_graph/segment.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/network.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/nlist.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/region.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/safe_gradient.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/seed.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/spherical_harmonics.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/type_embed.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/env.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/utils/__init__.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/utils/charge_state.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/utils/plugin.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/utils/version.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/weights.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/dpa.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/dpa4/__init__.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/dpa4/descriptor.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/dpa4c/__init__.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/dpa4c/descriptor.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/graph.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/nep/__init__.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/model_backed/nep/descriptor.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/standalone/__init__.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/standalone/ace.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/standalone/acsf.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/standalone/c00ps_mlff.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/standalone/local/__init__.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/standalone/many_body/__init__.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/standalone/matrices/__init__.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/standalone/mtp.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/standalone/rotational/__init__.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/standalone/soap.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/descriptors/standalone/soap_turbo.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/models/assets/DPA4-Air-OMat24-v20260704.pt +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/models/assets/DPA4C-Air-OMat24-v20260819.pt +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/models/assets/nep89_20250409.txt +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/models/resolver.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/models/session.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/src/mdescriptor/registry/registry.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/__init__.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/_golden.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/_public.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/contracts/test_capabilities.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/contracts/test_model_resources.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/data/mlip4_test_mtp.json +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/ace/expected_output.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/ace/input.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/ace/manifest.json +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/acsf/expected_output.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/acsf/input.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/acsf/manifest.json +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/atomiccomposition/expected_output.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/atomiccomposition/input.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/atomiccomposition/manifest.json +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/c00psmlff/expected_output.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/c00psmlff/input.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/c00psmlff/manifest.json +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/coulombmatrix/expected_output.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/coulombmatrix/input.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/coulombmatrix/manifest.json +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/dpa4/expected_output.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/dpa4/input.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/dpa4c/expected_output.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/dpa4c/input.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/ead/expected_output.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/ead/input.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/ead/manifest.json +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/ewaldsummatrix/expected_output.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/ewaldsummatrix/input.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/lbispectrum/expected_output.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/lbispectrum/input.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/lbispectrum/manifest.json +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/lmbtr/expected_output.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/lmbtr/input.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/lmbtr/manifest.json +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/lodesphericalexpansion/expected_output.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/lodesphericalexpansion/input.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/lodesphericalexpansion/manifest.json +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/mbtr/expected_output.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/mbtr/input.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/mbtr/manifest.json +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/mtp/expected_output.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/mtp/input.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/mtp/manifest.json +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/neighborlist/expected_output.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/neighborlist/input.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/neighborlist/manifest.json +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/nep/expected_output.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/nep/input.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/sinematrix/expected_output.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/sinematrix/input.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/snap/expected_output.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/snap/input.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/snap/manifest.json +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/so3/expected_output.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/so3/input.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/so3/manifest.json +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/so4/expected_output.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/so4/input.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/so4/manifest.json +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/soap/expected_output.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/soap/input.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/soap/manifest.json +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/soappowerspectrum/expected_output.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/soappowerspectrum/input.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/soappowerspectrum/manifest.json +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/soapradialspectrum/expected_output.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/soapradialspectrum/input.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/soapradialspectrum/manifest.json +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/soapturbo/expected_output.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/soapturbo/input.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/soapturbo/manifest.json +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/sorteddistances/expected_output.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/sorteddistances/input.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/sorteddistances/manifest.json +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/sphericalexpansion/expected_output.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/sphericalexpansion/input.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/sphericalexpansion/manifest.json +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/sphericalexpansionbypair/expected_output.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/sphericalexpansionbypair/input.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/sphericalexpansionbypair/manifest.json +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/valleoganov/expected_output.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/valleoganov/input.npz +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/golden/valleoganov/manifest.json +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_ace_golden.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_acsf_golden.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_atomiccomposition_golden.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_c00ps_mlff.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_c00psmlff_golden.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_coulombmatrix_golden.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_coulombmatrix_openmp.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_descriptor_symmetry.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_dpa4.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_dpa4_golden.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_dpa4c.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_dpa4c_golden.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_ead_golden.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_ewaldsummatrix_golden.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_ewaldsummatrix_openmp.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_golden_independence.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_lbispectrum_golden.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_lmbtr_golden.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_lmbtr_openmp.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_lodesphericalexpansion_golden.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_mbtr_golden.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_mtp.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_mtp_golden.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_neighbor_graph.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_neighborlist_golden.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_nep.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_nep_golden.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_nonperiodic.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_openmp_support.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_reference.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_sinematrix_golden.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_sinematrix_openmp.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_snap_golden.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_so3_golden.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_so4_golden.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_soap_golden.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_soappowerspectrum_golden.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_soapradialspectrum_golden.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_soapturbo_golden.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_sorteddistances_golden.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_sphericalexpansion_golden.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_sphericalexpansionbypair_golden.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_valleoganov_golden.py +0 -0
- {mdescriptor-0.2.2 → mdescriptor-0.2.3}/tests/test_valleoganov_openmp.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: MDescriptor
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.3
|
|
4
4
|
Summary: Batch-oriented periodic atomic descriptors with C++17 kernels
|
|
5
5
|
License: GNU GENERAL PUBLIC LICENSE
|
|
6
6
|
Version 3, 29 June 2007
|
|
@@ -689,11 +689,32 @@ Provides-Extra: test
|
|
|
689
689
|
Requires-Dist: pytest>=8; extra == "test"
|
|
690
690
|
Requires-Dist: ase>=3.22; extra == "test"
|
|
691
691
|
Requires-Dist: scipy>=1.11; extra == "test"
|
|
692
|
-
Provides-Extra: reference
|
|
693
|
-
Requires-Dist: pytest>=8; extra == "reference"
|
|
694
|
-
Requires-Dist: ase==3.26.0; extra == "reference"
|
|
695
|
-
Requires-Dist: scipy>=1.11; extra == "reference"
|
|
696
|
-
Requires-Dist: dscribe==2.1.2; extra == "reference"
|
|
692
|
+
Provides-Extra: reference-dscribe
|
|
693
|
+
Requires-Dist: pytest>=8; extra == "reference-dscribe"
|
|
694
|
+
Requires-Dist: ase==3.26.0; extra == "reference-dscribe"
|
|
695
|
+
Requires-Dist: scipy>=1.11; extra == "reference-dscribe"
|
|
696
|
+
Requires-Dist: dscribe==2.1.2; extra == "reference-dscribe"
|
|
697
|
+
Provides-Extra: reference-featomic
|
|
698
|
+
Requires-Dist: pytest>=8; extra == "reference-featomic"
|
|
699
|
+
Requires-Dist: ase==3.26.0; extra == "reference-featomic"
|
|
700
|
+
Requires-Dist: scipy>=1.11; extra == "reference-featomic"
|
|
701
|
+
Requires-Dist: featomic==0.6.6; extra == "reference-featomic"
|
|
702
|
+
Provides-Extra: reference-pyxtalff
|
|
703
|
+
Requires-Dist: pytest>=8; extra == "reference-pyxtalff"
|
|
704
|
+
Requires-Dist: ase==3.26.0; extra == "reference-pyxtalff"
|
|
705
|
+
Requires-Dist: scipy>=1.11; extra == "reference-pyxtalff"
|
|
706
|
+
Requires-Dist: numba>=0.50.1; extra == "reference-pyxtalff"
|
|
707
|
+
Requires-Dist: pyxtal_ff==0.2.3; extra == "reference-pyxtalff"
|
|
708
|
+
Provides-Extra: reference-deepmd
|
|
709
|
+
Requires-Dist: pytest>=8; extra == "reference-deepmd"
|
|
710
|
+
Requires-Dist: ase==3.26.0; extra == "reference-deepmd"
|
|
711
|
+
Requires-Dist: scipy>=1.11; extra == "reference-deepmd"
|
|
712
|
+
Requires-Dist: deepmd-kit[torch]==3.2.0; extra == "reference-deepmd"
|
|
713
|
+
Provides-Extra: reference-nepadapters
|
|
714
|
+
Requires-Dist: pytest>=8; extra == "reference-nepadapters"
|
|
715
|
+
Requires-Dist: ase==3.26.0; extra == "reference-nepadapters"
|
|
716
|
+
Requires-Dist: scipy>=1.11; extra == "reference-nepadapters"
|
|
717
|
+
Requires-Dist: nep-adapters==1.0.2; extra == "reference-nepadapters"
|
|
697
718
|
Provides-Extra: all
|
|
698
719
|
Requires-Dist: ase>=3.22; extra == "all"
|
|
699
720
|
Requires-Dist: scipy>=1.11; extra == "all"
|
|
@@ -796,7 +817,8 @@ batch = StructureBatch(
|
|
|
796
817
|
)
|
|
797
818
|
```
|
|
798
819
|
|
|
799
|
-
`StructureBatch`
|
|
820
|
+
`StructureBatch` takes an owned, read-only snapshot of its contiguous arrays
|
|
821
|
+
and validates integer fields before narrowing, finite positions/cells,
|
|
800
822
|
nonsingular cells, positive atomic numbers, monotonic offsets and fully
|
|
801
823
|
periodic `pbc == (1, 1, 1)`. ASE conversion is available through
|
|
802
824
|
`StructureBatch.from_ase(...)`.
|
|
@@ -841,7 +863,51 @@ Instances are synchronous and not promised to be thread-safe.
|
|
|
841
863
|
`structure_ids`, row offsets, stable `labels`, JSON-safe `metadata`, per-row
|
|
842
864
|
`samples`, and `feature_count`. The descriptor itself also retains the latest
|
|
843
865
|
JSON-safe `metadata` and its `configuration` after `close()`. The standard shapes are `(N, F)`, `(S, F)`,
|
|
844
|
-
and `(P, F)` for atom, structure and pair outputs respectively.
|
|
866
|
+
and `(P, F)` for atom, structure and pair outputs respectively. Result arrays
|
|
867
|
+
are owned snapshots and exposed read-only.
|
|
868
|
+
|
|
869
|
+
## Supported descriptors / 支持的描述符
|
|
870
|
+
|
|
871
|
+
The built-in registry currently provides 28 descriptors. `None` means no model
|
|
872
|
+
file is needed; `Optional` means a model can be supplied (as with MTP); and
|
|
873
|
+
`Required` means the descriptor always resolves a local model resource. See
|
|
874
|
+
the [full descriptor inventory](docs/descriptor-inventory.md) for parameters,
|
|
875
|
+
capabilities and backend details.
|
|
876
|
+
|
|
877
|
+
内置注册表目前提供 28 个描述符。`None` 表示不需要模型文件;`Optional` 表示
|
|
878
|
+
可以提供模型(例如 MTP);`Required` 表示描述符始终解析本地模型资源。参数、
|
|
879
|
+
能力和后端详情请参阅[完整描述符清单](docs/descriptor-inventory.md)。
|
|
880
|
+
|
|
881
|
+
| Descriptor / 描述符 | Category / 类型 | Output / 输出 | Model / 模型 |
|
|
882
|
+
|---|---|---|---|
|
|
883
|
+
| `SOAP` | Local / 局部 | Structure / 结构 | `None` |
|
|
884
|
+
| `SOAPTurbo` | Local / 局部 | Atom / 原子 | `None` |
|
|
885
|
+
| `ACSF` | Local / 局部 | Atom / 原子 | `None` |
|
|
886
|
+
| `ACE` | Local / 局部 | Atom / 原子 | `None` |
|
|
887
|
+
| `CoulombMatrix` | Matrix / 矩阵 | Structure / 结构 | `None` |
|
|
888
|
+
| `SineMatrix` | Matrix / 矩阵 | Structure / 结构 | `None` |
|
|
889
|
+
| `EwaldSumMatrix` | Matrix / 矩阵 | Structure / 结构 | `None` |
|
|
890
|
+
| `MBTR` | Many-body / 多体 | Structure / 结构 | `None` |
|
|
891
|
+
| `LMBTR` | Many-body / 多体 | Atom / 原子 | `None` |
|
|
892
|
+
| `ValleOganov` | Many-body / 多体 | Structure / 结构 | `None` |
|
|
893
|
+
| `AtomicComposition` | Local / 局部 | Structure / 结构 | `None` |
|
|
894
|
+
| `NeighborList` | Local / 局部 | Pair / 原子对 | `None` |
|
|
895
|
+
| `SortedDistances` | Local / 局部 | Atom / 原子 | `None` |
|
|
896
|
+
| `SphericalExpansion` | Local / 局部 | Atom / 原子 | `None` |
|
|
897
|
+
| `SphericalExpansionByPair` | Local / 局部 | Pair / 原子对 | `None` |
|
|
898
|
+
| `SoapRadialSpectrum` | Local / 局部 | Atom / 原子 | `None` |
|
|
899
|
+
| `SoapPowerSpectrum` | Local / 局部 | Atom / 原子 | `None` |
|
|
900
|
+
| `LodeSphericalExpansion` | Local / 局部 | Atom / 原子 | `None` |
|
|
901
|
+
| `EAD` | Rotational / 旋转 | Atom / 原子 | `None` |
|
|
902
|
+
| `SO3` | Rotational / 旋转 | Atom / 原子 | `None` |
|
|
903
|
+
| `SO4` | Rotational / 旋转 | Atom / 原子 | `None` |
|
|
904
|
+
| `SNAP` | Rotational / 旋转 | Atom / 原子 | `None` |
|
|
905
|
+
| `LBispectrum` | Rotational / 旋转 | Atom / 原子 | `None` |
|
|
906
|
+
| `MTP` | Local / 局部 | Atom / 原子 | `Optional` |
|
|
907
|
+
| `C00PSMLFF` | Local / 局部 | Atom / 原子 | `None` |
|
|
908
|
+
| `NEP` | Model-backed / 模型 | Atom / 原子 | `Required` |
|
|
909
|
+
| `DPA4` | Model-backed / 模型 | Atom / 原子 | `Required` |
|
|
910
|
+
| `DPA4C` | Model-backed / 模型 | Atom / 原子 | `Required` |
|
|
845
911
|
|
|
846
912
|
## Registry / 注册表
|
|
847
913
|
|
|
@@ -853,6 +919,8 @@ import mdescriptor
|
|
|
853
919
|
from mdescriptor.descriptors import SOAP
|
|
854
920
|
|
|
855
921
|
print(mdescriptor.list_descriptors())
|
|
922
|
+
metadata = mdescriptor.describe_descriptor("SOAP")
|
|
923
|
+
runtime = mdescriptor.get_runtime_info()
|
|
856
924
|
soap = SOAP(species=[1, 8], r_cut=4.5, n_max=2, l_max=2)
|
|
857
925
|
rebuilt = mdescriptor.create_descriptor(soap.configuration)
|
|
858
926
|
|
|
@@ -863,7 +931,10 @@ child.register(my_spec)
|
|
|
863
931
|
The built-in list separates `AssetPolicy.NONE`, `OPTIONAL` (for example MTP
|
|
864
932
|
potentials), and `REQUIRED` (NEP/DPA4/DPA4C). The root package exposes stable
|
|
865
933
|
contracts, registry functions and errors only; algorithm implementations are
|
|
866
|
-
not re-exported from the root.
|
|
934
|
+
not re-exported from the root. `describe_descriptor(name)` reads static,
|
|
935
|
+
JSON-safe GUI metadata from the registry without constructing a descriptor or
|
|
936
|
+
resolving a model. `get_runtime_info()` reports the package and contract
|
|
937
|
+
schema versions, including `result_schema_version`.
|
|
867
938
|
|
|
868
939
|
## Model resources / 模型资源
|
|
869
940
|
|
|
@@ -882,6 +953,10 @@ dpa4 = DPA4(
|
|
|
882
953
|
result = dpa4.compute(batch)
|
|
883
954
|
```
|
|
884
955
|
|
|
956
|
+
For GUI configuration JSON, a model parameter may be an explicit path string
|
|
957
|
+
or the tagged object returned by `ModelResource.to_dict()`; the latter is used
|
|
958
|
+
for named/checksummed resources.
|
|
959
|
+
|
|
885
960
|
The DPA4/DPA4C checkpoint readers and NumPy reference path remain isolated
|
|
886
961
|
vendor adapters. The default inference graphs are lowered into the private
|
|
887
962
|
`mdescriptor._native` C++17/OpenMP extension.
|
|
@@ -89,7 +89,8 @@ batch = StructureBatch(
|
|
|
89
89
|
)
|
|
90
90
|
```
|
|
91
91
|
|
|
92
|
-
`StructureBatch`
|
|
92
|
+
`StructureBatch` takes an owned, read-only snapshot of its contiguous arrays
|
|
93
|
+
and validates integer fields before narrowing, finite positions/cells,
|
|
93
94
|
nonsingular cells, positive atomic numbers, monotonic offsets and fully
|
|
94
95
|
periodic `pbc == (1, 1, 1)`. ASE conversion is available through
|
|
95
96
|
`StructureBatch.from_ase(...)`.
|
|
@@ -134,7 +135,51 @@ Instances are synchronous and not promised to be thread-safe.
|
|
|
134
135
|
`structure_ids`, row offsets, stable `labels`, JSON-safe `metadata`, per-row
|
|
135
136
|
`samples`, and `feature_count`. The descriptor itself also retains the latest
|
|
136
137
|
JSON-safe `metadata` and its `configuration` after `close()`. The standard shapes are `(N, F)`, `(S, F)`,
|
|
137
|
-
and `(P, F)` for atom, structure and pair outputs respectively.
|
|
138
|
+
and `(P, F)` for atom, structure and pair outputs respectively. Result arrays
|
|
139
|
+
are owned snapshots and exposed read-only.
|
|
140
|
+
|
|
141
|
+
## Supported descriptors / 支持的描述符
|
|
142
|
+
|
|
143
|
+
The built-in registry currently provides 28 descriptors. `None` means no model
|
|
144
|
+
file is needed; `Optional` means a model can be supplied (as with MTP); and
|
|
145
|
+
`Required` means the descriptor always resolves a local model resource. See
|
|
146
|
+
the [full descriptor inventory](docs/descriptor-inventory.md) for parameters,
|
|
147
|
+
capabilities and backend details.
|
|
148
|
+
|
|
149
|
+
内置注册表目前提供 28 个描述符。`None` 表示不需要模型文件;`Optional` 表示
|
|
150
|
+
可以提供模型(例如 MTP);`Required` 表示描述符始终解析本地模型资源。参数、
|
|
151
|
+
能力和后端详情请参阅[完整描述符清单](docs/descriptor-inventory.md)。
|
|
152
|
+
|
|
153
|
+
| Descriptor / 描述符 | Category / 类型 | Output / 输出 | Model / 模型 |
|
|
154
|
+
|---|---|---|---|
|
|
155
|
+
| `SOAP` | Local / 局部 | Structure / 结构 | `None` |
|
|
156
|
+
| `SOAPTurbo` | Local / 局部 | Atom / 原子 | `None` |
|
|
157
|
+
| `ACSF` | Local / 局部 | Atom / 原子 | `None` |
|
|
158
|
+
| `ACE` | Local / 局部 | Atom / 原子 | `None` |
|
|
159
|
+
| `CoulombMatrix` | Matrix / 矩阵 | Structure / 结构 | `None` |
|
|
160
|
+
| `SineMatrix` | Matrix / 矩阵 | Structure / 结构 | `None` |
|
|
161
|
+
| `EwaldSumMatrix` | Matrix / 矩阵 | Structure / 结构 | `None` |
|
|
162
|
+
| `MBTR` | Many-body / 多体 | Structure / 结构 | `None` |
|
|
163
|
+
| `LMBTR` | Many-body / 多体 | Atom / 原子 | `None` |
|
|
164
|
+
| `ValleOganov` | Many-body / 多体 | Structure / 结构 | `None` |
|
|
165
|
+
| `AtomicComposition` | Local / 局部 | Structure / 结构 | `None` |
|
|
166
|
+
| `NeighborList` | Local / 局部 | Pair / 原子对 | `None` |
|
|
167
|
+
| `SortedDistances` | Local / 局部 | Atom / 原子 | `None` |
|
|
168
|
+
| `SphericalExpansion` | Local / 局部 | Atom / 原子 | `None` |
|
|
169
|
+
| `SphericalExpansionByPair` | Local / 局部 | Pair / 原子对 | `None` |
|
|
170
|
+
| `SoapRadialSpectrum` | Local / 局部 | Atom / 原子 | `None` |
|
|
171
|
+
| `SoapPowerSpectrum` | Local / 局部 | Atom / 原子 | `None` |
|
|
172
|
+
| `LodeSphericalExpansion` | Local / 局部 | Atom / 原子 | `None` |
|
|
173
|
+
| `EAD` | Rotational / 旋转 | Atom / 原子 | `None` |
|
|
174
|
+
| `SO3` | Rotational / 旋转 | Atom / 原子 | `None` |
|
|
175
|
+
| `SO4` | Rotational / 旋转 | Atom / 原子 | `None` |
|
|
176
|
+
| `SNAP` | Rotational / 旋转 | Atom / 原子 | `None` |
|
|
177
|
+
| `LBispectrum` | Rotational / 旋转 | Atom / 原子 | `None` |
|
|
178
|
+
| `MTP` | Local / 局部 | Atom / 原子 | `Optional` |
|
|
179
|
+
| `C00PSMLFF` | Local / 局部 | Atom / 原子 | `None` |
|
|
180
|
+
| `NEP` | Model-backed / 模型 | Atom / 原子 | `Required` |
|
|
181
|
+
| `DPA4` | Model-backed / 模型 | Atom / 原子 | `Required` |
|
|
182
|
+
| `DPA4C` | Model-backed / 模型 | Atom / 原子 | `Required` |
|
|
138
183
|
|
|
139
184
|
## Registry / 注册表
|
|
140
185
|
|
|
@@ -146,6 +191,8 @@ import mdescriptor
|
|
|
146
191
|
from mdescriptor.descriptors import SOAP
|
|
147
192
|
|
|
148
193
|
print(mdescriptor.list_descriptors())
|
|
194
|
+
metadata = mdescriptor.describe_descriptor("SOAP")
|
|
195
|
+
runtime = mdescriptor.get_runtime_info()
|
|
149
196
|
soap = SOAP(species=[1, 8], r_cut=4.5, n_max=2, l_max=2)
|
|
150
197
|
rebuilt = mdescriptor.create_descriptor(soap.configuration)
|
|
151
198
|
|
|
@@ -156,7 +203,10 @@ child.register(my_spec)
|
|
|
156
203
|
The built-in list separates `AssetPolicy.NONE`, `OPTIONAL` (for example MTP
|
|
157
204
|
potentials), and `REQUIRED` (NEP/DPA4/DPA4C). The root package exposes stable
|
|
158
205
|
contracts, registry functions and errors only; algorithm implementations are
|
|
159
|
-
not re-exported from the root.
|
|
206
|
+
not re-exported from the root. `describe_descriptor(name)` reads static,
|
|
207
|
+
JSON-safe GUI metadata from the registry without constructing a descriptor or
|
|
208
|
+
resolving a model. `get_runtime_info()` reports the package and contract
|
|
209
|
+
schema versions, including `result_schema_version`.
|
|
160
210
|
|
|
161
211
|
## Model resources / 模型资源
|
|
162
212
|
|
|
@@ -175,6 +225,10 @@ dpa4 = DPA4(
|
|
|
175
225
|
result = dpa4.compute(batch)
|
|
176
226
|
```
|
|
177
227
|
|
|
228
|
+
For GUI configuration JSON, a model parameter may be an explicit path string
|
|
229
|
+
or the tagged object returned by `ModelResource.to_dict()`; the latter is used
|
|
230
|
+
for named/checksummed resources.
|
|
231
|
+
|
|
178
232
|
The DPA4/DPA4C checkpoint readers and NumPy reference path remain isolated
|
|
179
233
|
vendor adapters. The default inference graphs are lowered into the private
|
|
180
234
|
`mdescriptor._native` C++17/OpenMP extension.
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
#include "mdescriptor/descriptor.hpp"
|
|
2
2
|
|
|
3
|
+
#include <stdexcept>
|
|
4
|
+
|
|
3
5
|
namespace mdescriptor {
|
|
4
6
|
|
|
5
7
|
void ComputeControl::reset(std::int64_t total) {
|
|
8
|
+
if (total < 0) {
|
|
9
|
+
throw std::invalid_argument("control total must be non-negative");
|
|
10
|
+
}
|
|
6
11
|
cancelled_.store(false, std::memory_order_release);
|
|
7
12
|
completed_.store(0, std::memory_order_release);
|
|
8
13
|
total_.store(total, std::memory_order_release);
|
|
@@ -693,6 +693,9 @@ void compute_nep(
|
|
|
693
693
|
int num_threads,
|
|
694
694
|
double* output,
|
|
695
695
|
const std::shared_ptr<ComputeControl>& control) {
|
|
696
|
+
if (control) {
|
|
697
|
+
control->reset(batch.structures);
|
|
698
|
+
}
|
|
696
699
|
const std::size_t radial_basis = static_cast<std::size_t>(model.basis_size_radial + 1);
|
|
697
700
|
const std::size_t angular_basis = static_cast<std::size_t>(model.basis_size_angular + 1);
|
|
698
701
|
const std::size_t radial_n = static_cast<std::size_t>(model.n_max_radial + 1);
|
|
@@ -858,6 +861,9 @@ void compute_nep(
|
|
|
858
861
|
for (std::int64_t structure = 0; structure < batch.structures; ++structure) {
|
|
859
862
|
if (control && control->cancelled()) break;
|
|
860
863
|
compute_structure(structure, radial, sums, angular, basis);
|
|
864
|
+
if (control && !control->cancelled()) {
|
|
865
|
+
control->mark_completed();
|
|
866
|
+
}
|
|
861
867
|
}
|
|
862
868
|
if (control && control->cancelled()) throw CancelledError();
|
|
863
869
|
return;
|
|
@@ -883,6 +889,9 @@ void compute_nep(
|
|
|
883
889
|
if (control && control->cancelled()) continue;
|
|
884
890
|
try {
|
|
885
891
|
compute_structure(structure, radial, sums, angular, basis);
|
|
892
|
+
if (control && !control->cancelled()) {
|
|
893
|
+
control->mark_completed();
|
|
894
|
+
}
|
|
886
895
|
} catch (...) {
|
|
887
896
|
record_error(std::current_exception());
|
|
888
897
|
}
|
|
@@ -897,6 +906,9 @@ void compute_nep(
|
|
|
897
906
|
if (control && control->cancelled()) break;
|
|
898
907
|
try {
|
|
899
908
|
compute_structure(structure, radial, sums, angular, basis);
|
|
909
|
+
if (control && !control->cancelled()) {
|
|
910
|
+
control->mark_completed();
|
|
911
|
+
}
|
|
900
912
|
} catch (...) {
|
|
901
913
|
record_error(std::current_exception());
|
|
902
914
|
break;
|
|
@@ -935,6 +947,9 @@ void compute_nep(
|
|
|
935
947
|
}
|
|
936
948
|
#endif
|
|
937
949
|
if (control && control->cancelled()) throw CancelledError();
|
|
950
|
+
if (control) {
|
|
951
|
+
control->mark_completed();
|
|
952
|
+
}
|
|
938
953
|
}
|
|
939
954
|
|
|
940
955
|
NepCalculator::NepCalculator(NepOptions options)
|
|
@@ -805,6 +805,7 @@ void AceCalculator::compute(
|
|
|
805
805
|
const std::shared_ptr<ComputeControl>& control) const {
|
|
806
806
|
if (closed()) throw std::runtime_error("ACE calculator is closed");
|
|
807
807
|
std::lock_guard<std::mutex> lock(compute_mutex_);
|
|
808
|
+
if (control) control->reset(batch.structures);
|
|
808
809
|
const auto graph = build_neighbor_graph(batch, options_.r_cut, control, options_.num_threads);
|
|
809
810
|
std::map<std::int32_t, int> species_index;
|
|
810
811
|
for (std::size_t i = 0; i < options_.species.size(); ++i) {
|
|
@@ -752,6 +752,9 @@ void MtpCalculator::compute(
|
|
|
752
752
|
throw std::runtime_error("MTP calculator is closed");
|
|
753
753
|
}
|
|
754
754
|
std::lock_guard<std::mutex> lock(compute_mutex_);
|
|
755
|
+
if (control) {
|
|
756
|
+
control->reset(batch.structures);
|
|
757
|
+
}
|
|
755
758
|
if (official_model_) {
|
|
756
759
|
if (official_model_->native_mlip4) {
|
|
757
760
|
official_model_->native_model->compute(batch, options_.species, options_.num_threads, output, control);
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# Descriptor inventory / 描述符清单
|
|
2
|
+
|
|
3
|
+
This page is generated from the immutable built-in registry. It is a
|
|
4
|
+
controlled artifact: run `python scripts/check_descriptor_inventory.py
|
|
5
|
+
--write` when a registry spec changes, and keep the `--check` gate in CI.
|
|
6
|
+
|
|
7
|
+
<!-- registry-names: SOAP, SOAPTurbo, ACSF, ACE, CoulombMatrix, SineMatrix, EwaldSumMatrix, MBTR, LMBTR, ValleOganov, AtomicComposition, NeighborList, SortedDistances, SphericalExpansion, SphericalExpansionByPair, SoapRadialSpectrum, SoapPowerSpectrum, LodeSphericalExpansion, EAD, SO3, SO4, SNAP, LBispectrum, MTP, C00PSMLFF, NEP, DPA4, DPA4C -->
|
|
8
|
+
|
|
9
|
+
| Name | Directory group | Category | Asset policy | Backend | Level | Capabilities | Parameters | Extra |
|
|
10
|
+
|---|---|---|---|---|---|---|---|---|
|
|
11
|
+
| SOAP | `standalone` | `local` | `NONE` | `cpp` | `structure` | cooperative_cancel, num_threads, sparse | species, rbf, n_max, l_max, sigma, average, weighting, r_cut, compression | `—` |
|
|
12
|
+
| SOAPTurbo | `standalone` | `local` | `NONE` | `cpp` | `atom` | cooperative_cancel, num_threads, sparse | species, alpha_max, l_max, rcut_hard, rcut_soft, nf, radial_enhancement, basis, compression, atom_sigma_r, atom_sigma_r_scaling, atom_sigma_t, atom_sigma_t_scaling, amplitude_scaling, central_weight, central_species | `—` |
|
|
13
|
+
| ACSF | `standalone` | `local` | `NONE` | `cpp` | `atom` | cooperative_cancel, num_threads, sparse | species, r_cut, g2_params, g3_params, g4_params, g5_params | `—` |
|
|
14
|
+
| ACE | `standalone` | `local` | `NONE` | `cpp` | `atom` | cooperative_cancel, num_threads, sparse | species, N, r0, trans, wL, maxdeg, D, rcut, rin, pcut, pin, constants | `—` |
|
|
15
|
+
| CoulombMatrix | `standalone` | `matrix` | `NONE` | `cpp` | `structure` | cooperative_cancel, num_threads, sparse | n_atoms_max, permutation, exponent | `—` |
|
|
16
|
+
| SineMatrix | `standalone` | `matrix` | `NONE` | `cpp` | `structure` | cooperative_cancel, num_threads, sparse | n_atoms_max, permutation, exponent | `—` |
|
|
17
|
+
| EwaldSumMatrix | `standalone` | `matrix` | `NONE` | `cpp` | `structure` | cooperative_cancel, num_threads, sparse | n_atoms_max, permutation, accuracy, w, r_cut, g_cut, a | `—` |
|
|
18
|
+
| MBTR | `standalone` | `many_body` | `NONE` | `cpp` | `structure` | cooperative_cancel, num_threads, sparse | species, geometry, grid, weighting, periodic, normalize_gaussians, normalization | `—` |
|
|
19
|
+
| LMBTR | `standalone` | `many_body` | `NONE` | `cpp` | `atom` | cooperative_cancel, num_threads, sparse | species, geometry, grid, weighting, periodic, normalize_gaussians, normalization | `—` |
|
|
20
|
+
| ValleOganov | `standalone` | `many_body` | `NONE` | `cpp` | `structure` | cooperative_cancel, num_threads, sparse | species, function, n, sigma, r_cut, geometry, grid, weighting, periodic, normalize_gaussians, normalization | `—` |
|
|
21
|
+
| AtomicComposition | `standalone` | `local` | `NONE` | `cpp` | `structure` | cooperative_cancel, num_threads, sparse | species, per_system | `—` |
|
|
22
|
+
| NeighborList | `standalone` | `local` | `NONE` | `cpp` | `pair` | cooperative_cancel, num_threads, sparse | cutoff, full_neighbor_list, self_pairs | `—` |
|
|
23
|
+
| SortedDistances | `standalone` | `local` | `NONE` | `cpp` | `atom` | cooperative_cancel, num_threads, sparse | species, cutoff, max_neighbors, separate_neighbor_types | `—` |
|
|
24
|
+
| SphericalExpansion | `standalone` | `local` | `NONE` | `cpp` | `atom` | cooperative_cancel, num_threads, sparse | species, cutoff, density_width, max_radial, max_angular | `—` |
|
|
25
|
+
| SphericalExpansionByPair | `standalone` | `local` | `NONE` | `cpp` | `pair` | cooperative_cancel, num_threads, sparse | species, cutoff, density_width, max_radial, max_angular | `—` |
|
|
26
|
+
| SoapRadialSpectrum | `standalone` | `local` | `NONE` | `cpp` | `atom` | cooperative_cancel, num_threads, sparse | species, cutoff, density_width, max_radial, max_angular | `—` |
|
|
27
|
+
| SoapPowerSpectrum | `standalone` | `local` | `NONE` | `cpp` | `atom` | cooperative_cancel, num_threads, sparse | species, cutoff, density_width, max_radial, max_angular | `—` |
|
|
28
|
+
| LodeSphericalExpansion | `standalone` | `local` | `NONE` | `cpp` | `atom` | cooperative_cancel, num_threads, sparse | species, cutoff, density_width, max_radial, max_angular, k_cutoff, exponent, radial_radius | `—` |
|
|
29
|
+
| EAD | `standalone` | `rotational` | `NONE` | `cpp` | `atom` | cooperative_cancel, num_threads, sparse | parameters, Rc, cutoff | `—` |
|
|
30
|
+
| SO3 | `standalone` | `rotational` | `NONE` | `cpp` | `atom` | cooperative_cancel, num_threads, sparse | nmax, lmax, rcut, alpha, weight_on | `—` |
|
|
31
|
+
| SO4 | `standalone` | `rotational` | `NONE` | `cpp` | `atom` | cooperative_cancel, num_threads, sparse | lmax, rcut, normalize_U | `—` |
|
|
32
|
+
| SNAP | `standalone` | `rotational` | `NONE` | `cpp` | `atom` | cooperative_cancel, num_threads, sparse | weights, lmax, rcut, normalize_U | `—` |
|
|
33
|
+
| LBispectrum | `standalone` | `rotational` | `NONE` | `cpp` | `atom` | cooperative_cancel, num_threads, sparse | twojmax, diagonal, rfac0, rmin0, rcutfac, element_profile, element_radii, weights, rcut, normalize_U | `—` |
|
|
34
|
+
| MTP | `standalone` | `local` | `OPTIONAL` | `cpp` | `atom` | cooperative_cancel, model, num_threads, sparse | species, model, min_dist, max_dist, r_cut, radial_basis_size, radial_funcs_count, max_rank, radial_basis_type | `—` |
|
|
35
|
+
| C00PSMLFF | `standalone` | `local` | `NONE` | `cpp` | `atom` | cooperative_cancel, num_threads, sparse | species, r_cut, n_radial, l_max, cutoff_function, radial_sigma, include_radial, include_angular, normalize_radial, normalize_angular, super_vector, radial_weight, angular_weight, exclude_self_interaction | `—` |
|
|
36
|
+
| NEP | `model_backed` | `model_backed` | `REQUIRED` | `cpp` | `atom` | cooperative_cancel, model, num_threads, sparse | model | `—` |
|
|
37
|
+
| DPA4 | `model_backed` | `model_backed` | `REQUIRED` | `numpy` | `atom` | charge_spin, model, num_threads, sparse, spin | model | `—` |
|
|
38
|
+
| DPA4C | `model_backed` | `model_backed` | `REQUIRED` | `numpy` | `atom` | charge_spin, model, num_threads, sparse, spin | model, calibrate | `—` |
|
|
39
|
+
|
|
40
|
+
## Static descriptor metadata
|
|
41
|
+
|
|
42
|
+
Each built-in entry carries `DescriptorInfo` schema version
|
|
43
|
+
`1`. Query it without importing an algorithm
|
|
44
|
+
implementation or resolving a model:
|
|
45
|
+
|
|
46
|
+
```python
|
|
47
|
+
import mdescriptor
|
|
48
|
+
|
|
49
|
+
metadata = mdescriptor.describe_descriptor("SOAP")
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
The returned object is JSON-safe and contains the canonical parameter schema,
|
|
53
|
+
execution devices, input periodicity, output representation, and model asset
|
|
54
|
+
policy. Historical Python constructor aliases remain available to direct
|
|
55
|
+
callers but are intentionally omitted from the canonical GUI parameter list.
|
|
56
|
+
|
|
57
|
+
The canonical algorithm imports are:
|
|
58
|
+
|
|
59
|
+
```python
|
|
60
|
+
from mdescriptor.descriptors import SOAP, ACSF, ACE, MTP, NEP, DPA4, DPA4C
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
The root package exposes contracts, registry queries and the configuration
|
|
64
|
+
factory. Algorithm classes are deliberately not re-exported from the root.
|
|
65
|
+
|
|
66
|
+
## Backend boundaries
|
|
67
|
+
|
|
68
|
+
- C++17/OpenMP kernels implement the standalone numerical formulas.
|
|
69
|
+
- `mdescriptor._native` is the private pybind11 extension name.
|
|
70
|
+
- Python adapters own input packing, lifecycle, typed options and result
|
|
71
|
+
normalization.
|
|
72
|
+
- DPA4/DPA4C use the bundled NumPy checkpoint loader and fallback inference
|
|
73
|
+
core; supported default graphs are executed by C++17/OpenMP, and official
|
|
74
|
+
``.pt`` files are parsed without importing Torch.
|
|
75
|
+
- NEP, DPA4 and DPA4C model files are resolved locally and verified by
|
|
76
|
+
streaming SHA-256 before loading.
|
|
77
|
+
|
|
78
|
+
## Result contract
|
|
79
|
+
|
|
80
|
+
Every public class returns `DescriptorResult` from `compute(...)`. Values are
|
|
81
|
+
two-dimensional and `samples` is a contiguous `int64` array with the fixed
|
|
82
|
+
shape `[structure]`, `[structure, local_atom]`, or
|
|
83
|
+
`[structure, local_atom_1, local_atom_2, shift_a, shift_b, shift_c]` according
|
|
84
|
+
to the output level. Metadata uses the versioned JSON-safe schema; descriptors
|
|
85
|
+
retain configuration and metadata after `close()`.
|
|
86
|
+
|
|
87
|
+
Common representation and execution settings are passed as
|
|
88
|
+
`OutputOptions`/`ExecutionOptions`. Sparse output is SciPy CSR and fails at
|
|
89
|
+
construction when the optional dependency is unavailable.
|
|
90
|
+
|
|
91
|
+
## Optional dependencies
|
|
92
|
+
|
|
93
|
+
The base import and DPA4/DPA4C computation do not import Torch. Install
|
|
94
|
+
`.[ase]` for ASE input conversion and `.[sparse]` for SciPy CSR output.
|
|
95
|
+
Official `.pt` loads use the package's restricted NumPy checkpoint reader;
|
|
96
|
+
network downloads are not implemented.
|
|
97
|
+
|
|
98
|
+
## Native source map
|
|
99
|
+
|
|
100
|
+
| Family | Source |
|
|
101
|
+
|---|---|
|
|
102
|
+
| SOAP / ACSF / ACE / SOAPTurbo | `cpp/src/standalone/soap.cpp`, `acsf.cpp`, `ace.cpp`, `soap_turbo.cpp` |
|
|
103
|
+
| matrices / MBTR | `cpp/src/standalone/*_matrix.cpp`, `matrix_dispatch.cpp`, `mbtr.cpp` |
|
|
104
|
+
| local descriptors | `cpp/src/standalone/atomic_composition.cpp`, `neighbor_list.cpp`, `sorted_distances.cpp`, `spherical_expansion*.cpp` |
|
|
105
|
+
| rotational / MTP / C00PS | `cpp/src/standalone/ead.cpp`, `rotational_descriptors.cpp`, `mtp*.cpp`, `c00ps_mlff.cpp` |
|
|
106
|
+
| NEP | `cpp/src/common/nep.cpp` |
|
|
107
|
+
| shared helpers | `cpp/include/mdescriptor/detail/`, `cpp/src/common/` |
|
|
108
|
+
|
|
109
|
+
Algorithm numerical behavior is frozen during this layout refactor. Formula
|
|
110
|
+
changes require a separate reference/golden update.
|
|
@@ -24,7 +24,27 @@ dependencies = [
|
|
|
24
24
|
ase = ["ase>=3.22"]
|
|
25
25
|
sparse = ["scipy>=1.11"]
|
|
26
26
|
test = ["pytest>=8", "ase>=3.22", "scipy>=1.11"]
|
|
27
|
-
reference = ["pytest>=8", "ase==3.26.0", "scipy>=1.11", "dscribe==2.1.2"]
|
|
27
|
+
reference-dscribe = ["pytest>=8", "ase==3.26.0", "scipy>=1.11", "dscribe==2.1.2"]
|
|
28
|
+
reference-featomic = ["pytest>=8", "ase==3.26.0", "scipy>=1.11", "featomic==0.6.6"]
|
|
29
|
+
reference-pyxtalff = [
|
|
30
|
+
"pytest>=8",
|
|
31
|
+
"ase==3.26.0",
|
|
32
|
+
"scipy>=1.11",
|
|
33
|
+
"numba>=0.50.1",
|
|
34
|
+
"pyxtal_ff==0.2.3",
|
|
35
|
+
]
|
|
36
|
+
reference-deepmd = [
|
|
37
|
+
"pytest>=8",
|
|
38
|
+
"ase==3.26.0",
|
|
39
|
+
"scipy>=1.11",
|
|
40
|
+
"deepmd-kit[torch]==3.2.0",
|
|
41
|
+
]
|
|
42
|
+
reference-nepadapters = [
|
|
43
|
+
"pytest>=8",
|
|
44
|
+
"ase==3.26.0",
|
|
45
|
+
"scipy>=1.11",
|
|
46
|
+
"nep-adapters==1.0.2",
|
|
47
|
+
]
|
|
28
48
|
all = ["ase>=3.22", "scipy>=1.11"]
|
|
29
49
|
dev = ["pytest>=8", "ase>=3.22", "scipy>=1.11", "ruff>=0.8", "mypy>=1.13"]
|
|
30
50
|
|
|
@@ -77,7 +97,12 @@ testpaths = ["tests"]
|
|
|
77
97
|
addopts = "-m 'not reference'"
|
|
78
98
|
markers = [
|
|
79
99
|
"model: tests that exercise bundled model-backed descriptors and assets",
|
|
80
|
-
"reference: tests that require
|
|
100
|
+
"reference: tests that require a pinned external numerical reference implementation",
|
|
101
|
+
"dscribe: external numerical comparisons against pinned DScribe",
|
|
102
|
+
"featomic: external numerical comparisons against pinned Featomic",
|
|
103
|
+
"pyxtalff: external numerical comparisons against pinned PyXtal_FF descriptors",
|
|
104
|
+
"deepmd: external numerical comparisons against pinned deepmd-kit DPA4 descriptors",
|
|
105
|
+
"nepadapters: external numerical comparisons against pinned nep-adapters",
|
|
81
106
|
]
|
|
82
107
|
|
|
83
108
|
[tool.ruff]
|
|
@@ -97,7 +122,7 @@ ignore = ["E501"]
|
|
|
97
122
|
# the interpreter used for the quality gate; the package itself still supports
|
|
98
123
|
# CPython 3.10 at runtime.
|
|
99
124
|
python_version = "3.12"
|
|
100
|
-
files = ["src/mdescriptor
|
|
125
|
+
files = ["src/mdescriptor"]
|
|
101
126
|
check_untyped_defs = true
|
|
102
127
|
disallow_any_generics = false
|
|
103
128
|
no_implicit_optional = true
|
|
@@ -12,7 +12,11 @@ import argparse
|
|
|
12
12
|
import re
|
|
13
13
|
from pathlib import Path
|
|
14
14
|
|
|
15
|
-
from mdescriptor import
|
|
15
|
+
from mdescriptor import (
|
|
16
|
+
DESCRIPTOR_INFO_SCHEMA_VERSION,
|
|
17
|
+
builtin_registry,
|
|
18
|
+
list_descriptors,
|
|
19
|
+
)
|
|
16
20
|
|
|
17
21
|
ROOT = Path(__file__).resolve().parents[1]
|
|
18
22
|
DOC = ROOT / "docs" / "descriptor-inventory.md"
|
|
@@ -26,9 +30,15 @@ def render() -> str:
|
|
|
26
30
|
group = "standalone" if ".standalone." in spec.import_path else "model_backed"
|
|
27
31
|
capabilities = ", ".join(sorted(spec.capabilities)) or "—"
|
|
28
32
|
extra = spec.optional_extra or "—"
|
|
33
|
+
category = "—" if spec.info is None else spec.info.category
|
|
34
|
+
parameters = (
|
|
35
|
+
"—"
|
|
36
|
+
if spec.info is None or not spec.info.parameters
|
|
37
|
+
else ", ".join(spec.info.parameters)
|
|
38
|
+
)
|
|
29
39
|
rows.append(
|
|
30
|
-
f"| {spec.name} | `{group}` | `{spec.asset_policy.value.upper()}` | "
|
|
31
|
-
f"`{spec.backend}` | `{spec.level}` | {capabilities} | `{extra}` |"
|
|
40
|
+
f"| {spec.name} | `{group}` | `{category}` | `{spec.asset_policy.value.upper()}` | "
|
|
41
|
+
f"`{spec.backend}` | `{spec.level}` | {capabilities} | {parameters} | `{extra}` |"
|
|
32
42
|
)
|
|
33
43
|
return """# Descriptor inventory / 描述符清单
|
|
34
44
|
|
|
@@ -38,10 +48,27 @@ controlled artifact: run `python scripts/check_descriptor_inventory.py
|
|
|
38
48
|
|
|
39
49
|
<!-- registry-names: {names} -->
|
|
40
50
|
|
|
41
|
-
| Name | Directory group | Asset policy | Backend | Level | Capabilities | Extra |
|
|
42
|
-
|
|
51
|
+
| Name | Directory group | Category | Asset policy | Backend | Level | Capabilities | Parameters | Extra |
|
|
52
|
+
|---|---|---|---|---|---|---|---|---|
|
|
43
53
|
{rows}
|
|
44
54
|
|
|
55
|
+
## Static descriptor metadata
|
|
56
|
+
|
|
57
|
+
Each built-in entry carries `DescriptorInfo` schema version
|
|
58
|
+
`{DESCRIPTOR_INFO_SCHEMA_VERSION}`. Query it without importing an algorithm
|
|
59
|
+
implementation or resolving a model:
|
|
60
|
+
|
|
61
|
+
```python
|
|
62
|
+
import mdescriptor
|
|
63
|
+
|
|
64
|
+
metadata = mdescriptor.describe_descriptor("SOAP")
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
The returned object is JSON-safe and contains the canonical parameter schema,
|
|
68
|
+
execution devices, input periodicity, output representation, and model asset
|
|
69
|
+
policy. Historical Python constructor aliases remain available to direct
|
|
70
|
+
callers but are intentionally omitted from the canonical GUI parameter list.
|
|
71
|
+
|
|
45
72
|
The canonical algorithm imports are:
|
|
46
73
|
|
|
47
74
|
```python
|
|
@@ -96,7 +123,11 @@ network downloads are not implemented.
|
|
|
96
123
|
|
|
97
124
|
Algorithm numerical behavior is frozen during this layout refactor. Formula
|
|
98
125
|
changes require a separate reference/golden update.
|
|
99
|
-
""".format(
|
|
126
|
+
""".format(
|
|
127
|
+
names=names,
|
|
128
|
+
rows="\n".join(rows),
|
|
129
|
+
DESCRIPTOR_INFO_SCHEMA_VERSION=DESCRIPTOR_INFO_SCHEMA_VERSION,
|
|
130
|
+
).rstrip() + "\n"
|
|
100
131
|
|
|
101
132
|
|
|
102
133
|
def main(argv: list[str] | None = None) -> int:
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"""Stable MDescriptor contracts and explicit registry functions."""
|
|
2
|
+
|
|
3
|
+
from importlib.metadata import PackageNotFoundError
|
|
4
|
+
from importlib.metadata import version as package_version
|
|
5
|
+
|
|
6
|
+
from .core import (
|
|
7
|
+
CONFIGURATION_SCHEMA_VERSION,
|
|
8
|
+
RESULT_SCHEMA_VERSION,
|
|
9
|
+
CancelledError,
|
|
10
|
+
ClosedDescriptorError,
|
|
11
|
+
ComputeControl,
|
|
12
|
+
Descriptor,
|
|
13
|
+
DescriptorConfigError,
|
|
14
|
+
DescriptorInputError,
|
|
15
|
+
DescriptorLevel,
|
|
16
|
+
DescriptorResult,
|
|
17
|
+
ExecutionOptions,
|
|
18
|
+
MDescriptorError,
|
|
19
|
+
ModelLoadError,
|
|
20
|
+
OutputOptions,
|
|
21
|
+
StructureBatch,
|
|
22
|
+
StructureInput,
|
|
23
|
+
)
|
|
24
|
+
from .registry import (
|
|
25
|
+
DESCRIPTOR_INFO_SCHEMA_VERSION,
|
|
26
|
+
AssetPolicy,
|
|
27
|
+
DescriptorConfiguration,
|
|
28
|
+
DescriptorRegistry,
|
|
29
|
+
DescriptorSpec,
|
|
30
|
+
builtin_registry,
|
|
31
|
+
create_descriptor,
|
|
32
|
+
describe_descriptor,
|
|
33
|
+
get_descriptor,
|
|
34
|
+
list_descriptors,
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
API_VERSION = 1
|
|
38
|
+
|
|
39
|
+
try:
|
|
40
|
+
from ._version import __version__
|
|
41
|
+
except ImportError: # pragma: no cover - source tree without generated version
|
|
42
|
+
try:
|
|
43
|
+
__version__ = package_version("MDescriptor")
|
|
44
|
+
except PackageNotFoundError: # pragma: no cover - uninstalled source tree
|
|
45
|
+
__version__ = "0+unknown"
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def get_runtime_info() -> dict[str, str | int]:
|
|
49
|
+
"""Return package and public schema versions for backend run metadata."""
|
|
50
|
+
|
|
51
|
+
return {
|
|
52
|
+
"version": __version__,
|
|
53
|
+
"api_version": API_VERSION,
|
|
54
|
+
"configuration_schema_version": CONFIGURATION_SCHEMA_VERSION,
|
|
55
|
+
"descriptor_info_schema_version": DESCRIPTOR_INFO_SCHEMA_VERSION,
|
|
56
|
+
"result_schema_version": RESULT_SCHEMA_VERSION,
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
__all__ = [
|
|
60
|
+
"API_VERSION",
|
|
61
|
+
"AssetPolicy",
|
|
62
|
+
"CancelledError",
|
|
63
|
+
"ClosedDescriptorError",
|
|
64
|
+
"ComputeControl",
|
|
65
|
+
"Descriptor",
|
|
66
|
+
"DescriptorConfigError",
|
|
67
|
+
"DescriptorConfiguration",
|
|
68
|
+
"DescriptorInputError",
|
|
69
|
+
"DescriptorLevel",
|
|
70
|
+
"DescriptorRegistry",
|
|
71
|
+
"DescriptorResult",
|
|
72
|
+
"DescriptorSpec",
|
|
73
|
+
"DESCRIPTOR_INFO_SCHEMA_VERSION",
|
|
74
|
+
"CONFIGURATION_SCHEMA_VERSION",
|
|
75
|
+
"ExecutionOptions",
|
|
76
|
+
"MDescriptorError",
|
|
77
|
+
"ModelLoadError",
|
|
78
|
+
"OutputOptions",
|
|
79
|
+
"RESULT_SCHEMA_VERSION",
|
|
80
|
+
"StructureBatch",
|
|
81
|
+
"StructureInput",
|
|
82
|
+
"builtin_registry",
|
|
83
|
+
"create_descriptor",
|
|
84
|
+
"describe_descriptor",
|
|
85
|
+
"get_descriptor",
|
|
86
|
+
"get_runtime_info",
|
|
87
|
+
"list_descriptors",
|
|
88
|
+
"__version__",
|
|
89
|
+
]
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '0.2.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 2,
|
|
21
|
+
__version__ = version = '0.2.3'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 2, 3)
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'gca2e8c11b'
|