espm: The Electron Spectro-Microscopy Python Library

Documentation Status

This library contains algorithms to perform non-negative matrix factorization with diverse regularisation (e.g. Laplacian or L1) and contraints (e.g. simplex).

It is specialized for Electron Microscopy applications. It contains code to create artificial Energy dispersive X-ray spectroscopy (EDXS) data and to perform hyperspectral unmixing on EDXS spectrum images.


You can install this package from PyPi using:

$ pip install espm

If you want to develop, please use the option:

$ git clone
$ cd espm
$ pip install cython
$ pip install -e ".[dev]"

Getting started

Try the api.ipynb notebook in the notebooks folder.


The documentation is available at

You can get started with the following notebooks:


If you use this library, please cite the following paper:

title={espm: A Python library for the simulation of STEM-EDXS datasets},
author={Teurtrie, Adrien and Perraudin, Nathana{\"e}l and Holvoet, Thomas and Chen, Hui and Alexander, Duncan TL and Obozinski, Guillaume and H{\'e}bert, C{\'e}cile},

Documentation map