TACE 0.2.1__tar.gz → 0.2.2__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 (348) hide show
  1. {tace-0.2.1 → tace-0.2.2}/PKG-INFO +6 -2
  2. {tace-0.2.1 → tace-0.2.2}/README.md +70 -54
  3. {tace-0.2.1 → tace-0.2.2}/TACE.egg-info/PKG-INFO +6 -2
  4. {tace-0.2.1 → tace-0.2.2}/TACE.egg-info/SOURCES.txt +107 -10
  5. {tace-0.2.1 → tace-0.2.2}/TACE.egg-info/entry_points.txt +3 -1
  6. {tace-0.2.1 → tace-0.2.2}/TACE.egg-info/requires.txt +6 -1
  7. tace-0.2.2/eqx/LICENSE.md +402 -0
  8. tace-0.2.2/eqx/README.md +116 -0
  9. tace-0.2.2/eqx/__init__.py +31 -0
  10. tace-0.2.2/eqx/_layout.py +30 -0
  11. tace-0.2.2/eqx/ace/__init__.py +5 -0
  12. tace-0.2.2/eqx/ace/contraction.py +82 -0
  13. tace-0.2.2/eqx/ace/cuda.py +251 -0
  14. tace-0.2.2/eqx/ace/tace.py +273 -0
  15. tace-0.2.2/eqx/co2/__init__.py +43 -0
  16. tace-0.2.2/eqx/co2/basis.py +125 -0
  17. tace-0.2.2/eqx/co2/cartesian_harmonics.py +68 -0
  18. tace-0.2.2/eqx/co2/gate.py +72 -0
  19. tace-0.2.2/eqx/co2/irreps.py +247 -0
  20. tace-0.2.2/eqx/co2/linear.py +173 -0
  21. tace-0.2.2/eqx/co2/o3_tensor_product.py +324 -0
  22. tace-0.2.2/eqx/co2/restriction.py +265 -0
  23. tace-0.2.2/eqx/co2/spherical.py +256 -0
  24. tace-0.2.2/eqx/co2/tensor_product.py +282 -0
  25. tace-0.2.2/eqx/co3/__init__.py +28 -0
  26. tace-0.2.2/eqx/co3/basis.py +155 -0
  27. tace-0.2.2/eqx/co3/cartesian_harmonics.py +123 -0
  28. tace-0.2.2/eqx/co3/gate.py +104 -0
  29. tace-0.2.2/eqx/co3/irreps.py +288 -0
  30. tace-0.2.2/eqx/co3/linear.py +268 -0
  31. tace-0.2.2/eqx/co3/symmetric.py +207 -0
  32. tace-0.2.2/eqx/co3/tensor_product.py +422 -0
  33. tace-0.2.2/eqx/conv/__init__.py +18 -0
  34. tace-0.2.2/eqx/conv/angular.py +101 -0
  35. tace-0.2.2/eqx/conv/attention.py +477 -0
  36. tace-0.2.2/eqx/conv/co3/__init__.py +6 -0
  37. tace-0.2.2/eqx/conv/co3/convolution.py +431 -0
  38. tace-0.2.2/eqx/conv/co3/linear.py +213 -0
  39. tace-0.2.2/eqx/conv/co3/polynomials.py +365 -0
  40. tace-0.2.2/eqx/conv/codegen.py +455 -0
  41. tace-0.2.2/eqx/conv/contraction.py +47 -0
  42. tace-0.2.2/eqx/conv/edge.py +181 -0
  43. tace-0.2.2/eqx/conv/graph.py +94 -0
  44. tace-0.2.2/eqx/conv/o2_o3/__init__.py +5 -0
  45. tace-0.2.2/eqx/conv/o2_o3/autotune.py +140 -0
  46. tace-0.2.2/eqx/conv/o2_o3/codegen.py +570 -0
  47. tace-0.2.2/eqx/conv/o2_o3/convolution.py +598 -0
  48. tace-0.2.2/eqx/conv/o2_o3/cuda.py +630 -0
  49. tace-0.2.2/eqx/conv/o2_o3/direction_codegen.py +433 -0
  50. tace-0.2.2/eqx/conv/o2_o3/geometry.py +369 -0
  51. tace-0.2.2/eqx/conv/o2_o3/schedule.py +209 -0
  52. tace-0.2.2/eqx/conv/o2_o3/transverse.py +512 -0
  53. tace-0.2.2/eqx/conv/o3/__init__.py +5 -0
  54. tace-0.2.2/eqx/conv/o3/codegen.py +455 -0
  55. tace-0.2.2/eqx/conv/o3/convolution.py +383 -0
  56. tace-0.2.2/eqx/conv/o3/cuda.py +346 -0
  57. tace-0.2.2/eqx/conv/o3/harmonics.py +550 -0
  58. tace-0.2.2/eqx/conv/program.py +244 -0
  59. tace-0.2.2/eqx/conv/radial.py +183 -0
  60. tace-0.2.2/eqx/conv/uu_o2/__init__.py +5 -0
  61. tace-0.2.2/eqx/conv/uu_o2/convolution.py +385 -0
  62. tace-0.2.2/eqx/conv/uv_o2/__init__.py +5 -0
  63. tace-0.2.2/eqx/conv/uv_o2/convolution.py +645 -0
  64. tace-0.2.2/eqx/conv/uv_o2/transverse.py +176 -0
  65. tace-0.2.2/eqx/kernels/__init__.py +5 -0
  66. tace-0.2.2/eqx/kernels/channel_product.py +150 -0
  67. tace-0.2.2/eqx/kernels/codegen.py +401 -0
  68. tace-0.2.2/eqx/kernels/csrc/runtime.cpp +174 -0
  69. tace-0.2.2/eqx/kernels/cuda.py +181 -0
  70. tace-0.2.2/eqx/kernels/cuda_graph.py +170 -0
  71. tace-0.2.2/eqx/kernels/layout.py +226 -0
  72. tace-0.2.2/eqx/kernels/quaternion.py +347 -0
  73. tace-0.2.2/eqx/kernels/recompute.py +180 -0
  74. tace-0.2.2/eqx/kernels/rotary.py +161 -0
  75. tace-0.2.2/eqx/kernels/rotation.py +135 -0
  76. tace-0.2.2/eqx/kernels/wigner.py +277 -0
  77. tace-0.2.2/eqx/models/__init__.py +1 -0
  78. tace-0.2.2/eqx/models/convolution.py +274 -0
  79. tace-0.2.2/eqx/models/equflash/__init__.py +5 -0
  80. tace-0.2.2/eqx/models/equflash/conversion.py +198 -0
  81. tace-0.2.2/eqx/models/mace/__init__.py +5 -0
  82. tace-0.2.2/eqx/models/mace/conversion.py +217 -0
  83. tace-0.2.2/eqx/models/nequip/__init__.py +5 -0
  84. tace-0.2.2/eqx/models/nequip/conversion.py +145 -0
  85. tace-0.2.2/eqx/models/prophet/__init__.py +5 -0
  86. tace-0.2.2/eqx/models/prophet/conversion.py +110 -0
  87. tace-0.2.2/eqx/models/sevennet/__init__.py +5 -0
  88. tace-0.2.2/eqx/models/sevennet/conversion.py +136 -0
  89. tace-0.2.2/eqx/models/tace/__init__.py +1 -0
  90. tace-0.2.2/eqx/models/tace/tece_oam_rra/__init__.py +6 -0
  91. tace-0.2.2/eqx/models/tace/tece_oam_rra/bilinear_contraction.py +91 -0
  92. tace-0.2.2/eqx/models/tace/tece_oam_rra/bilinear_cuda.py +359 -0
  93. tace-0.2.2/eqx/models/tace/tece_oam_rra/cuda.py +34 -0
  94. tace-0.2.2/eqx/models/tace/tece_oam_rra/execution.py +265 -0
  95. tace-0.2.2/eqx/models/tace/tece_oam_rra/interaction.py +203 -0
  96. tace-0.2.2/eqx/models/tace/tece_oam_rra/product.py +248 -0
  97. tace-0.2.2/eqx/models/tace/tece_oam_rra/program.py +338 -0
  98. tace-0.2.2/eqx/o2/__init__.py +35 -0
  99. tace-0.2.2/eqx/o2/_clebsch_gordan.py +91 -0
  100. tace-0.2.2/eqx/o2/_layout.py +34 -0
  101. tace-0.2.2/eqx/o2/asymmetric_contraction.py +385 -0
  102. tace-0.2.2/eqx/o2/circular_harmonics.py +131 -0
  103. tace-0.2.2/eqx/o2/gate.py +434 -0
  104. tace-0.2.2/eqx/o2/irreps.py +625 -0
  105. tace-0.2.2/eqx/o2/linear.py +579 -0
  106. tace-0.2.2/eqx/o2/local_frame.py +421 -0
  107. tace-0.2.2/eqx/o2/o3_tensor_product.py +500 -0
  108. tace-0.2.2/eqx/o2/rotation_matrix.py +143 -0
  109. tace-0.2.2/eqx/o2/tensor_product.py +480 -0
  110. tace-0.2.2/eqx/o2/wigner.py +214 -0
  111. tace-0.2.2/eqx/o3/__init__.py +6 -0
  112. tace-0.2.2/eqx/o3/contraction.py +51 -0
  113. tace-0.2.2/eqx/o3/cuda.py +106 -0
  114. tace-0.2.2/eqx/o3/gate.py +108 -0
  115. tace-0.2.2/eqx/o3/linear.py +181 -0
  116. tace-0.2.2/eqx/utils.py +31 -0
  117. {tace-0.2.1 → tace-0.2.2}/pyproject.toml +20 -4
  118. {tace-0.2.1 → tace-0.2.2}/tace/__init__.py +5 -1
  119. tace-0.2.2/tace/dataset/augmentation.py +130 -0
  120. {tace-0.2.1 → tace-0.2.2}/tace/dataset/dataloader.py +65 -29
  121. {tace-0.2.1 → tace-0.2.2}/tace/dataset/datamodule.py +12 -11
  122. {tace-0.2.1 → tace-0.2.2}/tace/dataset/quantity.py +103 -62
  123. tace-0.2.2/tace/dataset/statistics.py +732 -0
  124. {tace-0.2.1 → tace-0.2.2}/tace/interface/ase/calculator.py +1 -1
  125. {tace-0.2.1 → tace-0.2.2}/tace/interface/nvalchemi/wrapper.py +11 -18
  126. {tace-0.2.1 → tace-0.2.2}/tace/interface/torchsim/torchsim.py +77 -57
  127. {tace-0.2.1 → tace-0.2.2}/tace/lightning/__init__.py +2 -1
  128. {tace-0.2.1 → tace-0.2.2}/tace/lightning/lit_model.py +188 -59
  129. {tace-0.2.1 → tace-0.2.2}/tace/lightning/torch_model.py +1 -1
  130. {tace-0.2.1 → tace-0.2.2}/tace/lightning/trainer.py +2 -0
  131. {tace-0.2.1 → tace-0.2.2}/tace/models/__init__.py +6 -4
  132. {tace-0.2.1 → tace-0.2.2}/tace/models/_e3nn/base.py +56 -17
  133. {tace-0.2.1 → tace-0.2.2}/tace/models/_e3nn/default.py +77 -40
  134. {tace-0.2.1 → tace-0.2.2}/tace/models/_e3nn/edge.py +12 -98
  135. tace-0.2.2/tace/models/_e3nn/fused.py +634 -0
  136. {tace-0.2.1 → tace-0.2.2}/tace/models/_e3nn/inter.py +388 -301
  137. {tace-0.2.1 → tace-0.2.2}/tace/models/_e3nn/layer_norm.py +47 -35
  138. tace-0.2.2/tace/models/_e3nn/magnetic.py +201 -0
  139. tace-0.2.2/tace/models/_e3nn/node.py +355 -0
  140. {tace-0.2.1 → tace-0.2.2}/tace/models/_e3nn/nonlinear.py +15 -64
  141. tace-0.2.2/tace/models/_e3nn/o2.py +683 -0
  142. tace-0.2.2/tace/models/_e3nn/paths.py +176 -0
  143. tace-0.2.2/tace/models/_e3nn/prod.py +498 -0
  144. {tace-0.2.1 → tace-0.2.2}/tace/models/_e3nn/readout.py +19 -12
  145. {tace-0.2.1 → tace-0.2.2}/tace/models/_e3nn/representation.py +304 -89
  146. tace-0.2.2/tace/models/_e3nn/symmetric_contraction.py +565 -0
  147. {tace-0.2.1 → tace-0.2.2}/tace/models/_e3nn/tace.py +34 -53
  148. tace-0.2.2/tace/models/_e3nn/tece_oam_rra.py +531 -0
  149. {tace-0.2.1 → tace-0.2.2}/tace/models/_e3nn/ue.py +34 -4
  150. tace-0.2.2/tace/models/_e3nn/wigner6j.py +553 -0
  151. {tace-0.2.1 → tace-0.2.2}/tace/models/adapter.py +20 -5
  152. {tace-0.2.1 → tace-0.2.2}/tace/models/angular.py +31 -60
  153. tace-0.2.2/tace/models/blocks.py +237 -0
  154. {tace-0.2.1 → tace-0.2.2}/tace/models/compile/aot.py +21 -0
  155. {tace-0.2.1 → tace-0.2.2}/tace/models/compile/compile.py +5 -0
  156. {tace-0.2.1 → tace-0.2.2}/tace/models/compile/tace.py +5 -0
  157. {tace-0.2.1 → tace-0.2.2}/tace/models/compile/wrapper.py +5 -0
  158. {tace-0.2.1 → tace-0.2.2}/tace/models/cue/paths.py +18 -11
  159. {tace-0.2.1 → tace-0.2.2}/tace/models/eqt/__init__.py +3 -3
  160. {tace-0.2.1 → tace-0.2.2}/tace/models/eqt/_tp_uuu.py +13 -3
  161. {tace-0.2.1 → tace-0.2.2}/tace/models/eqt/equitorch/irreps/__init__.py +1 -1
  162. {tace-0.2.1 → tace-0.2.2}/tace/models/eqt/equitorch/nn/sparse_product.py +3 -3
  163. {tace-0.2.1 → tace-0.2.2}/tace/models/lammps.py +1 -0
  164. tace-0.2.2/tace/models/layout.py +138 -0
  165. {tace-0.2.1 → tace-0.2.2}/tace/models/linear.py +119 -32
  166. {tace-0.2.1 → tace-0.2.2}/tace/models/mlp.py +1 -0
  167. {tace-0.2.1 → tace-0.2.2}/tace/models/oeq/_tp_scatter.py +10 -6
  168. {tace-0.2.1 → tace-0.2.2}/tace/models/radial.py +275 -249
  169. {tace-0.2.1 → tace-0.2.2}/tace/models/scf/longrange/kspace.py +0 -5
  170. {tace-0.2.1 → tace-0.2.2}/tace/models/scf/longrange/utils.py +2 -25
  171. {tace-0.2.1 → tace-0.2.2}/tace/models/softmax.py +8 -3
  172. tace-0.2.2/tace/models/time_reversal.py +60 -0
  173. {tace-0.2.1 → tace-0.2.2}/tace/models/utils.py +45 -0
  174. tace-0.2.2/tace/scripts/convert_cgtp.py +41 -0
  175. {tace-0.2.1 → tace-0.2.2}/tace/scripts/eval.py +0 -3
  176. {tace-0.2.1 → tace-0.2.2}/tace/scripts/export_eval.py +7 -0
  177. {tace-0.2.1 → tace-0.2.2}/tace/scripts/export_lammps.py +7 -0
  178. {tace-0.2.1 → tace-0.2.2}/tace/scripts/finetune.py +1 -1
  179. tace-0.2.2/tace/scripts/plot_diatom.py +296 -0
  180. {tace-0.2.1 → tace-0.2.2}/tace/scripts/train.py +10 -11
  181. {tace-0.2.1 → tace-0.2.2}/tace/utils/env.py +31 -8
  182. {tace-0.2.1 → tace-0.2.2}/tace/utils/loss/dens.py +4 -3
  183. {tace-0.2.1 → tace-0.2.2}/tace/utils/torch_scatter.py +1 -1
  184. {tace-0.2.1 → tace-0.2.2}/tace/utils/utils.py +3 -54
  185. tace-0.2.2/tests/test_cartesian.py +121 -0
  186. {tace-0.2.1 → tace-0.2.2}/tests/test_compile.py +97 -2
  187. {tace-0.2.1 → tace-0.2.2}/tests/test_eqt.py +63 -56
  188. tace-0.2.2/tests/test_eqx_integration.py +1487 -0
  189. {tace-0.2.1 → tace-0.2.2}/tests/test_les.py +0 -32
  190. tace-0.2.2/tests/test_local_o2.py +1535 -0
  191. {tace-0.2.1 → tace-0.2.2}/tests/test_loss.py +43 -65
  192. {tace-0.2.1 → tace-0.2.2}/tests/test_magnetic_optimizer.py +4 -30
  193. tace-0.2.2/tests/test_product.py +462 -0
  194. tace-0.2.2/tests/test_radial.py +250 -0
  195. {tace-0.2.1 → tace-0.2.2}/tests/test_scf.py +0 -6
  196. tace-0.2.2/tests/test_statistics.py +416 -0
  197. tace-0.2.2/tests/test_time_reversal.py +613 -0
  198. tace-0.2.2/tests/test_torchsim.py +169 -0
  199. tace-0.2.2/tests/test_wigner6j.py +495 -0
  200. tace-0.2.1/eqx/README.md +0 -324
  201. tace-0.2.1/eqx/__init__.py +0 -3
  202. tace-0.2.1/eqx/co3/__init__.py +0 -21
  203. tace-0.2.1/eqx/co3/cartesian_harmonics.py +0 -75
  204. tace-0.2.1/eqx/co3/gate.py +0 -148
  205. tace-0.2.1/eqx/co3/irreps.py +0 -313
  206. tace-0.2.1/eqx/co3/layout.py +0 -79
  207. tace-0.2.1/eqx/co3/linear.py +0 -197
  208. tace-0.2.1/eqx/co3/projector.py +0 -39
  209. tace-0.2.1/eqx/co3/tensor_product.py +0 -336
  210. tace-0.2.1/eqx/co3/utils.py +0 -33
  211. tace-0.2.1/eqx/docs/source/conf.py +0 -45
  212. tace-0.2.1/eqx/o2/__init__.py +0 -24
  213. tace-0.2.1/eqx/o2/asymmetric_contraction.py +0 -411
  214. tace-0.2.1/eqx/o2/circular_harmonics.py +0 -89
  215. tace-0.2.1/eqx/o2/gate.py +0 -221
  216. tace-0.2.1/eqx/o2/irreps.py +0 -408
  217. tace-0.2.1/eqx/o2/linear.py +0 -419
  218. tace-0.2.1/eqx/o2/local_frame.py +0 -422
  219. tace-0.2.1/eqx/o2/rotation_matrix.py +0 -88
  220. tace-0.2.1/eqx/o2/tensor_product.py +0 -387
  221. tace-0.2.1/eqx/o2/wigner.py +0 -163
  222. tace-0.2.1/tace/dataset/statistics.py +0 -586
  223. tace-0.2.1/tace/models/_cart/__init__.py +0 -7
  224. tace-0.2.1/tace/models/_e3nn/fused.py +0 -280
  225. tace-0.2.1/tace/models/_e3nn/legacy_so2.py +0 -982
  226. tace-0.2.1/tace/models/_e3nn/node.py +0 -237
  227. tace-0.2.1/tace/models/_e3nn/o2.py +0 -626
  228. tace-0.2.1/tace/models/_e3nn/paths.py +0 -71
  229. tace-0.2.1/tace/models/_e3nn/prod.py +0 -273
  230. tace-0.2.1/tace/models/_e3nn/symmetric_contraction.py +0 -566
  231. tace-0.2.1/tace/models/_e3nn/wigner6j.py +0 -445
  232. tace-0.2.1/tace/models/blocks.py +0 -456
  233. tace-0.2.1/tace/models/layout.py +0 -140
  234. tace-0.2.1/tace/models/mag.py +0 -157
  235. tace-0.2.1/tests/test_co3.py +0 -289
  236. tace-0.2.1/tests/test_o2.py +0 -2685
  237. tace-0.2.1/tests/test_wigner6j.py +0 -370
  238. {tace-0.2.1 → tace-0.2.2}/LICENSE.md +0 -0
  239. {tace-0.2.1 → tace-0.2.2}/TACE.egg-info/dependency_links.txt +0 -0
  240. {tace-0.2.1 → tace-0.2.2}/TACE.egg-info/top_level.txt +0 -0
  241. {tace-0.2.1 → tace-0.2.2}/setup.cfg +0 -0
  242. {tace-0.2.1 → tace-0.2.2}/tace/dataset/__init__.py +0 -0
  243. {tace-0.2.1 → tace-0.2.2}/tace/dataset/element.py +0 -0
  244. {tace-0.2.1 → tace-0.2.2}/tace/dataset/graph.py +0 -0
  245. {tace-0.2.1 → tace-0.2.2}/tace/dataset/neighbour_list.py +0 -0
  246. {tace-0.2.1 → tace-0.2.2}/tace/dataset/read.py +0 -0
  247. {tace-0.2.1 → tace-0.2.2}/tace/dataset/sampler.py +0 -0
  248. {tace-0.2.1 → tace-0.2.2}/tace/dataset/split.py +0 -0
  249. {tace-0.2.1 → tace-0.2.2}/tace/dataset/utils.py +0 -0
  250. {tace-0.2.1 → tace-0.2.2}/tace/foundations/__init__.py +0 -0
  251. {tace-0.2.1 → tace-0.2.2}/tace/foundations/download_link.py +0 -0
  252. {tace-0.2.1 → tace-0.2.2}/tace/foundations/u_shift.py +0 -0
  253. {tace-0.2.1 → tace-0.2.2}/tace/interface/__init__.py +0 -0
  254. {tace-0.2.1 → tace-0.2.2}/tace/interface/ase/__init__.py +0 -0
  255. {tace-0.2.1 → tace-0.2.2}/tace/interface/ase/general_calculator.py +0 -0
  256. {tace-0.2.1 → tace-0.2.2}/tace/interface/ase/optimizer.py +0 -0
  257. {tace-0.2.1 → tace-0.2.2}/tace/interface/lammps/__init__.py +0 -0
  258. {tace-0.2.1 → tace-0.2.2}/tace/interface/lammps/mliap.py +0 -0
  259. {tace-0.2.1 → tace-0.2.2}/tace/interface/nvalchemi/__init__.py +0 -0
  260. {tace-0.2.1 → tace-0.2.2}/tace/interface/openmm/__init__.py +0 -0
  261. {tace-0.2.1 → tace-0.2.2}/tace/interface/torchsim/__init__.py +0 -0
  262. {tace-0.2.1 → tace-0.2.2}/tace/interface/uspex26/__init__.py +0 -0
  263. {tace-0.2.1 → tace-0.2.2}/tace/interface/uspex26/relax.py +0 -0
  264. {tace-0.2.1 → tace-0.2.2}/tace/lightning/lora.py +0 -0
  265. {tace-0.2.1 → tace-0.2.2}/tace/lightning/loss_skip.py +0 -0
  266. {tace-0.2.1 → tace-0.2.2}/tace/lightning/u_shift.py +0 -0
  267. {tace-0.2.1 → tace-0.2.2}/tace/models/_e3nn/__init__.py +0 -0
  268. {tace-0.2.1 → tace-0.2.2}/tace/models/_e3nn/basis_change.py +0 -0
  269. {tace-0.2.1 → tace-0.2.2}/tace/models/_e3nn/dropout.py +0 -0
  270. {tace-0.2.1 → tace-0.2.2}/tace/models/_e3nn/les.py +0 -0
  271. {tace-0.2.1 → tace-0.2.2}/tace/models/_e3nn/residual.py +0 -0
  272. {tace-0.2.1 → tace-0.2.2}/tace/models/_e3nn/scatter_norm.py +0 -0
  273. {tace-0.2.1 → tace-0.2.2}/tace/models/compile/__init__.py +0 -0
  274. {tace-0.2.1 → tace-0.2.2}/tace/models/cue/__init__.py +0 -0
  275. {tace-0.2.1 → tace-0.2.2}/tace/models/cue/_tp_scatter.py +0 -0
  276. {tace-0.2.1 → tace-0.2.2}/tace/models/cue/_tp_uuu.py +0 -0
  277. {tace-0.2.1 → tace-0.2.2}/tace/models/eqt/equitorch/__init__.py +0 -0
  278. {tace-0.2.1 → tace-0.2.2}/tace/models/eqt/equitorch/nn/__init__.py +0 -0
  279. {tace-0.2.1 → tace-0.2.2}/tace/models/eqt/equitorch/nn/tensor_products.py +0 -0
  280. {tace-0.2.1 → tace-0.2.2}/tace/models/eqt/equitorch/structs/__init__.py +0 -0
  281. {tace-0.2.1 → tace-0.2.2}/tace/models/ictd.py +0 -0
  282. {tace-0.2.1 → tace-0.2.2}/tace/models/kspace.py +0 -0
  283. {tace-0.2.1 → tace-0.2.2}/tace/models/normalizer.py +0 -0
  284. {tace-0.2.1 → tace-0.2.2}/tace/models/oeq/__init__.py +0 -0
  285. {tace-0.2.1 → tace-0.2.2}/tace/models/s2.py +0 -0
  286. {tace-0.2.1 → tace-0.2.2}/tace/models/scf/README.md +0 -0
  287. {tace-0.2.1 → tace-0.2.2}/tace/models/scf/__init__.py +0 -0
  288. {tace-0.2.1 → tace-0.2.2}/tace/models/scf/electrostatics.py +0 -0
  289. {tace-0.2.1 → tace-0.2.2}/tace/models/scf/energy_functional.py +0 -0
  290. {tace-0.2.1 → tace-0.2.2}/tace/models/scf/fixed_point.py +0 -0
  291. {tace-0.2.1 → tace-0.2.2}/tace/models/scf/local.py +0 -0
  292. {tace-0.2.1 → tace-0.2.2}/tace/models/scf/longrange/LICENSE.md +0 -0
  293. {tace-0.2.1 → tace-0.2.2}/tace/models/scf/longrange/NOTICE.md +0 -0
  294. {tace-0.2.1 → tace-0.2.2}/tace/models/scf/longrange/__init__.py +0 -0
  295. {tace-0.2.1 → tace-0.2.2}/tace/models/scf/longrange/__version__.py +0 -0
  296. {tace-0.2.1 → tace-0.2.2}/tace/models/scf/longrange/energy.py +0 -0
  297. {tace-0.2.1 → tace-0.2.2}/tace/models/scf/longrange/features.py +0 -0
  298. {tace-0.2.1 → tace-0.2.2}/tace/models/scf/longrange/gto_utils.py +0 -0
  299. {tace-0.2.1 → tace-0.2.2}/tace/models/scf/longrange/realspace_electrostatics.py +0 -0
  300. {tace-0.2.1 → tace-0.2.2}/tace/models/scf/longrange/realspace_grid_integrals.py +0 -0
  301. {tace-0.2.1 → tace-0.2.2}/tace/models/scf/longrange/slabs.py +0 -0
  302. {tace-0.2.1 → tace-0.2.2}/tace/models/scf/loss.py +0 -0
  303. {tace-0.2.1 → tace-0.2.2}/tace/models/scf/model.py +0 -0
  304. {tace-0.2.1 → tace-0.2.2}/tace/models/scf/qeq.py +0 -0
  305. {tace-0.2.1 → tace-0.2.2}/tace/models/scf/readout.py +0 -0
  306. {tace-0.2.1 → tace-0.2.2}/tace/models/scf/state.py +0 -0
  307. {tace-0.2.1 → tace-0.2.2}/tace/models/scf/utils.py +0 -0
  308. {tace-0.2.1 → tace-0.2.2}/tace/models/zemin.py +0 -0
  309. {tace-0.2.1 → tace-0.2.2}/tace/scripts/__init__.py +0 -0
  310. {tace-0.2.1 → tace-0.2.2}/tace/scripts/average.py +0 -0
  311. {tace-0.2.1 → tace-0.2.2}/tace/scripts/clean.py +0 -0
  312. /tace-0.2.1/tace/scripts/convert.py → /tace-0.2.2/tace/scripts/convert_lora.py +0 -0
  313. {tace-0.2.1 → tace-0.2.2}/tace/scripts/export_train.py +0 -0
  314. {tace-0.2.1 → tace-0.2.2}/tace/scripts/split.py +0 -0
  315. {tace-0.2.1 → tace-0.2.2}/tace/scripts/update.py +0 -0
  316. {tace-0.2.1 → tace-0.2.2}/tace/scripts/utils/__init__.py +0 -0
  317. {tace-0.2.1 → tace-0.2.2}/tace/scripts/utils/check_equi.py +0 -0
  318. {tace-0.2.1 → tace-0.2.2}/tace/scripts/utils/check_soc.py +0 -0
  319. {tace-0.2.1 → tace-0.2.2}/tace/scripts/utils/convert_to_xyz.py +0 -0
  320. {tace-0.2.1 → tace-0.2.2}/tace/utils/__init__.py +0 -0
  321. {tace-0.2.1 → tace-0.2.2}/tace/utils/_global.py +0 -0
  322. {tace-0.2.1 → tace-0.2.2}/tace/utils/callbacks.py +0 -0
  323. {tace-0.2.1 → tace-0.2.2}/tace/utils/cfg.py +0 -0
  324. {tace-0.2.1 → tace-0.2.2}/tace/utils/ema.py +0 -0
  325. {tace-0.2.1 → tace-0.2.2}/tace/utils/hydra_resolver.py +0 -0
  326. {tace-0.2.1 → tace-0.2.2}/tace/utils/logger.py +0 -0
  327. {tace-0.2.1 → tace-0.2.2}/tace/utils/loss/__init__.py +0 -0
  328. {tace-0.2.1 → tace-0.2.2}/tace/utils/loss/common.py +0 -0
  329. {tace-0.2.1 → tace-0.2.2}/tace/utils/loss/huber_fn.py +0 -0
  330. {tace-0.2.1 → tace-0.2.2}/tace/utils/loss/l2mae_fn.py +0 -0
  331. {tace-0.2.1 → tace-0.2.2}/tace/utils/loss/mae_fn.py +0 -0
  332. {tace-0.2.1 → tace-0.2.2}/tace/utils/loss/mse_fn.py +0 -0
  333. {tace-0.2.1 → tace-0.2.2}/tace/utils/loss/normal.py +0 -0
  334. {tace-0.2.1 → tace-0.2.2}/tace/utils/loss/registry.py +0 -0
  335. {tace-0.2.1 → tace-0.2.2}/tace/utils/loss/special_fn.py +0 -0
  336. {tace-0.2.1 → tace-0.2.2}/tace/utils/loss/uncertainty.py +0 -0
  337. {tace-0.2.1 → tace-0.2.2}/tace/utils/lr_scheduler/__init__.py +0 -0
  338. {tace-0.2.1 → tace-0.2.2}/tace/utils/lr_scheduler/warmup.py +0 -0
  339. {tace-0.2.1 → tace-0.2.2}/tace/utils/lr_scheduler/wsd.py +0 -0
  340. {tace-0.2.1 → tace-0.2.2}/tace/utils/mask_metrics.py +0 -0
  341. {tace-0.2.1 → tace-0.2.2}/tace/utils/metrics.py +0 -0
  342. {tace-0.2.1 → tace-0.2.2}/tace/utils/metrics_bake.py +0 -0
  343. {tace-0.2.1 → tace-0.2.2}/tace/utils/optimizer/__init__.py +0 -0
  344. {tace-0.2.1 → tace-0.2.2}/tace/utils/optimizer/hybrid_muon.py +0 -0
  345. {tace-0.2.1 → tace-0.2.2}/tace/utils/optimizer/soap.py +0 -0
  346. {tace-0.2.1 → tace-0.2.2}/tace/utils/spectra.py +0 -0
  347. {tace-0.2.1 → tace-0.2.2}/tace/utils/strategy.py +0 -0
  348. {tace-0.2.1 → tace-0.2.2}/tace/utils/units.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: TACE
3
- Version: 0.2.1
3
+ Version: 0.2.2
4
4
  Summary: TACE - ST and ICT based equivariant atomistic model.
5
5
  Author-email: Zemin Xu <xv_chana@163.com>
6
6
  Project-URL: Homepage, https://github.com/xvzemin/tace
@@ -14,10 +14,11 @@ Requires-Dist: hydra-core>=1.3
14
14
  Requires-Dist: matscipy
15
15
  Requires-Dist: ase
16
16
  Requires-Dist: numpy
17
- Requires-Dist: e3nn
17
+ Requires-Dist: e3nn>=0.4.4
18
18
  Requires-Dist: scipy
19
19
  Requires-Dist: configargparse
20
20
  Requires-Dist: pandas
21
+ Requires-Dist: matplotlib
21
22
  Requires-Dist: lmdb
22
23
  Requires-Dist: huggingface_hub
23
24
  Provides-Extra: dev
@@ -25,6 +26,9 @@ Requires-Dist: pytest; extra == "dev"
25
26
  Requires-Dist: ruff<0.17,>=0.16; extra == "dev"
26
27
  Provides-Extra: oeq
27
28
  Requires-Dist: openequivariance>=0.5.4; extra == "oeq"
29
+ Provides-Extra: eqx
30
+ Requires-Dist: ninja; extra == "eqx"
31
+ Requires-Dist: filelock; extra == "eqx"
28
32
  Provides-Extra: torchsim
29
33
  Requires-Dist: torch-sim-atomistic>=0.6.1; extra == "torchsim"
30
34
  Provides-Extra: nvalchemi
@@ -1,7 +1,7 @@
1
1
  [![TACE](https://img.shields.io/pypi/v/tace?style=for-the-badge&label=TACE)](https://pypi.org/project/tace/)
2
2
  [![Docs](https://img.shields.io/readthedocs/tace?style=for-the-badge&label=docs)](https://tace.readthedocs.io/en/latest/)
3
3
  [![License](https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge)](https://opensource.org/licenses/MIT)
4
- [![Matbench Discovery](https://img.shields.io/badge/Matbench%20Discovery-SOTA-brightgreen?style=for-the-badge)](https://matbench-discovery.materialsproject.org/)
4
+ <!-- [![Matbench Discovery](https://img.shields.io/badge/Matbench%20Discovery-SOTA-brightgreen?style=for-the-badge)](https://matbench-discovery.materialsproject.org/) -->
5
5
 
6
6
  # Tensor Atomic/Edge Cluster Expansion (TACE/TECE)
7
7
 
@@ -9,30 +9,51 @@ TACE is designed with physical priors and strong inductive biases to enhance ext
9
9
  It performs Atomic Cluster Expansion and Edge Cluster Expansion based on spherical tensors
10
10
  or irreducible Cartesian tensors, with an optional attention architecture.
11
11
 
12
- ## Cartesian Architecture
12
+ ## O(3) Cartesian Architecture
13
13
 
14
14
  <img src="fig/cartesian_arch.png" width="100%" align="center">
15
15
 
16
- ## Spherical/SO(2) Architecture
17
-
18
- The architecture of the spherical model is largely the same as that of the Cartesian space.
19
- For details on the SO(2) component, please refer to our paper and code.
20
-
21
- ## Wigner6j/O(2) Architecture
22
-
23
- The current implementation is still subject to change, and backward compatibility is not guaranteed. Please refer to our paper and code for details.
16
+ ```math
17
+ (A\otimes_k^\delta B)_{\boldsymbol i\boldsymbol j}
18
+ =\frac{1}{\sqrt{3^k}}\sum_{\boldsymbol a}
19
+ A_{\boldsymbol i\boldsymbol a}B_{\boldsymbol a\boldsymbol j},
20
+ \qquad l_3=l_1+l_2-2k,
21
+ ````
22
+
23
+ ```math
24
+ (A\otimes_k^\epsilon B)_{\boldsymbol i w\boldsymbol j}
25
+ =\frac{1}{\sqrt{2}}\frac{1}{\sqrt{3^k}}\sum_{\boldsymbol a,u,v}
26
+ A_{\boldsymbol i u\boldsymbol a}\epsilon_{wuv}
27
+ B_{\boldsymbol a v\boldsymbol j},
28
+ \qquad l_3=l_1+l_2-2k-1.
29
+ ````
30
+
31
+ ## Time-reversal O(3) Spherical/O(2)/Magnetic Architecture
32
+
33
+ The SO(2) implementation in TACE will be gradually replaced by an O(2) formulation
34
+ to ensure complete parity support for O(3). Backward compatibility will be maintained for the SO(2) implementation,
35
+ while backward compatibility for the O(2) implementation is not currently guaranteed.
36
+
37
+ <img src="fig/o2.svg" width="100%" align="center">
38
+
39
+ ```math
40
+ \left.(l,p,t)_{O(3)\times\mathbb Z_2^{\mathcal T}}
41
+ \right\downarrow_{O(2)\times\mathbb Z_2^{\mathcal T}}
42
+ =
43
+ \underbrace{\bigl(0,p(-1)^l,t\bigr)}_{\text{1D},\,m=0}
44
+ \oplus
45
+ \underbrace{\bigoplus_{m=1}^{l}(m,0,t)}_{\text{2D},\,m>0}.
46
+ ````
24
47
 
25
48
  ## Documentation
26
49
 
27
50
  [TACE DOCS](https://tace.readthedocs.io/en/latest/index.html)
28
51
 
29
- ## SOTA Foundation Model
52
+ ## Foundation Model
30
53
 
31
- [TACE FOUNDATION](https://github.com/xvzemin/tace-foundations)
54
+ [HUGGING FACE](https://huggingface.co/xvzemin/tace-foundations/tree/main)
32
55
 
33
- Default Ranking on Matbench as of July 8, 2026
34
-
35
- <img src="fig/matbench_tece_rra.png" width="100%" align="center">
56
+ [FOUNDATION MODEL DOCS](https://tace.readthedocs.io/en/latest/guide/foundation.html)
36
57
 
37
58
  ## Install, Train and Tutorial
38
59
 
@@ -76,23 +97,16 @@ Currently, the officially supported properties include:
76
97
  - Atomic stresses (conservative, predict only)
77
98
  - Atomic virials (conservative, predict only)
78
99
  - Absolute final collinear magmoms
79
- - Noncollinear magnetic forces (SOC, full O(3))
80
-
81
- For embedding property, we support:
82
-
83
- - fidelity_idx (different computational levels)
84
- - charges
85
- - total charge
86
- - electric field
87
- - initial noncollinear magmoms (SOC, full O(3))
100
+ - Collinear magnetic forces
101
+ - Noncollinear magnetic forces
88
102
 
89
103
  ## Plugins
90
104
 
91
105
  TACE currently supports the following plugin:
92
106
 
107
+ - **mTACE** (Magnetic, with and without Spin-Orbit Coupling)
93
108
  - **TACE-LES** (Latent Ewald Summation)
94
- - **TACE-QEq** (Lagrangian)
95
- - **mTACE** (Magnetic, Spin-Orbit Coupling)
109
+ - **TACE-QEq** (Lagrangian, under reconstruction)
96
110
 
97
111
  ## Interfaces
98
112
 
@@ -137,37 +151,37 @@ If you use TACE, please cite our papers:
137
151
 
138
152
  ```bibtex
139
153
  @misc{xu2026spectralspatialtensoratomiccluster,
140
- title={Spectral/Spatial Tensor Atomic Cluster Expansion with Universal Embeddings in Cartesian Space},
141
- author={Zemin Xu and Wenbo Xie and P. Hu},
142
- year={2026},
143
- eprint={2509.14961},
144
- archivePrefix={arXiv},
145
- primaryClass={stat.ML},
146
- url={https://arxiv.org/abs/2509.14961},
154
+ title={Spectral/Spatial Tensor Atomic Cluster Expansion with Universal Embeddings in Cartesian Space},
155
+ author={Zemin Xu and Wenbo Xie and P. Hu},
156
+ year={2026},
157
+ eprint={2509.14961},
158
+ archivePrefix={arXiv},
159
+ primaryClass={stat.ML},
160
+ url={https://arxiv.org/abs/2509.14961},
147
161
  }
148
162
 
149
163
  @misc{xu2026edgeclusterexpansionradial,
150
- title={Edge Cluster Expansion with Radial Rotary Attention for Interatomic Potentials},
151
- author={Zemin Xu and Wenbo Xie and P. Hu},
152
- year={2026},
153
- eprint={2607.10664},
154
- archivePrefix={arXiv},
155
- primaryClass={stat.ML},
156
- url={https://arxiv.org/abs/2607.10664},
164
+ title={Edge Cluster Expansion with Radial Rotary Attention for Interatomic Potentials},
165
+ author={Zemin Xu and Wenbo Xie and P. Hu},
166
+ year={2026},
167
+ eprint={2607.10664},
168
+ archivePrefix={arXiv},
169
+ primaryClass={stat.ML},
170
+ url={https://arxiv.org/abs/2607.10664},
157
171
  }
158
172
  ```
159
173
 
160
- If you use Local O(2) Frame or Generalized Wigner-6j Convlution, please cite our papers:
174
+ If you use Local O(2) Frame, please cite our papers:
161
175
 
162
176
  ```bibtex
163
- @misc{xu2026completeo3interactionswigner6j,
164
- title={Complete O(3) Interactions from Wigner-6j Recoupling to Local O(2) Frames},
165
- author={Zemin Xu and Peijun Hu and Wenbo Xie},
166
- year={2026},
167
- eprint={2608.16592},
168
- archivePrefix={arXiv},
169
- primaryClass={physics.chem-ph},
170
- url={https://arxiv.org/abs/2608.16592},
177
+ @misc{xu2026lookingglassefficientparitycompletelearning,
178
+ title={Through the Looking-Glass: Efficient Parity-Complete Learning via Local $O(2)$ Frames},
179
+ author={Zemin Xu and Wenbo Xie},
180
+ year={2026},
181
+ eprint={2608.16592},
182
+ archivePrefix={arXiv},
183
+ primaryClass={physics.chem-ph},
184
+ url={https://arxiv.org/abs/2608.16592},
171
185
  }
172
186
  ```
173
187
 
@@ -175,11 +189,11 @@ If you use cartnn, Cartesian-3j, cMACE, cNequIP, cAllegro, please cite our paper
175
189
 
176
190
  ```bibtex
177
191
  @inproceedings{xu2026a,
178
- title={A Cartesian-3j Framework for Machine Learning Interatomic Potentials},
179
- author={Zemin Xu and Chenyu Wu and Wenbo Xie and Peijun Hu},
180
- booktitle={Forty-third International Conference on Machine Learning},
181
- year={2026},
182
- url={https://openreview.net/forum?id=9ZWK6gneWq}
192
+ title={A Cartesian-3j Framework for Machine Learning Interatomic Potentials},
193
+ author={Zemin Xu and Chenyu Wu and Wenbo Xie and Peijun Hu},
194
+ booktitle={Forty-third International Conference on Machine Learning},
195
+ year={2026},
196
+ url={https://openreview.net/forum?id=9ZWK6gneWq}
183
197
  }
184
198
  ```
185
199
 
@@ -199,3 +213,5 @@ ruff format --check tace
199
213
  ## License
200
214
 
201
215
  The TACE code is published and distributed under the MIT License.
216
+ EquivariantX (`eqx`) is licensed separately under
217
+ [Creative Commons Attribution 4.0 International (CC BY 4.0)](eqx/LICENSE.md).
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: TACE
3
- Version: 0.2.1
3
+ Version: 0.2.2
4
4
  Summary: TACE - ST and ICT based equivariant atomistic model.
5
5
  Author-email: Zemin Xu <xv_chana@163.com>
6
6
  Project-URL: Homepage, https://github.com/xvzemin/tace
@@ -14,10 +14,11 @@ Requires-Dist: hydra-core>=1.3
14
14
  Requires-Dist: matscipy
15
15
  Requires-Dist: ase
16
16
  Requires-Dist: numpy
17
- Requires-Dist: e3nn
17
+ Requires-Dist: e3nn>=0.4.4
18
18
  Requires-Dist: scipy
19
19
  Requires-Dist: configargparse
20
20
  Requires-Dist: pandas
21
+ Requires-Dist: matplotlib
21
22
  Requires-Dist: lmdb
22
23
  Requires-Dist: huggingface_hub
23
24
  Provides-Extra: dev
@@ -25,6 +26,9 @@ Requires-Dist: pytest; extra == "dev"
25
26
  Requires-Dist: ruff<0.17,>=0.16; extra == "dev"
26
27
  Provides-Extra: oeq
27
28
  Requires-Dist: openequivariance>=0.5.4; extra == "oeq"
29
+ Provides-Extra: eqx
30
+ Requires-Dist: ninja; extra == "eqx"
31
+ Requires-Dist: filelock; extra == "eqx"
28
32
  Provides-Extra: torchsim
29
33
  Requires-Dist: torch-sim-atomistic>=0.6.1; extra == "torchsim"
30
34
  Provides-Extra: nvalchemi
@@ -7,30 +7,119 @@ TACE.egg-info/dependency_links.txt
7
7
  TACE.egg-info/entry_points.txt
8
8
  TACE.egg-info/requires.txt
9
9
  TACE.egg-info/top_level.txt
10
+ eqx/LICENSE.md
10
11
  eqx/README.md
11
12
  eqx/__init__.py
13
+ eqx/_layout.py
14
+ eqx/utils.py
15
+ eqx/ace/__init__.py
16
+ eqx/ace/contraction.py
17
+ eqx/ace/cuda.py
18
+ eqx/ace/tace.py
19
+ eqx/co2/__init__.py
20
+ eqx/co2/basis.py
21
+ eqx/co2/cartesian_harmonics.py
22
+ eqx/co2/gate.py
23
+ eqx/co2/irreps.py
24
+ eqx/co2/linear.py
25
+ eqx/co2/o3_tensor_product.py
26
+ eqx/co2/restriction.py
27
+ eqx/co2/spherical.py
28
+ eqx/co2/tensor_product.py
12
29
  eqx/co3/__init__.py
30
+ eqx/co3/basis.py
13
31
  eqx/co3/cartesian_harmonics.py
14
32
  eqx/co3/gate.py
15
33
  eqx/co3/irreps.py
16
- eqx/co3/layout.py
17
34
  eqx/co3/linear.py
18
- eqx/co3/projector.py
35
+ eqx/co3/symmetric.py
19
36
  eqx/co3/tensor_product.py
20
- eqx/co3/utils.py
21
- eqx/docs/source/conf.py
37
+ eqx/conv/__init__.py
38
+ eqx/conv/angular.py
39
+ eqx/conv/attention.py
40
+ eqx/conv/codegen.py
41
+ eqx/conv/contraction.py
42
+ eqx/conv/edge.py
43
+ eqx/conv/graph.py
44
+ eqx/conv/program.py
45
+ eqx/conv/radial.py
46
+ eqx/conv/co3/__init__.py
47
+ eqx/conv/co3/convolution.py
48
+ eqx/conv/co3/linear.py
49
+ eqx/conv/co3/polynomials.py
50
+ eqx/conv/o2_o3/__init__.py
51
+ eqx/conv/o2_o3/autotune.py
52
+ eqx/conv/o2_o3/codegen.py
53
+ eqx/conv/o2_o3/convolution.py
54
+ eqx/conv/o2_o3/cuda.py
55
+ eqx/conv/o2_o3/direction_codegen.py
56
+ eqx/conv/o2_o3/geometry.py
57
+ eqx/conv/o2_o3/schedule.py
58
+ eqx/conv/o2_o3/transverse.py
59
+ eqx/conv/o3/__init__.py
60
+ eqx/conv/o3/codegen.py
61
+ eqx/conv/o3/convolution.py
62
+ eqx/conv/o3/cuda.py
63
+ eqx/conv/o3/harmonics.py
64
+ eqx/conv/uu_o2/__init__.py
65
+ eqx/conv/uu_o2/convolution.py
66
+ eqx/conv/uv_o2/__init__.py
67
+ eqx/conv/uv_o2/convolution.py
68
+ eqx/conv/uv_o2/transverse.py
69
+ eqx/kernels/__init__.py
70
+ eqx/kernels/channel_product.py
71
+ eqx/kernels/codegen.py
72
+ eqx/kernels/cuda.py
73
+ eqx/kernels/cuda_graph.py
74
+ eqx/kernels/layout.py
75
+ eqx/kernels/quaternion.py
76
+ eqx/kernels/recompute.py
77
+ eqx/kernels/rotary.py
78
+ eqx/kernels/rotation.py
79
+ eqx/kernels/wigner.py
80
+ eqx/kernels/csrc/runtime.cpp
81
+ eqx/models/__init__.py
82
+ eqx/models/convolution.py
83
+ eqx/models/equflash/__init__.py
84
+ eqx/models/equflash/conversion.py
85
+ eqx/models/mace/__init__.py
86
+ eqx/models/mace/conversion.py
87
+ eqx/models/nequip/__init__.py
88
+ eqx/models/nequip/conversion.py
89
+ eqx/models/prophet/__init__.py
90
+ eqx/models/prophet/conversion.py
91
+ eqx/models/sevennet/__init__.py
92
+ eqx/models/sevennet/conversion.py
93
+ eqx/models/tace/__init__.py
94
+ eqx/models/tace/tece_oam_rra/__init__.py
95
+ eqx/models/tace/tece_oam_rra/bilinear_contraction.py
96
+ eqx/models/tace/tece_oam_rra/bilinear_cuda.py
97
+ eqx/models/tace/tece_oam_rra/cuda.py
98
+ eqx/models/tace/tece_oam_rra/execution.py
99
+ eqx/models/tace/tece_oam_rra/interaction.py
100
+ eqx/models/tace/tece_oam_rra/product.py
101
+ eqx/models/tace/tece_oam_rra/program.py
22
102
  eqx/o2/__init__.py
103
+ eqx/o2/_clebsch_gordan.py
104
+ eqx/o2/_layout.py
23
105
  eqx/o2/asymmetric_contraction.py
24
106
  eqx/o2/circular_harmonics.py
25
107
  eqx/o2/gate.py
26
108
  eqx/o2/irreps.py
27
109
  eqx/o2/linear.py
28
110
  eqx/o2/local_frame.py
111
+ eqx/o2/o3_tensor_product.py
29
112
  eqx/o2/rotation_matrix.py
30
113
  eqx/o2/tensor_product.py
31
114
  eqx/o2/wigner.py
115
+ eqx/o3/__init__.py
116
+ eqx/o3/contraction.py
117
+ eqx/o3/cuda.py
118
+ eqx/o3/gate.py
119
+ eqx/o3/linear.py
32
120
  tace/__init__.py
33
121
  tace/dataset/__init__.py
122
+ tace/dataset/augmentation.py
34
123
  tace/dataset/dataloader.py
35
124
  tace/dataset/datamodule.py
36
125
  tace/dataset/element.py
@@ -75,15 +164,14 @@ tace/models/kspace.py
75
164
  tace/models/lammps.py
76
165
  tace/models/layout.py
77
166
  tace/models/linear.py
78
- tace/models/mag.py
79
167
  tace/models/mlp.py
80
168
  tace/models/normalizer.py
81
169
  tace/models/radial.py
82
170
  tace/models/s2.py
83
171
  tace/models/softmax.py
172
+ tace/models/time_reversal.py
84
173
  tace/models/utils.py
85
174
  tace/models/zemin.py
86
- tace/models/_cart/__init__.py
87
175
  tace/models/_e3nn/__init__.py
88
176
  tace/models/_e3nn/base.py
89
177
  tace/models/_e3nn/basis_change.py
@@ -93,8 +181,8 @@ tace/models/_e3nn/edge.py
93
181
  tace/models/_e3nn/fused.py
94
182
  tace/models/_e3nn/inter.py
95
183
  tace/models/_e3nn/layer_norm.py
96
- tace/models/_e3nn/legacy_so2.py
97
184
  tace/models/_e3nn/les.py
185
+ tace/models/_e3nn/magnetic.py
98
186
  tace/models/_e3nn/node.py
99
187
  tace/models/_e3nn/nonlinear.py
100
188
  tace/models/_e3nn/o2.py
@@ -106,6 +194,7 @@ tace/models/_e3nn/residual.py
106
194
  tace/models/_e3nn/scatter_norm.py
107
195
  tace/models/_e3nn/symmetric_contraction.py
108
196
  tace/models/_e3nn/tace.py
197
+ tace/models/_e3nn/tece_oam_rra.py
109
198
  tace/models/_e3nn/ue.py
110
199
  tace/models/_e3nn/wigner6j.py
111
200
  tace/models/compile/__init__.py
@@ -154,12 +243,14 @@ tace/models/scf/longrange/utils.py
154
243
  tace/scripts/__init__.py
155
244
  tace/scripts/average.py
156
245
  tace/scripts/clean.py
157
- tace/scripts/convert.py
246
+ tace/scripts/convert_cgtp.py
247
+ tace/scripts/convert_lora.py
158
248
  tace/scripts/eval.py
159
249
  tace/scripts/export_eval.py
160
250
  tace/scripts/export_lammps.py
161
251
  tace/scripts/export_train.py
162
252
  tace/scripts/finetune.py
253
+ tace/scripts/plot_diatom.py
163
254
  tace/scripts/split.py
164
255
  tace/scripts/train.py
165
256
  tace/scripts/update.py
@@ -200,12 +291,18 @@ tace/utils/lr_scheduler/wsd.py
200
291
  tace/utils/optimizer/__init__.py
201
292
  tace/utils/optimizer/hybrid_muon.py
202
293
  tace/utils/optimizer/soap.py
203
- tests/test_co3.py
294
+ tests/test_cartesian.py
204
295
  tests/test_compile.py
205
296
  tests/test_eqt.py
297
+ tests/test_eqx_integration.py
206
298
  tests/test_les.py
299
+ tests/test_local_o2.py
207
300
  tests/test_loss.py
208
301
  tests/test_magnetic_optimizer.py
209
- tests/test_o2.py
302
+ tests/test_product.py
303
+ tests/test_radial.py
210
304
  tests/test_scf.py
305
+ tests/test_statistics.py
306
+ tests/test_time_reversal.py
307
+ tests/test_torchsim.py
211
308
  tests/test_wigner6j.py
@@ -2,12 +2,14 @@
2
2
  tace-average = tace.scripts.average:main
3
3
  tace-clean = tace.scripts.clean:main
4
4
  tace-compile = tace.scripts.export_eval:main
5
- tace-convert = tace.scripts.convert:main
5
+ tace-convert-cgtp = tace.scripts.convert_cgtp:main
6
+ tace-convert-lora = tace.scripts.convert_lora:main
6
7
  tace-eval = tace.scripts.eval:main
7
8
  tace-export-eval = tace.scripts.export_eval:main
8
9
  tace-export-lammps = tace.scripts.export_lammps:main
9
10
  tace-export-train = tace.scripts.export_train:main
10
11
  tace-finetune = tace.scripts.finetune:main
12
+ tace-plot-diatom = tace.scripts.plot_diatom:main
11
13
  tace-split = tace.scripts.split:main
12
14
  tace-train = tace.scripts.train:main
13
15
  tace-update = tace.scripts.update:main
@@ -6,10 +6,11 @@ hydra-core>=1.3
6
6
  matscipy
7
7
  ase
8
8
  numpy
9
- e3nn
9
+ e3nn>=0.4.4
10
10
  scipy
11
11
  configargparse
12
12
  pandas
13
+ matplotlib
13
14
  lmdb
14
15
  huggingface_hub
15
16
 
@@ -30,6 +31,10 @@ torch_dftd
30
31
  pytest
31
32
  ruff<0.17,>=0.16
32
33
 
34
+ [eqx]
35
+ ninja
36
+ filelock
37
+
33
38
  [lammps12]
34
39
  cython
35
40
  cupy-cuda12x