Metadata-Version: 2.4
Name: jVMC
Version: 1.5.8
Summary: jVMC: Versatile and performant variational Monte Carlo
Author-email: Markus Schmitt <markus.schmitt@ur.de>
License: MIT License
Project-URL: Documentation, https://jvmc.readthedocs.io/en/latest/#
Project-URL: Repository, https://github.com/markusschmitt/vmc_jax
Project-URL: Issues, https://github.com/markusschmitt/vmc_jax/issues
Keywords: Neural quantum states,Variational Monte Carlo
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=2
Requires-Dist: openfermion
Requires-Dist: jax<=0.7.2,>=0.4.12
Requires-Dist: jaxlib<=0.7.2,>=0.4.12
Requires-Dist: flax>=0.7.0
Requires-Dist: mpi4py
Requires-Dist: h5py
Requires-Dist: PyYAML
Requires-Dist: matplotlib
Requires-Dist: scipy
Provides-Extra: dev
Requires-Dist: sphinx; extra == "dev"
Requires-Dist: mock; extra == "dev"
Requires-Dist: sphinx_rtd_theme; extra == "dev"
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pytest-mpi; extra == "dev"
Provides-Extra: gpu
Requires-Dist: jax[cuda12]<=0.5.0,>=0.4.12; extra == "gpu"
Dynamic: license-file

[![Documentation Status](https://readthedocs.org/projects/jvmc/badge/?version=latest)](https://jvmc.readthedocs.io/en/latest/?badge=latest)
[![PyPi version](https://badgen.net/pypi/v/jVMC/)](https://pypi.org/project/jVMC/)
[![arXiv](https://img.shields.io/badge/arXiv-2108.03409-b31b1b.svg)](https://arxiv.org/abs/2108.03409)

# jVMC
This is an impementation of Variational Monte Carlo (VMC) for quantum many-body dynamics using the [JAX library](https://jax.readthedocs.io "JAX library") (and [Flax](https://flax.readthedocs.io "FLAX library") on top) to exploit the blessings of automatic differentiation for easy model composition and just-in-time compilation for execution on accelerators.

1. [Documentation](#documentation)
2. [Installation](#installation)
3. [Online example](#online-example)
4. [Important gotchas](#important-gotchas)
5. [Citing jVMC](#citing-jvmc)

Please report bugs as well as other issues or suggestions on our [issues page](https://github.com/markusschmitt/vmc_jax/issues).

## Documentation

Documentation is available [here](https://jvmc.readthedocs.io/en/latest/ "Documentation").

## Installation

### Option 1: ``pip``-install

        pip install jVMC

To install jVMC with GPU support, use

        pip install jVMC[gpu]

This is assuming, that `jax[cuda12]` will work for you (see the [JAX documentation](https://docs.jax.dev/en/latest/installation.html#pip-installation-nvidia-gpu-cuda-installed-via-pip-easier)).

### Option 2: Clone and ``pip``-install for development

1. Clone the jVMC repository and check out the development branch:

        git clone https://github.com/markusschmitt/vmc_jax.git
        cd vmc_jax

2. ``pip``-install the package  

        pip install -e ".[dev]"

Test that everything worked, e.g. run 'python -c "import jVMC"' from a place different than ``vmc_jax``.


## Online example

[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/markusschmitt/vmc_jax/blob/master/examples/ex0_ground_state_search.ipynb)

Click on the badge above to open a notebook that implements an exemplary ground state search in Google Colab.

## Important gotchas
### Out-of-memory issues and batching
Memory requirements grow with increasing network sizes. To avoid out-of-memory issues, the ``batchSize`` parameter of the ``NQS`` class has to be adjusted. The ``batchSize`` indicates on how many input configurations the network is evaluated concurrently. Out-of-memory issues are usually resolved by reducing this number. The ``numChains`` parameter of the ``Sampler`` class for Markov Chain Monte Carlo sampling plays a similar role, but its optimal values in terms of computational speed are typically not memory critical.

## Citing jVMC

If you use the jVMC package for your research, please cite our reference paper [SciPost Phys. Codebases 2 (2022)](https://scipost.org/10.21468/SciPostPhysCodeb.2)

        @Article{jVMC,
                title={{jVMC: Versatile and performant variational Monte Carlo leveraging automated differentiation and GPU acceleration}},
                author={Markus Schmitt and Moritz Reh},
                journal={SciPost Phys. Codebases},
                pages={2},
                year={2022},
                publisher={SciPost},
                doi={10.21468/SciPostPhysCodeb.2},
                url={https://scipost.org/10.21468/SciPostPhysCodeb.2},
        }
