NetKet 3.11.2__tar.gz → 3.11.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (307) hide show
  1. {netket-3.11.2 → netket-3.11.3}/PKG-INFO +4 -3
  2. {netket-3.11.2 → netket-3.11.3}/netket/_version.py +2 -2
  3. {netket-3.11.2 → netket-3.11.3}/netket/experimental/observable/renyi2/exact.py +6 -0
  4. {netket-3.11.2 → netket-3.11.3}/netket/experimental/operator/_fermion_operator_2nd_base.py +38 -18
  5. {netket-3.11.2 → netket-3.11.3}/netket/experimental/operator/_fermion_operator_2nd_utils.py +21 -5
  6. {netket-3.11.2 → netket-3.11.3}/netket/operator/_discrete_operator_jax.py +25 -0
  7. {netket-3.11.2 → netket-3.11.3}/netket/utils/struct/pytree.py +14 -9
  8. {netket-3.11.2 → netket-3.11.3}/pyproject.toml +2 -1
  9. {netket-3.11.2 → netket-3.11.3}/.gitignore +0 -0
  10. {netket-3.11.2 → netket-3.11.3}/LICENSE +0 -0
  11. {netket-3.11.2 → netket-3.11.3}/README.md +0 -0
  12. {netket-3.11.2 → netket-3.11.3}/netket/__init__.py +0 -0
  13. {netket-3.11.2 → netket-3.11.3}/netket/callbacks/__init__.py +0 -0
  14. {netket-3.11.2 → netket-3.11.3}/netket/callbacks/convergence_stopping.py +0 -0
  15. {netket-3.11.2 → netket-3.11.3}/netket/callbacks/earlystopping.py +0 -0
  16. {netket-3.11.2 → netket-3.11.3}/netket/callbacks/invalidlossstopping.py +0 -0
  17. {netket-3.11.2 → netket-3.11.3}/netket/callbacks/timeout.py +0 -0
  18. {netket-3.11.2 → netket-3.11.3}/netket/driver/__init__.py +0 -0
  19. {netket-3.11.2 → netket-3.11.3}/netket/driver/abstract_variational_driver.py +0 -0
  20. {netket-3.11.2 → netket-3.11.3}/netket/driver/steady_state.py +0 -0
  21. {netket-3.11.2 → netket-3.11.3}/netket/driver/vmc.py +0 -0
  22. {netket-3.11.2 → netket-3.11.3}/netket/driver/vmc_common.py +0 -0
  23. {netket-3.11.2 → netket-3.11.3}/netket/errors.py +0 -0
  24. {netket-3.11.2 → netket-3.11.3}/netket/exact.py +0 -0
  25. {netket-3.11.2 → netket-3.11.3}/netket/experimental/__init__.py +0 -0
  26. {netket-3.11.2 → netket-3.11.3}/netket/experimental/driver/__init__.py +0 -0
  27. {netket-3.11.2 → netket-3.11.3}/netket/experimental/driver/tdvp.py +0 -0
  28. {netket-3.11.2 → netket-3.11.3}/netket/experimental/driver/tdvp_common.py +0 -0
  29. {netket-3.11.2 → netket-3.11.3}/netket/experimental/driver/tdvp_schmitt.py +0 -0
  30. {netket-3.11.2 → netket-3.11.3}/netket/experimental/driver/vmc_srt.py +0 -0
  31. {netket-3.11.2 → netket-3.11.3}/netket/experimental/dynamics/__init__.py +0 -0
  32. {netket-3.11.2 → netket-3.11.3}/netket/experimental/dynamics/_rk_solver.py +0 -0
  33. {netket-3.11.2 → netket-3.11.3}/netket/experimental/dynamics/_rk_solver_structures.py +0 -0
  34. {netket-3.11.2 → netket-3.11.3}/netket/experimental/dynamics/_rk_tableau.py +0 -0
  35. {netket-3.11.2 → netket-3.11.3}/netket/experimental/hilbert/__init__.py +0 -0
  36. {netket-3.11.2 → netket-3.11.3}/netket/experimental/hilbert/spin_orbital_fermions.py +0 -0
  37. {netket-3.11.2 → netket-3.11.3}/netket/experimental/logging/__init__.py +0 -0
  38. {netket-3.11.2 → netket-3.11.3}/netket/experimental/logging/hdf5_log.py +0 -0
  39. {netket-3.11.2 → netket-3.11.3}/netket/experimental/models/__init__.py +0 -0
  40. {netket-3.11.2 → netket-3.11.3}/netket/experimental/models/fast_rnn.py +0 -0
  41. {netket-3.11.2 → netket-3.11.3}/netket/experimental/models/rnn.py +0 -0
  42. {netket-3.11.2 → netket-3.11.3}/netket/experimental/nn/__init__.py +0 -0
  43. {netket-3.11.2 → netket-3.11.3}/netket/experimental/nn/rnn/__init__.py +0 -0
  44. {netket-3.11.2 → netket-3.11.3}/netket/experimental/nn/rnn/cells.py +0 -0
  45. {netket-3.11.2 → netket-3.11.3}/netket/experimental/nn/rnn/layers.py +0 -0
  46. {netket-3.11.2 → netket-3.11.3}/netket/experimental/nn/rnn/layers_fast.py +0 -0
  47. {netket-3.11.2 → netket-3.11.3}/netket/experimental/nn/rnn/ordering.py +0 -0
  48. {netket-3.11.2 → netket-3.11.3}/netket/experimental/observable/__init__.py +0 -0
  49. {netket-3.11.2 → netket-3.11.3}/netket/experimental/observable/renyi2/S2_operator.py +0 -0
  50. {netket-3.11.2 → netket-3.11.3}/netket/experimental/observable/renyi2/__init__.py +0 -0
  51. {netket-3.11.2 → netket-3.11.3}/netket/experimental/observable/renyi2/expect.py +0 -0
  52. {netket-3.11.2 → netket-3.11.3}/netket/experimental/operator/__init__.py +0 -0
  53. {netket-3.11.2 → netket-3.11.3}/netket/experimental/operator/_fermion_operator_2nd_jax.py +0 -0
  54. {netket-3.11.2 → netket-3.11.3}/netket/experimental/operator/_fermion_operator_2nd_numba.py +0 -0
  55. {netket-3.11.2 → netket-3.11.3}/netket/experimental/operator/fermion.py +0 -0
  56. {netket-3.11.2 → netket-3.11.3}/netket/experimental/operator/pyscf.py +0 -0
  57. {netket-3.11.2 → netket-3.11.3}/netket/experimental/qsr/__init__.py +0 -0
  58. {netket-3.11.2 → netket-3.11.3}/netket/experimental/qsr/dataset.py +0 -0
  59. {netket-3.11.2 → netket-3.11.3}/netket/experimental/qsr/driver.py +0 -0
  60. {netket-3.11.2 → netket-3.11.3}/netket/experimental/qsr/logic_helpers.py +0 -0
  61. {netket-3.11.2 → netket-3.11.3}/netket/experimental/sampler/__init__.py +0 -0
  62. {netket-3.11.2 → netket-3.11.3}/netket/experimental/sampler/metropolis.py +0 -0
  63. {netket-3.11.2 → netket-3.11.3}/netket/experimental/sampler/metropolis_pmap.py +0 -0
  64. {netket-3.11.2 → netket-3.11.3}/netket/experimental/sampler/metropolis_pt.py +0 -0
  65. {netket-3.11.2 → netket-3.11.3}/netket/experimental/sampler/rules/__init__.py +0 -0
  66. {netket-3.11.2 → netket-3.11.3}/netket/experimental/sampler/rules/fermion_2nd.py +0 -0
  67. {netket-3.11.2 → netket-3.11.3}/netket/experimental/vqs/__init__.py +0 -0
  68. {netket-3.11.2 → netket-3.11.3}/netket/experimental/vqs/io.py +0 -0
  69. {netket-3.11.2 → netket-3.11.3}/netket/graph/__init__.py +0 -0
  70. {netket-3.11.2 → netket-3.11.3}/netket/graph/_lattice_edge_logic.py +0 -0
  71. {netket-3.11.2 → netket-3.11.3}/netket/graph/abstract_graph.py +0 -0
  72. {netket-3.11.2 → netket-3.11.3}/netket/graph/common_lattices.py +0 -0
  73. {netket-3.11.2 → netket-3.11.3}/netket/graph/graph.py +0 -0
  74. {netket-3.11.2 → netket-3.11.3}/netket/graph/lattice.py +0 -0
  75. {netket-3.11.2 → netket-3.11.3}/netket/graph/space_group.py +0 -0
  76. {netket-3.11.2 → netket-3.11.3}/netket/hilbert/__init__.py +0 -0
  77. {netket-3.11.2 → netket-3.11.3}/netket/hilbert/abstract_hilbert.py +0 -0
  78. {netket-3.11.2 → netket-3.11.3}/netket/hilbert/continuous_hilbert.py +0 -0
  79. {netket-3.11.2 → netket-3.11.3}/netket/hilbert/custom_hilbert.py +0 -0
  80. {netket-3.11.2 → netket-3.11.3}/netket/hilbert/discrete_hilbert.py +0 -0
  81. {netket-3.11.2 → netket-3.11.3}/netket/hilbert/doubled_hilbert.py +0 -0
  82. {netket-3.11.2 → netket-3.11.3}/netket/hilbert/fock.py +0 -0
  83. {netket-3.11.2 → netket-3.11.3}/netket/hilbert/homogeneous.py +0 -0
  84. {netket-3.11.2 → netket-3.11.3}/netket/hilbert/index/__init__.py +0 -0
  85. {netket-3.11.2 → netket-3.11.3}/netket/hilbert/index/base.py +0 -0
  86. {netket-3.11.2 → netket-3.11.3}/netket/hilbert/index/constrained.py +0 -0
  87. {netket-3.11.2 → netket-3.11.3}/netket/hilbert/index/unconstrained.py +0 -0
  88. {netket-3.11.2 → netket-3.11.3}/netket/hilbert/particle.py +0 -0
  89. {netket-3.11.2 → netket-3.11.3}/netket/hilbert/qubit.py +0 -0
  90. {netket-3.11.2 → netket-3.11.3}/netket/hilbert/random/__init__.py +0 -0
  91. {netket-3.11.2 → netket-3.11.3}/netket/hilbert/random/base.py +0 -0
  92. {netket-3.11.2 → netket-3.11.3}/netket/hilbert/random/custom.py +0 -0
  93. {netket-3.11.2 → netket-3.11.3}/netket/hilbert/random/doubled.py +0 -0
  94. {netket-3.11.2 → netket-3.11.3}/netket/hilbert/random/fock.py +0 -0
  95. {netket-3.11.2 → netket-3.11.3}/netket/hilbert/random/particle.py +0 -0
  96. {netket-3.11.2 → netket-3.11.3}/netket/hilbert/random/qubit.py +0 -0
  97. {netket-3.11.2 → netket-3.11.3}/netket/hilbert/random/spin.py +0 -0
  98. {netket-3.11.2 → netket-3.11.3}/netket/hilbert/random/tensor_hilbert.py +0 -0
  99. {netket-3.11.2 → netket-3.11.3}/netket/hilbert/spin.py +0 -0
  100. {netket-3.11.2 → netket-3.11.3}/netket/hilbert/tensor_hilbert.py +0 -0
  101. {netket-3.11.2 → netket-3.11.3}/netket/hilbert/tensor_hilbert_discrete.py +0 -0
  102. {netket-3.11.2 → netket-3.11.3}/netket/jax/__init__.py +0 -0
  103. {netket-3.11.2 → netket-3.11.3}/netket/jax/_chunk_utils.py +0 -0
  104. {netket-3.11.2 → netket-3.11.3}/netket/jax/_expect.py +0 -0
  105. {netket-3.11.2 → netket-3.11.3}/netket/jax/_grad.py +0 -0
  106. {netket-3.11.2 → netket-3.11.3}/netket/jax/_jacobian/__init__.py +0 -0
  107. {netket-3.11.2 → netket-3.11.3}/netket/jax/_jacobian/default_mode.py +0 -0
  108. {netket-3.11.2 → netket-3.11.3}/netket/jax/_jacobian/jacobian_dense.py +0 -0
  109. {netket-3.11.2 → netket-3.11.3}/netket/jax/_jacobian/jacobian_pytree.py +0 -0
  110. {netket-3.11.2 → netket-3.11.3}/netket/jax/_jacobian/logic.py +0 -0
  111. {netket-3.11.2 → netket-3.11.3}/netket/jax/_math.py +0 -0
  112. {netket-3.11.2 → netket-3.11.3}/netket/jax/_scanmap.py +0 -0
  113. {netket-3.11.2 → netket-3.11.3}/netket/jax/_utils_dtype.py +0 -0
  114. {netket-3.11.2 → netket-3.11.3}/netket/jax/_utils_random.py +0 -0
  115. {netket-3.11.2 → netket-3.11.3}/netket/jax/_utils_tree.py +0 -0
  116. {netket-3.11.2 → netket-3.11.3}/netket/jax/_vjp.py +0 -0
  117. {netket-3.11.2 → netket-3.11.3}/netket/jax/_vjp_chunked.py +0 -0
  118. {netket-3.11.2 → netket-3.11.3}/netket/jax/_vmap_chunked.py +0 -0
  119. {netket-3.11.2 → netket-3.11.3}/netket/jax/sharding.py +0 -0
  120. {netket-3.11.2 → netket-3.11.3}/netket/logging/__init__.py +0 -0
  121. {netket-3.11.2 → netket-3.11.3}/netket/logging/base.py +0 -0
  122. {netket-3.11.2 → netket-3.11.3}/netket/logging/json_log.py +0 -0
  123. {netket-3.11.2 → netket-3.11.3}/netket/logging/runtime_log.py +0 -0
  124. {netket-3.11.2 → netket-3.11.3}/netket/logging/state_log.py +0 -0
  125. {netket-3.11.2 → netket-3.11.3}/netket/logging/tensorboard.py +0 -0
  126. {netket-3.11.2 → netket-3.11.3}/netket/models/README.md +0 -0
  127. {netket-3.11.2 → netket-3.11.3}/netket/models/__init__.py +0 -0
  128. {netket-3.11.2 → netket-3.11.3}/netket/models/autoreg.py +0 -0
  129. {netket-3.11.2 → netket-3.11.3}/netket/models/deepset.py +0 -0
  130. {netket-3.11.2 → netket-3.11.3}/netket/models/equivariant.py +0 -0
  131. {netket-3.11.2 → netket-3.11.3}/netket/models/fast_autoreg.py +0 -0
  132. {netket-3.11.2 → netket-3.11.3}/netket/models/full_space.py +0 -0
  133. {netket-3.11.2 → netket-3.11.3}/netket/models/gaussian.py +0 -0
  134. {netket-3.11.2 → netket-3.11.3}/netket/models/jastrow.py +0 -0
  135. {netket-3.11.2 → netket-3.11.3}/netket/models/mlp.py +0 -0
  136. {netket-3.11.2 → netket-3.11.3}/netket/models/mps.py +0 -0
  137. {netket-3.11.2 → netket-3.11.3}/netket/models/ndm.py +0 -0
  138. {netket-3.11.2 → netket-3.11.3}/netket/models/rbm.py +0 -0
  139. {netket-3.11.2 → netket-3.11.3}/netket/models/slater.py +0 -0
  140. {netket-3.11.2 → netket-3.11.3}/netket/models/utils.py +0 -0
  141. {netket-3.11.2 → netket-3.11.3}/netket/nn/__init__.py +0 -0
  142. {netket-3.11.2 → netket-3.11.3}/netket/nn/activation.py +0 -0
  143. {netket-3.11.2 → netket-3.11.3}/netket/nn/blocks/__init__.py +0 -0
  144. {netket-3.11.2 → netket-3.11.3}/netket/nn/blocks/deepset.py +0 -0
  145. {netket-3.11.2 → netket-3.11.3}/netket/nn/blocks/mlp.py +0 -0
  146. {netket-3.11.2 → netket-3.11.3}/netket/nn/blocks/symmetry_sum.py +0 -0
  147. {netket-3.11.2 → netket-3.11.3}/netket/nn/deprecation.py +0 -0
  148. {netket-3.11.2 → netket-3.11.3}/netket/nn/fast_masked_linear.py +0 -0
  149. {netket-3.11.2 → netket-3.11.3}/netket/nn/initializers.py +0 -0
  150. {netket-3.11.2 → netket-3.11.3}/netket/nn/masked_linear.py +0 -0
  151. {netket-3.11.2 → netket-3.11.3}/netket/nn/symmetric_linear.py +0 -0
  152. {netket-3.11.2 → netket-3.11.3}/netket/nn/utils.py +0 -0
  153. {netket-3.11.2 → netket-3.11.3}/netket/operator/__init__.py +0 -0
  154. {netket-3.11.2 → netket-3.11.3}/netket/operator/_abstract_observable.py +0 -0
  155. {netket-3.11.2 → netket-3.11.3}/netket/operator/_abstract_operator.py +0 -0
  156. {netket-3.11.2 → netket-3.11.3}/netket/operator/_abstract_super_operator.py +0 -0
  157. {netket-3.11.2 → netket-3.11.3}/netket/operator/_bose_hubbard.py +0 -0
  158. {netket-3.11.2 → netket-3.11.3}/netket/operator/_continuous_operator.py +0 -0
  159. {netket-3.11.2 → netket-3.11.3}/netket/operator/_discrete_operator.py +0 -0
  160. {netket-3.11.2 → netket-3.11.3}/netket/operator/_graph_operator.py +0 -0
  161. {netket-3.11.2 → netket-3.11.3}/netket/operator/_hamiltonian.py +0 -0
  162. {netket-3.11.2 → netket-3.11.3}/netket/operator/_heisenberg.py +0 -0
  163. {netket-3.11.2 → netket-3.11.3}/netket/operator/_ising/__init__.py +0 -0
  164. {netket-3.11.2 → netket-3.11.3}/netket/operator/_ising/base.py +0 -0
  165. {netket-3.11.2 → netket-3.11.3}/netket/operator/_ising/jax.py +0 -0
  166. {netket-3.11.2 → netket-3.11.3}/netket/operator/_ising/numba.py +0 -0
  167. {netket-3.11.2 → netket-3.11.3}/netket/operator/_kinetic.py +0 -0
  168. {netket-3.11.2 → netket-3.11.3}/netket/operator/_lazy.py +0 -0
  169. {netket-3.11.2 → netket-3.11.3}/netket/operator/_local_liouvillian.py +0 -0
  170. {netket-3.11.2 → netket-3.11.3}/netket/operator/_local_operator/__init__.py +0 -0
  171. {netket-3.11.2 → netket-3.11.3}/netket/operator/_local_operator/base.py +0 -0
  172. {netket-3.11.2 → netket-3.11.3}/netket/operator/_local_operator/compile_helpers.py +0 -0
  173. {netket-3.11.2 → netket-3.11.3}/netket/operator/_local_operator/convert.py +0 -0
  174. {netket-3.11.2 → netket-3.11.3}/netket/operator/_local_operator/helpers.py +0 -0
  175. {netket-3.11.2 → netket-3.11.3}/netket/operator/_local_operator/jax.py +0 -0
  176. {netket-3.11.2 → netket-3.11.3}/netket/operator/_local_operator/numba.py +0 -0
  177. {netket-3.11.2 → netket-3.11.3}/netket/operator/_pauli_strings/__init__.py +0 -0
  178. {netket-3.11.2 → netket-3.11.3}/netket/operator/_pauli_strings/base.py +0 -0
  179. {netket-3.11.2 → netket-3.11.3}/netket/operator/_pauli_strings/jax.py +0 -0
  180. {netket-3.11.2 → netket-3.11.3}/netket/operator/_pauli_strings/numba.py +0 -0
  181. {netket-3.11.2 → netket-3.11.3}/netket/operator/_potential.py +0 -0
  182. {netket-3.11.2 → netket-3.11.3}/netket/operator/_sumoperators.py +0 -0
  183. {netket-3.11.2 → netket-3.11.3}/netket/operator/boson.py +0 -0
  184. {netket-3.11.2 → netket-3.11.3}/netket/operator/spin.py +0 -0
  185. {netket-3.11.2 → netket-3.11.3}/netket/optimizer/__init__.py +0 -0
  186. {netket-3.11.2 → netket-3.11.3}/netket/optimizer/linear_operator.py +0 -0
  187. {netket-3.11.2 → netket-3.11.3}/netket/optimizer/preconditioner.py +0 -0
  188. {netket-3.11.2 → netket-3.11.3}/netket/optimizer/qgt/__init__.py +0 -0
  189. {netket-3.11.2 → netket-3.11.3}/netket/optimizer/qgt/common.py +0 -0
  190. {netket-3.11.2 → netket-3.11.3}/netket/optimizer/qgt/default.py +0 -0
  191. {netket-3.11.2 → netket-3.11.3}/netket/optimizer/qgt/qgt_jacobian_common.py +0 -0
  192. {netket-3.11.2 → netket-3.11.3}/netket/optimizer/qgt/qgt_jacobian_dense.py +0 -0
  193. {netket-3.11.2 → netket-3.11.3}/netket/optimizer/qgt/qgt_jacobian_pytree.py +0 -0
  194. {netket-3.11.2 → netket-3.11.3}/netket/optimizer/qgt/qgt_jacobian_pytree_logic.py +0 -0
  195. {netket-3.11.2 → netket-3.11.3}/netket/optimizer/qgt/qgt_onthefly.py +0 -0
  196. {netket-3.11.2 → netket-3.11.3}/netket/optimizer/qgt/qgt_onthefly_logic.py +0 -0
  197. {netket-3.11.2 → netket-3.11.3}/netket/optimizer/solver/__init__.py +0 -0
  198. {netket-3.11.2 → netket-3.11.3}/netket/optimizer/solver/solvers.py +0 -0
  199. {netket-3.11.2 → netket-3.11.3}/netket/optimizer/sr.py +0 -0
  200. {netket-3.11.2 → netket-3.11.3}/netket/sampler/__init__.py +0 -0
  201. {netket-3.11.2 → netket-3.11.3}/netket/sampler/autoreg.py +0 -0
  202. {netket-3.11.2 → netket-3.11.3}/netket/sampler/base.py +0 -0
  203. {netket-3.11.2 → netket-3.11.3}/netket/sampler/exact.py +0 -0
  204. {netket-3.11.2 → netket-3.11.3}/netket/sampler/metropolis.py +0 -0
  205. {netket-3.11.2 → netket-3.11.3}/netket/sampler/metropolis_numpy.py +0 -0
  206. {netket-3.11.2 → netket-3.11.3}/netket/sampler/rules/__init__.py +0 -0
  207. {netket-3.11.2 → netket-3.11.3}/netket/sampler/rules/base.py +0 -0
  208. {netket-3.11.2 → netket-3.11.3}/netket/sampler/rules/continuous_gaussian.py +0 -0
  209. {netket-3.11.2 → netket-3.11.3}/netket/sampler/rules/custom_numpy.py +0 -0
  210. {netket-3.11.2 → netket-3.11.3}/netket/sampler/rules/exchange.py +0 -0
  211. {netket-3.11.2 → netket-3.11.3}/netket/sampler/rules/fixed.py +0 -0
  212. {netket-3.11.2 → netket-3.11.3}/netket/sampler/rules/hamiltonian.py +0 -0
  213. {netket-3.11.2 → netket-3.11.3}/netket/sampler/rules/hamiltonian_numpy.py +0 -0
  214. {netket-3.11.2 → netket-3.11.3}/netket/sampler/rules/langevin.py +0 -0
  215. {netket-3.11.2 → netket-3.11.3}/netket/sampler/rules/local.py +0 -0
  216. {netket-3.11.2 → netket-3.11.3}/netket/sampler/rules/local_numpy.py +0 -0
  217. {netket-3.11.2 → netket-3.11.3}/netket/sampler/rules/multiple.py +0 -0
  218. {netket-3.11.2 → netket-3.11.3}/netket/sampler/rules/tensor.py +0 -0
  219. {netket-3.11.2 → netket-3.11.3}/netket/stats/__init__.py +0 -0
  220. {netket-3.11.2 → netket-3.11.3}/netket/stats/_autocorr.py +0 -0
  221. {netket-3.11.2 → netket-3.11.3}/netket/stats/mc_stats.py +0 -0
  222. {netket-3.11.2 → netket-3.11.3}/netket/stats/mc_stats_old.py +0 -0
  223. {netket-3.11.2 → netket-3.11.3}/netket/stats/mpi_stats.py +0 -0
  224. {netket-3.11.2 → netket-3.11.3}/netket/tools/__init__.py +0 -0
  225. {netket-3.11.2 → netket-3.11.3}/netket/tools/_common.py +0 -0
  226. {netket-3.11.2 → netket-3.11.3}/netket/tools/_cpu_info.py +0 -0
  227. {netket-3.11.2 → netket-3.11.3}/netket/tools/_mpi_info.py +0 -0
  228. {netket-3.11.2 → netket-3.11.3}/netket/tools/check_mpi.py +0 -0
  229. {netket-3.11.2 → netket-3.11.3}/netket/tools/info.py +0 -0
  230. {netket-3.11.2 → netket-3.11.3}/netket/utils/__init__.py +0 -0
  231. {netket-3.11.2 → netket-3.11.3}/netket/utils/_dependencies_check.py +0 -0
  232. {netket-3.11.2 → netket-3.11.3}/netket/utils/array.py +0 -0
  233. {netket-3.11.2 → netket-3.11.3}/netket/utils/config_flags.py +0 -0
  234. {netket-3.11.2 → netket-3.11.3}/netket/utils/deprecation.py +0 -0
  235. {netket-3.11.2 → netket-3.11.3}/netket/utils/dispatch.py +0 -0
  236. {netket-3.11.2 → netket-3.11.3}/netket/utils/float.py +0 -0
  237. {netket-3.11.2 → netket-3.11.3}/netket/utils/group/__init__.py +0 -0
  238. {netket-3.11.2 → netket-3.11.3}/netket/utils/group/_group.py +0 -0
  239. {netket-3.11.2 → netket-3.11.3}/netket/utils/group/_permutation_group.py +0 -0
  240. {netket-3.11.2 → netket-3.11.3}/netket/utils/group/_point_group.py +0 -0
  241. {netket-3.11.2 → netket-3.11.3}/netket/utils/group/_semigroup.py +0 -0
  242. {netket-3.11.2 → netket-3.11.3}/netket/utils/group/axial.py +0 -0
  243. {netket-3.11.2 → netket-3.11.3}/netket/utils/group/cubic.py +0 -0
  244. {netket-3.11.2 → netket-3.11.3}/netket/utils/group/icosa.py +0 -0
  245. {netket-3.11.2 → netket-3.11.3}/netket/utils/group/planar.py +0 -0
  246. {netket-3.11.2 → netket-3.11.3}/netket/utils/history.py +0 -0
  247. {netket-3.11.2 → netket-3.11.3}/netket/utils/holomorphic.py +0 -0
  248. {netket-3.11.2 → netket-3.11.3}/netket/utils/jax.py +0 -0
  249. {netket-3.11.2 → netket-3.11.3}/netket/utils/model_frameworks/__init__.py +0 -0
  250. {netket-3.11.2 → netket-3.11.3}/netket/utils/model_frameworks/base.py +0 -0
  251. {netket-3.11.2 → netket-3.11.3}/netket/utils/model_frameworks/flax.py +0 -0
  252. {netket-3.11.2 → netket-3.11.3}/netket/utils/model_frameworks/haiku.py +0 -0
  253. {netket-3.11.2 → netket-3.11.3}/netket/utils/model_frameworks/jax.py +0 -0
  254. {netket-3.11.2 → netket-3.11.3}/netket/utils/moduletools.py +0 -0
  255. {netket-3.11.2 → netket-3.11.3}/netket/utils/mpi/__init__.py +0 -0
  256. {netket-3.11.2 → netket-3.11.3}/netket/utils/mpi/mpi.py +0 -0
  257. {netket-3.11.2 → netket-3.11.3}/netket/utils/mpi/primitives.py +0 -0
  258. {netket-3.11.2 → netket-3.11.3}/netket/utils/numbers.py +0 -0
  259. {netket-3.11.2 → netket-3.11.3}/netket/utils/optional_deps.py +0 -0
  260. {netket-3.11.2 → netket-3.11.3}/netket/utils/partial.py +0 -0
  261. {netket-3.11.2 → netket-3.11.3}/netket/utils/plum/__init__.py +0 -0
  262. {netket-3.11.2 → netket-3.11.3}/netket/utils/plum/_version.py +0 -0
  263. {netket-3.11.2 → netket-3.11.3}/netket/utils/plum/alias.py +0 -0
  264. {netket-3.11.2 → netket-3.11.3}/netket/utils/plum/autoreload.py +0 -0
  265. {netket-3.11.2 → netket-3.11.3}/netket/utils/plum/dispatcher.py +0 -0
  266. {netket-3.11.2 → netket-3.11.3}/netket/utils/plum/function.py +0 -0
  267. {netket-3.11.2 → netket-3.11.3}/netket/utils/plum/method.py +0 -0
  268. {netket-3.11.2 → netket-3.11.3}/netket/utils/plum/overload.py +0 -0
  269. {netket-3.11.2 → netket-3.11.3}/netket/utils/plum/parametric.py +0 -0
  270. {netket-3.11.2 → netket-3.11.3}/netket/utils/plum/promotion.py +0 -0
  271. {netket-3.11.2 → netket-3.11.3}/netket/utils/plum/py.typed +0 -0
  272. {netket-3.11.2 → netket-3.11.3}/netket/utils/plum/repr.py +0 -0
  273. {netket-3.11.2 → netket-3.11.3}/netket/utils/plum/resolver.py +0 -0
  274. {netket-3.11.2 → netket-3.11.3}/netket/utils/plum/signature.py +0 -0
  275. {netket-3.11.2 → netket-3.11.3}/netket/utils/plum/type.py +0 -0
  276. {netket-3.11.2 → netket-3.11.3}/netket/utils/plum/util.py +0 -0
  277. {netket-3.11.2 → netket-3.11.3}/netket/utils/seed.py +0 -0
  278. {netket-3.11.2 → netket-3.11.3}/netket/utils/static_number.py +0 -0
  279. {netket-3.11.2 → netket-3.11.3}/netket/utils/struct/__init__.py +0 -0
  280. {netket-3.11.2 → netket-3.11.3}/netket/utils/struct/dataclass.py +0 -0
  281. {netket-3.11.2 → netket-3.11.3}/netket/utils/struct/fields.py +0 -0
  282. {netket-3.11.2 → netket-3.11.3}/netket/utils/struct/utils.py +0 -0
  283. {netket-3.11.2 → netket-3.11.3}/netket/utils/summation.py +0 -0
  284. {netket-3.11.2 → netket-3.11.3}/netket/utils/types.py +0 -0
  285. {netket-3.11.2 → netket-3.11.3}/netket/utils/version_check.py +0 -0
  286. {netket-3.11.2 → netket-3.11.3}/netket/vqs/__init__.py +0 -0
  287. {netket-3.11.2 → netket-3.11.3}/netket/vqs/base.py +0 -0
  288. {netket-3.11.2 → netket-3.11.3}/netket/vqs/deprecated.py +0 -0
  289. {netket-3.11.2 → netket-3.11.3}/netket/vqs/experimental.py +0 -0
  290. {netket-3.11.2 → netket-3.11.3}/netket/vqs/full_summ/__init__.py +0 -0
  291. {netket-3.11.2 → netket-3.11.3}/netket/vqs/full_summ/expect.py +0 -0
  292. {netket-3.11.2 → netket-3.11.3}/netket/vqs/full_summ/state.py +0 -0
  293. {netket-3.11.2 → netket-3.11.3}/netket/vqs/mc/__init__.py +0 -0
  294. {netket-3.11.2 → netket-3.11.3}/netket/vqs/mc/common.py +0 -0
  295. {netket-3.11.2 → netket-3.11.3}/netket/vqs/mc/kernels.py +0 -0
  296. {netket-3.11.2 → netket-3.11.3}/netket/vqs/mc/mc_mixed_state/__init__.py +0 -0
  297. {netket-3.11.2 → netket-3.11.3}/netket/vqs/mc/mc_mixed_state/expect.py +0 -0
  298. {netket-3.11.2 → netket-3.11.3}/netket/vqs/mc/mc_mixed_state/expect_chunked.py +0 -0
  299. {netket-3.11.2 → netket-3.11.3}/netket/vqs/mc/mc_mixed_state/state.py +0 -0
  300. {netket-3.11.2 → netket-3.11.3}/netket/vqs/mc/mc_state/__init__.py +0 -0
  301. {netket-3.11.2 → netket-3.11.3}/netket/vqs/mc/mc_state/expect.py +0 -0
  302. {netket-3.11.2 → netket-3.11.3}/netket/vqs/mc/mc_state/expect_chunked.py +0 -0
  303. {netket-3.11.2 → netket-3.11.3}/netket/vqs/mc/mc_state/expect_forces.py +0 -0
  304. {netket-3.11.2 → netket-3.11.3}/netket/vqs/mc/mc_state/expect_forces_chunked.py +0 -0
  305. {netket-3.11.2 → netket-3.11.3}/netket/vqs/mc/mc_state/expect_grad.py +0 -0
  306. {netket-3.11.2 → netket-3.11.3}/netket/vqs/mc/mc_state/expect_grad_chunked.py +0 -0
  307. {netket-3.11.2 → netket-3.11.3}/netket/vqs/mc/mc_state/state.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.3
2
2
  Name: NetKet
3
- Version: 3.11.2
3
+ Version: 3.11.3
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/#
@@ -26,7 +26,7 @@ Requires-Dist: jaxlib<0.5,>=0.4.3
26
26
  Requires-Dist: numba4jax<0.1,>=0.0.10.post1
27
27
  Requires-Dist: numba<0.60,>=0.52
28
28
  Requires-Dist: numpy~=1.20
29
- Requires-Dist: optax<0.2,>=0.1.3
29
+ Requires-Dist: optax<0.3,>=0.1.3
30
30
  Requires-Dist: orjson<4,>=3.4
31
31
  Requires-Dist: rich>=10.0
32
32
  Requires-Dist: scipy<2,>=1.5.3
@@ -44,6 +44,7 @@ Requires-Dist: pytest-cov>=2.10.1; extra == 'dev'
44
44
  Requires-Dist: pytest-json-report>=1.3; extra == 'dev'
45
45
  Requires-Dist: pytest-xdist[psutil]>=2; extra == 'dev'
46
46
  Requires-Dist: pytest>=6; extra == 'dev'
47
+ Requires-Dist: qutip>=5; extra == 'dev'
47
48
  Requires-Dist: ruff==0.1.0; extra == 'dev'
48
49
  Requires-Dist: wheel; extra == 'dev'
49
50
  Provides-Extra: docs
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '3.11.2'
16
- __version_tuple__ = version_tuple = (3, 11, 2)
15
+ __version__ = version = '3.11.3'
16
+ __version_tuple__ = version_tuple = (3, 11, 3)
@@ -16,6 +16,7 @@ import numpy as np
16
16
 
17
17
  from netket.vqs import FullSumState, expect
18
18
  from netket.stats import Stats
19
+ from netket.utils import module_version
19
20
 
20
21
  from .S2_operator import Renyi2EntanglementEntropy
21
22
 
@@ -37,6 +38,11 @@ def Renyi2(vstate: FullSumState, op: Renyi2EntanglementEntropy):
37
38
 
38
39
  rdm = state_qutip.ptrace(np.arange(N)[mask])
39
40
 
41
+ # TODO: when we drop support for qutip older versions, always keep this
42
+ # qutip 5 was released in march 2024
43
+ if module_version("qutip") >= (5, 0, 0):
44
+ rdm = rdm.data.to_array()
45
+
40
46
  n = 2
41
47
  out = np.log2(np.trace(np.linalg.matrix_power(rdm, n))) / (1 - n)
42
48
  out = np.absolute(out.real)
@@ -19,9 +19,9 @@ import numpy as np
19
19
  from numbers import Number
20
20
 
21
21
  from netket.utils.types import DType
22
- from netket.operator._discrete_operator import DiscreteOperator
22
+ from netket.operator import DiscreteOperator, Transpose
23
23
  from netket.operator._pauli_strings.base import _count_of_locations
24
- from netket.hilbert.abstract_hilbert import AbstractHilbert
24
+ from netket.hilbert import AbstractHilbert
25
25
  from netket.utils.numbers import is_scalar, dtype as _dtype
26
26
  from netket.utils.optional_deps import import_optional_dependency
27
27
 
@@ -31,7 +31,7 @@ from ._fermion_operator_2nd_utils import (
31
31
  _convert_terms_to_spin_blocks,
32
32
  _canonicalize_input,
33
33
  _check_hermitian,
34
- _herm_conj,
34
+ transpose_term,
35
35
  _remove_dict_zeros,
36
36
  _verify_input,
37
37
  OperatorDict,
@@ -267,10 +267,18 @@ class FermionOperator2ndBase(DiscreteOperator):
267
267
  def operators(self) -> OperatorDict:
268
268
  """Returns a dictionary with (term, weight) key-value pairs, with terms in tuple notation.
269
269
 
270
- The constant diagonal shift of the operator is associated with a term represented as an empty tuple.
270
+ The constant diagonal shift of the operator is associated with a term represented as an
271
+ empty tuple.
271
272
  """
272
273
  return self._operators
273
274
 
275
+ @property
276
+ def cutoff(self) -> float:
277
+ """Threshold for the weights, if the absolute value of a weight is below the
278
+ cutoff, it's discarded.
279
+ """
280
+ return self._cutoff
281
+
274
282
  def copy(self, *, dtype: Optional[DType] = None, cutoff=None):
275
283
  """
276
284
  Creates a deep copy of this operator, potentially changing the dtype of the
@@ -458,23 +466,35 @@ class FermionOperator2ndBase(DiscreteOperator):
458
466
  op = self.copy(dtype=dtype)
459
467
  return op.__imul__(scalar)
460
468
 
469
+ def transpose(self, *, concrete=False):
470
+ r"""Returns the transpose of this operator.
471
+
472
+ For real operators, this is equivalent to complex conjugation.
473
+ This implementation always returns the concrete version of the operator.
474
+ """
475
+ if concrete:
476
+ new = type(self)(self.hilbert, dtype=self.dtype, cutoff=self._cutoff)
477
+ # operators (c,c†) are real already. Only conjugate coefficients if needed.
478
+ new._operators = {transpose_term(k): v for k, v in self._operators.items()}
479
+ return new
480
+ else:
481
+ return Transpose(self)
482
+
461
483
  def conjugate(self, *, concrete=False):
462
- r"""Returns the complex conjugate of this operator."""
484
+ r"""Returns the complex conjugate of this operator.
463
485
 
464
- terms = list(self._operators.keys())
465
- weights = list(self._operators.values())
466
- terms, weights = _herm_conj(terms, weights) # changes also the terms
486
+ This implementation always returns the concrete version of the operator.
487
+ """
488
+ del concrete
467
489
 
468
- cls = type(self)
469
- new = cls(
470
- self.hilbert,
471
- dtype=self.dtype,
472
- )
473
- new._operators, _ = _canonicalize_input(
474
- terms, weights, self.dtype, self._cutoff
475
- )
476
- new._cutoff = self._cutoff
477
- return new
490
+ # if operator is real dtype, then just return a copy
491
+ if not np.issubdtype(self.dtype, np.complex_):
492
+ return self.copy()
493
+ else:
494
+ new = type(self)(self.hilbert, dtype=self.dtype, cutoff=self._cutoff)
495
+ # operators (c,c†) are real already. Only conjugate coefficients if needed.
496
+ new._operators = {k: np.conjugate(v) for k, v in self._operators.items()}
497
+ return new
478
498
 
479
499
  def to_normal_order(self):
480
500
  """Reoder the operators to normal order.
@@ -224,13 +224,29 @@ def _herm_conj(
224
224
  terms: OperatorTermsList, weights: OperatorWeightsList = 1
225
225
  ) -> tuple[OperatorTermsList, OperatorWeightsList]:
226
226
  """Returns the hermitian conjugate of the terms and weights."""
227
+ conj_term = transpose_terms(terms)
228
+ conj_weight = [np.conjugate(weight) for weight in weights]
229
+ return conj_term, conj_weight
230
+
231
+
232
+ def transpose_terms(terms: OperatorTermsList) -> OperatorTermsList:
233
+ """Returns the transpose of the terms (creation/destruction operators).
234
+ The transpose is equivalent to the hermitian transpose because they are
235
+ real.
236
+ """
227
237
  conj_term = []
228
- conj_weight = []
229
- # loop over all terms and weights and get the hermitian conjugate
230
- for term, weight in zip(terms, weights):
238
+ for term in terms:
231
239
  conj_term.append([(op, 1 - int(dag)) for (op, dag) in reversed(term)])
232
- conj_weight.append(np.conjugate(weight))
233
- return conj_term, conj_weight
240
+ return conj_term
241
+
242
+
243
+ def transpose_term(term: OperatorTerm) -> OperatorTerm:
244
+ """Returns the transpose of a single term (creation/destruction operators).
245
+ The transpose is equivalent to the hermitian transpose because they are
246
+ real.
247
+ """
248
+ # equivalent to transpose_terms
249
+ return tuple((op, 1 - int(dag)) for (op, dag) in reversed(term))
234
250
 
235
251
 
236
252
  def _convert_terms_to_spin_blocks(
@@ -15,10 +15,13 @@
15
15
  import abc
16
16
 
17
17
  import numpy as np
18
+ from scipy import sparse
19
+
18
20
  import jax.numpy as jnp
19
21
  from jax.experimental.sparse import JAXSparse, BCOO
20
22
 
21
23
  from netket.operator import AbstractOperator, DiscreteOperator
24
+ from netket.utils.optional_deps import import_optional_dependency
22
25
 
23
26
 
24
27
  class DiscreteJaxOperator(DiscreteOperator):
@@ -220,6 +223,28 @@ class DiscreteJaxOperator(DiscreteOperator):
220
223
  """
221
224
  return self.to_sparse().todense()
222
225
 
226
+ def to_qobj(self): # -> "qutip.Qobj"
227
+ r"""Convert the operator to a qutip's Qobj.
228
+
229
+ Returns:
230
+ A :class:`qutip.Qobj` object.
231
+ """
232
+ qutip = import_optional_dependency("qutip", descr="to_qobj")
233
+
234
+ # QuTiP does not like jax sparse matrices, so we convert to scipy sparse
235
+ # by hand
236
+ sparse_mat_jax = self.to_sparse()
237
+ sparse_mat_scipy = sparse.coo_matrix(
238
+ (
239
+ sparse_mat_jax.data,
240
+ (sparse_mat_jax.indices[:, 0], sparse_mat_jax.indices[:, 1]),
241
+ ),
242
+ shape=sparse_mat_jax.shape,
243
+ )
244
+ return qutip.Qobj(
245
+ sparse_mat_scipy, dims=[list(self.hilbert.shape), list(self.hilbert.shape)]
246
+ )
247
+
223
248
  def __matmul__(self, other):
224
249
  if (
225
250
  isinstance(other, np.ndarray)
@@ -372,17 +372,22 @@ class Pytree(metaclass=PytreeMeta):
372
372
  type as the original object.
373
373
  """
374
374
  if dataclasses.is_dataclass(self):
375
- return dataclasses.replace(self, **kwargs)
375
+ pytree = dataclasses.replace(self, **kwargs)
376
+ else:
377
+ unknown_keys = set(kwargs) - set(vars(self))
378
+ if unknown_keys:
379
+ raise ValueError(
380
+ f"Trying to replace unknown fields {unknown_keys} "
381
+ f"for '{type(self).__name__}'"
382
+ )
376
383
 
377
- unknown_keys = set(kwargs) - set(vars(self))
378
- if unknown_keys:
379
- raise ValueError(
380
- f"Trying to replace unknown fields {unknown_keys} "
381
- f"for '{type(self).__name__}'"
382
- )
384
+ pytree = copy(self)
385
+ pytree.__dict__.update(kwargs)
386
+
387
+ # Reset cached properties
388
+ for fname in pytree._pytree__cachedprop_fields:
389
+ setattr(pytree, fname, Uninitialized)
383
390
 
384
- pytree = copy(self)
385
- pytree.__dict__.update(kwargs)
386
391
  return pytree
387
392
 
388
393
  if not tp.TYPE_CHECKING:
@@ -40,7 +40,7 @@ dependencies = [
40
40
  "jaxlib>=0.4.3, <0.5",
41
41
  "flax>=0.7.1, <0.9",
42
42
  "orjson>=3.4, <4",
43
- "optax>=0.1.3, <0.2",
43
+ "optax>=0.1.3, <0.3",
44
44
  "numba4jax>=0.0.10.post1, <0.1",
45
45
  # vendored plum dependencies.
46
46
  # TODO: Remove once we unvendor plum
@@ -78,6 +78,7 @@ dev = [
78
78
  "pre-commit>=2.7",
79
79
  "black==23.9.1",
80
80
  "ruff==0.1.0",
81
+ "qutip>=5",
81
82
  "wheel",
82
83
  "build",
83
84
  # TODO remove vendoring plum
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes