NetKet 3.12.4__tar.gz → 3.14.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 (344) hide show
  1. {netket-3.12.4 → netket-3.14.0}/.gitignore +2 -0
  2. {netket-3.12.4 → netket-3.14.0}/PKG-INFO +9 -13
  3. netket-3.14.0/hatch.toml +84 -0
  4. {netket-3.12.4 → netket-3.14.0}/netket/_version.py +2 -2
  5. {netket-3.12.4 → netket-3.14.0}/netket/callbacks/earlystopping.py +4 -5
  6. {netket-3.12.4 → netket-3.14.0}/netket/callbacks/invalidlossstopping.py +14 -9
  7. {netket-3.12.4 → netket-3.14.0}/netket/callbacks/timeout.py +1 -2
  8. {netket-3.12.4 → netket-3.14.0}/netket/driver/abstract_variational_driver.py +21 -16
  9. {netket-3.12.4 → netket-3.14.0}/netket/driver/steady_state.py +1 -8
  10. {netket-3.12.4 → netket-3.14.0}/netket/driver/vmc.py +1 -7
  11. {netket-3.12.4 → netket-3.14.0}/netket/errors.py +379 -3
  12. {netket-3.12.4 → netket-3.14.0}/netket/exact.py +1 -2
  13. {netket-3.12.4 → netket-3.14.0}/netket/experimental/driver/tdvp.py +3 -3
  14. {netket-3.12.4 → netket-3.14.0}/netket/experimental/driver/tdvp_common.py +7 -6
  15. {netket-3.12.4 → netket-3.14.0}/netket/experimental/driver/tdvp_schmitt.py +4 -4
  16. {netket-3.12.4 → netket-3.14.0}/netket/experimental/driver/vmc_srt.py +3 -3
  17. {netket-3.12.4 → netket-3.14.0}/netket/experimental/dynamics/_rk_solver.py +14 -1
  18. {netket-3.12.4 → netket-3.14.0}/netket/experimental/dynamics/_rk_solver_structures.py +9 -9
  19. netket-3.14.0/netket/experimental/dynamics/_rk_tableau.py +193 -0
  20. netket-3.12.4/netket/experimental/dynamics/_rk_tableau.py → netket-3.14.0/netket/experimental/dynamics/_rk_tableau_definitions.py +3 -175
  21. {netket-3.12.4 → netket-3.14.0}/netket/experimental/hilbert/spin_orbital_fermions.py +49 -90
  22. {netket-3.12.4 → netket-3.14.0}/netket/experimental/models/fast_rnn.py +5 -6
  23. {netket-3.12.4 → netket-3.14.0}/netket/experimental/models/rnn.py +5 -6
  24. {netket-3.12.4 → netket-3.14.0}/netket/experimental/nn/rnn/layers.py +3 -4
  25. {netket-3.12.4 → netket-3.14.0}/netket/experimental/nn/rnn/layers_fast.py +1 -2
  26. {netket-3.12.4 → netket-3.14.0}/netket/experimental/nn/rnn/ordering.py +6 -7
  27. {netket-3.12.4 → netket-3.14.0}/netket/experimental/observable/__init__.py +2 -0
  28. {netket-3.12.4 → netket-3.14.0}/netket/experimental/observable/renyi2/expect.py +1 -4
  29. netket-3.14.0/netket/experimental/observable/variance/__init__.py +18 -0
  30. netket-3.14.0/netket/experimental/observable/variance/exact.py +94 -0
  31. netket-3.14.0/netket/experimental/observable/variance/expect.py +141 -0
  32. netket-3.14.0/netket/experimental/observable/variance/variance_operator.py +83 -0
  33. {netket-3.12.4 → netket-3.14.0}/netket/experimental/operator/_fermion_operator_2nd_base.py +5 -6
  34. {netket-3.12.4 → netket-3.14.0}/netket/experimental/operator/_fermion_operator_2nd_jax.py +2 -3
  35. {netket-3.12.4 → netket-3.14.0}/netket/experimental/operator/_fermion_operator_2nd_numba.py +0 -29
  36. {netket-3.12.4 → netket-3.14.0}/netket/experimental/operator/_fermion_operator_2nd_utils.py +1 -3
  37. {netket-3.12.4 → netket-3.14.0}/netket/experimental/operator/fermion.py +9 -12
  38. {netket-3.12.4 → netket-3.14.0}/netket/experimental/operator/pyscf.py +1 -2
  39. {netket-3.12.4 → netket-3.14.0}/netket/experimental/qsr/dataset.py +6 -8
  40. {netket-3.12.4 → netket-3.14.0}/netket/experimental/qsr/driver.py +14 -19
  41. netket-3.14.0/netket/experimental/sampler/__init__.py +54 -0
  42. {netket-3.12.4 → netket-3.14.0}/netket/experimental/sampler/metropolis_pmap.py +2 -2
  43. {netket-3.12.4 → netket-3.14.0}/netket/experimental/sampler/rules/fermion_2nd.py +2 -55
  44. {netket-3.12.4 → netket-3.14.0}/netket/graph/abstract_graph.py +2 -2
  45. {netket-3.12.4 → netket-3.14.0}/netket/graph/common_lattices.py +76 -24
  46. {netket-3.12.4 → netket-3.14.0}/netket/graph/graph.py +22 -7
  47. {netket-3.12.4 → netket-3.14.0}/netket/graph/lattice.py +16 -19
  48. {netket-3.12.4 → netket-3.14.0}/netket/graph/space_group.py +2 -3
  49. {netket-3.12.4 → netket-3.14.0}/netket/hilbert/__init__.py +22 -1
  50. {netket-3.12.4 → netket-3.14.0}/netket/hilbert/abstract_hilbert.py +3 -4
  51. netket-3.14.0/netket/hilbert/constraint/__init__.py +23 -0
  52. netket-3.14.0/netket/hilbert/constraint/base.py +128 -0
  53. netket-3.14.0/netket/hilbert/constraint/multiple.py +117 -0
  54. netket-3.14.0/netket/hilbert/constraint/sum.py +52 -0
  55. netket-3.14.0/netket/hilbert/constraint/sum_partition.py +71 -0
  56. {netket-3.12.4 → netket-3.14.0}/netket/hilbert/continuous_hilbert.py +1 -2
  57. {netket-3.12.4 → netket-3.14.0}/netket/hilbert/custom_hilbert.py +19 -5
  58. {netket-3.12.4 → netket-3.14.0}/netket/hilbert/discrete_hilbert.py +67 -5
  59. {netket-3.12.4 → netket-3.14.0}/netket/hilbert/doubled_hilbert.py +11 -0
  60. {netket-3.12.4 → netket-3.14.0}/netket/hilbert/fock.py +34 -27
  61. {netket-3.12.4 → netket-3.14.0}/netket/hilbert/homogeneous.py +107 -20
  62. {netket-3.12.4 → netket-3.14.0}/netket/hilbert/index/__init__.py +8 -1
  63. {netket-3.12.4 → netket-3.14.0}/netket/hilbert/index/base.py +1 -2
  64. netket-3.12.4/netket/hilbert/index/constraints/base.py → netket-3.14.0/netket/hilbert/index/constrained_generic.py +32 -14
  65. netket-3.12.4/netket/hilbert/index/constraints/sum.py → netket-3.14.0/netket/hilbert/index/constrained_sum.py +6 -21
  66. netket-3.14.0/netket/hilbert/index/constrained_sum_partitions.py +117 -0
  67. {netket-3.12.4 → netket-3.14.0}/netket/hilbert/particle.py +4 -5
  68. {netket-3.12.4 → netket-3.14.0}/netket/hilbert/qubit.py +3 -3
  69. {netket-3.12.4 → netket-3.14.0}/netket/hilbert/random/__init__.py +1 -1
  70. {netket-3.12.4 → netket-3.14.0}/netket/hilbert/random/fock.py +11 -43
  71. netket-3.14.0/netket/hilbert/random/homogeneous.py +170 -0
  72. netket-3.14.0/netket/hilbert/spin.py +289 -0
  73. {netket-3.12.4 → netket-3.14.0}/netket/hilbert/tensor_hilbert.py +2 -3
  74. {netket-3.12.4 → netket-3.14.0}/netket/hilbert/tensor_hilbert_discrete.py +15 -1
  75. {netket-3.12.4 → netket-3.14.0}/netket/jax/__init__.py +4 -2
  76. {netket-3.12.4 → netket-3.14.0}/netket/jax/_chunk_utils.py +2 -0
  77. netket-3.14.0/netket/jax/_expect.py +250 -0
  78. {netket-3.12.4 → netket-3.14.0}/netket/jax/_grad.py +5 -4
  79. {netket-3.12.4 → netket-3.14.0}/netket/jax/_jacobian/default_mode.py +10 -5
  80. {netket-3.12.4 → netket-3.14.0}/netket/jax/_jacobian/jacobian_pytree.py +3 -0
  81. {netket-3.12.4 → netket-3.14.0}/netket/jax/_jacobian/logic.py +4 -8
  82. {netket-3.12.4 → netket-3.14.0}/netket/jax/_math.py +4 -3
  83. {netket-3.12.4 → netket-3.14.0}/netket/jax/_scanmap.py +1 -4
  84. {netket-3.12.4 → netket-3.14.0}/netket/jax/_utils_random.py +30 -13
  85. {netket-3.12.4 → netket-3.14.0}/netket/jax/_utils_tree.py +51 -8
  86. {netket-3.12.4 → netket-3.14.0}/netket/jax/_vjp.py +31 -5
  87. {netket-3.12.4 → netket-3.14.0}/netket/jax/_vjp_chunked.py +7 -11
  88. {netket-3.12.4 → netket-3.14.0}/netket/jax/_vmap_chunked.py +6 -6
  89. {netket-3.12.4 → netket-3.14.0}/netket/jax/sharding.py +12 -7
  90. {netket-3.12.4 → netket-3.14.0}/netket/logging/base.py +3 -3
  91. {netket-3.12.4 → netket-3.14.0}/netket/logging/runtime_log.py +14 -6
  92. {netket-3.12.4 → netket-3.14.0}/netket/logging/state_log.py +21 -4
  93. {netket-3.12.4 → netket-3.14.0}/netket/logging/tensorboard.py +16 -5
  94. {netket-3.12.4 → netket-3.14.0}/netket/models/autoreg.py +5 -4
  95. {netket-3.12.4 → netket-3.14.0}/netket/models/deepset.py +11 -11
  96. {netket-3.12.4 → netket-3.14.0}/netket/models/fast_autoreg.py +5 -4
  97. {netket-3.12.4 → netket-3.14.0}/netket/models/mlp.py +6 -6
  98. {netket-3.12.4 → netket-3.14.0}/netket/models/ndm.py +5 -5
  99. {netket-3.12.4 → netket-3.14.0}/netket/models/rbm.py +6 -6
  100. {netket-3.12.4 → netket-3.14.0}/netket/models/slater.py +5 -1
  101. {netket-3.12.4 → netket-3.14.0}/netket/models/tensor_networks/mpdo.py +1 -2
  102. {netket-3.12.4 → netket-3.14.0}/netket/models/tensor_networks/mps.py +1 -2
  103. netket-3.14.0/netket/nn/__init__.py +58 -0
  104. {netket-3.12.4 → netket-3.14.0}/netket/nn/activation.py +1 -1
  105. {netket-3.12.4 → netket-3.14.0}/netket/nn/blocks/deepset.py +7 -7
  106. {netket-3.12.4 → netket-3.14.0}/netket/nn/blocks/mlp.py +8 -7
  107. {netket-3.12.4 → netket-3.14.0}/netket/nn/blocks/symmetry_sum.py +3 -4
  108. {netket-3.12.4 → netket-3.14.0}/netket/nn/fast_masked_linear.py +7 -9
  109. {netket-3.12.4 → netket-3.14.0}/netket/nn/masked_linear.py +4 -3
  110. {netket-3.12.4 → netket-3.14.0}/netket/nn/symmetric_linear.py +28 -24
  111. {netket-3.12.4 → netket-3.14.0}/netket/nn/utils.py +25 -50
  112. {netket-3.12.4 → netket-3.14.0}/netket/operator/_bose_hubbard/base.py +2 -3
  113. {netket-3.12.4 → netket-3.14.0}/netket/operator/_bose_hubbard/jax.py +7 -4
  114. {netket-3.12.4 → netket-3.14.0}/netket/operator/_bose_hubbard/numba.py +21 -46
  115. {netket-3.12.4 → netket-3.14.0}/netket/operator/_continuous_operator.py +4 -4
  116. {netket-3.12.4 → netket-3.14.0}/netket/operator/_discrete_operator.py +0 -11
  117. {netket-3.12.4 → netket-3.14.0}/netket/operator/_discrete_operator_jax.py +13 -9
  118. {netket-3.12.4 → netket-3.14.0}/netket/operator/_graph_operator.py +3 -4
  119. {netket-3.12.4 → netket-3.14.0}/netket/operator/_heisenberg.py +4 -5
  120. {netket-3.12.4 → netket-3.14.0}/netket/operator/_ising/base.py +3 -4
  121. {netket-3.12.4 → netket-3.14.0}/netket/operator/_ising/jax.py +15 -23
  122. {netket-3.12.4 → netket-3.14.0}/netket/operator/_ising/numba.py +12 -16
  123. {netket-3.12.4 → netket-3.14.0}/netket/operator/_kinetic.py +5 -5
  124. {netket-3.12.4 → netket-3.14.0}/netket/operator/_local_liouvillian.py +1 -2
  125. {netket-3.12.4 → netket-3.14.0}/netket/operator/_local_operator/base.py +5 -17
  126. {netket-3.12.4 → netket-3.14.0}/netket/operator/_local_operator/compile_helpers.py +3 -27
  127. {netket-3.12.4 → netket-3.14.0}/netket/operator/_local_operator/convert.py +18 -10
  128. {netket-3.12.4 → netket-3.14.0}/netket/operator/_local_operator/jax.py +19 -23
  129. {netket-3.12.4 → netket-3.14.0}/netket/operator/_local_operator/numba.py +17 -60
  130. {netket-3.12.4 → netket-3.14.0}/netket/operator/_pauli_strings/base.py +7 -7
  131. {netket-3.12.4 → netket-3.14.0}/netket/operator/_pauli_strings/jax.py +22 -21
  132. {netket-3.12.4 → netket-3.14.0}/netket/operator/_pauli_strings/numba.py +14 -48
  133. {netket-3.12.4 → netket-3.14.0}/netket/operator/_potential.py +3 -3
  134. {netket-3.12.4 → netket-3.14.0}/netket/operator/_sumoperators.py +4 -6
  135. {netket-3.12.4 → netket-3.14.0}/netket/operator/spin.py +7 -1
  136. {netket-3.12.4 → netket-3.14.0}/netket/optimizer/__init__.py +0 -1
  137. {netket-3.12.4 → netket-3.14.0}/netket/optimizer/linear_operator.py +4 -3
  138. {netket-3.12.4 → netket-3.14.0}/netket/optimizer/preconditioner.py +27 -50
  139. {netket-3.12.4 → netket-3.14.0}/netket/optimizer/qgt/__init__.py +1 -2
  140. {netket-3.12.4 → netket-3.14.0}/netket/optimizer/qgt/default.py +22 -10
  141. netket-3.14.0/netket/optimizer/qgt/qgt_jacobian.py +283 -0
  142. {netket-3.12.4 → netket-3.14.0}/netket/optimizer/qgt/qgt_jacobian_common.py +8 -40
  143. netket-3.14.0/netket/optimizer/qgt/qgt_jacobian_dense.py +290 -0
  144. netket-3.14.0/netket/optimizer/qgt/qgt_jacobian_pytree.py +362 -0
  145. {netket-3.12.4 → netket-3.14.0}/netket/optimizer/qgt/qgt_onthefly.py +62 -32
  146. {netket-3.12.4 → netket-3.14.0}/netket/optimizer/solver/solvers.py +109 -24
  147. {netket-3.12.4 → netket-3.14.0}/netket/optimizer/sr.py +5 -5
  148. {netket-3.12.4 → netket-3.14.0}/netket/sampler/__init__.py +7 -0
  149. {netket-3.12.4 → netket-3.14.0}/netket/sampler/autoreg.py +3 -1
  150. {netket-3.12.4 → netket-3.14.0}/netket/sampler/base.py +28 -19
  151. {netket-3.12.4 → netket-3.14.0}/netket/sampler/exact.py +2 -2
  152. {netket-3.12.4 → netket-3.14.0}/netket/sampler/metropolis.py +65 -66
  153. {netket-3.12.4 → netket-3.14.0}/netket/sampler/metropolis_numpy.py +59 -8
  154. {netket-3.12.4/netket/experimental → netket-3.14.0/netket}/sampler/metropolis_pt.py +40 -24
  155. {netket-3.12.4 → netket-3.14.0}/netket/sampler/rules/base.py +4 -4
  156. {netket-3.12.4 → netket-3.14.0}/netket/sampler/rules/exchange.py +45 -15
  157. {netket-3.12.4 → netket-3.14.0}/netket/sampler/rules/hamiltonian.py +32 -31
  158. {netket-3.12.4 → netket-3.14.0}/netket/sampler/rules/langevin.py +2 -3
  159. {netket-3.12.4 → netket-3.14.0}/netket/sampler/rules/local_numpy.py +4 -1
  160. {netket-3.12.4 → netket-3.14.0}/netket/sampler/rules/multiple.py +4 -4
  161. {netket-3.12.4 → netket-3.14.0}/netket/sampler/rules/tensor.py +4 -4
  162. {netket-3.12.4 → netket-3.14.0}/netket/stats/mc_stats.py +1 -2
  163. {netket-3.12.4 → netket-3.14.0}/netket/utils/__init__.py +0 -1
  164. {netket-3.12.4 → netket-3.14.0}/netket/utils/_dependencies_check.py +6 -7
  165. netket-3.14.0/netket/utils/api_utils.py +107 -0
  166. {netket-3.12.4 → netket-3.14.0}/netket/utils/array.py +2 -3
  167. {netket-3.12.4 → netket-3.14.0}/netket/utils/config_flags.py +48 -3
  168. {netket-3.12.4 → netket-3.14.0}/netket/utils/deprecation.py +13 -0
  169. {netket-3.12.4 → netket-3.14.0}/netket/utils/dispatch.py +1 -1
  170. {netket-3.12.4 → netket-3.14.0}/netket/utils/group/_group.py +2 -2
  171. {netket-3.12.4 → netket-3.14.0}/netket/utils/group/_permutation_group.py +1 -2
  172. {netket-3.12.4 → netket-3.14.0}/netket/utils/group/_point_group.py +4 -5
  173. {netket-3.12.4 → netket-3.14.0}/netket/utils/history.py +33 -11
  174. {netket-3.12.4 → netket-3.14.0}/netket/utils/holomorphic.py +2 -2
  175. {netket-3.12.4 → netket-3.14.0}/netket/utils/jax.py +5 -3
  176. {netket-3.12.4 → netket-3.14.0}/netket/utils/model_frameworks/__init__.py +1 -1
  177. {netket-3.12.4 → netket-3.14.0}/netket/utils/model_frameworks/base.py +5 -18
  178. netket-3.14.0/netket/utils/model_frameworks/equinox.py +92 -0
  179. {netket-3.12.4 → netket-3.14.0}/netket/utils/model_frameworks/flax.py +1 -9
  180. {netket-3.12.4 → netket-3.14.0}/netket/utils/model_frameworks/haiku.py +1 -9
  181. {netket-3.12.4 → netket-3.14.0}/netket/utils/model_frameworks/jax.py +1 -9
  182. {netket-3.12.4 → netket-3.14.0}/netket/utils/mpi/__init__.py +1 -0
  183. {netket-3.12.4 → netket-3.14.0}/netket/utils/mpi/gpu_autorank_util.py +28 -7
  184. {netket-3.12.4 → netket-3.14.0}/netket/utils/mpi/mpi.py +8 -6
  185. {netket-3.12.4 → netket-3.14.0}/netket/utils/mpi/primitives.py +127 -26
  186. {netket-3.12.4 → netket-3.14.0}/netket/utils/static_range.py +2 -2
  187. {netket-3.12.4 → netket-3.14.0}/netket/utils/struct/dataclass.py +2 -2
  188. {netket-3.12.4 → netket-3.14.0}/netket/utils/struct/fields.py +17 -2
  189. {netket-3.12.4 → netket-3.14.0}/netket/utils/struct/pytree.py +120 -49
  190. netket-3.14.0/netket/utils/struct/pytree_serialization_sharding.py +202 -0
  191. {netket-3.12.4 → netket-3.14.0}/netket/utils/struct/utils.py +1 -3
  192. {netket-3.12.4 → netket-3.14.0}/netket/utils/timing.py +7 -3
  193. {netket-3.12.4 → netket-3.14.0}/netket/utils/types.py +3 -2
  194. {netket-3.12.4 → netket-3.14.0}/netket/utils/version_check.py +8 -4
  195. {netket-3.12.4 → netket-3.14.0}/netket/vqs/__init__.py +10 -6
  196. {netket-3.12.4 → netket-3.14.0}/netket/vqs/base.py +39 -19
  197. {netket-3.12.4 → netket-3.14.0}/netket/vqs/full_summ/expect.py +2 -2
  198. {netket-3.12.4 → netket-3.14.0}/netket/vqs/full_summ/state.py +41 -27
  199. {netket-3.12.4 → netket-3.14.0}/netket/vqs/mc/kernels.py +6 -6
  200. {netket-3.12.4 → netket-3.14.0}/netket/vqs/mc/mc_mixed_state/state.py +15 -11
  201. {netket-3.12.4 → netket-3.14.0}/netket/vqs/mc/mc_state/expect.py +1 -1
  202. {netket-3.12.4 → netket-3.14.0}/netket/vqs/mc/mc_state/expect_chunked.py +2 -2
  203. {netket-3.12.4 → netket-3.14.0}/netket/vqs/mc/mc_state/expect_forces.py +4 -2
  204. {netket-3.12.4 → netket-3.14.0}/netket/vqs/mc/mc_state/expect_forces_chunked.py +5 -3
  205. {netket-3.12.4 → netket-3.14.0}/netket/vqs/mc/mc_state/expect_grad.py +10 -9
  206. {netket-3.12.4 → netket-3.14.0}/netket/vqs/mc/mc_state/expect_grad_chunked.py +2 -2
  207. {netket-3.12.4 → netket-3.14.0}/netket/vqs/mc/mc_state/state.py +86 -73
  208. {netket-3.12.4 → netket-3.14.0}/pyproject.toml +30 -26
  209. netket-3.12.4/netket/experimental/sampler/__init__.py +0 -29
  210. netket-3.12.4/netket/hilbert/index/constraints/__init__.py +0 -2
  211. netket-3.12.4/netket/hilbert/random/spin.py +0 -87
  212. netket-3.12.4/netket/hilbert/spin.py +0 -141
  213. netket-3.12.4/netket/jax/_expect.py +0 -101
  214. netket-3.12.4/netket/nn/__init__.py +0 -104
  215. netket-3.12.4/netket/nn/deprecation.py +0 -122
  216. netket-3.12.4/netket/nn/initializers.py +0 -40
  217. netket-3.12.4/netket/optimizer/qgt/qgt_jacobian_dense.py +0 -305
  218. netket-3.12.4/netket/optimizer/qgt/qgt_jacobian_pytree.py +0 -325
  219. netket-3.12.4/netket/optimizer/qgt/qgt_jacobian_pytree_logic.py +0 -70
  220. netket-3.12.4/netket/utils/plum/__init__.py +0 -61
  221. netket-3.12.4/netket/utils/plum/_version.py +0 -17
  222. netket-3.12.4/netket/utils/plum/alias.py +0 -166
  223. netket-3.12.4/netket/utils/plum/autoreload.py +0 -77
  224. netket-3.12.4/netket/utils/plum/dispatcher.py +0 -128
  225. netket-3.12.4/netket/utils/plum/function.py +0 -487
  226. netket-3.12.4/netket/utils/plum/method.py +0 -232
  227. netket-3.12.4/netket/utils/plum/overload.py +0 -9
  228. netket-3.12.4/netket/utils/plum/parametric.py +0 -421
  229. netket-3.12.4/netket/utils/plum/promotion.py +0 -169
  230. netket-3.12.4/netket/utils/plum/py.typed +0 -0
  231. netket-3.12.4/netket/utils/plum/repr.py +0 -179
  232. netket-3.12.4/netket/utils/plum/resolver.py +0 -307
  233. netket-3.12.4/netket/utils/plum/signature.py +0 -424
  234. netket-3.12.4/netket/utils/plum/type.py +0 -296
  235. netket-3.12.4/netket/utils/plum/util.py +0 -170
  236. netket-3.12.4/netket/vqs/deprecated.py +0 -13
  237. netket-3.12.4/netket/vqs/experimental.py +0 -39
  238. {netket-3.12.4 → netket-3.14.0}/LICENSE +0 -0
  239. {netket-3.12.4 → netket-3.14.0}/README.md +0 -0
  240. {netket-3.12.4 → netket-3.14.0}/netket/__init__.py +0 -0
  241. {netket-3.12.4 → netket-3.14.0}/netket/callbacks/__init__.py +0 -0
  242. {netket-3.12.4 → netket-3.14.0}/netket/callbacks/convergence_stopping.py +0 -0
  243. {netket-3.12.4 → netket-3.14.0}/netket/driver/__init__.py +0 -0
  244. {netket-3.12.4 → netket-3.14.0}/netket/driver/vmc_common.py +0 -0
  245. {netket-3.12.4 → netket-3.14.0}/netket/experimental/__init__.py +0 -0
  246. {netket-3.12.4 → netket-3.14.0}/netket/experimental/driver/__init__.py +0 -0
  247. {netket-3.12.4 → netket-3.14.0}/netket/experimental/dynamics/__init__.py +0 -0
  248. {netket-3.12.4 → netket-3.14.0}/netket/experimental/hilbert/__init__.py +0 -0
  249. {netket-3.12.4 → netket-3.14.0}/netket/experimental/logging/__init__.py +0 -0
  250. {netket-3.12.4 → netket-3.14.0}/netket/experimental/logging/hdf5_log.py +0 -0
  251. {netket-3.12.4 → netket-3.14.0}/netket/experimental/models/__init__.py +0 -0
  252. {netket-3.12.4 → netket-3.14.0}/netket/experimental/nn/__init__.py +0 -0
  253. {netket-3.12.4 → netket-3.14.0}/netket/experimental/nn/rnn/__init__.py +0 -0
  254. {netket-3.12.4 → netket-3.14.0}/netket/experimental/nn/rnn/cells.py +0 -0
  255. {netket-3.12.4 → netket-3.14.0}/netket/experimental/observable/renyi2/S2_operator.py +0 -0
  256. {netket-3.12.4 → netket-3.14.0}/netket/experimental/observable/renyi2/__init__.py +0 -0
  257. {netket-3.12.4 → netket-3.14.0}/netket/experimental/observable/renyi2/exact.py +0 -0
  258. {netket-3.12.4 → netket-3.14.0}/netket/experimental/operator/__init__.py +0 -0
  259. {netket-3.12.4 → netket-3.14.0}/netket/experimental/qsr/__init__.py +0 -0
  260. {netket-3.12.4 → netket-3.14.0}/netket/experimental/qsr/logic_helpers.py +0 -0
  261. {netket-3.12.4 → netket-3.14.0}/netket/experimental/sampler/metropolis.py +0 -0
  262. {netket-3.12.4 → netket-3.14.0}/netket/experimental/sampler/rules/__init__.py +0 -0
  263. {netket-3.12.4 → netket-3.14.0}/netket/experimental/vqs/__init__.py +0 -0
  264. {netket-3.12.4 → netket-3.14.0}/netket/experimental/vqs/io.py +0 -0
  265. {netket-3.12.4 → netket-3.14.0}/netket/graph/__init__.py +0 -0
  266. {netket-3.12.4 → netket-3.14.0}/netket/graph/_lattice_edge_logic.py +0 -0
  267. {netket-3.12.4 → netket-3.14.0}/netket/hilbert/index/unconstrained.py +0 -0
  268. {netket-3.12.4 → netket-3.14.0}/netket/hilbert/index/uniform_tensor.py +0 -0
  269. {netket-3.12.4 → netket-3.14.0}/netket/hilbert/random/base.py +0 -0
  270. {netket-3.12.4 → netket-3.14.0}/netket/hilbert/random/custom.py +0 -0
  271. {netket-3.12.4 → netket-3.14.0}/netket/hilbert/random/doubled.py +0 -0
  272. {netket-3.12.4 → netket-3.14.0}/netket/hilbert/random/particle.py +0 -0
  273. {netket-3.12.4 → netket-3.14.0}/netket/hilbert/random/qubit.py +0 -0
  274. {netket-3.12.4 → netket-3.14.0}/netket/hilbert/random/tensor_hilbert.py +0 -0
  275. {netket-3.12.4 → netket-3.14.0}/netket/jax/_jacobian/__init__.py +0 -0
  276. {netket-3.12.4 → netket-3.14.0}/netket/jax/_jacobian/jacobian_dense.py +0 -0
  277. {netket-3.12.4 → netket-3.14.0}/netket/jax/_sort.py +0 -0
  278. {netket-3.12.4 → netket-3.14.0}/netket/jax/_utils_dtype.py +0 -0
  279. {netket-3.12.4 → netket-3.14.0}/netket/logging/__init__.py +0 -0
  280. {netket-3.12.4 → netket-3.14.0}/netket/logging/json_log.py +0 -0
  281. {netket-3.12.4 → netket-3.14.0}/netket/models/README.md +0 -0
  282. {netket-3.12.4 → netket-3.14.0}/netket/models/__init__.py +0 -0
  283. {netket-3.12.4 → netket-3.14.0}/netket/models/equivariant.py +0 -0
  284. {netket-3.12.4 → netket-3.14.0}/netket/models/full_space.py +0 -0
  285. {netket-3.12.4 → netket-3.14.0}/netket/models/gaussian.py +0 -0
  286. {netket-3.12.4 → netket-3.14.0}/netket/models/jastrow.py +0 -0
  287. {netket-3.12.4 → netket-3.14.0}/netket/models/tensor_networks/__init__.py +0 -0
  288. {netket-3.12.4 → netket-3.14.0}/netket/models/utils.py +0 -0
  289. {netket-3.12.4 → netket-3.14.0}/netket/nn/blocks/__init__.py +0 -0
  290. {netket-3.12.4 → netket-3.14.0}/netket/operator/__init__.py +0 -0
  291. {netket-3.12.4 → netket-3.14.0}/netket/operator/_abstract_observable.py +0 -0
  292. {netket-3.12.4 → netket-3.14.0}/netket/operator/_abstract_operator.py +0 -0
  293. {netket-3.12.4 → netket-3.14.0}/netket/operator/_abstract_super_operator.py +0 -0
  294. {netket-3.12.4 → netket-3.14.0}/netket/operator/_bose_hubbard/__init__.py +0 -0
  295. {netket-3.12.4 → netket-3.14.0}/netket/operator/_hamiltonian.py +0 -0
  296. {netket-3.12.4 → netket-3.14.0}/netket/operator/_ising/__init__.py +0 -0
  297. {netket-3.12.4 → netket-3.14.0}/netket/operator/_lazy.py +0 -0
  298. {netket-3.12.4 → netket-3.14.0}/netket/operator/_local_operator/__init__.py +0 -0
  299. {netket-3.12.4 → netket-3.14.0}/netket/operator/_local_operator/helpers.py +0 -0
  300. {netket-3.12.4 → netket-3.14.0}/netket/operator/_pauli_strings/__init__.py +0 -0
  301. {netket-3.12.4 → netket-3.14.0}/netket/operator/boson.py +0 -0
  302. {netket-3.12.4 → netket-3.14.0}/netket/optimizer/qgt/common.py +0 -0
  303. {netket-3.12.4 → netket-3.14.0}/netket/optimizer/qgt/qgt_onthefly_logic.py +0 -0
  304. {netket-3.12.4 → netket-3.14.0}/netket/optimizer/solver/__init__.py +0 -0
  305. {netket-3.12.4 → netket-3.14.0}/netket/sampler/rules/__init__.py +0 -0
  306. {netket-3.12.4 → netket-3.14.0}/netket/sampler/rules/continuous_gaussian.py +0 -0
  307. {netket-3.12.4 → netket-3.14.0}/netket/sampler/rules/custom_numpy.py +0 -0
  308. {netket-3.12.4 → netket-3.14.0}/netket/sampler/rules/fixed.py +0 -0
  309. {netket-3.12.4 → netket-3.14.0}/netket/sampler/rules/hamiltonian_numpy.py +0 -0
  310. {netket-3.12.4 → netket-3.14.0}/netket/sampler/rules/local.py +0 -0
  311. {netket-3.12.4 → netket-3.14.0}/netket/stats/__init__.py +0 -0
  312. {netket-3.12.4 → netket-3.14.0}/netket/stats/_autocorr.py +0 -0
  313. {netket-3.12.4 → netket-3.14.0}/netket/stats/mc_stats_old.py +0 -0
  314. {netket-3.12.4 → netket-3.14.0}/netket/stats/mpi_stats.py +0 -0
  315. {netket-3.12.4 → netket-3.14.0}/netket/tools/__init__.py +0 -0
  316. {netket-3.12.4 → netket-3.14.0}/netket/tools/_common.py +0 -0
  317. {netket-3.12.4 → netket-3.14.0}/netket/tools/_cpu_info.py +0 -0
  318. {netket-3.12.4 → netket-3.14.0}/netket/tools/_mpi_info.py +0 -0
  319. {netket-3.12.4 → netket-3.14.0}/netket/tools/check_mpi.py +0 -0
  320. {netket-3.12.4 → netket-3.14.0}/netket/tools/info.py +0 -0
  321. {netket-3.12.4 → netket-3.14.0}/netket/utils/display/__init__.py +0 -0
  322. {netket-3.12.4 → netket-3.14.0}/netket/utils/display/repr.py +0 -0
  323. {netket-3.12.4 → netket-3.14.0}/netket/utils/float.py +0 -0
  324. {netket-3.12.4 → netket-3.14.0}/netket/utils/group/__init__.py +0 -0
  325. {netket-3.12.4 → netket-3.14.0}/netket/utils/group/_semigroup.py +0 -0
  326. {netket-3.12.4 → netket-3.14.0}/netket/utils/group/axial.py +0 -0
  327. {netket-3.12.4 → netket-3.14.0}/netket/utils/group/cubic.py +0 -0
  328. {netket-3.12.4 → netket-3.14.0}/netket/utils/group/icosa.py +0 -0
  329. {netket-3.12.4 → netket-3.14.0}/netket/utils/group/planar.py +0 -0
  330. {netket-3.12.4 → netket-3.14.0}/netket/utils/moduletools.py +0 -0
  331. {netket-3.12.4 → netket-3.14.0}/netket/utils/numbers.py +0 -0
  332. {netket-3.12.4 → netket-3.14.0}/netket/utils/optional_deps.py +0 -0
  333. {netket-3.12.4 → netket-3.14.0}/netket/utils/partial.py +0 -0
  334. {netket-3.12.4 → netket-3.14.0}/netket/utils/seed.py +0 -0
  335. {netket-3.12.4 → netket-3.14.0}/netket/utils/static_number.py +0 -0
  336. {netket-3.12.4 → netket-3.14.0}/netket/utils/struct/__init__.py +0 -0
  337. {netket-3.12.4 → netket-3.14.0}/netket/utils/summation.py +0 -0
  338. {netket-3.12.4 → netket-3.14.0}/netket/vqs/full_summ/__init__.py +0 -0
  339. {netket-3.12.4 → netket-3.14.0}/netket/vqs/mc/__init__.py +0 -0
  340. {netket-3.12.4 → netket-3.14.0}/netket/vqs/mc/common.py +0 -0
  341. {netket-3.12.4 → netket-3.14.0}/netket/vqs/mc/mc_mixed_state/__init__.py +0 -0
  342. {netket-3.12.4 → netket-3.14.0}/netket/vqs/mc/mc_mixed_state/expect.py +0 -0
  343. {netket-3.12.4 → netket-3.14.0}/netket/vqs/mc/mc_mixed_state/expect_chunked.py +0 -0
  344. {netket-3.12.4 → netket-3.14.0}/netket/vqs/mc/mc_state/__init__.py +0 -0
@@ -16,8 +16,10 @@ netket.egg-info/
16
16
  pip-wheel-metadata
17
17
  .ipynb_checkpoints
18
18
  .pytest_cache
19
+ .benchmarks
19
20
  .mypy_cache
20
21
  .virtual_documents
22
+ .ruff_cache
21
23
  oldest_requirements.txt
22
24
 
23
25
  # Packages #
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: NetKet
3
- Version: 3.12.4
3
+ Version: 3.14.0
4
4
  Summary: Netket : Machine Learning toolbox for many-body quantum systems.
5
5
  Project-URL: homepage, https://www.netket.org
6
6
  Project-URL: documentation, https://netket.readthedocs.io/en/latest/#
@@ -17,27 +17,23 @@ Classifier: Operating System :: POSIX :: Linux
17
17
  Classifier: Operating System :: Unix
18
18
  Classifier: Programming Language :: Python :: 3
19
19
  Classifier: Topic :: Scientific/Engineering :: Physics
20
- Requires-Python: >=3.9
21
- Requires-Dist: beartype>=0.16.2
20
+ Requires-Python: >=3.10
22
21
  Requires-Dist: equinox<0.12,>=0.11.3
23
- Requires-Dist: flax<0.9,>=0.7.1
22
+ Requires-Dist: flax<0.10,>=0.7.1
24
23
  Requires-Dist: igraph<0.12.0,>=0.10.0
25
24
  Requires-Dist: jax<0.5,>=0.4.16
26
- Requires-Dist: jaxlib<0.5,>=0.4.16
27
- Requires-Dist: numba4jax<0.1,>=0.0.10.post1
28
25
  Requires-Dist: numba<0.61,>=0.52
29
- Requires-Dist: numpy~=1.20
26
+ Requires-Dist: numpy<3.0,>=1.20
30
27
  Requires-Dist: optax<0.3,>=0.1.3
31
28
  Requires-Dist: orjson<4,>=3.4
29
+ Requires-Dist: plum-dispatch<3,>=2.4
32
30
  Requires-Dist: rich>=10.0
33
31
  Requires-Dist: scipy<2,>=1.5.3
34
32
  Requires-Dist: tqdm<5,>=4.60
35
- Requires-Dist: typing-extensions; python_version <= '3.10'
36
33
  Provides-Extra: dev
37
34
  Requires-Dist: black==23.9.1; extra == 'dev'
38
35
  Requires-Dist: build; extra == 'dev'
39
36
  Requires-Dist: coverage>=5; extra == 'dev'
40
- Requires-Dist: ipython; extra == 'dev'
41
37
  Requires-Dist: matplotlib>=3; extra == 'dev'
42
38
  Requires-Dist: networkx<4,>=2.4; extra == 'dev'
43
39
  Requires-Dist: pre-commit>=2.7; extra == 'dev'
@@ -46,15 +42,15 @@ Requires-Dist: pytest-json-report>=1.3; extra == 'dev'
46
42
  Requires-Dist: pytest-xdist[psutil]>=2; extra == 'dev'
47
43
  Requires-Dist: pytest>=6; extra == 'dev'
48
44
  Requires-Dist: qutip>=5; extra == 'dev'
49
- Requires-Dist: ruff==0.4.2; extra == 'dev'
45
+ Requires-Dist: ruff==0.6.2; extra == 'dev'
50
46
  Requires-Dist: wheel; extra == 'dev'
51
47
  Provides-Extra: docs
52
48
  Requires-Dist: myst-nb<1.2,>=1.0; extra == 'docs'
53
- Requires-Dist: myst-parser<3.1.0,>=2.0.0; extra == 'docs'
49
+ Requires-Dist: myst-parser<4.1.0,>=2.0.0; extra == 'docs'
54
50
  Requires-Dist: sphinx-autodoc-typehints<3.0,>=1.22; extra == 'docs'
55
51
  Requires-Dist: sphinx-book-theme~=1.1.0; extra == 'docs'
56
52
  Requires-Dist: sphinx-design>=0.4.0; extra == 'docs'
57
- Requires-Dist: sphinx<7.4,>=7.0; extra == 'docs'
53
+ Requires-Dist: sphinx<8.1,>=7.0; extra == 'docs'
58
54
  Requires-Dist: sphinxcontrib-fulltoc~=1.2.0; extra == 'docs'
59
55
  Requires-Dist: sphinxcontrib-jsmath~=1.0.1; extra == 'docs'
60
56
  Provides-Extra: extra
@@ -64,7 +60,7 @@ Requires-Dist: qutip>=4; extra == 'extra'
64
60
  Requires-Dist: tensorboardx>=2.0.0; extra == 'extra'
65
61
  Provides-Extra: mpi
66
62
  Requires-Dist: mpi4jax<0.6,>=0.3.9; extra == 'mpi'
67
- Requires-Dist: mpi4py<4,>=3.0.1; extra == 'mpi'
63
+ Requires-Dist: mpi4py<5,>=3.0.1; extra == 'mpi'
68
64
  Provides-Extra: pyscf
69
65
  Requires-Dist: pyscf>=2.0; extra == 'pyscf'
70
66
  Requires-Dist: sparse>=0.12.0; extra == 'pyscf'
@@ -0,0 +1,84 @@
1
+
2
+ [envs.hatch-test]
3
+ default-args = ["test"]
4
+ features = [
5
+ "dev",
6
+ "extra",
7
+ ]
8
+ extra-dependencies = [
9
+ ]
10
+ randomize = false
11
+ parallel = false
12
+
13
+ [[envs.hatch-test.matrix]]
14
+ distributed = ['nompi', 'mpi', 'sharding']
15
+
16
+ [envs.hatch-test.overrides]
17
+ matrix.distributed.extra-dependencies = [
18
+ { value = "mpi4py", if = ["mpi", "sharding"] },
19
+ { value = "mpi4jax", if = ["mpi"] },
20
+ ]
21
+ matrix.distributed.scripts = [
22
+ { key = "run", value = "mpirun -np 2 pytest -n 0 {env:HATCH_TEST_ARGS:} {args}", if = ["mpi"] },
23
+ { key = "run-cov", value = "mpirun -np 2 coverage run -m pytest -n 0 {env:HATCH_TEST_ARGS:} {args}", if = ["mpi"] },
24
+ { key = "cov-combine", value = "coverage combine --append", if = ["mpi"] },
25
+
26
+ { key = "run", value = "MPITRAMPOLINE_LIB=\"{env:VIRTUAL_ENV}/MPIWrapper/build/libmpiwrapper.so\" \"{env:VIRTUAL_ENV}/MPIWrapper/build/bin/mpiwrapperexec\" -np 2 pytest -n 0 --jax-distributed-mpi {env:HATCH_TEST_ARGS:} {args}", if = ["sharding"] },
27
+ ]
28
+ matrix.distributed.env-vars = [
29
+ { key = "NETKET_MPI", value = "0", if = ["nompi", "sharding"] },
30
+ { key = "NETKET_MPI", value = "1", if = ["mpi"] },
31
+ { key = "NETKET_EXPERIMENTAL_SHARDING", value = "1", if = ["sharding"] },
32
+ { key = "NETKET_MPI_WARNING", value = "0", if = ["sharding"] },
33
+ ]
34
+ matrix.distributed.parallel = { value = true, if = ["nompi"] }
35
+ matrix.distributed.set-default-args = { value = ["test_sharding/test_sharding_distributed.py"], if = ["sharding"] }
36
+ matrix.distributed.post-install-commands = [
37
+ { value = "mkdir \"{env:VIRTUAL_ENV:DEFAULT}/MPIWrapper\"", if = ["sharding"] },
38
+ { value = "git clone https://github.com/eschnett/MPIwrapper.git \"{env:VIRTUAL_ENV:DEFAULT}/MPIWrapper\"", if = ["sharding"] },
39
+ { value = "mkdir \"{env:VIRTUAL_ENV:DEFAULT}/MPIWrapper/build\"",if = ["sharding"] },
40
+ { value = "cd \"{env:VIRTUAL_ENV:DEFAULT}/MPIWrapper/build\" && cmake ..",if = ["sharding"] },
41
+ { value = "cd \"{env:VIRTUAL_ENV:DEFAULT}/MPIWrapper/build\" && make",if = ["sharding"] },
42
+ ]
43
+
44
+ [envs.docs]
45
+ features = [
46
+ "docs",
47
+ ]
48
+ extra-dependencies = [
49
+ "sphinx-autobuild"
50
+ ]
51
+ [envs.docs.scripts]
52
+ clean = "cd {root}/docs && make clean"
53
+ build = "sphinx-build -M html docs docs/_build"
54
+ serve = "sphinx-autobuild docs docs/_build/html"
55
+
56
+
57
+ [envs.sharding]
58
+ features = [
59
+ "dev",
60
+ "extra",
61
+ ]
62
+ extra-dependencies = [
63
+ "mpi4py"
64
+ ]
65
+ post-install-commands = [
66
+ "mkdir \"{env:VIRTUAL_ENV:DEFAULT}/MPIWrapper\"",
67
+ "git clone https://github.com/eschnett/MPIwrapper.git \"{env:VIRTUAL_ENV:DEFAULT}/MPIWrapper\"",
68
+ "mkdir \"{env:VIRTUAL_ENV:DEFAULT}/MPIWrapper/build\"",
69
+ "cd \"{env:VIRTUAL_ENV:DEFAULT}/MPIWrapper/build\" && cmake ..",
70
+ "cd \"{env:VIRTUAL_ENV:DEFAULT}/MPIWrapper/build\" && make",
71
+ ]
72
+ [envs.sharding.env-vars]
73
+ NETKET_EXPERIMENTAL_SHARDING = "1"
74
+
75
+ [envs.sharding.scripts]
76
+ run = [
77
+ "MPITRAMPOLINE_LIB=\"{env:VIRTUAL_ENV}/MPIWrapper/build/libmpiwrapper.so\" \"{env:VIRTUAL_ENV}/MPIWrapper/build/bin/mpiwrapperexec\" -np 2 python {args}"
78
+ ]
79
+ run3 = [
80
+ "MPITRAMPOLINE_LIB=\"{env:VIRTUAL_ENV}/MPIWrapper/build/libmpiwrapper.so\" \"{env:VIRTUAL_ENV}/MPIWrapper/build/bin/mpiwrapperexec\" -np 3 python {args}"
81
+ ]
82
+ run4 = [
83
+ "MPITRAMPOLINE_LIB=\"{env:VIRTUAL_ENV}/MPIWrapper/build/libmpiwrapper.so\" \"{env:VIRTUAL_ENV}/MPIWrapper/build/bin/mpiwrapperexec\" -np 4 python {args}"
84
+ ]
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '3.12.4'
16
- __version_tuple__ = version_tuple = (3, 12, 4)
15
+ __version__ = version = '3.14.0'
16
+ __version_tuple__ = version_tuple = (3, 14, 0)
@@ -12,7 +12,6 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- from typing import Optional, Union
16
15
 
17
16
  import numpy as np
18
17
 
@@ -32,9 +31,9 @@ class EarlyStopping(struct.Pytree, mutable=True):
32
31
  This behaves similarly to `min_delta` but is more useful for intensive quantities that
33
32
  converge to 0, where absolute tolerances might not be effective.
34
33
  """
35
- patience: Union[int, float]
34
+ patience: int | float
36
35
  """Number of epochs with no improvement after which training will be stopped."""
37
- baseline: Optional[float]
36
+ baseline: float | None
38
37
  """Baseline value for the monitored quantity. Training will stop if the driver hits the baseline."""
39
38
  monitor: str
40
39
  """Loss statistic to monitor. Should be one of 'mean', 'variance', 'sigma'."""
@@ -53,8 +52,8 @@ class EarlyStopping(struct.Pytree, mutable=True):
53
52
  self,
54
53
  min_delta: float = 0.0,
55
54
  min_reldelta: float = 0.0,
56
- patience: Union[int, float] = 0,
57
- baseline: Optional[float] = None,
55
+ patience: int | float = 0,
56
+ baseline: float | None = None,
58
57
  monitor: str = "mean",
59
58
  ):
60
59
  """
@@ -12,7 +12,6 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- from typing import Union
16
15
  import numpy as np
17
16
 
18
17
  from netket.utils import struct
@@ -25,14 +24,14 @@ class InvalidLossStopping(struct.Pytree, mutable=True):
25
24
 
26
25
  monitor: str
27
26
  """Loss statistic to monitor. Should be one of 'mean', 'variance', 'sigma'."""
28
- patience: Union[int, float]
27
+ patience: int | float
29
28
  """Number of epochs with invalid loss after which training will be stopped."""
30
29
 
31
30
  # caches
32
31
  _last_valid_iter: int
33
32
  """Last valid iteration, to check against patience"""
34
33
 
35
- def __init__(self, monitor: str = "mean", patience: Union[int, float] = 0):
34
+ def __init__(self, monitor: str = "mean", patience: int | float = 0):
36
35
  """
37
36
  Construct a callback stopping theoptimisation when the monitored quantity
38
37
  becaomes invalid for at least `patience` steps.
@@ -63,10 +62,16 @@ class InvalidLossStopping(struct.Pytree, mutable=True):
63
62
  Returns:
64
63
  A boolean. If True, training continues, else, it does not.
65
64
  """
66
- loss = np.real(getattr(log_data[driver._loss_name], self.monitor))
67
- if not np.isfinite(loss):
68
- if step - self._last_valid_iter >= self.patience:
69
- return False
70
- else:
71
- self._last_valid_iter = step
65
+ # clears the _last_valid_iter in case the driver was reset
66
+ if driver.step_count < self._last_valid_iter:
67
+ self._last_valid_iter = 0
68
+
69
+ if driver._loss_stats is not None:
70
+ loss = np.real(getattr(driver._loss_stats, self.monitor))
71
+
72
+ if not np.isfinite(loss):
73
+ if driver.step_count - self._last_valid_iter >= self.patience:
74
+ return False
75
+ else:
76
+ self._last_valid_iter = driver.step_count
72
77
  return True
@@ -12,7 +12,6 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- from typing import Optional
16
15
  import time
17
16
 
18
17
  from netket.utils import struct
@@ -29,7 +28,7 @@ class Timeout(struct.Pytree, mutable=True):
29
28
  """Number of seconds to wait before the training will be stopped."""
30
29
 
31
30
  # caches
32
- _init_time: Optional[float]
31
+ _init_time: float | None
33
32
  """
34
33
  Internal field storing the time at which the first iteration has been
35
34
  performed.
@@ -12,8 +12,8 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- from typing import Callable, Optional
16
- from collections.abc import Iterable
15
+ from typing import TypeVar
16
+ from collections.abc import Callable, Iterable
17
17
 
18
18
  import abc
19
19
  import numbers
@@ -29,19 +29,21 @@ from netket.utils import mpi, timing
29
29
  from netket.utils.types import Optimizer, PyTree
30
30
  from netket.vqs import VariationalState
31
31
 
32
+ CallbackT = Callable[[int, dict, "AbstractVariationalDriver"], bool]
32
33
 
33
- def _to_iterable(maybe_iterable):
34
+ T = TypeVar("T")
35
+
36
+
37
+ def _to_iterable(maybe_iterable: T | Iterable[T]) -> tuple[T, ...]:
34
38
  """
35
39
  _to_iterable(maybe_iterable)
36
40
 
37
41
  Ensure the result is iterable. If the input is not iterable, it is wrapped into a tuple.
38
42
  """
39
- if hasattr(maybe_iterable, "__iter__"):
40
- surely_iterable = maybe_iterable
41
- else:
42
- surely_iterable = (maybe_iterable,)
43
+ if not isinstance(maybe_iterable, Iterable):
44
+ maybe_iterable = (maybe_iterable,)
43
45
 
44
- return surely_iterable
46
+ return tuple(maybe_iterable)
45
47
 
46
48
 
47
49
  class AbstractVariationalDriver(abc.ABC):
@@ -161,6 +163,11 @@ class AbstractVariationalDriver(abc.ABC):
161
163
  **modified in-place** adding new keys.
162
164
  step: the current step number.
163
165
  """
166
+ # Always log the acceptance.
167
+ if hasattr(self.state, "sampler_state"):
168
+ acceptance = getattr(self.state.sampler_state, "acceptance", None) # type: ignore
169
+ if acceptance is not None:
170
+ log_dict["acceptance"] = acceptance
164
171
 
165
172
  def reset(self):
166
173
  """
@@ -216,12 +223,12 @@ class AbstractVariationalDriver(abc.ABC):
216
223
  """
217
224
  for _ in range(0, n_steps, step):
218
225
  for i in range(0, step):
219
- dp = self._forward_and_backward()
226
+ self._dp = self._forward_and_backward()
220
227
  if i == 0:
221
228
  yield self.step_count
222
229
 
223
230
  self._step_count += 1
224
- self.update_parameters(dp)
231
+ self.update_parameters(self._dp)
225
232
 
226
233
  def advance(self, steps: int = 1):
227
234
  """
@@ -237,15 +244,13 @@ class AbstractVariationalDriver(abc.ABC):
237
244
  def run(
238
245
  self,
239
246
  n_iter: int,
240
- out: Optional[Iterable[AbstractLog]] = (),
241
- obs: Optional[dict[str, AbstractObservable]] = None,
247
+ out: AbstractLog | Iterable[AbstractLog] | str | None = (),
248
+ obs: dict[str, AbstractObservable] | None = None,
242
249
  step_size: int = 1,
243
250
  show_progress: bool = True,
244
251
  save_params_every: int = 50, # for default logger
245
252
  write_every: int = 50, # for default logger
246
- callback: Callable[
247
- [int, dict, "AbstractVariationalDriver"], bool
248
- ] = lambda *x: True,
253
+ callback: CallbackT | Iterable[CallbackT] = lambda *x: True,
249
254
  timeit: bool = False,
250
255
  ):
251
256
  """
@@ -310,7 +315,7 @@ class AbstractVariationalDriver(abc.ABC):
310
315
  if self._is_root:
311
316
  loggers = _to_iterable(out)
312
317
  else:
313
- loggers = tuple()
318
+ loggers: tuple[AbstractLog, ...] = tuple()
314
319
  show_progress = False
315
320
 
316
321
  callbacks = _to_iterable(callback)
@@ -12,16 +12,12 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- from typing import Optional
16
-
17
- from inspect import signature
18
15
 
19
16
  from netket.operator import Squared, AbstractSuperOperator
20
17
  from netket.vqs import MCMixedState
21
18
  from netket.optimizer import (
22
19
  identity_preconditioner,
23
20
  PreconditionerT,
24
- _DeprecatedPreconditionerSignature,
25
21
  )
26
22
  from netket.jax import tree_cast
27
23
  from netket.utils.types import Optimizer
@@ -115,13 +111,10 @@ class SteadyState(AbstractVariationalDriver):
115
111
  return self._preconditioner
116
112
 
117
113
  @preconditioner.setter
118
- def preconditioner(self, val: Optional[PreconditionerT]):
114
+ def preconditioner(self, val: PreconditionerT | None):
119
115
  if val is None:
120
116
  val = identity_preconditioner
121
117
 
122
- if len(signature(val).parameters) == 2:
123
- val = _DeprecatedPreconditionerSignature(val)
124
-
125
118
  self._preconditioner = val
126
119
 
127
120
  @property
@@ -12,10 +12,8 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- from typing import Optional
16
15
 
17
16
  from textwrap import dedent
18
- from inspect import signature
19
17
 
20
18
  from netket.utils.types import PyTree, Optimizer
21
19
  from netket.operator import AbstractOperator
@@ -23,7 +21,6 @@ from netket.stats import Stats
23
21
  from netket.optimizer import (
24
22
  identity_preconditioner,
25
23
  PreconditionerT,
26
- _DeprecatedPreconditionerSignature,
27
24
  )
28
25
  from netket.vqs import VariationalState
29
26
  from netket.jax import tree_cast
@@ -103,13 +100,10 @@ class VMC(AbstractVariationalDriver):
103
100
  return self._preconditioner
104
101
 
105
102
  @preconditioner.setter
106
- def preconditioner(self, val: Optional[PreconditionerT]):
103
+ def preconditioner(self, val: PreconditionerT | None):
107
104
  if val is None:
108
105
  val = identity_preconditioner
109
106
 
110
- if len(signature(val).parameters) == 2:
111
- val = _DeprecatedPreconditionerSignature(val)
112
-
113
107
  self._preconditioner = val
114
108
 
115
109
  def _forward_and_backward(self):