NetKet 3.22.3__tar.gz → 3.22.4__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.
- {netket-3.22.3 → netket-3.22.4}/.gitignore +1 -0
- {netket-3.22.3 → netket-3.22.4}/PKG-INFO +4 -3
- {netket-3.22.3 → netket-3.22.4}/netket/_src/callbacks/base.py +10 -1
- {netket-3.22.3 → netket-3.22.4}/netket/_src/callbacks/convergence_stopping.py +10 -1
- {netket-3.22.3 → netket-3.22.4}/netket/_src/callbacks/early_stopping.py +10 -1
- {netket-3.22.3 → netket-3.22.4}/netket/_src/callbacks/invalid_loss_stopping.py +10 -1
- {netket-3.22.3 → netket-3.22.4}/netket/_src/callbacks/save_state.py +35 -5
- {netket-3.22.3 → netket-3.22.4}/netket/_src/callbacks/stop_at_time.py +10 -1
- {netket-3.22.3 → netket-3.22.4}/netket/_src/callbacks/timeout.py +35 -2
- {netket-3.22.3 → netket-3.22.4}/netket/_src/driver/abstract_variational_driver.py +9 -1
- {netket-3.22.3 → netket-3.22.4}/netket/_src/driver/vmc_sr.py +7 -5
- {netket-3.22.3 → netket-3.22.4}/netket/_src/logging/mlflow_log.py +19 -1
- {netket-3.22.3 → netket-3.22.4}/netket/_src/logging/tensorboard.py +13 -1
- {netket-3.22.3 → netket-3.22.4}/netket/_src/operator/pyscf_api.py +1 -1
- {netket-3.22.3 → netket-3.22.4}/netket/_src/operator/pyscf_utils.py +1 -1
- {netket-3.22.3 → netket-3.22.4}/netket/_src/symmetry/representation.py +1 -1
- netket-3.22.4/netket/_src/vqs/expect_to_precision.py +218 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_version.py +2 -2
- {netket-3.22.3 → netket-3.22.4}/netket/optimizer/solver/solvers.py +21 -5
- {netket-3.22.3 → netket-3.22.4}/netket/sampler/metropolis_numpy.py +13 -2
- {netket-3.22.3 → netket-3.22.4}/netket/sampler/parallel_tempering.py +8 -2
- {netket-3.22.3 → netket-3.22.4}/netket/tools/djaxrun.py +28 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/config_flags.py +5 -4
- {netket-3.22.3 → netket-3.22.4}/netket/utils/history/history.py +24 -1
- netket-3.22.4/netket/utils/optional_deps.py +77 -0
- {netket-3.22.3 → netket-3.22.4}/netket/vqs/mc/mc_state/expect_chunked.py +8 -3
- {netket-3.22.3 → netket-3.22.4}/netket/vqs/mc/mc_state/state.py +42 -12
- {netket-3.22.3 → netket-3.22.4}/pyproject.toml +2 -2
- netket-3.22.3/netket/_src/vqs/expect_to_precision.py +0 -164
- netket-3.22.3/netket/utils/optional_deps.py +0 -39
- {netket-3.22.3 → netket-3.22.4}/LICENSE +0 -0
- {netket-3.22.3 → netket-3.22.4}/README.md +0 -0
- {netket-3.22.3 → netket-3.22.4}/docs/sphinx_extensions/netket_citations.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/callbacks/auto_chunk_size.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/callbacks/auto_slurm_requeue.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/callbacks/callback_list.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/callbacks/legacy_wrappers.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/callbacks/observables.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/callbacks/progressbar.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/driver/abstract_dynamics_driver.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/driver/abstract_optimization_driver.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/driver/abstract_variational_driver_old.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/driver/infidelity_sr.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/logging/base.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/logging/hdf5_log.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/logging/json_log.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/logging/runtime_log.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/logging/state_log.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/ngd/kwargs.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/ngd/sr.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/ngd/sr_srt_common.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/ngd/srt.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/ngd/srt_onthefly.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/nn/apply_operator/functional.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/nn/apply_operator/linen.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/nn/apply_operator/nnx.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/nn/freeze/api.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/nn/freeze/common.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/nn/freeze/functional.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/nn/freeze/linen.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/nn/freeze/nnx.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/observable/correlator/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/observable/correlator/correlator.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/observable/correlator/expect.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/observable/infidelity/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/observable/infidelity/exact.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/observable/infidelity/expect.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/observable/infidelity/infidelity_operator.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/observable/renyi2/S2_operator.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/observable/renyi2/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/observable/renyi2/exact.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/observable/renyi2/expect.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/observable/variance/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/observable/variance/exact.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/observable/variance/expect.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/observable/variance/variance_operator.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/observable/vscore.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/operator/normal_order_utils.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/operator/particle_number_conserving_fermionic/conversion.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/operator/particle_number_conserving_fermionic/fermihubbard.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/operator/particle_number_conserving_fermionic/kernels.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/operator/particle_number_conserving_fermionic/operator_data.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/operator/particle_number_conserving_fermionic/operators.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/operator/permutation/base.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/operator/permutation/construct.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/operator/permutation/fermion.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/operator/permutation/spin.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/operator/permutation/trace_utils.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/operator/spin_flip.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/solvers/nan_fallback.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/stats/local_estimators.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/stats/online_stats/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/stats/online_stats/accumulator.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/stats/online_stats/accumulator_batch.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/stats/online_stats/kernels.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/stats/online_stats/operations.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/symmetry/canonical_representation.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/symmetry/labeled_representation.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/symmetry/labeled_representation_coset_filter.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/symmetry/representation_construction.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/symmetry/spin_flip_representation.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/symmetry/translation_coset_filter.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/symmetry/translation_representation.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/vqs/check_mc_convergence.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/vqs/fermion_mf/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/vqs/fermion_mf/expectation.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/vqs/fermion_mf/qgt.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/vqs/fermion_mf/state.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/vqs/freeze_vstate.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/vqs/plot_mc_convergence.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/_src/vqs/transformed_vstate.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/callbacks.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/driver/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/driver/steady_state.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/driver/vmc.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/errors.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/exact.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/driver/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/driver/tdvp.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/driver/tdvp_common.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/driver/tdvp_schmitt.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/dynamics/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/dynamics/_integrator.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/dynamics/_integrator_params.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/dynamics/_integrator_state.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/dynamics/_rk/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/dynamics/_rk/_solver.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/dynamics/_rk/_tableau.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/dynamics/_solver.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/dynamics/_utils.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/geometry/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/geometry/cell.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/hilbert/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/hilbert/continuous_hilbert.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/hilbert/particle.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/hilbert/random/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/hilbert/random/particle.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/logging/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/models/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/models/fast_rnn.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/models/rnn.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/nn/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/nn/rnn/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/nn/rnn/cells.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/nn/rnn/layers.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/nn/rnn/layers_fast.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/nn/rnn/ordering.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/observable/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/operator/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/operator/pyscf.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/qsr/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/qsr/dataset.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/qsr/driver.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/qsr/logic_helpers.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/vqs/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/experimental/vqs/io.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/graph/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/graph/_lattice_draw.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/graph/_lattice_edge_logic.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/graph/abstract_graph.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/graph/common_lattices.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/graph/graph.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/graph/lattice.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/graph/space_group.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/hilbert/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/hilbert/abstract_hilbert.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/hilbert/constraint/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/hilbert/constraint/base.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/hilbert/constraint/multiple.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/hilbert/constraint/sum.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/hilbert/constraint/sum_partition.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/hilbert/discrete_hilbert.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/hilbert/doubled_hilbert.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/hilbert/fock.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/hilbert/homogeneous.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/hilbert/index/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/hilbert/index/base.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/hilbert/index/constrained_generic.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/hilbert/index/constrained_sum.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/hilbert/index/constrained_sum_partitions.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/hilbert/index/unconstrained.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/hilbert/index/uniform_tensor.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/hilbert/qubit.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/hilbert/random/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/hilbert/random/base.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/hilbert/random/doubled.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/hilbert/random/fock.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/hilbert/random/homogeneous.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/hilbert/random/qubit.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/hilbert/random/tensor_hilbert.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/hilbert/spin.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/hilbert/spin_orbital_fermions.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/hilbert/tensor_hilbert.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/hilbert/tensor_hilbert_discrete.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/jax/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/jax/_chunk_utils.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/jax/_compat.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/jax/_expect.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/jax/_grad.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/jax/_jacobian/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/jax/_jacobian/default_mode.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/jax/_jacobian/jacobian_dense.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/jax/_jacobian/jacobian_pytree.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/jax/_jacobian/logic.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/jax/_math.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/jax/_ntk/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/jax/_ntk/logic.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/jax/_ntk/utils.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/jax/_scanmap.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/jax/_sort.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/jax/_sparse.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/jax/_utils_dtype.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/jax/_utils_random.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/jax/_utils_tree.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/jax/_vjp.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/jax/_vjp_chunked.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/jax/_vmap_chunked.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/jax/lax.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/jax/sharding/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/jax/sharding/debug.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/jax/sharding/fixed_sharding_decorator.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/jax/sharding/fixed_sharding_utils.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/jax/sharding/flexible_sharding.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/logging.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/models/README.md +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/models/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/models/autoreg.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/models/deepset.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/models/equivariant.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/models/fast_autoreg.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/models/full_space.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/models/gaussian.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/models/jastrow.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/models/mlp.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/models/ndm.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/models/rbm.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/models/slater.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/models/tensor_networks/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/models/tensor_networks/mpdo.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/models/tensor_networks/mps.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/models/utils.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/nn/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/nn/activation.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/nn/apply_operator.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/nn/blocks/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/nn/blocks/deepset.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/nn/blocks/mlp.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/nn/blocks/symmetry_sum.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/nn/fast_masked_linear.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/nn/masked_linear.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/nn/symmetric_linear.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/nn/utils.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/observable.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_abstract_observable.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_abstract_operator.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_abstract_super_operator.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_bose_hubbard/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_bose_hubbard/base.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_bose_hubbard/jax.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_bose_hubbard/numba.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_continuous_operator.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_discrete_operator.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_discrete_operator_jax.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_embed/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_embed/base.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_embed/discrete_jax_operator.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_embed/discrete_operator.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_embed/operator.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_fermion2nd/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_fermion2nd/base.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_fermion2nd/jax.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_fermion2nd/numba.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_fermion2nd/utils.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_graph_operator.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_hamiltonian.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_heisenberg.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_ising/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_ising/base.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_ising/jax.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_ising/numba.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_kinetic.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_lazy.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_local_liouvillian.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_local_operator/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_local_operator/base.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_local_operator/compile_helpers.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_local_operator/convert.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_local_operator/helpers.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_local_operator/jax.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_local_operator/numba.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_pauli_strings/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_pauli_strings/base.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_pauli_strings/jax.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_pauli_strings/numba.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_potential.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_prod/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_prod/base.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_prod/discrete_jax_operator.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_prod/discrete_operator.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_prod/operator.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_sum/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_sum/base.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_sum/continuous.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_sum/discrete_jax_operator.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_sum/discrete_operator.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/_sum/operator.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/boson.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/fermion.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/permutation.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/operator/spin.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/optimizer/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/optimizer/linear_operator.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/optimizer/preconditioner.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/optimizer/qgt/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/optimizer/qgt/common.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/optimizer/qgt/default.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/optimizer/qgt/qgt_jacobian.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/optimizer/qgt/qgt_jacobian_common.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/optimizer/qgt/qgt_jacobian_dense.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/optimizer/qgt/qgt_jacobian_pytree.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/optimizer/qgt/qgt_onthefly.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/optimizer/qgt/qgt_onthefly_logic.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/optimizer/solver/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/optimizer/sr.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/sampler/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/sampler/autoreg.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/sampler/base.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/sampler/exact.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/sampler/metropolis.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/sampler/rules/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/sampler/rules/base.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/sampler/rules/continuous_gaussian.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/sampler/rules/custom_numpy.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/sampler/rules/exchange.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/sampler/rules/fermion_2nd.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/sampler/rules/fixed.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/sampler/rules/global_flip_rule.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/sampler/rules/hamiltonian.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/sampler/rules/hamiltonian_numpy.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/sampler/rules/langevin.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/sampler/rules/local.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/sampler/rules/local_numpy.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/sampler/rules/multiple.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/sampler/rules/tensor.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/stats/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/stats/_autocorr.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/stats/mc_stats.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/stats/mc_stats_old.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/stats/mpi_stats.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/symmetry/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/symmetry/group/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/tools/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/tools/_common.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/tools/_cpu_info.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/tools/check_mpi.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/tools/info.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/_dependencies_check.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/_serialization.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/_tips.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/api_utils.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/array.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/citations/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/citations/cli.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/citations/core.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/citations/docs.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/citations/internal_citations.bib +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/deprecation.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/dispatch.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/display/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/display/repr.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/float.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/group/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/group/_group.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/group/_permutation_group.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/group/_point_group.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/group/_semigroup.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/group/axial.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/group/cubic.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/group/icosa.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/group/planar.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/history/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/history/accum.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/history/history_dict.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/holomorphic.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/iterators.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/jax.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/model_frameworks/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/model_frameworks/base.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/model_frameworks/equinox.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/model_frameworks/flax.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/model_frameworks/flax_bound.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/model_frameworks/haiku.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/model_frameworks/jax.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/model_frameworks/nnx.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/model_frameworks/nnx_wrapped.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/moduletools.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/mpi/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/mpi/mpi.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/mpi/primitives.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/numbers.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/partial.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/seed.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/static_number.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/static_range.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/struct/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/struct/dataclass.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/struct/fields.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/struct/pytree.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/struct/pytree_serialization_sharding.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/struct/utils.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/summation.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/timing.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/tree_walk.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/types.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/utils/version_check.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/vqs/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/vqs/base.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/vqs/full_summ/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/vqs/full_summ/expect.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/vqs/full_summ/state.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/vqs/mc/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/vqs/mc/common.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/vqs/mc/kernels.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/vqs/mc/mc_mixed_state/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/vqs/mc/mc_mixed_state/expect.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/vqs/mc/mc_mixed_state/expect_chunked.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/vqs/mc/mc_mixed_state/expect_grad.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/vqs/mc/mc_mixed_state/state.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/vqs/mc/mc_state/__init__.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/vqs/mc/mc_state/expect.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/vqs/mc/mc_state/expect_forces.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/vqs/mc/mc_state/expect_forces_chunked.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/vqs/mc/mc_state/expect_grad.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/vqs/mc/mc_state/expect_grad_chunked.py +0 -0
- {netket-3.22.3 → netket-3.22.4}/netket/vqs/mc/mc_state/local_estimators.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: NetKet
|
|
3
|
-
Version: 3.22.
|
|
3
|
+
Version: 3.22.4
|
|
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/#
|
|
@@ -54,7 +54,7 @@ Requires-Dist: myst-nb<1.5,>=1.0; extra == 'docs'
|
|
|
54
54
|
Requires-Dist: myst-parser<5.2.0,>=2.0.0; extra == 'docs'
|
|
55
55
|
Requires-Dist: nbconvert>=7.16.6; extra == 'docs'
|
|
56
56
|
Requires-Dist: sphinx-autodoc-typehints<4.0,>=1.22; extra == 'docs'
|
|
57
|
-
Requires-Dist: sphinx-book-theme<1.
|
|
57
|
+
Requires-Dist: sphinx-book-theme<1.5,>=1.1; extra == 'docs'
|
|
58
58
|
Requires-Dist: sphinx-copybutton>=0.5.2; extra == 'docs'
|
|
59
59
|
Requires-Dist: sphinx-design>=0.4.0; extra == 'docs'
|
|
60
60
|
Requires-Dist: sphinx<9.2.0,>=8.2.3; extra == 'docs'
|
|
@@ -62,6 +62,7 @@ Requires-Dist: sphinxcontrib-fulltoc~=1.2.0; extra == 'docs'
|
|
|
62
62
|
Requires-Dist: sphinxcontrib-jsmath~=1.0.1; extra == 'docs'
|
|
63
63
|
Provides-Extra: extra
|
|
64
64
|
Requires-Dist: h5py>=3.7.0; extra == 'extra'
|
|
65
|
+
Requires-Dist: jaxmg<1.0.0,>=0.0.9; (sys_platform == 'linux') and extra == 'extra'
|
|
65
66
|
Requires-Dist: mlflow>=2.0.0; extra == 'extra'
|
|
66
67
|
Requires-Dist: openfermion>=1.0.0; extra == 'extra'
|
|
67
68
|
Requires-Dist: qutip>=4; extra == 'extra'
|
|
@@ -25,6 +25,13 @@ class StopRun(Exception):
|
|
|
25
25
|
pass
|
|
26
26
|
|
|
27
27
|
|
|
28
|
+
#: ``callback_order`` for callbacks that may raise :class:`StopRun`. They run
|
|
29
|
+
#: *last* (after observables at 0 and loggers at 10) so that, on the step a
|
|
30
|
+
#: callback stops the run, no later callback in the hook is skipped — a skipped
|
|
31
|
+
#: collective would deadlock the run under ``jax.distributed``.
|
|
32
|
+
STOPPING_CALLBACK_ORDER = 100
|
|
33
|
+
|
|
34
|
+
|
|
28
35
|
class AbstractCallback(struct.Pytree, mutable=True):
|
|
29
36
|
"""
|
|
30
37
|
Abstract base class for callbacks in advanced variational drivers.
|
|
@@ -71,7 +78,9 @@ class AbstractCallback(struct.Pytree, mutable=True):
|
|
|
71
78
|
Lower numbers are called first, and higher numbers are called later.
|
|
72
79
|
|
|
73
80
|
This can be redefined in subclasses to change the order in which callbacks are called.
|
|
74
|
-
(Default: 0, for all callbacks, 10 for loggers
|
|
81
|
+
(Default: 0, for all callbacks, 10 for loggers, and
|
|
82
|
+
:data:`STOPPING_CALLBACK_ORDER` (100) for callbacks that may raise
|
|
83
|
+
:class:`StopRun`, so they run after everything else).
|
|
75
84
|
"""
|
|
76
85
|
return 0
|
|
77
86
|
|
|
@@ -18,7 +18,11 @@ import numpy as np
|
|
|
18
18
|
|
|
19
19
|
from netket.utils import struct
|
|
20
20
|
|
|
21
|
-
from netket._src.callbacks.base import
|
|
21
|
+
from netket._src.callbacks.base import (
|
|
22
|
+
AbstractCallback,
|
|
23
|
+
StopRun,
|
|
24
|
+
STOPPING_CALLBACK_ORDER,
|
|
25
|
+
)
|
|
22
26
|
|
|
23
27
|
|
|
24
28
|
class ConvergenceStopping(AbstractCallback, mutable=True):
|
|
@@ -72,6 +76,11 @@ class ConvergenceStopping(AbstractCallback, mutable=True):
|
|
|
72
76
|
self._loss_window = deque([], maxlen=smoothing_window)
|
|
73
77
|
self._patience_counter = 0
|
|
74
78
|
|
|
79
|
+
@property
|
|
80
|
+
def callback_order(self) -> int:
|
|
81
|
+
# Run last, so raising StopRun never skips a later callback's collective.
|
|
82
|
+
return STOPPING_CALLBACK_ORDER
|
|
83
|
+
|
|
75
84
|
def on_step_end(self, step, log_data, driver):
|
|
76
85
|
loss = np.asarray(np.real(getattr(log_data[driver._loss_name], self.monitor)))
|
|
77
86
|
|
|
@@ -16,7 +16,11 @@ import numpy as np
|
|
|
16
16
|
|
|
17
17
|
from netket.utils import struct
|
|
18
18
|
|
|
19
|
-
from netket._src.callbacks.base import
|
|
19
|
+
from netket._src.callbacks.base import (
|
|
20
|
+
AbstractCallback,
|
|
21
|
+
StopRun,
|
|
22
|
+
STOPPING_CALLBACK_ORDER,
|
|
23
|
+
)
|
|
20
24
|
|
|
21
25
|
|
|
22
26
|
class EarlyStopping(AbstractCallback, mutable=True):
|
|
@@ -87,6 +91,11 @@ class EarlyStopping(AbstractCallback, mutable=True):
|
|
|
87
91
|
self._best_iter = 0
|
|
88
92
|
self._best_patience_counter = 0
|
|
89
93
|
|
|
94
|
+
@property
|
|
95
|
+
def callback_order(self) -> int:
|
|
96
|
+
# Run last, so raising StopRun never skips a later callback's collective.
|
|
97
|
+
return STOPPING_CALLBACK_ORDER
|
|
98
|
+
|
|
90
99
|
def on_step_end(self, step, log_data, driver):
|
|
91
100
|
if step < self.start_from_step:
|
|
92
101
|
return
|
|
@@ -16,7 +16,11 @@ import numpy as np
|
|
|
16
16
|
|
|
17
17
|
from netket.utils import struct
|
|
18
18
|
|
|
19
|
-
from netket._src.callbacks.base import
|
|
19
|
+
from netket._src.callbacks.base import (
|
|
20
|
+
AbstractCallback,
|
|
21
|
+
StopRun,
|
|
22
|
+
STOPPING_CALLBACK_ORDER,
|
|
23
|
+
)
|
|
20
24
|
|
|
21
25
|
|
|
22
26
|
class InvalidLossStopping(AbstractCallback, mutable=True):
|
|
@@ -50,6 +54,11 @@ class InvalidLossStopping(AbstractCallback, mutable=True):
|
|
|
50
54
|
self.patience = patience
|
|
51
55
|
self._last_valid_iter = 0
|
|
52
56
|
|
|
57
|
+
@property
|
|
58
|
+
def callback_order(self) -> int:
|
|
59
|
+
# Run last, so raising StopRun never skips a later callback's collective.
|
|
60
|
+
return STOPPING_CALLBACK_ORDER
|
|
61
|
+
|
|
53
62
|
def on_step_end(self, step, log_data, driver):
|
|
54
63
|
# reset if the driver was restarted
|
|
55
64
|
if driver.step_count < self._last_valid_iter:
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import re
|
|
2
|
+
|
|
1
3
|
from typing import Any
|
|
2
4
|
from pathlib import Path
|
|
3
5
|
|
|
4
6
|
import jax
|
|
7
|
+
import jax.experimental.multihost_utils
|
|
5
8
|
|
|
6
9
|
from netket.utils import struct, timing
|
|
7
10
|
from netket.utils.optional_deps import import_optional_dependency
|
|
@@ -48,6 +51,9 @@ class SaveVariationalState(AbstractCallback, mutable=True):
|
|
|
48
51
|
_file_name_root: str = struct.field(
|
|
49
52
|
pytree_node=False, serialize=False, default="state"
|
|
50
53
|
)
|
|
54
|
+
_max_to_keep: int | None = struct.field(
|
|
55
|
+
pytree_node=False, serialize=False, default=None
|
|
56
|
+
)
|
|
51
57
|
|
|
52
58
|
def __init__(
|
|
53
59
|
self,
|
|
@@ -55,6 +61,7 @@ class SaveVariationalState(AbstractCallback, mutable=True):
|
|
|
55
61
|
interval: float | int,
|
|
56
62
|
*,
|
|
57
63
|
file_name_root: str = "state",
|
|
64
|
+
max_to_keep: int | None = None,
|
|
58
65
|
):
|
|
59
66
|
r"""
|
|
60
67
|
Constructs the callback to save the variational state at fixed intervals.
|
|
@@ -67,12 +74,15 @@ class SaveVariationalState(AbstractCallback, mutable=True):
|
|
|
67
74
|
path (str | Path): The path where to save the variational state.
|
|
68
75
|
interval (float | int, optional): The interval at which to save the variational state
|
|
69
76
|
file_name_root (str, optional): The root of the file name to save the variational state. Defaults to "state".
|
|
77
|
+
max_to_keep (int | None, optional): If set, only the most recent ``max_to_keep`` saved states are
|
|
78
|
+
kept on disk; older ones are deleted after each save. Defaults to None (keep all).
|
|
70
79
|
"""
|
|
71
80
|
if not isinstance(path, Path):
|
|
72
81
|
path = Path(path)
|
|
73
82
|
self._path = path
|
|
74
83
|
self._interval = interval
|
|
75
84
|
self._file_name_root = file_name_root
|
|
85
|
+
self._max_to_keep = max_to_keep
|
|
76
86
|
|
|
77
87
|
if jax.process_index() == 0:
|
|
78
88
|
self._path.mkdir(parents=True, exist_ok=True)
|
|
@@ -82,15 +92,35 @@ class SaveVariationalState(AbstractCallback, mutable=True):
|
|
|
82
92
|
descr="to save the variational state with SaveVariationalStateCallback.",
|
|
83
93
|
)
|
|
84
94
|
|
|
95
|
+
def _save(self, step, driver):
|
|
96
|
+
path = self._path / f"{self._file_name_root}_{step:05d}.nk"
|
|
97
|
+
_nqxpack_save(driver.state, path)
|
|
98
|
+
|
|
99
|
+
if self._max_to_keep is not None:
|
|
100
|
+
if jax.process_index() == 0:
|
|
101
|
+
pattern = re.compile(rf"^{re.escape(self._file_name_root)}_(\d+)\.nk$")
|
|
102
|
+
saved = sorted(
|
|
103
|
+
(
|
|
104
|
+
p
|
|
105
|
+
for p in self._path.glob(f"{self._file_name_root}_*.nk")
|
|
106
|
+
if pattern.match(p.name)
|
|
107
|
+
),
|
|
108
|
+
key=lambda p: int(pattern.match(p.name).group(1)),
|
|
109
|
+
)
|
|
110
|
+
for old in saved[: -self._max_to_keep]:
|
|
111
|
+
old.unlink()
|
|
112
|
+
# Barrier so that other processes do not race ahead (e.g. saving the
|
|
113
|
+
# next checkpoint) while rank 0 is still pruning the directory.
|
|
114
|
+
jax.experimental.multihost_utils.sync_global_devices(
|
|
115
|
+
"SaveVariationalState._save"
|
|
116
|
+
)
|
|
117
|
+
|
|
85
118
|
def before_parameter_update(self, step, log_data, driver):
|
|
86
119
|
if step % self._interval == 0:
|
|
87
|
-
|
|
88
|
-
_nqxpack_save(driver.state, path)
|
|
120
|
+
self._save(step, driver)
|
|
89
121
|
|
|
90
122
|
def on_run_end(self, step, driver):
|
|
91
|
-
|
|
92
|
-
path = self._path / f"{self._file_name_root}_{step:05d}.nk"
|
|
93
|
-
_nqxpack_save(driver.state, path)
|
|
123
|
+
self._save(step, driver)
|
|
94
124
|
|
|
95
125
|
|
|
96
126
|
@timing.timed
|
|
@@ -12,7 +12,11 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from netket._src.callbacks.base import
|
|
15
|
+
from netket._src.callbacks.base import (
|
|
16
|
+
AbstractCallback,
|
|
17
|
+
StopRun,
|
|
18
|
+
STOPPING_CALLBACK_ORDER,
|
|
19
|
+
)
|
|
16
20
|
from netket.utils import struct
|
|
17
21
|
|
|
18
22
|
|
|
@@ -30,6 +34,11 @@ class _StopAtTime(AbstractCallback):
|
|
|
30
34
|
def __init__(self, T_final: float):
|
|
31
35
|
self.T_final = T_final
|
|
32
36
|
|
|
37
|
+
@property
|
|
38
|
+
def callback_order(self) -> int:
|
|
39
|
+
# Run last, so raising StopRun never skips a later callback's collective.
|
|
40
|
+
return STOPPING_CALLBACK_ORDER
|
|
41
|
+
|
|
33
42
|
def on_step_end(self, step, log_data, driver):
|
|
34
43
|
if driver.t >= self.T_final:
|
|
35
44
|
raise StopRun(f"Reached t={driver.t:.6g} >= T_final={self.T_final:.6g}")
|
|
@@ -16,7 +16,11 @@ import time
|
|
|
16
16
|
|
|
17
17
|
from netket.utils import struct
|
|
18
18
|
|
|
19
|
-
from netket._src.callbacks.base import
|
|
19
|
+
from netket._src.callbacks.base import (
|
|
20
|
+
AbstractCallback,
|
|
21
|
+
StopRun,
|
|
22
|
+
STOPPING_CALLBACK_ORDER,
|
|
23
|
+
)
|
|
20
24
|
|
|
21
25
|
|
|
22
26
|
class Timeout(AbstractCallback, mutable=True):
|
|
@@ -47,11 +51,40 @@ class Timeout(AbstractCallback, mutable=True):
|
|
|
47
51
|
self.timeout = timeout
|
|
48
52
|
self._init_time = None
|
|
49
53
|
|
|
54
|
+
@property
|
|
55
|
+
def callback_order(self) -> int:
|
|
56
|
+
# Run last, so raising StopRun never skips a later callback's collective.
|
|
57
|
+
return STOPPING_CALLBACK_ORDER
|
|
58
|
+
|
|
50
59
|
def on_run_start(self, step, driver):
|
|
51
60
|
self._init_time = time.time()
|
|
52
61
|
|
|
53
62
|
def on_step_end(self, step, log_data, driver):
|
|
54
|
-
|
|
63
|
+
elapsed = time.time() - self._init_time
|
|
64
|
+
# Wall clocks and per-process start instants differ across nodes, so the
|
|
65
|
+
# raw per-rank decision can disagree and (without this) stop the run on
|
|
66
|
+
# different steps. Take process 0's decision on every rank, so the whole
|
|
67
|
+
# run times out in lock-step on a single authoritative clock.
|
|
68
|
+
if _timed_out_on_master(elapsed >= self.timeout):
|
|
55
69
|
raise StopRun(
|
|
56
70
|
f"Timeout: training stopped after {self.timeout:.1f} seconds."
|
|
57
71
|
)
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def _timed_out_on_master(local_timed_out: bool) -> bool:
|
|
75
|
+
"""Return process 0's timeout decision on every process.
|
|
76
|
+
|
|
77
|
+
A no-op returning ``local_timed_out`` unchanged in single-process runs.
|
|
78
|
+
"""
|
|
79
|
+
import jax
|
|
80
|
+
|
|
81
|
+
if jax.process_count() == 1:
|
|
82
|
+
return local_timed_out
|
|
83
|
+
|
|
84
|
+
import numpy as np
|
|
85
|
+
from jax.experimental import multihost_utils
|
|
86
|
+
|
|
87
|
+
out = multihost_utils.broadcast_one_to_all(
|
|
88
|
+
np.asarray(int(local_timed_out), dtype=np.int32)
|
|
89
|
+
)
|
|
90
|
+
return bool(int(out))
|
|
@@ -479,7 +479,15 @@ class AbstractDriver(struct.Pytree, mutable=True):
|
|
|
479
479
|
callbacks.on_run_end(self.step_count, self)
|
|
480
480
|
except StopRun as error:
|
|
481
481
|
callbacks.on_run_end(self.step_count, self)
|
|
482
|
-
|
|
482
|
+
# If all processes did not raise StopRun, some will deadlock here.
|
|
483
|
+
# This means you have a bug somewhere in YOUR code.
|
|
484
|
+
if jax.process_count() > 1:
|
|
485
|
+
print(
|
|
486
|
+
f"[process {jax.process_index()}/{jax.process_count()}] "
|
|
487
|
+
f"Stopping early because of : {error}"
|
|
488
|
+
)
|
|
489
|
+
else:
|
|
490
|
+
print("Stopping early because of : ", error)
|
|
483
491
|
|
|
484
492
|
except KeyboardInterrupt as error:
|
|
485
493
|
callbacks.on_run_error(self.step_count, error, self)
|
|
@@ -357,14 +357,16 @@ class VMC_SR(AbstractOptimizationDriver):
|
|
|
357
357
|
use_ntk = variational_state.n_parameters > variational_state.n_samples
|
|
358
358
|
if jax.process_index() == 0:
|
|
359
359
|
print(
|
|
360
|
-
"Automatic SR implementation choice:
|
|
360
|
+
f"Automatic SR implementation choice: {'NTK' if use_ntk else 'QGT'}"
|
|
361
|
+
f" (n_parameters={variational_state.n_parameters}, n_samples={variational_state.n_samples})"
|
|
361
362
|
)
|
|
362
363
|
|
|
363
364
|
if on_the_fly is None:
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
365
|
+
on_the_fly = use_ntk
|
|
366
|
+
if jax.process_index() == 0:
|
|
367
|
+
print(
|
|
368
|
+
f"Automatic SR on_the_fly choice: {'True' if on_the_fly else 'False'}"
|
|
369
|
+
)
|
|
368
370
|
elif on_the_fly and not use_ntk:
|
|
369
371
|
raise ValueError(
|
|
370
372
|
"""
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
import copy
|
|
16
16
|
import os
|
|
17
17
|
import tempfile
|
|
18
|
+
from collections.abc import Collection
|
|
18
19
|
from numbers import Number
|
|
19
20
|
from typing import Any, TYPE_CHECKING
|
|
20
21
|
|
|
@@ -30,6 +31,12 @@ if TYPE_CHECKING:
|
|
|
30
31
|
from netket.vqs import VariationalState
|
|
31
32
|
|
|
32
33
|
|
|
34
|
+
def _expand_node(root, tree, **kwargs):
|
|
35
|
+
if hasattr(tree, "ndim") and tree.ndim == 1:
|
|
36
|
+
return enumerate(tree)
|
|
37
|
+
return None
|
|
38
|
+
|
|
39
|
+
|
|
33
40
|
def _visit_leaf(root, tree, *, data):
|
|
34
41
|
if isinstance(tree, complex):
|
|
35
42
|
data.append((root + "/re", tree.real))
|
|
@@ -84,6 +91,10 @@ class MLFlowLog(AbstractCallback):
|
|
|
84
91
|
steps. Only relevant when ``save_params=True``.
|
|
85
92
|
metadata: Optional flat dict of key/value pairs logged as MLflow
|
|
86
93
|
params at the start of the run.
|
|
94
|
+
ignore: Optional collection of top-level log-dict keys to skip
|
|
95
|
+
entirely. Useful for suppressing entries that cannot be
|
|
96
|
+
serialised as MLflow metrics (e.g. large arrays or custom
|
|
97
|
+
objects).
|
|
87
98
|
|
|
88
99
|
.. tip::
|
|
89
100
|
Use ``metadata`` to attach a flat dict of hyper-parameters (learning rate,
|
|
@@ -143,6 +154,7 @@ class MLFlowLog(AbstractCallback):
|
|
|
143
154
|
_tags: Any = struct.field(pytree_node=False, serialize=False)
|
|
144
155
|
_save_params: Any = struct.field(pytree_node=False, serialize=False)
|
|
145
156
|
_save_params_every: Any = struct.field(pytree_node=False, serialize=False)
|
|
157
|
+
_ignore: Any = struct.field(pytree_node=False, serialize=False)
|
|
146
158
|
_run: Any = struct.field(pytree_node=False, serialize=False)
|
|
147
159
|
_old_step: Any = struct.field(pytree_node=False, serialize=False)
|
|
148
160
|
_steps_since_last_params: Any = struct.field(pytree_node=False, serialize=False)
|
|
@@ -156,6 +168,7 @@ class MLFlowLog(AbstractCallback):
|
|
|
156
168
|
save_params: bool = True,
|
|
157
169
|
save_params_every: int = 50,
|
|
158
170
|
metadata: dict | None = None,
|
|
171
|
+
ignore: Collection[str] | None = None,
|
|
159
172
|
):
|
|
160
173
|
super().__init__()
|
|
161
174
|
self._metadata = metadata or {}
|
|
@@ -170,6 +183,7 @@ class MLFlowLog(AbstractCallback):
|
|
|
170
183
|
self._tags = tags
|
|
171
184
|
self._save_params = save_params
|
|
172
185
|
self._save_params_every = save_params_every
|
|
186
|
+
self._ignore = frozenset(ignore) if ignore is not None else frozenset()
|
|
173
187
|
|
|
174
188
|
if save_params and save_params_every < 1:
|
|
175
189
|
raise ValueError("`save_params_every` must be >= 1")
|
|
@@ -201,7 +215,11 @@ class MLFlowLog(AbstractCallback):
|
|
|
201
215
|
self._init_mlflow()
|
|
202
216
|
|
|
203
217
|
data: list[tuple[str, Any]] = []
|
|
204
|
-
|
|
218
|
+
if self._ignore:
|
|
219
|
+
item = {k: v for k, v in item.items() if k not in self._ignore}
|
|
220
|
+
walk_tree_with_path(
|
|
221
|
+
item, "", visit_leaf=_visit_leaf, expand_node=_expand_node, data=data
|
|
222
|
+
)
|
|
205
223
|
|
|
206
224
|
metrics = {}
|
|
207
225
|
for key, val in data:
|
|
@@ -34,8 +34,20 @@ def _collect_tensorboard_leaf(root, tree, data):
|
|
|
34
34
|
|
|
35
35
|
|
|
36
36
|
def _write_tensorboard_leaf(root, tree, *, writer, step):
|
|
37
|
+
key = root.removeprefix("/")
|
|
37
38
|
if isinstance(tree, Number):
|
|
38
|
-
writer.add_scalar(
|
|
39
|
+
writer.add_scalar(key, tree, step)
|
|
40
|
+
elif hasattr(tree, "ndim"):
|
|
41
|
+
# numpy/jax scalar arrays (e.g. jaxlib ArrayImpl) are not `Number`
|
|
42
|
+
# instances and would otherwise be silently dropped. Only scalars
|
|
43
|
+
# (0-dim or single element) map to a tensorboard scalar.
|
|
44
|
+
if tree.ndim > 0 and tree.size != 1:
|
|
45
|
+
return
|
|
46
|
+
if jax.numpy.iscomplexobj(tree):
|
|
47
|
+
writer.add_scalar(key + "/re", float(tree.real), step)
|
|
48
|
+
writer.add_scalar(key + "/im", float(tree.imag), step)
|
|
49
|
+
else:
|
|
50
|
+
writer.add_scalar(key, float(tree), step)
|
|
39
51
|
|
|
40
52
|
|
|
41
53
|
def _expand_tensorboard_node(_root, tree, **_kwargs):
|
|
@@ -108,7 +108,7 @@ def from_pyscf_molecule(
|
|
|
108
108
|
>>>
|
|
109
109
|
>>> # compute the boys orbitals
|
|
110
110
|
>>> mf = scf.RHF(mol).run(verbose=0) # doctest:+ELLIPSIS
|
|
111
|
-
>>> mo_coeff = lo.Boys(mol).kernel(
|
|
111
|
+
>>> mo_coeff = lo.Boys(mol, mf.mo_coeff).kernel()
|
|
112
112
|
>>> # use the boys orbitals to construct the netket hamiltonian
|
|
113
113
|
>>> ha = nkx.operator.from_pyscf_molecule(mol, mo_coeff=mo_coeff)
|
|
114
114
|
|
|
@@ -225,7 +225,7 @@ def TV_from_pyscf_molecule(
|
|
|
225
225
|
>>>
|
|
226
226
|
>>> # compute the boys orbitals
|
|
227
227
|
>>> mf = scf.RHF(mol).run(verbose=0) # doctest:+ELLIPSIS
|
|
228
|
-
>>> mo_coeff = lo.Boys(mol).kernel(
|
|
228
|
+
>>> mo_coeff = lo.Boys(mol, mf.mo_coeff).kernel()
|
|
229
229
|
>>> ha = nkx.operator.pyscf.TV_from_pyscf_molecule(mol, mo_coeff)
|
|
230
230
|
|
|
231
231
|
Args:
|
|
@@ -196,7 +196,7 @@ class Representation:
|
|
|
196
196
|
group_order = len(self.group.elems)
|
|
197
197
|
|
|
198
198
|
irrep_count = character_table @ self.character / group_order
|
|
199
|
-
irrep_dims = np.round(irrep_count * character_table[:, 0]).astype(int)
|
|
199
|
+
irrep_dims = np.round(np.real(irrep_count * character_table[:, 0])).astype(int)
|
|
200
200
|
return irrep_dims
|
|
201
201
|
|
|
202
202
|
def symmetry_adapted_basis(self) -> tuple[np.ndarray, np.ndarray]:
|