# Welcome to quimb's documentation!
[![Tests](https://github.com/jcmgray/quimb/actions/workflows/tests.yml/badge.svg)](https://github.com/jcmgray/quimb/actions/workflows/tests.yml)
[![Code Coverage](https://codecov.io/gh/jcmgray/quimb/branch/main/graph/badge.svg)](https://codecov.io/gh/jcmgray/quimb)
[![Code Quality](https://app.codacy.com/project/badge/Grade/3c7462a3c45f41fd9d8f0a746a65c37c)](https://www.codacy.com/gh/jcmgray/quimb/dashboard?utm_source=github.com&utm_medium=referral&utm_content=jcmgray/quimb&utm_campaign=Badge_Grade)
[![Documentation Status](https://readthedocs.org/projects/quimb/badge/?version=latest)](http://quimb.readthedocs.io/en/latest/?badge=latest)
[![JOSS Paper](http://joss.theoj.org/papers/10.21105/joss.00819/status.svg)](https://doi.org/10.21105/joss.00819)
[![PyPI](https://img.shields.io/pypi/v/quimb?color=teal)](https://pypi.org/project/quimb/)
[![Anaconda-Server Badge](https://anaconda.org/conda-forge/quimb/badges/version.svg)](https://anaconda.org/conda-forge/quimb)
[`quimb`](https://github.com/jcmgray/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](https://github.com/jcmgray/quimb), and docs are hosted on [readthedocs](http://quimb.readthedocs.io/en/latest/). Functionality is split in two:
::::{grid} 2
:::{grid-item-card} Tensor module
:img-bottom: _static/rand-tensor.svg
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](https://cotengra.readthedocs.io), optimize and draw networks
- use various backend array libraries such as [jax](https://jax.readthedocs.io) and [torch](https://pytorch.org/) via [autoray](https://github.com/jcmgray/autoray/)
- run specific MPS, PEPS, MERA and quantum circuit algorithms, such as DMRG & TEBD
:::
:::{grid-item-card} Matrix module
:img-bottom: _static/rand-herm-matrix.svg
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](https://slepc.upv.es/)
- compute various quantities including entanglement measures
- take advantage of [numba](https://numba.pydata.org) accelerations
- stochastically estimate $\mathrm{Tr}f(X)$ quantities
:::
::::
(guides)=
## User Guide
The following guides give a basic introduction to the various parts:
```{toctree}
:caption: Guides
:maxdepth: 1
installation
```
```{toctree}
:maxdepth: 2
index_tn
index_matrix
```
(examples)=
## Examples
The following examples, generated from the notebooks in ``docs/examples``,
demonstrate some more advanced features or complete usage:
```{toctree}
:maxdepth: 2
index_examples
```
(citing)=
## Citing
``quimb`` is published in the Journal of Open Source Software
[here](https://doi.org/10.21105/joss.00819) - if it's ever useful in research
please consider supporting development by citing it!
```latex
@article{gray2018quimb,
title={quimb: a python library for quantum information and many-body calculations},
author={Gray, Johnnie},
journal={Journal of Open Source Software},
year = {2018},
volume={3}, number={29}, pages={819},
doi={10.21105/joss.00819},
}
```
(development)=
## Notes
Development notes, including on contributing to ``quimb`` and release details
can be found below:
```{toctree}
:caption: Development
changelog
develop
```
```{toctree}
:hidden:
GitHub Repository
```