Organize Scanning Probe Microscopy (SPM, STM, AFM) Images and Spectra.
Author alexriss
3 Stars
Updated Last
10 Months Ago
Started In
November 2020

SpmImage Tycoon

Cross-platform app to manage and edit scanning probe microscopy (SPM) images and spectra.

Currently, Nanonis scanning tunneling microscopy (STM) and atomic force microscopy (AFM) images and spectra are supported.

Installation (alternative)
Case study
Tips and tricks
Technical background
Third party libraries
Related projects


  • Load and display Nanonis SPM images: grid and zoom views
  • Load and display Nanonis spectra
  • Fast keyboard-based navigation
  • Cycle through channels, switch between forward and backward directions
  • Different types of background corrections
  • Various color palettes
  • Non-destructive edits: Gaussian, Laplacian, Fourier Filter, etc.
  • Line profiles
  • Star-rating and keyword systems
  • Powerful search and filtering (e.g., by keywords, data type, location, scan size)
  • Overview and position-based filtering
  • Export to OpenDocument presentation (compatible with LibreOffice, OpenOffice, PowerPoint, etc.)
  • Everything is experimental. And we all like experiments.


Feature demo
Global scan frame filter
Copy and paste parameters
Grid view: images and spectra
Spectrum display
Spectra demo
More features coming soon...  

Non-destructive edits
Fourier filter

It is best to play around with the app yourself, so go ahead and install it.. Example data can be found in the test directory.


The app should be considered experimental. It has undergone limited testing, and while it works for me, I can not guarantee that it will work flawlessly for you aswell. It is conceivable that some of the calculations potentially give erroneous results under certain circumstances. So please only use the app if you are ok with some surprises.

The app never modifies or deletes your original data. However, in case of any unexpected problems, you might lose the modifications saved within the app. Even though this has never happened to me, I still advice to backup the database regularly (I personally do not do that, though). The app creates a database in each project directory under _spmimages_cache/db.jld2 (some older versions of this file are kept as well). This file contains all your edits, keywords, etc. and can be copied as a backup. Any filesystem backup solution should handle this.

Known issues

Currently, the app does not "survive" standby/sleep mode. So please save your work before putting your computer to sleep.


Please only use the app if you read the disclaimer above and feel brave enough to do so.

To install and use, do the following:

  1. Install Julia
  2. Start Julia and type the following two commands:
using Pkg
  1. To run the app, type (within Julia):
using SpmImageTycoon

(if there are any firewall requests, please accept them - it is only for local server/client communication)

  1. As a more convenient alternative to 3, just use one of the scripts in the helpers directory to start the app. There is a shell script for linux, as well as a bat script for windows and also an autohotkey script. You can find more information on autohotkey here.

Update an existing installation

  1. Start Julia and type the following two commands:
using Pkg
  1. done

Alternative Installation

As an alternative to the installation process described above, you can use SpmImage Tycoon Installer. It will install a compiled version of SpmImage Tycoon with much improved startup speed. Furthermore, it can create startmenu and desktop shortcuts. This way of installation also allows to copy the app from one computer to another, by simply copying the installation directory.

This will become the main way of installation in the future.


If you use the app for your scientific work, please consider citing it:


  doi = {10.21105/joss.04644},
  url = {https://doi.org/10.21105/joss.04644},
  year = {2022},
  publisher = {The Open Journal},
  volume = {7},
  number = {77},
  pages = {4644},
  author = {Alexander Riss},
  title = {SpmImage Tycoon: Organize and analyze scanning probe microscopy data},
  journal = {Journal of Open Source Software}

You can stop reading here and start using the app now.

Real world case study


Tips and tricks

  • Fast access to the file system is crucial - do not use this app on a slow networked file system.
  • The first startup after installation (or update) can be slow - it is due to initial compilations. I am working on a solution to this.
  • To gain a significant speedup through mutlithreading, start Julia with multiple threads, e.g.: julia --threads=auto
  • There is a small overhead to apply color schemes; for performance it is best to use the standard "gray" color scheme.
  • Extra settings (such as default channels and the default color scheme) can be changed in the <homedir>/.spmimagetycoon/settings.toml file.

Ok, now you really can stop reading.

Technical background

The app is written in Julia, using Blink.jl for the Electron-based frontend.

The Julia source code is in the src directory, the HTML, CSS, and JavaScript source code for the frontend is in the res directory.


The program relies on

Third party libraries (included)

The following javascript and css libraries are included in the app:

Automated tests

Build Status Coverage SpmImageTycoon Downloads

Get in touch and contribute

Contributions are very welcome. Please post issues, suggestions, and pull requests on github. If you want to contribute to the code, take a look at the technical background and contribution guidelines; and please get in touch with me.

Follow me on twitter for updates and more information about this project: Twitter

Related projects

  • SpmImages.jl: Julia library to read and display SPM images.
  • SpmSpectroscopy.jl: Julia library to read and analyze SPM spectra.
  • SpmGrids.jl: Julia library to read and analyze SPM grid spectroscopy.
  • imagex: Python scripts to analyze scanning probe images.
  • gridex: Python scripts to analyze 3D grid data.