NepTrainKit 2.8.4.dev0__tar.gz → 3.0.0__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 (326) hide show
  1. neptrainkit-3.0.0/.gitignore +34 -0
  2. neptrainkit-2.8.4.dev0/.readthedocs.yml → neptrainkit-3.0.0/.readthedocs.yaml +5 -7
  3. neptrainkit-3.0.0/AGENTS.md +31 -0
  4. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/MANIFEST.in +4 -7
  5. neptrainkit-3.0.0/PKG-INFO +150 -0
  6. neptrainkit-3.0.0/README.md +101 -0
  7. neptrainkit-3.0.0/README.zh-CN.md +101 -0
  8. neptrainkit-3.0.0/THIRD_PARTY_NOTICES.md +34 -0
  9. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/pyproject.toml +14 -9
  10. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/requirements.txt +2 -0
  11. neptrainkit-3.0.0/setup.py +74 -0
  12. neptrainkit-3.0.0/skills/make-dataset-card-dev/SKILL.md +185 -0
  13. neptrainkit-3.0.0/skills/make-dataset-card-dev/agents/openai.yaml +4 -0
  14. neptrainkit-3.0.0/skills/make-dataset-card-dev/references/card-touchpoints.md +38 -0
  15. neptrainkit-3.0.0/skills/make-dataset-card-dev/references/requirements-to-card-spec-template.md +84 -0
  16. neptrainkit-3.0.0/skills/make-dataset-card-dev/references/validation-playbook.md +79 -0
  17. neptrainkit-3.0.0/skills/make-dataset-card-dev/scripts/run_card_checks.py +165 -0
  18. neptrainkit-3.0.0/src/NepTrainKit/__init__.py +68 -0
  19. neptrainkit-3.0.0/src/NepTrainKit/_native/__init__.py +1 -0
  20. neptrainkit-3.0.0/src/NepTrainKit/_version.py +24 -0
  21. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/config.py +26 -0
  22. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/core/__init__.py +2 -2
  23. neptrainkit-3.0.0/src/NepTrainKit/core/adapter_api.py +70 -0
  24. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/core/alloy.py +78 -16
  25. neptrainkit-3.0.0/src/NepTrainKit/core/audit/__init__.py +129 -0
  26. neptrainkit-3.0.0/src/NepTrainKit/core/audit/composition.py +122 -0
  27. neptrainkit-3.0.0/src/NepTrainKit/core/audit/config_types.py +91 -0
  28. neptrainkit-3.0.0/src/NepTrainKit/core/audit/context.py +159 -0
  29. neptrainkit-3.0.0/src/NepTrainKit/core/audit/data_quality.py +566 -0
  30. neptrainkit-3.0.0/src/NepTrainKit/core/audit/engine.py +400 -0
  31. neptrainkit-3.0.0/src/NepTrainKit/core/audit/evidence_cache.py +463 -0
  32. neptrainkit-3.0.0/src/NepTrainKit/core/audit/extract.py +125 -0
  33. neptrainkit-3.0.0/src/NepTrainKit/core/audit/findings.py +338 -0
  34. neptrainkit-3.0.0/src/NepTrainKit/core/audit/inventory.py +209 -0
  35. neptrainkit-3.0.0/src/NepTrainKit/core/audit/label_ranges.py +212 -0
  36. neptrainkit-3.0.0/src/NepTrainKit/core/audit/local_chemistry.py +436 -0
  37. neptrainkit-3.0.0/src/NepTrainKit/core/audit/magnetic_inventory.py +509 -0
  38. neptrainkit-3.0.0/src/NepTrainKit/core/audit/neighbor_scan.py +353 -0
  39. neptrainkit-3.0.0/src/NepTrainKit/core/audit/nep_cutoff.py +93 -0
  40. neptrainkit-3.0.0/src/NepTrainKit/core/audit/pair_contacts.py +273 -0
  41. neptrainkit-3.0.0/src/NepTrainKit/core/audit/phase_inventory.py +352 -0
  42. neptrainkit-3.0.0/src/NepTrainKit/core/audit/phase_refinement.py +534 -0
  43. neptrainkit-3.0.0/src/NepTrainKit/core/audit/phase_sketch.py +706 -0
  44. neptrainkit-3.0.0/src/NepTrainKit/core/audit/report.py +736 -0
  45. neptrainkit-3.0.0/src/NepTrainKit/core/audit/result.py +424 -0
  46. neptrainkit-3.0.0/src/NepTrainKit/core/calculator.py +602 -0
  47. neptrainkit-3.0.0/src/NepTrainKit/core/card_manager.py +211 -0
  48. neptrainkit-3.0.0/src/NepTrainKit/core/cards/__init__.py +14 -0
  49. neptrainkit-3.0.0/src/NepTrainKit/core/cards/alloy.py +1616 -0
  50. neptrainkit-3.0.0/src/NepTrainKit/core/cards/defect.py +603 -0
  51. neptrainkit-3.0.0/src/NepTrainKit/core/cards/filter.py +249 -0
  52. neptrainkit-3.0.0/src/NepTrainKit/core/cards/geometry.py +22 -0
  53. neptrainkit-3.0.0/src/NepTrainKit/core/cards/lattice.py +670 -0
  54. neptrainkit-3.0.0/src/NepTrainKit/core/cards/magnetism.py +1635 -0
  55. neptrainkit-3.0.0/src/NepTrainKit/core/cards/operation.py +42 -0
  56. neptrainkit-3.0.0/src/NepTrainKit/core/cards/solvation.py +1024 -0
  57. neptrainkit-3.0.0/src/NepTrainKit/core/cards/structure.py +779 -0
  58. neptrainkit-3.0.0/src/NepTrainKit/core/dataset/__init__.py +8 -0
  59. neptrainkit-3.0.0/src/NepTrainKit/core/dataset/catalog.py +210 -0
  60. neptrainkit-3.0.0/src/NepTrainKit/core/dataset/catalogs/nep_data.v1.json +731 -0
  61. neptrainkit-3.0.0/src/NepTrainKit/core/dataset/manager.py +59 -0
  62. neptrainkit-3.0.0/src/NepTrainKit/core/dataset/seed.py +22 -0
  63. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/core/dataset/services.py +2 -28
  64. neptrainkit-3.0.0/src/NepTrainKit/core/filter_presets.py +157 -0
  65. neptrainkit-3.0.0/src/NepTrainKit/core/geometry_cache.py +201 -0
  66. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/core/io/__init__.py +9 -3
  67. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/core/io/base.py +734 -1628
  68. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/core/io/deepmd.py +93 -171
  69. neptrainkit-3.0.0/src/NepTrainKit/core/io/distribution.py +1009 -0
  70. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/core/io/importers.py +622 -300
  71. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/core/io/nep.py +310 -223
  72. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/core/io/registry.py +22 -6
  73. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/core/io/sampler.py +202 -8
  74. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/core/io/tace.py +9 -0
  75. neptrainkit-3.0.0/src/NepTrainKit/core/message.py +157 -0
  76. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/core/precision.py +9 -0
  77. neptrainkit-3.0.0/src/NepTrainKit/core/runtime_health.py +125 -0
  78. neptrainkit-3.0.0/src/NepTrainKit/core/search.py +234 -0
  79. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/core/structure.py +692 -70
  80. neptrainkit-3.0.0/src/NepTrainKit/core/structure_inspection.py +129 -0
  81. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/core/types.py +219 -1
  82. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/core/utils.py +0 -65
  83. neptrainkit-3.0.0/src/NepTrainKit/i18n.py +176 -0
  84. neptrainkit-3.0.0/src/NepTrainKit/logging_config.py +78 -0
  85. neptrainkit-3.0.0/src/NepTrainKit/main.py +827 -0
  86. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/paths.py +10 -5
  87. neptrainkit-3.0.0/src/NepTrainKit/runtime_package.py +670 -0
  88. neptrainkit-3.0.0/src/NepTrainKit/src_rc.py +28167 -0
  89. neptrainkit-3.0.0/src/NepTrainKit/startup.py +81 -0
  90. neptrainkit-3.0.0/src/NepTrainKit/translations/neptrainkit_zh_CN.qm +0 -0
  91. neptrainkit-3.0.0/src/NepTrainKit/translations/neptrainkit_zh_CN.ts +12608 -0
  92. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/canvas/base/canvas.py +88 -22
  93. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/canvas/canvas_factory.py +2 -0
  94. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/canvas/pyqtgraph/canvas.py +142 -10
  95. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/canvas/pyqtgraph/distribution.py +155 -17
  96. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/canvas/pyqtgraph/structure.py +18 -32
  97. neptrainkit-3.0.0/src/NepTrainKit/ui/canvas/structure_view.py +51 -0
  98. neptrainkit-3.0.0/src/NepTrainKit/ui/canvas/vispy/canvas.py +2522 -0
  99. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/canvas/vispy/distribution.py +130 -15
  100. neptrainkit-3.0.0/src/NepTrainKit/ui/canvas/vispy/fast_scatter.py +192 -0
  101. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/canvas/vispy/structure.py +542 -138
  102. neptrainkit-3.0.0/src/NepTrainKit/ui/controllers/__init__.py +5 -0
  103. neptrainkit-3.0.0/src/NepTrainKit/ui/controllers/structure_filter_controller.py +128 -0
  104. neptrainkit-3.0.0/src/NepTrainKit/ui/messages.py +333 -0
  105. neptrainkit-3.0.0/src/NepTrainKit/ui/pages/__init__.py +32 -0
  106. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/pages/data_manager.py +25 -12
  107. neptrainkit-3.0.0/src/NepTrainKit/ui/pages/makedata.py +856 -0
  108. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/pages/settings.py +289 -77
  109. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/pages/show_nep.py +883 -233
  110. neptrainkit-3.0.0/src/NepTrainKit/ui/pages/training_set_audit.py +4992 -0
  111. neptrainkit-3.0.0/src/NepTrainKit/ui/pages/training_set_audit_overview.py +89 -0
  112. neptrainkit-3.0.0/src/NepTrainKit/ui/threads.py +381 -0
  113. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/update.py +270 -30
  114. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/views/_card/__init__.py +25 -1
  115. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/bain_path_card.py +105 -0
  116. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/views/_card/card_group.py +61 -5
  117. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/cell_scaling_card.py +188 -0
  118. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/cell_strain_card.py +171 -0
  119. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/composition_gradient_card.py +142 -0
  120. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/composition_sweep_card.py +261 -0
  121. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/conditional_replace_card.py +134 -0
  122. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/correlated_random_spin_card.py +231 -0
  123. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/crystal_prototype_builder_card.py +155 -0
  124. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/finite_cell_alloy_occupancy_card.py +430 -0
  125. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/folded_helix_card.py +270 -0
  126. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/fps_filter_card.py +316 -0
  127. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/geometry_filter_card.py +124 -0
  128. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/group_label_card.py +120 -0
  129. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/i18n_utils.py +139 -0
  130. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/interstitial_adsorbate_card.py +218 -0
  131. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/layer_copy_card.py +270 -0
  132. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/local_solvation_card.py +316 -0
  133. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/magmom_rotation_card.py +182 -0
  134. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/magnetic_order_card.py +312 -0
  135. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/ordered_alloy_prototype_card.py +262 -0
  136. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/views/_card/organic_mol_config_pbc_card.py +141 -167
  137. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/views/_card/perturb_card.py +86 -125
  138. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/random_doping_card.py +150 -0
  139. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/random_occupancy_card.py +152 -0
  140. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/random_packing_card.py +134 -0
  141. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/views/_card/random_slab_card.py +66 -75
  142. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/random_vacancy_card.py +150 -0
  143. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/set_magnetic_moments_card.py +217 -0
  144. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/shear_angle_card.py +144 -0
  145. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/shear_matrix_card.py +152 -0
  146. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/small_angle_spin_tilt_card.py +475 -0
  147. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/solvent_box_fill_card.py +259 -0
  148. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/spin_disorder_card.py +209 -0
  149. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/spin_spiral_card.py +332 -0
  150. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/stacking_fault_card.py +108 -0
  151. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/strict_gsfe_path_card.py +133 -0
  152. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/super_cell_card.py +224 -0
  153. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/vacancy_defect_card.py +198 -0
  154. neptrainkit-3.0.0/src/NepTrainKit/ui/views/_card/vibration_perturb_card.py +179 -0
  155. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/views/cards.py +111 -10
  156. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/views/dataset_widget.py +113 -35
  157. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/views/nep.py +247 -140
  158. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/views/project_view.py +66 -22
  159. neptrainkit-3.0.0/src/NepTrainKit/ui/views/structure.py +324 -0
  160. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/views/toolbar.py +60 -49
  161. neptrainkit-3.0.0/src/NepTrainKit/ui/widgets/__init__.py +106 -0
  162. neptrainkit-3.0.0/src/NepTrainKit/ui/widgets/alloy_site_rules.py +757 -0
  163. neptrainkit-3.0.0/src/NepTrainKit/ui/widgets/audit_chart.py +991 -0
  164. neptrainkit-3.0.0/src/NepTrainKit/ui/widgets/card_metadata.py +997 -0
  165. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/widgets/card_widget.py +264 -62
  166. neptrainkit-3.0.0/src/NepTrainKit/ui/widgets/dialog.py +2224 -0
  167. neptrainkit-3.0.0/src/NepTrainKit/ui/widgets/distribution.py +687 -0
  168. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/widgets/doping_rule.py +94 -42
  169. neptrainkit-3.0.0/src/NepTrainKit/ui/widgets/filter_bar.py +878 -0
  170. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/widgets/input.py +5 -0
  171. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/widgets/search_widget.py +12 -13
  172. neptrainkit-3.0.0/src/NepTrainKit/ui/widgets/structure_filter_bar.py +1441 -0
  173. neptrainkit-3.0.0/src/NepTrainKit/ui/widgets/training_set_audit_window.py +256 -0
  174. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/widgets/tree.py +1 -2
  175. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/widgets/vacancy_rule.py +64 -16
  176. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/utils.py +0 -41
  177. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/version.py +32 -5
  178. neptrainkit-3.0.0/src/NepTrainKit.egg-info/PKG-INFO +150 -0
  179. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit.egg-info/SOURCES.txt +84 -52
  180. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit.egg-info/requires.txt +7 -1
  181. neptrainkit-3.0.0/src/NepTrainKit.egg-info/scm_file_list.json +694 -0
  182. neptrainkit-3.0.0/src/NepTrainKit.egg-info/scm_version.json +8 -0
  183. neptrainkit-3.0.0/src/native/audit/module.cpp +847 -0
  184. neptrainkit-3.0.0/src/native/include/neptrainkit/native/periodic_neighbors.hpp +655 -0
  185. neptrainkit-2.8.4.dev0/src/NepTrainKit/core/_fastxyz.cpp → neptrainkit-3.0.0/src/native/io/module.cpp +260 -136
  186. neptrainkit-3.0.0/src/native/magnetism/module.cpp +596 -0
  187. neptrainkit-3.0.0/src/native/phase/module.cpp +1003 -0
  188. neptrainkit-2.8.4.dev0/.gitignore +0 -16
  189. neptrainkit-2.8.4.dev0/PKG-INFO +0 -209
  190. neptrainkit-2.8.4.dev0/README.md +0 -163
  191. neptrainkit-2.8.4.dev0/THIRD_PARTY_NOTICES.md +0 -40
  192. neptrainkit-2.8.4.dev0/setup.py +0 -402
  193. neptrainkit-2.8.4.dev0/skills/make-dataset-card-dev/SKILL.md +0 -144
  194. neptrainkit-2.8.4.dev0/skills/make-dataset-card-dev/agents/openai.yaml +0 -4
  195. neptrainkit-2.8.4.dev0/skills/make-dataset-card-dev/references/card-touchpoints.md +0 -26
  196. neptrainkit-2.8.4.dev0/skills/make-dataset-card-dev/references/requirements-to-card-spec-template.md +0 -57
  197. neptrainkit-2.8.4.dev0/skills/make-dataset-card-dev/references/validation-playbook.md +0 -42
  198. neptrainkit-2.8.4.dev0/skills/make-dataset-card-dev/scripts/run_card_checks.py +0 -97
  199. neptrainkit-2.8.4.dev0/src/NepTrainKit/__init__.py +0 -29
  200. neptrainkit-2.8.4.dev0/src/NepTrainKit/_version.py +0 -34
  201. neptrainkit-2.8.4.dev0/src/NepTrainKit/core/calculator.py +0 -464
  202. neptrainkit-2.8.4.dev0/src/NepTrainKit/core/card_manager.py +0 -109
  203. neptrainkit-2.8.4.dev0/src/NepTrainKit/core/dataset/__init__.py +0 -2
  204. neptrainkit-2.8.4.dev0/src/NepTrainKit/core/dataset/manager.py +0 -841
  205. neptrainkit-2.8.4.dev0/src/NepTrainKit/core/message.py +0 -137
  206. neptrainkit-2.8.4.dev0/src/NepTrainKit/main.py +0 -234
  207. neptrainkit-2.8.4.dev0/src/NepTrainKit/src_rc.py +0 -31929
  208. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/canvas/vispy/canvas.py +0 -1076
  209. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/messages.py +0 -95
  210. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/pages/__init__.py +0 -9
  211. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/pages/makedata.py +0 -489
  212. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/threads.py +0 -200
  213. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/cell_scaling_card.py +0 -231
  214. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/cell_strain_card.py +0 -217
  215. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/composition_sweep_card.py +0 -516
  216. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/conditional_replace_card.py +0 -447
  217. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/crystal_prototype_builder_card.py +0 -200
  218. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/folded_helix_card.py +0 -435
  219. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/fps_filter_card.py +0 -203
  220. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/group_label_card.py +0 -136
  221. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/interstitial_adsorbate_card.py +0 -312
  222. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/layer_copy_card.py +0 -465
  223. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/magmom_rotation_card.py +0 -263
  224. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/magnetic_order_card.py +0 -442
  225. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/random_doping_card.py +0 -249
  226. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/random_occupancy_card.py +0 -177
  227. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/random_vacancy_card.py +0 -172
  228. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/set_magnetic_moments_card.py +0 -271
  229. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/shear_angle_card.py +0 -169
  230. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/shear_matrix_card.py +0 -179
  231. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/small_angle_spin_tilt_card.py +0 -851
  232. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/spin_spiral_card.py +0 -669
  233. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/stacking_fault_card.py +0 -116
  234. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/super_cell_card.py +0 -486
  235. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/vacancy_defect_card.py +0 -213
  236. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/_card/vibration_perturb_card.py +0 -209
  237. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/views/structure.py +0 -86
  238. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/widgets/__init__.py +0 -96
  239. neptrainkit-2.8.4.dev0/src/NepTrainKit/ui/widgets/dialog.py +0 -2591
  240. neptrainkit-2.8.4.dev0/src/NepTrainKit.egg-info/PKG-INFO +0 -209
  241. neptrainkit-2.8.4.dev0/src/nep_cpu/README.md +0 -32
  242. neptrainkit-2.8.4.dev0/src/nep_cpu/dftd3para.h +0 -12491
  243. neptrainkit-2.8.4.dev0/src/nep_cpu/ewald_nep.cpp +0 -282
  244. neptrainkit-2.8.4.dev0/src/nep_cpu/ewald_nep.h +0 -45
  245. neptrainkit-2.8.4.dev0/src/nep_cpu/neighbor_nep.cpp +0 -397
  246. neptrainkit-2.8.4.dev0/src/nep_cpu/neighbor_nep.h +0 -39
  247. neptrainkit-2.8.4.dev0/src/nep_cpu/nep.cpp +0 -3095
  248. neptrainkit-2.8.4.dev0/src/nep_cpu/nep.h +0 -243
  249. neptrainkit-2.8.4.dev0/src/nep_cpu/nep_cpu.cpp +0 -494
  250. neptrainkit-2.8.4.dev0/src/nep_cpu/nep_utilities.h +0 -929
  251. neptrainkit-2.8.4.dev0/src/nep_gpu/README.md +0 -34
  252. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/dataset.cu +0 -1036
  253. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/dataset.cuh +0 -103
  254. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/fitness.cu +0 -739
  255. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/fitness.cuh +0 -71
  256. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/main.cu +0 -80
  257. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/mic.cuh +0 -32
  258. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/nep.cu +0 -906
  259. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/nep.cuh +0 -103
  260. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/nep_charge.cu +0 -1783
  261. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/nep_charge.cuh +0 -129
  262. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/parameters.cu +0 -1374
  263. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/parameters.cuh +0 -165
  264. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/potential.cuh +0 -33
  265. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/snes.cu +0 -698
  266. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/snes.cuh +0 -81
  267. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/structure.cu +0 -701
  268. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/structure.cuh +0 -54
  269. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/tnep.cu +0 -810
  270. neptrainkit-2.8.4.dev0/src/nep_gpu/main_nep/tnep.cuh +0 -96
  271. neptrainkit-2.8.4.dev0/src/nep_gpu/nep_desc.cu +0 -214
  272. neptrainkit-2.8.4.dev0/src/nep_gpu/nep_desc.cuh +0 -227
  273. neptrainkit-2.8.4.dev0/src/nep_gpu/nep_gpu.cu +0 -927
  274. neptrainkit-2.8.4.dev0/src/nep_gpu/nep_parameters.cu +0 -262
  275. neptrainkit-2.8.4.dev0/src/nep_gpu/nep_parameters.cuh +0 -38
  276. neptrainkit-2.8.4.dev0/src/nep_gpu/utilities/common.cuh +0 -27
  277. neptrainkit-2.8.4.dev0/src/nep_gpu/utilities/cusolver_wrapper.cu +0 -197
  278. neptrainkit-2.8.4.dev0/src/nep_gpu/utilities/cusolver_wrapper.cuh +0 -21
  279. neptrainkit-2.8.4.dev0/src/nep_gpu/utilities/error.cu +0 -189
  280. neptrainkit-2.8.4.dev0/src/nep_gpu/utilities/error.cuh +0 -85
  281. neptrainkit-2.8.4.dev0/src/nep_gpu/utilities/gnep_utilities.cuh +0 -1797
  282. neptrainkit-2.8.4.dev0/src/nep_gpu/utilities/gpu_macro.cuh +0 -199
  283. neptrainkit-2.8.4.dev0/src/nep_gpu/utilities/gpu_vector.cuh +0 -207
  284. neptrainkit-2.8.4.dev0/src/nep_gpu/utilities/least_square.cuh +0 -497
  285. neptrainkit-2.8.4.dev0/src/nep_gpu/utilities/main_common.cu +0 -76
  286. neptrainkit-2.8.4.dev0/src/nep_gpu/utilities/main_common.cuh +0 -19
  287. neptrainkit-2.8.4.dev0/src/nep_gpu/utilities/nep_utilities.cuh +0 -938
  288. neptrainkit-2.8.4.dev0/src/nep_gpu/utilities/read_file.cu +0 -133
  289. neptrainkit-2.8.4.dev0/src/nep_gpu/utilities/read_file.cuh +0 -21
  290. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/.gitattributes +0 -0
  291. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/LICENSE +0 -0
  292. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/pyrightconfig.json +0 -0
  293. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/setup.cfg +0 -0
  294. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/Config/config.sqlite +0 -0
  295. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/Config/nep.json +0 -0
  296. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/Config/nep89.txt +0 -0
  297. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/Config/ptable.json +0 -0
  298. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/core/config_type.py +0 -0
  299. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/core/cstdio_redirect.py +0 -0
  300. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/core/dataset/database.py +0 -0
  301. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/core/dataset/models.py +0 -0
  302. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/core/energy_shift.py +0 -0
  303. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/core/magnetism.py +0 -0
  304. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/core/torsion_guard_pbc.py +0 -0
  305. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/__init__.py +0 -0
  306. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/canvas/__init__.py +0 -0
  307. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/canvas/base/__init__.py +0 -0
  308. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/canvas/base/distribution.py +0 -0
  309. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/canvas/distribution_factory.py +0 -0
  310. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/canvas/pyqtgraph/__init__.py +0 -0
  311. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/canvas/vispy/__init__.py +0 -0
  312. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/dialogs.py +0 -0
  313. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/updater.py +0 -0
  314. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/views/__init__.py +0 -0
  315. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/widgets/button.py +0 -0
  316. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/widgets/completer.py +0 -0
  317. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/widgets/docker.py +0 -0
  318. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/widgets/label.py +0 -0
  319. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/widgets/layout.py +0 -0
  320. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/widgets/settingscard.py +0 -0
  321. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit/ui/widgets/table.py +0 -0
  322. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit.egg-info/dependency_links.txt +0 -0
  323. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit.egg-info/entry_points.txt +0 -0
  324. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit.egg-info/not-zip-safe +0 -0
  325. {neptrainkit-2.8.4.dev0 → neptrainkit-3.0.0}/src/NepTrainKit.egg-info/top_level.txt +0 -0
  326. {neptrainkit-2.8.4.dev0/src/NepTrainKit/core → neptrainkit-3.0.0/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.0
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
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",
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
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
+ )