NepTrainKit 2.8.4.dev0__tar.gz → 3.0.1__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.
Files changed (332) hide show
  1. neptrainkit-3.0.1/.gitignore +34 -0
  2. neptrainkit-2.8.4.dev0/.readthedocs.yml → neptrainkit-3.0.1/.readthedocs.yaml +5 -7
  3. neptrainkit-3.0.1/AGENTS.md +31 -0
  4. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/MANIFEST.in +4 -7
  5. neptrainkit-3.0.1/PKG-INFO +150 -0
  6. neptrainkit-3.0.1/README.md +101 -0
  7. neptrainkit-3.0.1/README.zh-CN.md +101 -0
  8. neptrainkit-3.0.1/THIRD_PARTY_NOTICES.md +34 -0
  9. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/pyproject.toml +14 -9
  10. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/requirements.txt +2 -0
  11. neptrainkit-3.0.1/setup.py +74 -0
  12. neptrainkit-3.0.1/skills/make-dataset-card-dev/SKILL.md +219 -0
  13. neptrainkit-3.0.1/skills/make-dataset-card-dev/agents/openai.yaml +4 -0
  14. neptrainkit-3.0.1/skills/make-dataset-card-dev/references/card-design-review.md +132 -0
  15. neptrainkit-3.0.1/skills/make-dataset-card-dev/references/card-touchpoints.md +45 -0
  16. neptrainkit-3.0.1/skills/make-dataset-card-dev/references/requirements-to-card-spec-template.md +127 -0
  17. neptrainkit-3.0.1/skills/make-dataset-card-dev/references/test-rigor-checklist.md +170 -0
  18. neptrainkit-3.0.1/skills/make-dataset-card-dev/references/validation-playbook.md +86 -0
  19. neptrainkit-3.0.1/skills/make-dataset-card-dev/scripts/run_card_checks.py +224 -0
  20. neptrainkit-3.0.1/src/NepTrainKit/__init__.py +68 -0
  21. neptrainkit-3.0.1/src/NepTrainKit/_native/__init__.py +1 -0
  22. neptrainkit-3.0.1/src/NepTrainKit/_version.py +24 -0
  23. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/config.py +26 -0
  24. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/core/__init__.py +2 -2
  25. neptrainkit-3.0.1/src/NepTrainKit/core/adapter_api.py +70 -0
  26. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/core/alloy.py +79 -16
  27. neptrainkit-3.0.1/src/NepTrainKit/core/audit/__init__.py +139 -0
  28. neptrainkit-3.0.1/src/NepTrainKit/core/audit/composition.py +122 -0
  29. neptrainkit-3.0.1/src/NepTrainKit/core/audit/config_types.py +91 -0
  30. neptrainkit-3.0.1/src/NepTrainKit/core/audit/context.py +159 -0
  31. neptrainkit-3.0.1/src/NepTrainKit/core/audit/data_quality.py +566 -0
  32. neptrainkit-3.0.1/src/NepTrainKit/core/audit/engine.py +400 -0
  33. neptrainkit-3.0.1/src/NepTrainKit/core/audit/evidence_cache.py +463 -0
  34. neptrainkit-3.0.1/src/NepTrainKit/core/audit/extract.py +125 -0
  35. neptrainkit-3.0.1/src/NepTrainKit/core/audit/findings.py +338 -0
  36. neptrainkit-3.0.1/src/NepTrainKit/core/audit/inventory.py +209 -0
  37. neptrainkit-3.0.1/src/NepTrainKit/core/audit/label_ranges.py +212 -0
  38. neptrainkit-3.0.1/src/NepTrainKit/core/audit/local_chemistry.py +436 -0
  39. neptrainkit-3.0.1/src/NepTrainKit/core/audit/magnetic_inventory.py +509 -0
  40. neptrainkit-3.0.1/src/NepTrainKit/core/audit/neighbor_scan.py +353 -0
  41. neptrainkit-3.0.1/src/NepTrainKit/core/audit/nep_cutoff.py +93 -0
  42. neptrainkit-3.0.1/src/NepTrainKit/core/audit/pair_contacts.py +273 -0
  43. neptrainkit-3.0.1/src/NepTrainKit/core/audit/phase_inventory.py +444 -0
  44. neptrainkit-3.0.1/src/NepTrainKit/core/audit/phase_refinement.py +534 -0
  45. neptrainkit-3.0.1/src/NepTrainKit/core/audit/phase_sketch.py +706 -0
  46. neptrainkit-3.0.1/src/NepTrainKit/core/audit/prototype_registry.py +813 -0
  47. neptrainkit-3.0.1/src/NepTrainKit/core/audit/report.py +764 -0
  48. neptrainkit-3.0.1/src/NepTrainKit/core/audit/result.py +424 -0
  49. neptrainkit-3.0.1/src/NepTrainKit/core/calculator.py +602 -0
  50. neptrainkit-3.0.1/src/NepTrainKit/core/card_manager.py +232 -0
  51. neptrainkit-3.0.1/src/NepTrainKit/core/cards/__init__.py +14 -0
  52. neptrainkit-3.0.1/src/NepTrainKit/core/cards/alloy.py +2055 -0
  53. neptrainkit-3.0.1/src/NepTrainKit/core/cards/defect.py +1192 -0
  54. neptrainkit-3.0.1/src/NepTrainKit/core/cards/errors.py +15 -0
  55. neptrainkit-3.0.1/src/NepTrainKit/core/cards/filter.py +591 -0
  56. neptrainkit-3.0.1/src/NepTrainKit/core/cards/geometry.py +22 -0
  57. neptrainkit-3.0.1/src/NepTrainKit/core/cards/lattice.py +709 -0
  58. neptrainkit-3.0.1/src/NepTrainKit/core/cards/magnetism.py +1957 -0
  59. neptrainkit-3.0.1/src/NepTrainKit/core/cards/operation.py +42 -0
  60. neptrainkit-3.0.1/src/NepTrainKit/core/cards/sampling.py +34 -0
  61. neptrainkit-3.0.1/src/NepTrainKit/core/cards/solvation.py +1477 -0
  62. neptrainkit-3.0.1/src/NepTrainKit/core/cards/structure.py +1230 -0
  63. neptrainkit-3.0.1/src/NepTrainKit/core/dataset/__init__.py +8 -0
  64. neptrainkit-3.0.1/src/NepTrainKit/core/dataset/catalog.py +210 -0
  65. neptrainkit-3.0.1/src/NepTrainKit/core/dataset/catalogs/nep_data.v1.json +731 -0
  66. neptrainkit-3.0.1/src/NepTrainKit/core/dataset/manager.py +59 -0
  67. neptrainkit-3.0.1/src/NepTrainKit/core/dataset/seed.py +22 -0
  68. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/core/dataset/services.py +2 -28
  69. neptrainkit-3.0.1/src/NepTrainKit/core/filter_presets.py +157 -0
  70. neptrainkit-3.0.1/src/NepTrainKit/core/geometry_cache.py +212 -0
  71. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/core/io/__init__.py +9 -3
  72. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/core/io/base.py +744 -1630
  73. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/core/io/deepmd.py +93 -171
  74. neptrainkit-3.0.1/src/NepTrainKit/core/io/distribution.py +1009 -0
  75. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/core/io/importers.py +630 -300
  76. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/core/io/nep.py +327 -230
  77. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/core/io/registry.py +22 -6
  78. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/core/io/sampler.py +202 -8
  79. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/core/io/tace.py +9 -0
  80. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/core/magnetism.py +157 -41
  81. neptrainkit-3.0.1/src/NepTrainKit/core/message.py +157 -0
  82. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/core/precision.py +9 -0
  83. neptrainkit-3.0.1/src/NepTrainKit/core/runtime_health.py +125 -0
  84. neptrainkit-3.0.1/src/NepTrainKit/core/search.py +234 -0
  85. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/core/structure.py +693 -71
  86. neptrainkit-3.0.1/src/NepTrainKit/core/structure_inspection.py +129 -0
  87. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/core/torsion_guard_pbc.py +76 -25
  88. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/core/types.py +219 -1
  89. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/core/utils.py +0 -65
  90. neptrainkit-3.0.1/src/NepTrainKit/i18n.py +176 -0
  91. neptrainkit-3.0.1/src/NepTrainKit/logging_config.py +78 -0
  92. neptrainkit-3.0.1/src/NepTrainKit/main.py +824 -0
  93. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/paths.py +10 -5
  94. neptrainkit-3.0.1/src/NepTrainKit/runtime_package.py +670 -0
  95. neptrainkit-3.0.1/src/NepTrainKit/src_rc.py +28167 -0
  96. neptrainkit-3.0.1/src/NepTrainKit/startup.py +81 -0
  97. neptrainkit-3.0.1/src/NepTrainKit/translations/neptrainkit_zh_CN.qm +0 -0
  98. neptrainkit-3.0.1/src/NepTrainKit/translations/neptrainkit_zh_CN.ts +14879 -0
  99. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/canvas/base/canvas.py +88 -22
  100. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/canvas/canvas_factory.py +2 -0
  101. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/canvas/pyqtgraph/canvas.py +142 -10
  102. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/canvas/pyqtgraph/distribution.py +155 -17
  103. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/canvas/pyqtgraph/structure.py +18 -32
  104. neptrainkit-3.0.1/src/NepTrainKit/ui/canvas/structure_view.py +53 -0
  105. neptrainkit-3.0.1/src/NepTrainKit/ui/canvas/vispy/canvas.py +2522 -0
  106. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/canvas/vispy/distribution.py +130 -15
  107. neptrainkit-3.0.1/src/NepTrainKit/ui/canvas/vispy/fast_scatter.py +192 -0
  108. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/canvas/vispy/structure.py +542 -138
  109. neptrainkit-3.0.1/src/NepTrainKit/ui/controllers/__init__.py +5 -0
  110. neptrainkit-3.0.1/src/NepTrainKit/ui/controllers/structure_filter_controller.py +128 -0
  111. neptrainkit-3.0.1/src/NepTrainKit/ui/messages.py +437 -0
  112. neptrainkit-3.0.1/src/NepTrainKit/ui/pages/__init__.py +32 -0
  113. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/pages/data_manager.py +25 -12
  114. neptrainkit-3.0.1/src/NepTrainKit/ui/pages/makedata.py +856 -0
  115. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/pages/settings.py +289 -77
  116. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/pages/show_nep.py +963 -248
  117. neptrainkit-3.0.1/src/NepTrainKit/ui/pages/training_set_audit.py +5031 -0
  118. neptrainkit-3.0.1/src/NepTrainKit/ui/pages/training_set_audit_overview.py +89 -0
  119. neptrainkit-3.0.1/src/NepTrainKit/ui/threads.py +381 -0
  120. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/update.py +270 -30
  121. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/views/_card/__init__.py +25 -1
  122. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/bain_path_card.py +105 -0
  123. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/views/_card/card_group.py +177 -17
  124. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/cell_scaling_card.py +192 -0
  125. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/cell_strain_card.py +171 -0
  126. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/composition_gradient_card.py +180 -0
  127. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/composition_sweep_card.py +261 -0
  128. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/conditional_replace_card.py +171 -0
  129. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/correlated_random_spin_card.py +231 -0
  130. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/crystal_prototype_builder_card.py +155 -0
  131. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/finite_cell_alloy_occupancy_card.py +496 -0
  132. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/folded_helix_card.py +270 -0
  133. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/fps_filter_card.py +416 -0
  134. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/geometry_filter_card.py +344 -0
  135. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/group_label_card.py +289 -0
  136. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/i18n_utils.py +195 -0
  137. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/interstitial_adsorbate_card.py +499 -0
  138. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/layer_copy_card.py +469 -0
  139. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/local_solvation_card.py +658 -0
  140. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/magmom_rotation_card.py +182 -0
  141. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/magnetic_order_card.py +578 -0
  142. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/ordered_alloy_prototype_card.py +262 -0
  143. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/organic_mol_config_pbc_card.py +705 -0
  144. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/views/_card/perturb_card.py +90 -125
  145. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/random_doping_card.py +150 -0
  146. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/random_occupancy_card.py +145 -0
  147. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/random_packing_card.py +134 -0
  148. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/views/_card/random_slab_card.py +66 -75
  149. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/random_vacancy_card.py +298 -0
  150. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/set_magnetic_moments_card.py +217 -0
  151. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/shear_angle_card.py +144 -0
  152. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/shear_matrix_card.py +152 -0
  153. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/small_angle_spin_tilt_card.py +475 -0
  154. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/solvent_box_fill_card.py +541 -0
  155. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/spin_disorder_card.py +209 -0
  156. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/spin_spiral_card.py +332 -0
  157. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/stacking_fault_card.py +119 -0
  158. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/strict_gsfe_path_card.py +353 -0
  159. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/super_cell_card.py +224 -0
  160. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/vacancy_defect_card.py +406 -0
  161. neptrainkit-3.0.1/src/NepTrainKit/ui/views/_card/vibration_perturb_card.py +179 -0
  162. neptrainkit-3.0.1/src/NepTrainKit/ui/views/cards.py +274 -0
  163. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/views/dataset_widget.py +113 -35
  164. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/views/nep.py +247 -140
  165. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/views/project_view.py +66 -22
  166. neptrainkit-3.0.1/src/NepTrainKit/ui/views/structure.py +422 -0
  167. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/views/toolbar.py +60 -49
  168. neptrainkit-3.0.1/src/NepTrainKit/ui/widgets/__init__.py +106 -0
  169. neptrainkit-3.0.1/src/NepTrainKit/ui/widgets/alloy_site_rules.py +782 -0
  170. neptrainkit-3.0.1/src/NepTrainKit/ui/widgets/audit_chart.py +1003 -0
  171. neptrainkit-3.0.1/src/NepTrainKit/ui/widgets/card_metadata.py +1059 -0
  172. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/widgets/card_widget.py +274 -63
  173. neptrainkit-3.0.1/src/NepTrainKit/ui/widgets/dialog.py +2224 -0
  174. neptrainkit-3.0.1/src/NepTrainKit/ui/widgets/distribution.py +687 -0
  175. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/widgets/doping_rule.py +94 -42
  176. neptrainkit-3.0.1/src/NepTrainKit/ui/widgets/filter_bar.py +878 -0
  177. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/widgets/input.py +5 -0
  178. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/widgets/search_widget.py +12 -13
  179. neptrainkit-3.0.1/src/NepTrainKit/ui/widgets/structure_filter_bar.py +1441 -0
  180. neptrainkit-3.0.1/src/NepTrainKit/ui/widgets/training_set_audit_window.py +256 -0
  181. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/widgets/tree.py +1 -2
  182. neptrainkit-3.0.1/src/NepTrainKit/ui/widgets/vacancy_rule.py +295 -0
  183. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/utils.py +0 -41
  184. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/version.py +32 -5
  185. neptrainkit-3.0.1/src/NepTrainKit.egg-info/PKG-INFO +150 -0
  186. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit.egg-info/SOURCES.txt +87 -52
  187. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit.egg-info/requires.txt +7 -1
  188. neptrainkit-3.0.1/src/native/audit/module.cpp +847 -0
  189. neptrainkit-3.0.1/src/native/include/neptrainkit/native/periodic_neighbors.hpp +655 -0
  190. neptrainkit-2.8.4.dev0/src/NepTrainKit/core/_fastxyz.cpp → neptrainkit-3.0.1/src/native/io/module.cpp +260 -136
  191. neptrainkit-3.0.1/src/native/magnetism/module.cpp +596 -0
  192. neptrainkit-3.0.1/src/native/phase/module.cpp +1003 -0
  193. neptrainkit-2.8.4.dev0/.gitignore +0 -16
  194. neptrainkit-2.8.4.dev0/PKG-INFO +0 -209
  195. neptrainkit-2.8.4.dev0/README.md +0 -163
  196. neptrainkit-2.8.4.dev0/THIRD_PARTY_NOTICES.md +0 -40
  197. neptrainkit-2.8.4.dev0/setup.py +0 -402
  198. neptrainkit-2.8.4.dev0/skills/make-dataset-card-dev/SKILL.md +0 -144
  199. neptrainkit-2.8.4.dev0/skills/make-dataset-card-dev/agents/openai.yaml +0 -4
  200. neptrainkit-2.8.4.dev0/skills/make-dataset-card-dev/references/card-touchpoints.md +0 -26
  201. neptrainkit-2.8.4.dev0/skills/make-dataset-card-dev/references/requirements-to-card-spec-template.md +0 -57
  202. neptrainkit-2.8.4.dev0/skills/make-dataset-card-dev/references/validation-playbook.md +0 -42
  203. neptrainkit-2.8.4.dev0/skills/make-dataset-card-dev/scripts/run_card_checks.py +0 -97
  204. neptrainkit-2.8.4.dev0/src/NepTrainKit/__init__.py +0 -29
  205. neptrainkit-2.8.4.dev0/src/NepTrainKit/_version.py +0 -34
  206. neptrainkit-2.8.4.dev0/src/NepTrainKit/core/calculator.py +0 -464
  207. neptrainkit-2.8.4.dev0/src/NepTrainKit/core/card_manager.py +0 -109
  208. neptrainkit-2.8.4.dev0/src/NepTrainKit/core/dataset/__init__.py +0 -2
  209. neptrainkit-2.8.4.dev0/src/NepTrainKit/core/dataset/manager.py +0 -841
  210. neptrainkit-2.8.4.dev0/src/NepTrainKit/core/message.py +0 -137
  211. neptrainkit-2.8.4.dev0/src/NepTrainKit/main.py +0 -234
  212. neptrainkit-2.8.4.dev0/src/NepTrainKit/src_rc.py +0 -31929
  213. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/canvas/vispy/canvas.py +0 -1076
  214. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/messages.py +0 -95
  215. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/pages/__init__.py +0 -9
  216. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/pages/makedata.py +0 -489
  217. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/threads.py +0 -200
  218. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/cell_scaling_card.py +0 -231
  219. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/cell_strain_card.py +0 -217
  220. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/composition_sweep_card.py +0 -516
  221. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/conditional_replace_card.py +0 -447
  222. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/crystal_prototype_builder_card.py +0 -200
  223. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/folded_helix_card.py +0 -435
  224. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/fps_filter_card.py +0 -203
  225. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/group_label_card.py +0 -136
  226. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/interstitial_adsorbate_card.py +0 -312
  227. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/layer_copy_card.py +0 -465
  228. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/magmom_rotation_card.py +0 -263
  229. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/magnetic_order_card.py +0 -442
  230. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/organic_mol_config_pbc_card.py +0 -423
  231. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/random_doping_card.py +0 -249
  232. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/random_occupancy_card.py +0 -177
  233. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/random_vacancy_card.py +0 -172
  234. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/set_magnetic_moments_card.py +0 -271
  235. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/shear_angle_card.py +0 -169
  236. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/shear_matrix_card.py +0 -179
  237. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/small_angle_spin_tilt_card.py +0 -851
  238. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/spin_spiral_card.py +0 -669
  239. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/stacking_fault_card.py +0 -116
  240. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/super_cell_card.py +0 -486
  241. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/vacancy_defect_card.py +0 -213
  242. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/vibration_perturb_card.py +0 -209
  243. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/cards.py +0 -149
  244. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/structure.py +0 -86
  245. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/widgets/__init__.py +0 -96
  246. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/widgets/dialog.py +0 -2591
  247. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/widgets/vacancy_rule.py +0 -176
  248. neptrainkit-2.8.4.dev0/src/NepTrainKit.egg-info/PKG-INFO +0 -209
  249. neptrainkit-2.8.4.dev0/src/nep_cpu/README.md +0 -32
  250. neptrainkit-2.8.4.dev0/src/nep_cpu/dftd3para.h +0 -12491
  251. neptrainkit-2.8.4.dev0/src/nep_cpu/ewald_nep.cpp +0 -282
  252. neptrainkit-2.8.4.dev0/src/nep_cpu/ewald_nep.h +0 -45
  253. neptrainkit-2.8.4.dev0/src/nep_cpu/neighbor_nep.cpp +0 -397
  254. neptrainkit-2.8.4.dev0/src/nep_cpu/neighbor_nep.h +0 -39
  255. neptrainkit-2.8.4.dev0/src/nep_cpu/nep.cpp +0 -3095
  256. neptrainkit-2.8.4.dev0/src/nep_cpu/nep.h +0 -243
  257. neptrainkit-2.8.4.dev0/src/nep_cpu/nep_cpu.cpp +0 -494
  258. neptrainkit-2.8.4.dev0/src/nep_cpu/nep_utilities.h +0 -929
  259. neptrainkit-2.8.4.dev0/src/nep_gpu/README.md +0 -34
  260. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/dataset.cu +0 -1036
  261. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/dataset.cuh +0 -103
  262. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/fitness.cu +0 -739
  263. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/fitness.cuh +0 -71
  264. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/main.cu +0 -80
  265. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/mic.cuh +0 -32
  266. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/nep.cu +0 -906
  267. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/nep.cuh +0 -103
  268. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/nep_charge.cu +0 -1783
  269. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/nep_charge.cuh +0 -129
  270. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/parameters.cu +0 -1374
  271. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/parameters.cuh +0 -165
  272. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/potential.cuh +0 -33
  273. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/snes.cu +0 -698
  274. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/snes.cuh +0 -81
  275. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/structure.cu +0 -701
  276. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/structure.cuh +0 -54
  277. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/tnep.cu +0 -810
  278. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/tnep.cuh +0 -96
  279. neptrainkit-2.8.4.dev0/src/nep_gpu/nep_desc.cu +0 -214
  280. neptrainkit-2.8.4.dev0/src/nep_gpu/nep_desc.cuh +0 -227
  281. neptrainkit-2.8.4.dev0/src/nep_gpu/nep_gpu.cu +0 -927
  282. neptrainkit-2.8.4.dev0/src/nep_gpu/nep_parameters.cu +0 -262
  283. neptrainkit-2.8.4.dev0/src/nep_gpu/nep_parameters.cuh +0 -38
  284. neptrainkit-2.8.4.dev0/src/nep_gpu/utilities/common.cuh +0 -27
  285. neptrainkit-2.8.4.dev0/src/nep_gpu/utilities/cusolver_wrapper.cu +0 -197
  286. neptrainkit-2.8.4.dev0/src/nep_gpu/utilities/cusolver_wrapper.cuh +0 -21
  287. neptrainkit-2.8.4.dev0/src/nep_gpu/utilities/error.cu +0 -189
  288. neptrainkit-2.8.4.dev0/src/nep_gpu/utilities/error.cuh +0 -85
  289. neptrainkit-2.8.4.dev0/src/nep_gpu/utilities/gnep_utilities.cuh +0 -1797
  290. neptrainkit-2.8.4.dev0/src/nep_gpu/utilities/gpu_macro.cuh +0 -199
  291. neptrainkit-2.8.4.dev0/src/nep_gpu/utilities/gpu_vector.cuh +0 -207
  292. neptrainkit-2.8.4.dev0/src/nep_gpu/utilities/least_square.cuh +0 -497
  293. neptrainkit-2.8.4.dev0/src/nep_gpu/utilities/main_common.cu +0 -76
  294. neptrainkit-2.8.4.dev0/src/nep_gpu/utilities/main_common.cuh +0 -19
  295. neptrainkit-2.8.4.dev0/src/nep_gpu/utilities/nep_utilities.cuh +0 -938
  296. neptrainkit-2.8.4.dev0/src/nep_gpu/utilities/read_file.cu +0 -133
  297. neptrainkit-2.8.4.dev0/src/nep_gpu/utilities/read_file.cuh +0 -21
  298. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/.gitattributes +0 -0
  299. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/LICENSE +0 -0
  300. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/pyrightconfig.json +0 -0
  301. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/setup.cfg +0 -0
  302. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/Config/config.sqlite +0 -0
  303. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/Config/nep.json +0 -0
  304. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/Config/nep89.txt +0 -0
  305. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/Config/ptable.json +0 -0
  306. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/core/config_type.py +0 -0
  307. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/core/cstdio_redirect.py +0 -0
  308. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/core/dataset/database.py +0 -0
  309. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/core/dataset/models.py +0 -0
  310. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/core/energy_shift.py +0 -0
  311. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/__init__.py +0 -0
  312. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/canvas/__init__.py +0 -0
  313. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/canvas/base/__init__.py +0 -0
  314. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/canvas/base/distribution.py +0 -0
  315. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/canvas/distribution_factory.py +0 -0
  316. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/canvas/pyqtgraph/__init__.py +0 -0
  317. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/canvas/vispy/__init__.py +0 -0
  318. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/dialogs.py +0 -0
  319. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/updater.py +0 -0
  320. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/views/__init__.py +0 -0
  321. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/widgets/button.py +0 -0
  322. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/widgets/completer.py +0 -0
  323. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/widgets/docker.py +0 -0
  324. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/widgets/label.py +0 -0
  325. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/widgets/layout.py +0 -0
  326. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/widgets/settingscard.py +0 -0
  327. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit/ui/widgets/table.py +0 -0
  328. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit.egg-info/dependency_links.txt +0 -0
  329. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit.egg-info/entry_points.txt +0 -0
  330. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit.egg-info/not-zip-safe +0 -0
  331. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.1}/src/NepTrainKit.egg-info/top_level.txt +0 -0
  332. {neptrainkit-2.8.4.dev0/src/NepTrainKit/core → neptrainkit-3.0.1/src/native/io}/fast_float.h +0 -0
@@ -0,0 +1,34 @@
1
+ **/__pycache__/
2
+ /src/NepTrainKit.egg-info/
3
+ /build
4
+ /dist
5
+ /docs/build
6
+ /docs/_build
7
+ /docs/source/locale/**/*.mo
8
+ /docs/superpowers/
9
+ /.tmp/docs-screenshots
10
+ .idea/
11
+ /src/NepTrainKit/?.py
12
+ /src/NepTrainKit/_version.py
13
+ /src/NepTrainKit/Log/*.log
14
+ .pytest_cache/
15
+ .superpowers/
16
+ tests/_sandbox_tmp/
17
+ tests/_localappdata/
18
+ tests/_tmp/
19
+ tests/_pytest_cache/
20
+ tests/_pytest_tmp/
21
+ tests/pytest-cache-files-*/
22
+ /.tmp_localappdata/
23
+
24
+ # Local platform builds and generated diagnostics
25
+ **/.DS_Store
26
+ /src/NepTrainKit/**/*.so
27
+ /diagnostics/
28
+ /tmp/
29
+
30
+ # Outputs generated while exercising bundled test fixtures
31
+ /tests/data/**/descriptor.pca2.json
32
+ /tests/data/**/descriptor.pca2.npy
33
+ /tests/data/**/nep.in
34
+ /tests/data/nep/*.out
@@ -9,18 +9,16 @@ build:
9
9
  os: ubuntu-22.04
10
10
  tools:
11
11
  python: "3.12"
12
- # You can also specify other tool versions:
13
- # nodejs: "20"
14
- # rust: "1.70"
15
- # golang: "1.20"
16
12
 
17
13
  # Build documentation in the "docs/" directory with Sphinx
14
+ # The parent and translation projects share this file. ``conf.py`` reads
15
+ # READTHEDOCS_LANGUAGE so each project builds only its configured language.
18
16
  sphinx:
19
17
  configuration: docs/source/conf.py
20
18
  # You can configure Sphinx to use a different builder, for instance use the dirhtml builder for simpler URLs
21
19
  # builder: "dirhtml"
22
- # Fail on all warnings to avoid broken references
23
- # fail_on_warning: true
20
+ # Keep both language projects strict and fail on broken documentation.
21
+ fail_on_warning: true
24
22
 
25
23
  # Optionally build your docs in additional formats such as PDF and ePub
26
24
  # formats:
@@ -32,4 +30,4 @@ sphinx:
32
30
  # See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
33
31
  python:
34
32
  install:
35
- - requirements: docs/requirements.txt
33
+ - requirements: docs/requirements.txt
@@ -0,0 +1,31 @@
1
+ # NepTrainKit Agent Notes
2
+
3
+ ## Project Skill
4
+
5
+ This repo has a local skill at `skills/make-dataset-card-dev/SKILL.md`.
6
+
7
+ Before changing Make Dataset cards, card operations, card docs, or card tests:
8
+
9
+ 1. Read `skills/make-dataset-card-dev/SKILL.md` from this checkout.
10
+ 2. Follow its operation/params/UI/docs/tests contract.
11
+ 3. If the global Codex skill is not installed or does not auto-trigger, say so briefly and use the repo-local `SKILL.md` as the source of truth.
12
+
13
+ The skill should trigger naturally when the task is about adding, migrating, refactoring, or testing Make Dataset cards. Do not assume every developer has it installed globally; the repo-local file is the fallback.
14
+
15
+ ## Change Style
16
+
17
+ - Keep changes surgical. Touch only files needed for the requested behavior.
18
+ - Prefer existing helpers, card patterns, canvas backends, and result-data contracts over new abstractions.
19
+ - Do not add optional flexibility, new dependencies, or broad refactors unless the user asks.
20
+ - Preserve user-visible workflows unless the task explicitly changes them.
21
+
22
+ ## Tests
23
+
24
+ - For ordinary fixes, run the smallest targeted pytest command that covers the behavior, then broaden if risk warrants it.
25
+ - Before committing a repo change, run `git diff --check`.
26
+ - For Make Dataset card work, also run `python skills/make-dataset-card-dev/scripts/run_card_checks.py --quick` when the script is available.
27
+ - Keep ad hoc generated files out of Git. Use temp paths for fixtures and clean up local outputs created by tests.
28
+
29
+ ## Local Artifacts
30
+
31
+ Treat `tmp/`, `outputs/`, `diagnostics/`, generated descriptors, copied datasets, compiled local binaries, and similar files as local artifacts unless the user explicitly asks to version them.
@@ -14,12 +14,9 @@ prune .github
14
14
  global-exclude *.log
15
15
  global-exclude *upx.exe
16
16
  global-exclude *update.exe
17
- global-exclude *nep_cpu*.pyd
18
- global-exclude *_fastxyz*.pyd
19
- global-exclude *nep_gpu*.pyd
20
- global-exclude *cuda*.dll
21
- global-exclude *vcomp140*.dll
22
- global-exclude *msvcp140*.dll
23
- global-exclude *libomp140.x86_64.dll
17
+ global-exclude *.so
18
+ global-exclude *.dylib
19
+ global-exclude *.pyd
20
+ global-exclude *.dll
24
21
  global-exclude src/NepTrainKit/src/**
25
22
  global-exclude src/NepTrainKit/src.qrc
@@ -0,0 +1,150 @@
1
+ Metadata-Version: 2.4
2
+ Name: NepTrainKit
3
+ Version: 3.0.1
4
+ Summary: Visualize, diagnose, and manipulate NEP training datasets.
5
+ Author-email: Chen Cheng bing <1747193328@qq.com>
6
+ License-Expression: GPL-3.0-or-later
7
+ Project-URL: Homepage, https://github.com/aboys-cb/NepTrainKit
8
+ Project-URL: Documentation, https://github.com/aboys-cb/NepTrainKit
9
+ Project-URL: Repository, https://github.com/aboys-cb/NepTrainKit
10
+ Project-URL: Issues, https://github.com/aboys-cb/NepTrainKit/issues
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Intended Audience :: Science/Research
13
+ Classifier: Operating System :: OS Independent
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Topic :: Scientific/Engineering :: Chemistry
20
+ Classifier: Topic :: Scientific/Engineering :: Information Analysis
21
+ Classifier: Topic :: Scientific/Engineering :: Physics
22
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
23
+ Requires-Python: <3.14,>=3.10
24
+ Description-Content-Type: text/markdown
25
+ License-File: LICENSE
26
+ License-File: THIRD_PARTY_NOTICES.md
27
+ Requires-Dist: PySide6==6.9.0
28
+ Requires-Dist: PySide6-Fluent-Widgets>=1.7.0
29
+ Requires-Dist: loguru>=0.7.2
30
+ Requires-Dist: requests>=2.32.3
31
+ Requires-Dist: packaging>=24.0
32
+ Requires-Dist: pyqtgraph>=0.13.7
33
+ Requires-Dist: PyOpenGL>=3.1.7
34
+ Requires-Dist: numpy>=1.26.0
35
+ Requires-Dist: vispy>=0.14.3
36
+ Requires-Dist: ase
37
+ Requires-Dist: nep-adapters>=1.0.1
38
+ Requires-Dist: scipy>=1.15.0
39
+ Requires-Dist: SQLAlchemy>=2.0.0
40
+ Provides-Extra: test
41
+ Requires-Dist: pytest>=7.0; extra == "test"
42
+ Requires-Dist: pytest-qt>=4.2.0; extra == "test"
43
+ Requires-Dist: pytest-cov>=4.0.0; extra == "test"
44
+ Requires-Dist: codecov>=2.0.0; extra == "test"
45
+ Requires-Dist: ruff>=0.12.0; extra == "test"
46
+ Requires-Dist: scikit-learn>=1.5.0; extra == "test"
47
+ Requires-Dist: tomli>=2.0; python_version < "3.11" and extra == "test"
48
+ Dynamic: license-file
49
+
50
+ <div align="center">
51
+ <a href="https://github.com/aboys-cb/NepTrainKit">
52
+ <img src="https://raw.githubusercontent.com/aboys-cb/NepTrainKit/master/src/NepTrainKit/src/images/logo.png" width="25%" alt="NepTrainKit logo">
53
+ </a><br>
54
+ <a href="https://pypi.org/project/NepTrainKit"><img src="https://img.shields.io/pypi/dm/NepTrainKit?logo=pypi&logoColor=white&color=blue&label=PyPI" alt="PyPI downloads"></a>
55
+ <a href="https://python.org/downloads"><img src="https://img.shields.io/badge/Python-3.10--3.13-blue.svg?logo=python&logoColor=white" alt="Python version"></a>
56
+ <a href="https://codecov.io/github/aboys-cb/NepTrainKit"><img src="https://codecov.io/github/aboys-cb/NepTrainKit/graph/badge.svg?token=HQ5FMLD91F" alt="Codecov"></a>
57
+ <a href="https://github.com/aboys-cb/NepTrainKit/blob/master/LICENSE"><img src="https://img.shields.io/badge/license-GPL--3.0--or--later-blue" alt="License"></a>
58
+ <br><br>
59
+ <strong>English</strong> | <a href="https://github.com/aboys-cb/NepTrainKit/blob/master/README.zh-CN.md">简体中文</a>
60
+ </div>
61
+
62
+ # NepTrainKit
63
+
64
+ NepTrainKit is a desktop application for preparing, auditing, and visualizing training datasets for neuroevolution potentials (NEPs). It complements, rather than replaces, long-running GPUMD training or DFT calculations. Its focus is the repetitive work around those calculations: generating candidate structures, cleaning problematic samples, selecting representative configurations, and passing a well-prepared dataset back into the DFT and GPUMD workflow.
65
+
66
+ ## What you can do
67
+
68
+ - **Make Dataset**: generate strained, perturbed, defective, surface, doped, magnetic, and solvated candidate structures with composable cards.
69
+ - **NEP Dataset Display**: inspect structures, errors, and distributions; remove problematic samples; and export a clean subset.
70
+ - **Representative selection**: reduce a candidate pool to a smaller, more representative set with methods such as farthest point sampling (FPS).
71
+ - **Training-result inspection**: load NEP- and DeepMD-related outputs, locate high-error structures, and identify data gaps for the next iteration.
72
+ - **Project tracking**: use Data Management to record models, dataset paths, and notes across multiple iterations.
73
+
74
+ ## Installation
75
+
76
+ We recommend installing NepTrainKit in a dedicated Python environment. Python 3.10 through 3.13 is supported.
77
+
78
+ ```bash
79
+ conda create -n nepkit python=3.10
80
+ conda activate nepkit
81
+ pip install NepTrainKit
82
+ ```
83
+
84
+ After installation, launch the application with either command:
85
+
86
+ ```bash
87
+ nepkit
88
+ # or
89
+ NepTrainKit
90
+ ```
91
+
92
+ ### NEP compute backend
93
+
94
+ NepTrainKit does not compile the NEP compute backend into the application. `pip` installs the separate `nep-adapters` dependency:
95
+
96
+ | Platform | Installed backend |
97
+ | --- | --- |
98
+ | macOS / Windows | CPU |
99
+ | Linux x86_64 | CPU and CUDA in one wheel |
100
+
101
+ The Linux CUDA path requires a compatible NVIDIA driver, but installing the wheel does not require a local CUDA toolkit or NVCC. Source builds and supported CUDA architectures are documented in the [NEPAdapters repository](https://github.com/MagTheoryLab/NEPAdapters).
102
+
103
+ After launching NepTrainKit, select `Auto`, `CPU`, or `CUDA` under `Settings → NEP Backend`. `Auto` uses CUDA when the installed wheel, driver, and model support it; otherwise NepTrainKit explains why it is continuing on CPU. Explicit `CUDA` requests fail instead of silently changing backend.
104
+
105
+ `Settings → NEP Settings → NEP runtime updates` can install a compatible `nep-adapters` update without replacing NepTrainKit. NepTrainKit also checks this runtime in the background whenever the app opens; no-update and network-failure cases stay silent, while an available update opens an installation prompt. Pip installations store the managed wheel under the user configuration directory; the Windows standalone build stores it under `runtime/nep-adapters/versions` beside `NepTrainKit.exe`. A wheel is activated only after SHA256 verification and a fresh-process health check, and takes effect after restart.
106
+
107
+ Confirm the installed runtime with:
108
+
109
+ ```bash
110
+ python -c "import nep_adapters as n; print(n.backend_status('cpu')); print(n.backend_status('cuda'))"
111
+ ```
112
+
113
+ ### Windows package
114
+
115
+ If you prefer not to compile NepTrainKit locally, download `NepTrainKit.windows-x86_64.zip` from [GitHub Releases](https://github.com/aboys-cb/NepTrainKit/releases). This package requires 64-bit Windows on x86_64 hardware.
116
+
117
+ ## Documentation and support
118
+
119
+ - User documentation: [neptrainkit.readthedocs.io](https://neptrainkit.readthedocs.io/en/latest/)
120
+ - Release notes: [GitHub Releases](https://github.com/aboys-cb/NepTrainKit/releases)
121
+ - Bug reports and feature requests: [GitHub Issues](https://github.com/aboys-cb/NepTrainKit/issues)
122
+ - Community: [QQ group invitation](https://qm.qq.com/q/wPDQYHMhyg)
123
+
124
+ If this is your first time using NepTrainKit, begin with **Quickstart** and **Cleaning candidate structures before DFT** in the user documentation. If you already know which class of configurations you need, go directly to the Make Dataset card reference.
125
+
126
+ ## Citation
127
+
128
+ If NepTrainKit contributes to your research, please cite:
129
+
130
+ ```bibtex
131
+ @article{CHEN2025109859,
132
+ title = {NepTrain and NepTrainKit: Automated active learning and visualization toolkit for neuroevolution potentials},
133
+ journal = {Computer Physics Communications},
134
+ volume = {317},
135
+ pages = {109859},
136
+ year = {2025},
137
+ issn = {0010-4655},
138
+ doi = {https://doi.org/10.1016/j.cpc.2025.109859},
139
+ url = {https://www.sciencedirect.com/science/article/pii/S0010465525003613},
140
+ author = {Chengbing Chen and Yutong Li and Rui Zhao and Zhoulin Liu and Zheyong Fan and Gang Tang and Zhiyong Wang},
141
+ }
142
+ ```
143
+
144
+ ## License and third-party code
145
+
146
+ NepTrainKit is licensed under the GNU General Public License v3.0 or later. See [LICENSE](./LICENSE) for details.
147
+
148
+ NEP computation is provided by the separate [nep-adapters](https://github.com/MagTheoryLab/NEPAdapters) dependency. NepTrainKit no longer vendors the NEP_CPU or GPUMD backend source trees.
149
+
150
+ See [THIRD_PARTY_NOTICES.md](./THIRD_PARTY_NOTICES.md) for the remaining attribution in this repository. The `nep-adapters` distribution carries its own backend source notices and licenses.
@@ -0,0 +1,101 @@
1
+ <div align="center">
2
+ <a href="https://github.com/aboys-cb/NepTrainKit">
3
+ <img src="https://raw.githubusercontent.com/aboys-cb/NepTrainKit/master/src/NepTrainKit/src/images/logo.png" width="25%" alt="NepTrainKit logo">
4
+ </a><br>
5
+ <a href="https://pypi.org/project/NepTrainKit"><img src="https://img.shields.io/pypi/dm/NepTrainKit?logo=pypi&logoColor=white&color=blue&label=PyPI" alt="PyPI downloads"></a>
6
+ <a href="https://python.org/downloads"><img src="https://img.shields.io/badge/Python-3.10--3.13-blue.svg?logo=python&logoColor=white" alt="Python version"></a>
7
+ <a href="https://codecov.io/github/aboys-cb/NepTrainKit"><img src="https://codecov.io/github/aboys-cb/NepTrainKit/graph/badge.svg?token=HQ5FMLD91F" alt="Codecov"></a>
8
+ <a href="https://github.com/aboys-cb/NepTrainKit/blob/master/LICENSE"><img src="https://img.shields.io/badge/license-GPL--3.0--or--later-blue" alt="License"></a>
9
+ <br><br>
10
+ <strong>English</strong> | <a href="https://github.com/aboys-cb/NepTrainKit/blob/master/README.zh-CN.md">简体中文</a>
11
+ </div>
12
+
13
+ # NepTrainKit
14
+
15
+ NepTrainKit is a desktop application for preparing, auditing, and visualizing training datasets for neuroevolution potentials (NEPs). It complements, rather than replaces, long-running GPUMD training or DFT calculations. Its focus is the repetitive work around those calculations: generating candidate structures, cleaning problematic samples, selecting representative configurations, and passing a well-prepared dataset back into the DFT and GPUMD workflow.
16
+
17
+ ## What you can do
18
+
19
+ - **Make Dataset**: generate strained, perturbed, defective, surface, doped, magnetic, and solvated candidate structures with composable cards.
20
+ - **NEP Dataset Display**: inspect structures, errors, and distributions; remove problematic samples; and export a clean subset.
21
+ - **Representative selection**: reduce a candidate pool to a smaller, more representative set with methods such as farthest point sampling (FPS).
22
+ - **Training-result inspection**: load NEP- and DeepMD-related outputs, locate high-error structures, and identify data gaps for the next iteration.
23
+ - **Project tracking**: use Data Management to record models, dataset paths, and notes across multiple iterations.
24
+
25
+ ## Installation
26
+
27
+ We recommend installing NepTrainKit in a dedicated Python environment. Python 3.10 through 3.13 is supported.
28
+
29
+ ```bash
30
+ conda create -n nepkit python=3.10
31
+ conda activate nepkit
32
+ pip install NepTrainKit
33
+ ```
34
+
35
+ After installation, launch the application with either command:
36
+
37
+ ```bash
38
+ nepkit
39
+ # or
40
+ NepTrainKit
41
+ ```
42
+
43
+ ### NEP compute backend
44
+
45
+ NepTrainKit does not compile the NEP compute backend into the application. `pip` installs the separate `nep-adapters` dependency:
46
+
47
+ | Platform | Installed backend |
48
+ | --- | --- |
49
+ | macOS / Windows | CPU |
50
+ | Linux x86_64 | CPU and CUDA in one wheel |
51
+
52
+ The Linux CUDA path requires a compatible NVIDIA driver, but installing the wheel does not require a local CUDA toolkit or NVCC. Source builds and supported CUDA architectures are documented in the [NEPAdapters repository](https://github.com/MagTheoryLab/NEPAdapters).
53
+
54
+ After launching NepTrainKit, select `Auto`, `CPU`, or `CUDA` under `Settings → NEP Backend`. `Auto` uses CUDA when the installed wheel, driver, and model support it; otherwise NepTrainKit explains why it is continuing on CPU. Explicit `CUDA` requests fail instead of silently changing backend.
55
+
56
+ `Settings → NEP Settings → NEP runtime updates` can install a compatible `nep-adapters` update without replacing NepTrainKit. NepTrainKit also checks this runtime in the background whenever the app opens; no-update and network-failure cases stay silent, while an available update opens an installation prompt. Pip installations store the managed wheel under the user configuration directory; the Windows standalone build stores it under `runtime/nep-adapters/versions` beside `NepTrainKit.exe`. A wheel is activated only after SHA256 verification and a fresh-process health check, and takes effect after restart.
57
+
58
+ Confirm the installed runtime with:
59
+
60
+ ```bash
61
+ python -c "import nep_adapters as n; print(n.backend_status('cpu')); print(n.backend_status('cuda'))"
62
+ ```
63
+
64
+ ### Windows package
65
+
66
+ If you prefer not to compile NepTrainKit locally, download `NepTrainKit.windows-x86_64.zip` from [GitHub Releases](https://github.com/aboys-cb/NepTrainKit/releases). This package requires 64-bit Windows on x86_64 hardware.
67
+
68
+ ## Documentation and support
69
+
70
+ - User documentation: [neptrainkit.readthedocs.io](https://neptrainkit.readthedocs.io/en/latest/)
71
+ - Release notes: [GitHub Releases](https://github.com/aboys-cb/NepTrainKit/releases)
72
+ - Bug reports and feature requests: [GitHub Issues](https://github.com/aboys-cb/NepTrainKit/issues)
73
+ - Community: [QQ group invitation](https://qm.qq.com/q/wPDQYHMhyg)
74
+
75
+ If this is your first time using NepTrainKit, begin with **Quickstart** and **Cleaning candidate structures before DFT** in the user documentation. If you already know which class of configurations you need, go directly to the Make Dataset card reference.
76
+
77
+ ## Citation
78
+
79
+ If NepTrainKit contributes to your research, please cite:
80
+
81
+ ```bibtex
82
+ @article{CHEN2025109859,
83
+ title = {NepTrain and NepTrainKit: Automated active learning and visualization toolkit for neuroevolution potentials},
84
+ journal = {Computer Physics Communications},
85
+ volume = {317},
86
+ pages = {109859},
87
+ year = {2025},
88
+ issn = {0010-4655},
89
+ doi = {https://doi.org/10.1016/j.cpc.2025.109859},
90
+ url = {https://www.sciencedirect.com/science/article/pii/S0010465525003613},
91
+ author = {Chengbing Chen and Yutong Li and Rui Zhao and Zhoulin Liu and Zheyong Fan and Gang Tang and Zhiyong Wang},
92
+ }
93
+ ```
94
+
95
+ ## License and third-party code
96
+
97
+ NepTrainKit is licensed under the GNU General Public License v3.0 or later. See [LICENSE](./LICENSE) for details.
98
+
99
+ NEP computation is provided by the separate [nep-adapters](https://github.com/MagTheoryLab/NEPAdapters) dependency. NepTrainKit no longer vendors the NEP_CPU or GPUMD backend source trees.
100
+
101
+ See [THIRD_PARTY_NOTICES.md](./THIRD_PARTY_NOTICES.md) for the remaining attribution in this repository. The `nep-adapters` distribution carries its own backend source notices and licenses.
@@ -0,0 +1,101 @@
1
+ <div align="center">
2
+ <a href="https://github.com/aboys-cb/NepTrainKit">
3
+ <img src="https://raw.githubusercontent.com/aboys-cb/NepTrainKit/master/src/NepTrainKit/src/images/logo.png" width="25%" alt="NepTrainKit 标志">
4
+ </a><br>
5
+ <a href="https://pypi.org/project/NepTrainKit"><img src="https://img.shields.io/pypi/dm/NepTrainKit?logo=pypi&logoColor=white&color=blue&label=PyPI" alt="PyPI 下载量"></a>
6
+ <a href="https://python.org/downloads"><img src="https://img.shields.io/badge/Python-3.10--3.13-blue.svg?logo=python&logoColor=white" alt="Python 版本"></a>
7
+ <a href="https://codecov.io/github/aboys-cb/NepTrainKit"><img src="https://codecov.io/github/aboys-cb/NepTrainKit/graph/badge.svg?token=HQ5FMLD91F" alt="Codecov"></a>
8
+ <a href="https://github.com/aboys-cb/NepTrainKit/blob/master/LICENSE"><img src="https://img.shields.io/badge/license-GPL--3.0--or--later-blue" alt="许可证"></a>
9
+ <br><br>
10
+ <a href="https://github.com/aboys-cb/NepTrainKit/blob/master/README.md">English</a> | <strong>简体中文</strong>
11
+ </div>
12
+
13
+ # NepTrainKit
14
+
15
+ NepTrainKit 是面向神经演化势(NEP)训练集准备、评估和可视化的桌面工具。它不替代 GPUMD 的长时间训练,也不替代 DFT 计算;它负责训练前后最容易反复手工处理的部分:生成候选结构、清理异常样本、筛选代表结构,并把准备好的数据接回 DFT 和 GPUMD 工作流。
16
+
17
+ ## 主要功能
18
+
19
+ - **Make Dataset**:通过可组合的卡片生成应变、扰动、缺陷、表面、掺杂、磁性和溶剂化候选结构。
20
+ - **NEP Dataset Display**:查看结构、误差和分布,删除异常样本,并导出干净的数据子集。
21
+ - **代表性筛选**:使用最远点采样(FPS)等方法,从候选池中选出更少、更有代表性的结构。
22
+ - **训练结果回看**:加载 NEP 和 DeepMD 相关输出,定位高误差结构,识别下一轮需要补充的数据。
23
+ - **项目记录**:使用 Data Management 记录多轮迭代中的模型、数据路径和备注。
24
+
25
+ ## 安装
26
+
27
+ 建议在独立的 Python 环境中安装 NepTrainKit。当前版本支持 Python 3.10 到 3.13。
28
+
29
+ ```bash
30
+ conda create -n nepkit python=3.10
31
+ conda activate nepkit
32
+ pip install NepTrainKit
33
+ ```
34
+
35
+ 安装完成后,可以使用任一命令启动:
36
+
37
+ ```bash
38
+ nepkit
39
+ # 或
40
+ NepTrainKit
41
+ ```
42
+
43
+ ### NEP 计算后端
44
+
45
+ NepTrainKit 不再把 NEP 计算后端编译进应用程序。执行 `pip install NepTrainKit` 时,会安装独立的 `nep-adapters` 依赖:
46
+
47
+ | 平台 | 安装的后端 |
48
+ | --- | --- |
49
+ | macOS / Windows | CPU |
50
+ | Linux x86_64 | 同一个 wheel 包含 CPU 和 CUDA |
51
+
52
+ Linux CUDA 路径需要兼容的 NVIDIA 驱动,但安装 wheel 不要求本机安装 CUDA Toolkit 或 NVCC。源码构建和受支持的 CUDA 架构见 [NEPAdapters 仓库](https://github.com/MagTheoryLab/NEPAdapters)。
53
+
54
+ 启动后,可以在 `Settings → NEP Backend` 中选择 `Auto`、`CPU` 或 `CUDA`。`Auto` 会在 wheel、驱动和模型都支持时使用 CUDA;否则 NepTrainKit 会说明原因并继续使用 CPU。明确选择 `CUDA` 时如果不可用会直接报错,不会静默切换后端。
55
+
56
+ `设置 → NEP 设置 → NEP 运行时更新` 可以单独检查并安装兼容的 `nep-adapters` 更新,无需更新 NepTrainKit。每次打开软件后还会在后台检查运行时:没有更新或网络检查失败时保持静默,发现新版本时弹出安装提示。pip 安装版把更新后的 wheel 解压到用户配置目录;Windows 独立版放在 `NepTrainKit.exe` 旁的 `runtime/nep-adapters/versions`。新版本通过 SHA256 和独立进程健康检查后才会激活,并在重启程序后生效。
57
+
58
+ 可以用下面的命令确认当前运行时:
59
+
60
+ ```bash
61
+ python -c "import nep_adapters as n; print(n.backend_status('cpu')); print(n.backend_status('cuda'))"
62
+ ```
63
+
64
+ ### Windows 可执行包
65
+
66
+ 如果不想在本地编译,可以从 [GitHub Releases](https://github.com/aboys-cb/NepTrainKit/releases) 下载 `NepTrainKit.windows-x86_64.zip`。该包要求 x86_64 架构的 64 位 Windows。
67
+
68
+ ## 文档与支持
69
+
70
+ - 用户文档:[neptrainkit.readthedocs.io](https://neptrainkit.readthedocs.io/zh-cn/latest/)
71
+ - 更新说明:[GitHub Releases](https://github.com/aboys-cb/NepTrainKit/releases)
72
+ - 问题反馈与功能建议:[GitHub Issues](https://github.com/aboys-cb/NepTrainKit/issues)
73
+ - 社区交流:[QQ 群链接](https://qm.qq.com/q/wPDQYHMhyg)
74
+
75
+ 第一次使用时,建议先阅读用户文档中的“快速开始”和“候选结构清洗后再进入 DFT”。如果已经知道需要补充哪类结构,可以直接查阅 Make Dataset 卡片手册。
76
+
77
+ ## 引用
78
+
79
+ 如果 NepTrainKit 对你的研究有所帮助,请引用:
80
+
81
+ ```bibtex
82
+ @article{CHEN2025109859,
83
+ title = {NepTrain and NepTrainKit: Automated active learning and visualization toolkit for neuroevolution potentials},
84
+ journal = {Computer Physics Communications},
85
+ volume = {317},
86
+ pages = {109859},
87
+ year = {2025},
88
+ issn = {0010-4655},
89
+ doi = {https://doi.org/10.1016/j.cpc.2025.109859},
90
+ url = {https://www.sciencedirect.com/science/article/pii/S0010465525003613},
91
+ author = {Chengbing Chen and Yutong Li and Rui Zhao and Zhoulin Liu and Zheyong Fan and Gang Tang and Zhiyong Wang},
92
+ }
93
+ ```
94
+
95
+ ## 许可证和第三方代码
96
+
97
+ 本仓库使用 GNU General Public License v3.0 or later,详见 [LICENSE](./LICENSE)。
98
+
99
+ NEP 计算由独立依赖 [nep-adapters](https://github.com/MagTheoryLab/NEPAdapters) 提供。NepTrainKit 已不再内置 NEP_CPU 或 GPUMD 后端源码。
100
+
101
+ 本仓库仍需保留的来源说明见 [THIRD_PARTY_NOTICES.md](./THIRD_PARTY_NOTICES.md)。`nep-adapters` 发行包会携带其后端源码对应的许可证和来源说明。
@@ -0,0 +1,34 @@
1
+ Third‑Party Notices
2
+
3
+ This document lists third-party code or designs retained directly in the
4
+ NepTrainKit repository. NEP compute backends are distributed separately by
5
+ `nep-adapters` and are not vendored here.
6
+
7
+ nep-adapters
8
+
9
+ - Repository: https://github.com/MagTheoryLab/NEPAdapters
10
+ - Role: Runtime dependency supplying CPU and CUDA NEP compute backends.
11
+ - Packaging: The dependency carries the applicable NEP_CPU and GPUMD source
12
+ notices and licenses. Those backend source trees are not part of the
13
+ NepTrainKit distribution.
14
+
15
+ GPUMD Energy Reference Aligner
16
+
17
+ - Repository: https://github.com/brucefan1983/GPUMD
18
+ - License: GNU General Public License v3.0 or later (GPL‑3.0‑or‑later)
19
+ - The energy reference alignment workflow in
20
+ `src/NepTrainKit/core/energy_shift.py` is conceptually adapted from GPUMD's
21
+ `tools/Analysis_and_Processing/energy-reference-aligner`.
22
+
23
+ License Summary
24
+
25
+ - The root of this repository includes `LICENSE` (GPL‑3.0). Consistent with the
26
+ upstream projects, this project is distributed under GPL‑3.0‑or‑later terms.
27
+ - Per the GPL, all redistributions and modifications must remain under the GPL and
28
+ must retain copyright and license notices.
29
+
30
+ Disclaimer
31
+
32
+ - The above summaries are provided for convenience and do not replace the full
33
+ text of the licenses. See `LICENSE` and the upstream repositories for the
34
+ complete license terms.
@@ -2,7 +2,7 @@
2
2
  requires = [
3
3
  "wheel",
4
4
  "numpy",
5
- "setuptools>=68.0.0",
5
+ "setuptools>=77.0.0",
6
6
  "pybind11>=2.12.0",
7
7
  "setuptools-scm>=8.2.0"
8
8
  ]
@@ -14,12 +14,11 @@ name = "NepTrainKit"
14
14
  authors = [{ name = "Chen Cheng bing", email = "1747193328@qq.com" }]
15
15
  dynamic = ["version"]
16
16
 
17
- description = """
18
- NepTrainKit is a Python package for visualizing and manipulating training datasets for NEP.
19
- """
17
+ description = "Visualize, diagnose, and manipulate NEP training datasets."
20
18
  readme = "README.md"
21
- requires-python = ">=3.10"
22
- license = { "text"="GPL-3.0" }
19
+ requires-python = ">=3.10,<3.14"
20
+ license = "GPL-3.0-or-later"
21
+ license-files = ["LICENSE", "THIRD_PARTY_NOTICES.md"]
23
22
  classifiers = [
24
23
  "Development Status :: 4 - Beta",
25
24
  "Intended Audience :: Science/Research",
@@ -28,7 +27,7 @@ classifiers = [
28
27
  "Programming Language :: Python :: 3.10",
29
28
  "Programming Language :: Python :: 3.11",
30
29
  "Programming Language :: Python :: 3.12",
31
- "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)",
30
+ "Programming Language :: Python :: 3.13",
32
31
  "Topic :: Scientific/Engineering :: Chemistry",
33
32
  "Topic :: Scientific/Engineering :: Information Analysis",
34
33
  "Topic :: Scientific/Engineering :: Physics",
@@ -39,13 +38,14 @@ dependencies = [
39
38
  "PySide6-Fluent-Widgets>=1.7.0",
40
39
  "loguru>=0.7.2",
41
40
  "requests>=2.32.3",
41
+ "packaging>=24.0",
42
42
  "pyqtgraph>=0.13.7",
43
43
  "PyOpenGL>=3.1.7",
44
44
  "numpy>=1.26.0",
45
45
  "vispy>=0.14.3",
46
46
  "ase",
47
+ "nep-adapters>=1.0.1",
47
48
  "scipy>=1.15.0",
48
- "pybind11",
49
49
  "SQLAlchemy>=2.0.0"
50
50
  ]
51
51
  [project.optional-dependencies]
@@ -53,7 +53,10 @@ test = [
53
53
  "pytest>=7.0",
54
54
  "pytest-qt>=4.2.0",
55
55
  "pytest-cov>=4.0.0",
56
- "codecov>=2.0.0"
56
+ "codecov>=2.0.0",
57
+ "ruff>=0.12.0",
58
+ "scikit-learn>=1.5.0",
59
+ "tomli>=2.0; python_version < '3.11'"
57
60
  ]
58
61
 
59
62
  [project.urls]
@@ -76,7 +79,9 @@ where = ["src"]
76
79
  include = ["NepTrainKit", "NepTrainKit.*" ]
77
80
 
78
81
  [tool.setuptools.package-data]
82
+ "NepTrainKit" = ["translations/*.qm", "translations/*.ts"]
79
83
  "NepTrainKit.Config" = ["config.sqlite","ptable.json","nep.json","nep89.txt" ]
84
+ "NepTrainKit.core.dataset" = ["catalogs/*.json"]
80
85
 
81
86
  [tool.setuptools_scm]
82
87
 
@@ -3,9 +3,11 @@ numpy==1.26.0
3
3
  PySide6-Fluent-Widgets==1.8.7
4
4
  loguru==0.7.2
5
5
  requests==2.32.3
6
+ packaging>=24.0
6
7
  pyqtgraph==0.13.7
7
8
  PyOpenGL==3.1.7
8
9
  vispy==0.15.2
9
10
  ase
11
+ nep-adapters>=1.0.1
10
12
  scipy==1.15.0
11
13
  SQLAlchemy==2.0.43
@@ -0,0 +1,74 @@
1
+ #!/usr/bin/env python
2
+ """Build NepTrainKit's application-native helpers.
3
+
4
+ NEP compute backends are supplied exclusively by the ``nep-adapters``
5
+ dependency and are intentionally not built in this package.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import os
11
+ import sys
12
+
13
+ import pybind11
14
+ from setuptools import Extension, setup
15
+
16
+
17
+ extra_compile_args: list[str] = []
18
+ extra_link_args: list[str] = []
19
+ default_omp_mode = "0" if sys.platform == "darwin" else "auto"
20
+ omp_mode = os.environ.get("NEPKIT_OPENMP", default_omp_mode).strip().lower()
21
+ use_openmp = omp_mode not in {"0", "false", "off", "no"}
22
+
23
+ if sys.platform == "win32":
24
+ if use_openmp:
25
+ extra_compile_args.append("/openmp")
26
+ extra_link_args.append("/openmp")
27
+ extra_compile_args.extend(["/O2", "/std:c++11"])
28
+ extra_link_args.extend(["/O2", "/std:c++11"])
29
+ elif sys.platform == "darwin":
30
+ extra_compile_args.extend(["-O3", "-std=c++11"])
31
+ extra_link_args.extend(["-O3", "-std=c++11"])
32
+ omp_include = os.getenv("OMP_INCLUDE_PATH", "/opt/homebrew/opt/libomp/include")
33
+ omp_lib = os.getenv("OMP_LIB_PATH", "/opt/homebrew/opt/libomp/lib")
34
+ if use_openmp and os.path.isdir(omp_include) and os.path.isdir(omp_lib):
35
+ extra_compile_args.extend(["-Xpreprocessor", "-fopenmp", f"-I{omp_include}"])
36
+ extra_link_args.extend(["-lomp", f"-L{omp_lib}"])
37
+ else:
38
+ if use_openmp:
39
+ extra_compile_args.append("-fopenmp")
40
+ extra_link_args.append("-fopenmp")
41
+ extra_compile_args.extend(["-O3", "-std=c++11"])
42
+ extra_link_args.extend(["-O3", "-std=c++11"])
43
+
44
+
45
+ def native_extension(
46
+ module_name: str,
47
+ source: str,
48
+ *,
49
+ depends: tuple[str, ...] = (),
50
+ ) -> Extension:
51
+ """Create one private application-native extension with shared headers."""
52
+ return Extension(
53
+ f"NepTrainKit._native.{module_name}",
54
+ [source],
55
+ include_dirs=[pybind11.get_include(), "src/native/include"],
56
+ extra_compile_args=list(extra_compile_args),
57
+ extra_link_args=list(extra_link_args),
58
+ depends=list(depends),
59
+ language="c++",
60
+ )
61
+
62
+
63
+ neighbor_header = "src/native/include/neptrainkit/native/periodic_neighbors.hpp"
64
+ fast_float_header = "src/native/io/fast_float.h"
65
+
66
+ setup(
67
+ ext_modules=[
68
+ native_extension("_io", "src/native/io/module.cpp", depends=(fast_float_header,)),
69
+ native_extension("_audit", "src/native/audit/module.cpp", depends=(neighbor_header,)),
70
+ native_extension("_phase", "src/native/phase/module.cpp", depends=(neighbor_header,)),
71
+ native_extension("_magnetism", "src/native/magnetism/module.cpp", depends=(neighbor_header,)),
72
+ ],
73
+ zip_safe=False,
74
+ )