nanonis-xarray is a xarray plugin to read spectroscopy measurements saved in text
format (.dat) by a Nanonis Mimea
SPM control system from SPECS Surface Nano Analysis GmbH.
The data is read into a xarray.Dataset, where each measured channel (tunnelling current, AFM oscillation amplitude, …) is a xarray.DataArray with up to three dimensions:
- The independent variable of the measurement, such as sample bias voltage or tip z position;
- The sweep number, if the measurement has been repeated multiple times;
- The sweep direction (forward or backward), if the independent variable has been swept in both directions.
>>> import xarray as xr
>>> data = xr.open_dataset("tests/data/z.dat")
>>> data.coords
Coordinates:
* z_rel (z_rel) float64 2kB [m] -2.1e-10 -2.065e-10 ... 4.865e-10 4.9e-10
* sweep (sweep) int64 24B 1 2 3
* direction (direction) object 16B 'bw' 'fw'pint-xarray is used to associate a physical unit to each channel, unless xr.open_dataset() is called with quantify_vars=False:
>>> data["current"].pint.units
<Unit('ampere')>The header of the measurement is stored in the attrs nested dictionary:
>>> data.attrs["Z Spectroscopy"]["Number of sweeps"]
3
>>> data.attrs["Z Spectroscopy"]["backward sweep"]
TruePhysical quantities are stored as pint.Quantity, timestamps as datetime.datetime, and paths as pathlib.Path:
>>> data.attrs["NanonisMain"]["RT Frequency"]
<Quantity(10000.0, 'hertz')>
>>> data.attrs["Date"]
datetime.datetime(2015, 3, 27, 11, 49, 5)This library is under development: expect breaking changes. Nanonis binary formats (.sxm, .3ds) are currently not supported, and can be read by similar projects:
nanonispy2xarray-nanonis- ... and many more.
Cite nanonis-xarray in your published work using the metadata in CITATION.cff.
Specific DOIs and BibTeX entries for each released version can be found on Zenodo.