Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (
Help us improve Python packaging - Donate today!

A Python Package for Compressive Sampling and Reconstruction of Atomic Force Microscopy Images

Project Description


Magni is a Python package which provides functionality for increasing the speed of image acquisition using Atomic Force Microscopy (AFM). The image acquisition algorithms of Magni are based on the Compressed Sensing (CS) signal acquisition paradigm and include both sensing and reconstruction. The sensing part of the acquisition generates sensed data from regular images possibly acquired using AFM. This is done by AFM hardware simulation. The reconstruction part of the acquisition reconstructs images from sensed data. This is done by CS reconstruction using well-known CS reconstruction algorithms modified for the purpose. The Python implementation of the above functionality uses the standard library, a number of third-party libraries, and additional utility functionality designed and implemented specifically for Magni. The functionality provided by Magni can thus be divided into five groups:

  • Atomic Force Microscopy: AFM specific functionality including AFM image acquisition, AFM hardware simulation, and AFM data file handling.
  • Compressed Sensing: General CS functionality including signal reconstruction and phase transition determination.
  • Imaging: General imaging functionality including measurement matrix and dictionary construction in addition to visualisation and evaluation.
  • Reproducibility: Tools that may aid in increasing the reproducibility of results obtained using Magni.
  • Utilities: General Python utilities including multiprocessing, tracing, and validation.


Magni can be downloaded in a number of ways:

Furthermore, all official releases of the magni package (without examples and documentation) are made available through PyPI and binstar. Both of these are considered unofficial channels and provided solely for your convenience.


To use Magni, extract the downloaded archive and include the extracted Magni folder in your PYTHONPATH.

Magni has been designed for use with Python 2 >= 2.7 or Python 3 >= 3.3.

The required thid party dependencies and optional third party dependencies for Magni are listed in the compiled documentation which can be found in the Magni folder under ‘/doc/build/html/index.html’. You may use the ‘’ script found in the Magni folder under ‘/magni/tests/’ to check for missing dependencies for Magni. Simply run the script to print a dependency report.


The included subpackages, modules, classes and functions are documented through Python docstrings using the same format as the third-party library, numpy, i.e. using the numpydoc standard. A description of any entity can thus be found in the source code of Magni in the docstring of that entity. For readability, the documentation has been compiled using Sphinx to produce an HTML page which can be found in the Magni folder under ‘/doc/build/html/index.html’. The entire documentation is also available as a PDF file in the Magni folder under ‘doc/pdf/index.pdf’. Note, that neither the HTML version nor the PDF version of the documentation is provided through PyPI and


A test suite consisting of unittests, doctests, IPython notebook examples, and several style checks is included in Magni. The tests are organised in python modules found in the Magni folder under ‘/magni/tests/’. These may be invoked using any test runner that supports the unittest.TestCase classes. The entire test suite may be run by executing the convenience script ‘’. The code is this repository is continuously tested by Travis CI.


A large number of examples showing the capabilities of Magni are included. Some of these examples are in the form of doctests whereas the more elaborated examples are in the form of IPython notebook examples which can be found in the Magni folder under ‘/examples/’.

Citing Magni

A Magni software metapaper has been published:

C.S. Oxvig, P.S. Pedersen, T. Arildsen, J. Østergaard, and T. Larsen, “Magni: A Python Package for Compressive Sampling and Reconstruction of Atomic Force Microscopy Images”, Journal of Open Research Software, 2(1):e29, 2014 DOI:

Furthermore, the magni.utils.validation system is detailed in:

P.S. Pedersen, C.S. Oxvig, J. Østergaard, and T. Larsen, “Validating Function Arguments in Python Signal Processing Applications”, in Proceedings of the 15th Python in Science Conference, pp. 106-113, Austin, Texas, USA, July 11 - 17, 2016 URL:

And the magni.reproducibility sub-package is detailed in:

C.S. Oxvig, T. Arildsen, and T. Larsen, “Storing Reproducible Results from Computational Experiments using Scientific Python Packages”, in Proceedings of the 15th Python in Science Conference, pp. 45-50, Austin, Texas, USA, July 11 - 17, 2016 URL:

Please consider citing one or more of these papers if you publish any work in which you have used Magni.

Release History

This version
History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Hash SHA256 Hash Help Version File Type Upload Date
(194.0 kB) Copy SHA256 Hash SHA256
Source Mar 1, 2017

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting