Documentation for the Code
The SPIEPy library has two package-modules: spiepy and spiepy.demo.
Package-module spiepy
SPIEPy (Scanning Probe Image Enchanter using Python) is a Python library
to improve automatic processing of SPM images.
-
class spiepy.Im
SPIEPy_image_structure
The attribute data is mandatory and contains the 2D array of image data.
-
spiepy.flatten_by_iterate_mask(im_in, mask_method='mean', fit_type='poly1', max_change=10, max_iterations=100, mask_options=[1, 'a', 5], master_mask=None)
Iteratively improves flattening using masking.
Repeats the masking and flattening in a loop until the change in the mask
is withing an acceptable number of pixels.
- Args:
- im_in : SPIEPy_image_structure or ndarray
- Contains the 2D array of image data.
- Kwargs:
- mask_method : str
- ‘peaks’ for masking method mask_by_troughs_and_peaks, ‘mean’ for
masking method mask_by_mean.
- fit_type : str
- ‘xy’ for fit method flatten_xy, ‘poly1’ and ‘poly2’ for fit method
flatten_poly_xy with respectively order 1 and 2.
- max_change : int
- Convergence conditions. Specifies the maximum number of pixels
allowed to change in a mask between iterations. If the number of
pixels is above this the mask is not considered converged, and
another iteration is performed.
- max_iterations : int
- Specifies the maximum number of iterations to be performed.
- mask_options : list
- List of 3 items which dependents on the masking method.
Item 1 is mult (mask_by_troughs_and_peaks) or mult (mask_by_mean).
Item 2 is sigma (mask_by_troughs_and_peaks) or mode (mask_by_mean).
Item 3 is a multiplier in minimum size (mask_by_troughs_and_peaks)
or the minimum size (mask_by_mean) in the mask_tidy method.
- master_mask : ndarray or None
- Should be a 2D logical array the shape of the image data. Pixels in
the image which match TRUE pixels in the mask, are considered
“masked out” and will always be in the the mask used for flattening.
- Returns:
- im_out : SPIEPy_image_structure or ndarray
- Final flattened image.
- mask : ndarray
- The mask used to generate the final flattened image.
- n : int
- The number of iterations used to generate mask. If mask did not
converge n is set to zero.
-
spiepy.flatten_by_peaks(im_in, mask=None, deg=2, sigma=1)
Polynomial plane flattening only on peaks in image.
- Args:
- im_in : SPIEPy_image_structure or ndarray
- Contains the 2D array of image data.
- Kwargs:
- mask : ndarray or None
- Should be a 2D logical array the shape of the image data. Pixels in
the image which match TRUE pixels in the mask, are considered
“masked out” and will not be used for flattening.
- deg : int
- Order of the polynomial, should be 1 or 2.
- sigma : float
- Standard deviation for Gaussian kernel. For noise filtering of the
image.
- Returns:
- im_out : SPIEPy_image_structure or ndarray
- Is input image minus fitted plane.
- im_plane : ndarray
- Is the plane which has been subtracted from the image.
-
spiepy.flatten_poly_xy(im_in, mask=None, deg=2)
Performs a polynomial plane fit of order ‘deg’ using the method of
least squares.
- Args:
- im_in : SPIEPy_image_structure or ndarray
- Image to be flattened.
- Kwargs:
- mask : ndarray or None
- Should be a 2D logical array the shape of the image data. Pixels in
the image which match TRUE pixels in the mask, are considered
“masked out” and will not be used for flattening.
- deg : int
- Order of the polynomial, should be 1 or 2.
- Returns:
- im_out : SPIEPy_image_structure or ndarray
- Is input image minus fitted plane.
- im_plane : ndarray
- Is the plane which has been subtracted from the image.
-
spiepy.flatten_xy(im_in, mask=None)
Flattens image with first order polynomial plane.
Performs a first order polynomial plane fit using an algorithm of
average line fits. This method is less susceptible to localised image
anomalies, than true plane fitting, but is only applicable for first
order planes.
- Args:
- im_in : SPIEPy_image_structure or ndarray
- Image to be flattened.
- Kwargs:
- mask : ndarray or None
- Should be a 2D logical array the shape of the image data. Pixels in
the image which match TRUE pixels in the mask, are considered
“masked out” and will not be used for flattening.
- Returns:
- im_out : SPIEPy_image_structure or ndarray
- Is input image minus fitted plane.
- im_plane : ndarray
- Is the plane which has been subtracted from the image.
-
spiepy.locate_masked_points_and_remove(p, mask)
Removes points from a list if they are found in a mask.
- Args:
- p : list
- Vectors for troughs and peaks of all of the x and y coordinates.
- mask : ndarray
- Should be a 2D logical array the shape of the image data. Any listed
points in a TRUE area of the mask are removed from the list.
- Returns:
- p : list
- Vectors for troughs and peaks of all of the x and y coordinates that
are not masked.
-
spiepy.locate_troughs_and_peaks(im, sigma=1)
Locates troughs and peaks in the image.
Similar to the Python module (scipy.ndimage.filters) functions
maximum_filter and minimum_filter except the image is first filtered
to remove noise. Also anything located touching the edge of the image
is not returned as it is probably not a true maxima/minima of the
surface.
- Args:
- im : SPIEPy_image_structure or ndarray
- Contains the 2D array of image data.
- Kwargs:
- sigma : float
- Standard deviation for Gaussian kernel. For noise filtering of the
image.
- Returns:
- p : list
- Vectors for troughs and peaks of all of the x and y coordinates.
-
spiepy.locate_steps(im, sigma=2, low_threshold=0.1, high_threshold=0.2)
Locates step edges in an image.
Uses the Canny edge finding routine, DOI: 10.1109/TPAMI.1986.4767851,
to locate step edges in an image. The image should be flattened before
input for best results. For images with atomic resolution consider using
locate_regions to create the input image.
- Args:
- im : SPIEPy_image_structure or ndarray
- Contains the 2D array of image data.
- Kwargs:
- sigma : float
- Standard deviation for Gaussian kernel. Very important parameter.
- low_threshold : float
- The low threshold for the thresholding with hysteresis method.
- high_threshold : float
- The high threshold for the thresholding with hysteresis method.
- Returns:
- mask : ndarray
- The output is a 2D logical array with the shape of the image data.
-
spiepy.locate_regions(im_in, sigma=1, mask=None)
Increases terrace contrast on atomic resolution images.
An image is produced where the contrast of the atoms is being reduced
so that the terrace contrast becomes more clearer.
- Args:
- im_in : SPIEPy_image_structure or ndarray
- Contains the 2D array of image data.
- Kwargs:
- sigma : float
- Standard deviation for Gaussian kernel. For noise filtering of the
image.
- mask : ndarray
- Should be a 2D logical array the shape of the image data. All
contrast will be removed from the masked areas.
- Returns:
- im_out : SPIEPy_image_structure or ndarray
- Is input image with adjusted contrast.
- peaks : tuple
- Vectors for peaks (atoms) of all of the x and y coordinates that are
not masked.
-
spiepy.mask_by_mean(im, master_mask=None, mult=1, mode='a')
Generates a mask of high and low areas defined by the mean.
- Args:
- im : SPIEPy_image_structure or ndarray
- Contains the 2D array of image data.
- Kwargs:
- master_mask : ndarray or None
- Logical array with the shape of image data. Any TRUE areas in the
master_mask are not used by any parts of the function. Allows the
function to effectively be run on a section of an image.
- mult : float
- The number of standard deviations from the average is masked.
- mode : str
- 3 possible modes selected by strings. “a” is all high and low areas
are masked, “l” only low areas are masked, “h” only high areas are
masked.
- Returns:
- mask : ndarray
- The output is a 2D logical array with the shape of the image data.
-
spiepy.mask_by_troughs_and_peaks(im, master_mask=None, mult=(0.3, 0.3), sigma=1)
Generates a mask of high and low areas of an image.
The function uses troughs and peaks in the image to find the mean trough and
peak height. The difference between these gives the surfaces corrugation.
Any pixel more than 0.3 the surface corrugation above the mean peak height
or 0.3 the surface corrugation below the mean trough height is masked TRUE.
- Args:
- im : SPIEPy_image_structure or ndarray
- Contains the 2D array of image data.
- Kwargs:
- master_mask : ndarray or None
- Logical array with the shape of image data. Any TRUE areas in the
master_mask are not used by any parts of the function. Allows the
function to effectively be run on a section of an image.
- mult : tuple of two floats
- Modifies the multiple of the corrugation height used. For example if
mult[1] = 0.7, high areas are now defined as 0.7 times the
corrugation height above the mean peak height. Same for low areas
using mult[0].
- sigma : float
- The filter parameter used to locate the troughs and peaks, explained
in detail in the help for locate_troughs_and_peaks.
- Returns:
- mask : ndarray
- The output is a 2D logical array with the shape of the image data.
- p : list
- Vectors for troughs and peaks of all of the x and y coordinates that
are not masked.
-
spiepy.mask_tidy(mask, min_size=5)
Cleans up masks.
Holes in masked areas and small masked areas are removed.
- Args:
- mask : ndarray
- Should be a 2D logical array the shape of the image data.
- Kwargs:
- min_size: int
- Minimal area size of object in mask.
- Returns:
- mask : ndarray
- The output is a 2D logical array with the shape of the image data.
-
spiepy.measure_feature_properties(im, p, thresh_frac=0.8, box_mult=10.0)
Analyses surface features such as atoms or molecules.
Feature and minimum coordinates can be generated with
locate_troughs_and_peaks. Features are masked and then analysed.
- Args:
- im : SPIEPy_image_structure or ndarray or MaskedArray
- Contains the 2D array of image data.
- p : list
- Vectors for troughs and peaks.
- Kwargs:
- thresh_frac : float
- Specifies the masking threshold as a fraction of the height
difference between the feature and its nearest local minimum.
- box_mult : float
- Features are analysed in a box centred on the feature, of width
box_mult * 2 * d, where d is the distance from the feature to its
nearest local minimum. Set higher for features known to be highly
non-circular. Any feature which has a mask which touches the edge
of its analysis box is deemed to be poorly resolved and is not
included in the statistics.
- Returns:
- properties : dictionary
- eccentricity : float
- The average eccentricity (0 is circular, < 1 is elliptic).
- area : float
- The average area.
- count_good : int
- The number of features used for statistics.
- mask_good : ndarray
- The output is a 2D logical array with the shape of the image
data. Masks all features used for statistics.
- mask_all : ndarray
- The output is a 2D logical array with the shape of the image
data. Masks all features.
-
spiepy.NANOMAP = standard orange colormap used by SPM software
Colormap objects based on lookup tables using linear segments.
The lookup table is generated using linear interpolation for each
primary color, with the 0-1 domain divided into any number of
segments.
Package-module spiepy.demo
Demonstration image files for SPIEPy.
-
spiepy.demo.list_demo_files()
List filenames of demo images.
- Returns:
- demos : dict
- Dictionary of enumerated filenames for the filename argument in
the function load_demo_file.
-
spiepy.demo.load_demo_file(f_name)
Loads the demo file into an image.
- Args:
- f_name : str
- The filename of the demo file.
- Returns:
- im : ndarray
- The image.