Nanoscope is a library to handle parsing and processing of Veeco Nanoscope Dimension AFM files. Currently hard-coded to only work for version 0x05120130 and 0x09300201 since that is what I have access to for testing, but it will likely work on newer versions.
The current featureset includes:
- Read raw Nanoscope files and image data (height, amplitude, phase, etc.)
- Calculate standard summary information (RMS Roughness, Z-range, etc.)
- Output the image in a Pillow-compatible format for saving
- Data is cached after individual process steps to avoid unneeded reprocessing
Nanoscope can be easily installed using pip.
$ pip install nanoscope
An example of typical usage is shown below, including using Pillow to save the image to png and printing Z-range and RMS data to the console
import nanoscope
from PIL import Image
p = nanoscope.read('./file.000')
p.height.process()
print(p.height.zrange, p.height.rms)
pixels = p.height.colorize()
Image.fromarray(pixels).save('file.png')
Arbitrary image types may also be accessed by name (case sensitive) and the name of all image types may be queried
The various image types can also be looped through using an iterator when processing, and the settings of the processing steps customized
import nanoscope
p = nanoscope.read('./file.000')
for img in p:
img.process(order=2) # flatten the image using second-order function
print(img.type, img.rms)
The processing steps can also be called individually if needed
import nanoscope
p = nanoscope.read('./file.000')
p.height.flatten() # flatten the image, defaults to first-order flatten
p.height.convert() # convert the raw data to scaled values