![quimb logo](https://github.com/jcmgray/quimb/blob/HEAD/docs/_static/logo-banner.png?raw=true)
![Anaconda-Server Badge](https://anaconda.org/conda-forge/quimb/badges/version.svg)
quimb
is an easy but fast python library for 'quantum information many-body' calculations, focusing primarily on tensor networks. The code is hosted on github, and docs are hosted on readthedocs. Functionality is split in two:
The quimb.tensor
module contains tools for working with tensors and tensor networks. It has a particular focus on automatically handling arbitrary geometry, e.g. beyond 1D and 2D lattices. With this you can:
- construct and manipulate arbitrary (hyper) graphs of tensor networks
- automatically contract, optimize and draw networks
- use various backend array libraries such as jax and torch via autoray
- run specific MPS, PEPS, MERA and quantum circuit algorithms, such as DMRG & TEBD
![tensor pic](https://github.com/jcmgray/quimb/blob/HEAD/docs/_static/rand-tensor.svg?raw=true)
The core quimb
module contains tools for reference 'exact' quantum calculations, where the states and operator are represented as either numpy.ndarray
or scipy.sparse
matrices. With this you can:
- construct operators in complicated tensor spaces
- find groundstates, excited states and do time evolutions, including with slepc
- compute various quantities including entanglement measures
- take advantage of numba accelerations
- stochastically estimate $\mathrm{Tr}f(X)$ quantities
![matrix pic](https://github.com/jcmgray/quimb/blob/HEAD/docs/_static/rand-herm-matrix.svg?raw=true)
The full documentation can be found at: quimb.readthedocs.io. Contributions of any sort are very welcome - please see the contributing guide. Issues and pull requests are hosted on github. For other questions and suggestions, please use the discussions page.