Skip to content


Repository files navigation


A matrix product representation library for Python

JOSS PyPI Travis Documentation Status Coverage Status Maintainability

mpnum is a flexible, user-friendly, and expandable toolbox for the matrix product state/tensor train tensor format. mpnum provides:

  • support for well-known matrix product representations, such as:
    • matrix product states (MPS), also known as tensor trains (TT)
    • matrix product operators (MPO)
    • local purification matrix product states (PMPS)
    • arbitrary matrix product arrays (MPA)
  • arithmetic operations: addition, multiplication, contraction etc.
  • compression, canonical forms, etc.
  • finding extremal eigenvalues and eigenvectors of MPOs (DMRG)
  • flexible tools for new matrix product algorithms

To install the latest stable version run

pip install mpnum

If you want to install mpnum from source, please run (on Unix)

git clone
cd mpnum
pip install .

In order to run the tests and build the documentation, you have to install the development dependencies via

pip install -r requirements.txt

For more information, see:

Required packages:

  • six, numpy, scipy

Supported Python versions:

  • 2.7, 3.4, 3.5, 3.6


How to contribute

Contributions of any kind are very welcome. Please use the issue tracker for bug reports. If you want to contribute code, please see the section on how to contribute in the documentation.



Distributed under the terms of the BSD 3-Clause License (see LICENSE).


If you use mpnum for yor paper, please cite:

Suess, Daniel and Milan Holzäpfel (2017). mpnum: A matrix product representation library for Python. Journal of Open Source Software, 2(20), 465,

mpnum has been used and cited in the following publications: