Python library for Bruker AFMi Nanoscope files

data-analysis, python, scientific, semiconductor-surfaces
pip install nanoscope==1.2.300


NanoScope AFM

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 ='./file.000')
print(p.height.zrange, p.height.rms)
pixels = p.height.colorize()

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 ='./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 ='./file.000')
p.height.flatten()  # flatten the image, defaults to first-order flatten
p.height.convert()  # convert the raw data to scaled values