Basic Usage

Here are a few workflows which should help you to get started with this web application. If you are missing a description here, please open an issue on GitHub. Thank you.

Uploading new data

  1. Visit the Select tab.
  2. If you want to add a topography to an existing surface, press its "View" button. Otherwise press the "Create surface" button and fill out the form, press "Save".
  3. The detail page for the surface opens. Press "Add topography" and follow the dialogue.

Analyzing surfaces and topographies

Comparing analysis results from multiple surfaces/topographies

  1. First visit Select, and use the checkboxes to select one or more surface and/or topographies. You can see the topographies by clicking on the small triangle on the left-hand side of a surface's name. The selected items appear in the bar underneath the top navigation bar, which always shows the current selection.
  2. Next to the current selection a button appears: Analyze Press it in order to view analyses for the current selection.
  3. Another tab opens named Analyze.
  4. Select one or more Analysis function by clicking on their checkboxes, e.g. choose Height Distribution and Power Spectrum.
  5. Press the button .
  6. For each analysis function a card is shown. You can use the toolbar at the plot to zoom/pan etc. or download the plot. Some analysis plots may provide additional feature's. They are accessible by pressing the "Open" button. Then a new tab opens showing only results for the related analysis function.

Showing analysis results for a single surface or topography

If you want to analyze a single surface or topography, there are also alternative ways:
  1. First visit the Select tab, and find the surface you are interested in. Press the "Analyze" button on the right-hand side of the row. Then automatically, this surface is selected with all of its topographies and the "Analyze" tab is loaded. This also works for topographies.
  2. If you want to analyze a single topography, there is also another way. You can enter the surface by pressing the button "View". Now open the topography, either by pressing the corresponding bar in the bandwidth plot or by sweeping through a gallery of topographies and clicking on one thumbnail. After the detail page for the topography has opened, press "Analyze this topography". The old selection is then replaced by this topography, and the Analyze tab opens.

Averaging analysis results over several measurements

Some analysis functions like Power Spectrum or Autocorrelation are not only calculated over single measurements (=topographies) but also as an average over all measurements of a surface. When selecting analysis function for display, these functions are denoted with "(Average)" in their name. If a surface has more then one measurement, additionally a thick line with an average is plotted on top of the other lines. The average is also included in the download of the data, together with an standard error estimate of the mean.

Supported File Formats

Extending the supported file formats is a continuous work in progress. If

  • you have a question or problem regarding the upload of topography data, or
  • your file is not supported, or
  • you need more information on this page here,
please send us an email or open an issue on GitHub. Thank you for your help.

The following file formats are supported. Please click on a file format name in order to expand the description for that format:

SurfaceTopography data stored in plain text (ASCII) format needs to be stored in a matrix format. Each row contains the height information for subsequent points in x-direction separated by a whitespace. The next row belong to the following y-coordinate. Note that if the file has three or less columns, it will be interpreted as a topography stored in a coordinate format (the three columns contain the x, y and z coordinates of the same points). The smallest topography that can be provided in this format is therefore 4 x 1.

The reader supports parsing file headers for additional metadata. This allows to specify the physical size of the topography and the unit. In particular, it supports reading ASCII files exported from SPIP and Gwyddion.

When writing your own ASCII files, we recommend to prepent the header with a '#'. The following file is an example that contains 4 x 3 data points:

# Channel: Main
# Width: 10 µm
# Height: 10 µm
# Value units: m
 1.0  2.0  3.0  4.0
 5.0  6.0  7.0  8.0
 9.0 10.0 11.0 12.0

Digitial Instruments Nanoscope files typically have a three-digit number as the file extension (.001, .002, .003, ...). This format contains information on the physical size of the topography map as well as its units. The reader supports V4.3 and later version of the format.

Imports topography data stored in MATLAB workspace files. The reader automatically extracts all 2D arrays stored in the file and interprets those as height information. Matlab files do not store units or physical sizes. These need to be manually provided by the user.

Files generated by the Vision software of the Bruker Wyko white-light interferometer.

File format of the Bruker Dektak XT* series stylus profilometer.

X3P is a container format conforming to the ISO 5436-2 (Geometrical Product Specifications — Surface texture) standard. The format is defined in ISO 25178 and is a standardized format for the exchange of surface topography data. The full specification of the format can be found here.

SurfaceTopography information can be provided as coordinate data. This is a text file that contains either two columns (for line scans) or three columns (for two-dimensional topographies) of data. The parser does not support reading header information. Units can therefore not be provided directly within this file format.

Line scans can be provided on a non-uniform grid. The x-coordinates do not need to be equally spaced and the surface specified in this format can be reentrant. The code interprets such topographies as piecewise linear between the points that are specified in the file.

Two-dimensional topography maps need to reside on a regular grid. The x- and y-coordinates need to be equally spaced.

Igor binary wave is a container format of the Igor Pro language. This format is used by AFMs from Asylum Research (now Oxford Instruments) to store topography information. This format contains information on the physical size of the topography map as well as its units.

This reader opens Agilent Technologies (Molecular Imaging) AFM files saved in the MI format. This format contains information on the physical size of the topography map as well as its units.

This reader reads topography data contained in a NetCDF container. The reader looks for a variable named heights containing a two-dimensional array that is interpreted as height information. The respective dimensions are named x and y.

The reader additionally looks for two (optional) variables x and y that contain the x- and y-coordinates of the first and second index of the height arrays. The attribute length of x and y must contain the physical size in the respective direction. The optional attribute length_unit of these variables describes the physical unit. The optional additional attribute periodic indicates whether the direction contains periodic data. If periodic is missing, the reader interprets the data as non-periodic.

An example file layout (output of ncdump -h) containing a topography map with 128 x 128 pixels looks like this:

netcdf test_nc_file {
    x = 128 ;
    y = 128 ;
    double x(x) ;
        x:length = 3LL ;
        x:periodic = 1LL ;
        x:length_unit = "μm" ;
    double y(y) ;
        y:length = 3LL ;
        y:periodic = 1LL ;
        y:length_unit = "μm" ;
    double heights(x, y) ;

The following code snippets reads the file and displays the topography data as a two-dimensional color map in Python:

import numpy as np
import matplotlib.pyplot as plt
from netCDF4 import Dataset

with Dataset('') as nc:
    heights = np.array(nc.variables['heights'])
    length_x = nc.variables['x'].length
    length_y = nc.variables['y'].length
    unit = nc.variables['x'].length_unit


nx, ny = heights.shape
x = (np.arange(nx)+0.5)*length_x/nx
y = (np.arange(ny)+0.5)*length_y/ny
plt.pcolormesh(x, y, heights)

Import filter for HDF5 files provided within the contact mechanics challenge. The reader looks for a two-dimensional array named surface. HDF5 files do not store units or physical sizes. These need to be manually provided by the user.

The original contact mechanics challenge data can be downloaded here.

Load topography information stored as a numpy array. The numpy array format is specified here. The reader expects a two-dimensional array and interprets it as a map of heights. Numpy arrays do not store units or physical sizes. These need to be manually provided by the user.

Data format of the NASA shuttle radar topography mission that recorded the ' earths topography. More information can be found here.