Python is a great language to use for automatic processing of scientific data. Scanning probe microscopes (SPM) produce scientific data in the form of images, images of surfaces that can have atomic or molecular resolutions. The microscope produces surfaces that are not level. Before you can analyse the surface, the surface must first be levelled (flattened). This Python library provides routines to flatten the surface and to generate statistical data on surface structures. Surfaces with contaminations, step edges and atomic or molecular resolution can be handled.
SPIEPy and SPIW - MATLAB Toolbox [source] are related projects. SPIEPy uses many algorithms originally designed by the SPIW project. The performance of these algorithms is discussed in REVIEW OF SCIENTIFIC INSTRUMENTS 84, 113701 (2013) [DOI].
The library SPIEPy has the packages spiepy with the modules for the tasks described above and spiepy.demo to generate sample data. With this sample data, you can familiarize yourself with SPIEPy.
Dependencies
SPIEPy requires the NumPy library (http://www.numpy.org), SciPy library (http://scipy.org) and the Matplotlib library (http://matplotlib.org).
Installation
Using pip:
> pip install SPIEPy
CLASSES
- Im
SPIEPy_image_structure, set attribute data with a 2D ndarray of image data, set all other attributes with the metadata of the image.
FUNCTIONS
Flattening functions:
flatten_by_iterate_mask
flatten_by_peaks
flatten_poly_xy
flatten_xy
Locating functions:
locate_masked_points_and_remove
locate_regions
locate_steps
locate_troughs_and_peaks
Masking functions:
mask_by_mean
mask_by_troughs_and_peaks
mask_tidy
Measuring functions:
measure_feature_properties
Demo functions:
list_demo_files
load_demo_file
DATA
- NANOMAP
Colormap which is the standard orange colormap used my most SPM software.
Help
On the interpreter console use the built-in help function to get the help page of the module, function, …
>>> import spiepy, spiepy.demo
>>> help(spiepy)
...
>>> help(spiepy.demo)
...
>>> help(spiepy.flatten_by_iterate_mask)
...
Documentation: https://webspace.science.uu.nl/~zeven101/SPIEPy/
Example usage
# -*- coding: utf-8 -*-
#
# Copyright © 2014 - 2017 Stephan Zevenhuizen
# Flattening terrace image, (09-10-2017).
#
import spiepy, spiepy.demo
import matplotlib.pyplot as plt
import numpy as np
im = spiepy.Im()
demos = spiepy.demo.list_demo_files()
print(demos)
im.data = spiepy.demo.load_demo_file(demos[1])
plt.imshow(im.data, cmap = spiepy.NANOMAP, origin = 'lower')
print('Original image.')
plt.show()
im_out, _ = spiepy.flatten_xy(im)
plt.imshow(im_out.data, cmap = spiepy.NANOMAP, origin = 'lower')
print('Preflattened image.')
plt.show()
mask = spiepy.locate_steps(im_out, 4)
plot_image = np.ma.array(im_out.data, mask = mask)
palette = spiepy.NANOMAP
palette.set_bad('#00ff00', 1.0)
plt.imshow(plot_image, cmap = palette, origin = 'lower')
print('Preflattened image, mask.')
plt.show()
im_final, _ = spiepy.flatten_xy(im, mask)
plt.imshow(im_final.data, cmap = spiepy.NANOMAP, origin = 'lower')
print('Flattened image.')
plt.show()
y, x = np.histogram(im_out.data, bins = 200)
ys, xs = np.histogram(im_final.data, bins = 200)
fig, ax = plt.subplots()
ax.plot(x[:-1], y, '-b', label = 'Standard plane flattening')
ax.plot(xs[:-1], ys, '-r', label = 'SPIEPy stepped plane flattening')
ax.legend(loc = 2, fancybox = True, framealpha = 0.2)
ax.set_xlabel('z (nm)')
ax.set_ylabel('count')
plt.show()
Metadata
Release files for SPIEPy 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| SPIEPy-0.2.1.tar.gz | 4.4 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| SPIEPy-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 8.9 MB
Release files / SPIEPy-0.2.1.tar.gz
| Download URL | SPIEPy-0.2.1.tar.gz |
|---|---|
| Size | 4.4 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a0fd399b838e6b408dab5e4e29e8bfabec19a68187bc770ab28c62b5ebe4b0f8
|
|
BLAKE2b-256 checksum How to use checksums |
b6722645ff6cb4cc3838060926cc6edb3d17e95938ec148b1c8f8d59c4dbd13a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.12.0
|
Release files / SPIEPy-0.2.1-py3-none-any.whl
| Download URL | SPIEPy-0.2.1-py3-none-any.whl |
|---|---|
| Size | 4.4 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d7149766915440165518a3e9312cc219bcc7c7f6c29239017fbf20b21052b2e7
|
|
BLAKE2b-256 checksum How to use checksums |
7581714b8fe36d24278954e185a6e98045d2bac1e9533ba2e08b8640fc40c4c6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.12.0
|