ScanData

The AFM Software Suite stores data from a scan, including all relevant metadata, in one compact file with the file extension .imp (e.g. scan01234.imp). The ScanData class manages the storage and retrival of the data. If you want to write your own Python scripts to analyze multifrequency data taken with the IMP Software Suite, you will need to use the ScanData class. Either copy the file from the IMP Software Suite (default path C:\Program Files\IMP Software Suite\Scanner\ScanData.py) and place in the directory of your own script, or import it using the code below.

>>> import sys
>>> suite_path = r'C:\Program Files\IMP Software Suite'
>>> sys.path.append(suite_path)
>>> from Scanner import ScanData

The documentation below was auto generated from the doc strings in Python code at the time this manual was compiled. You can always see the documentation of the actual class version that you are using in the Python code itself, using auto-complete with any good Python IDE.

ScanData Class

class afmapp.Scanner.ScanData.ScanData(filename=None)

This class handles the storage and retreval of data to and from a scan file (e.g. scan01234.imp). The class is designed to be easily extendable and new functions will be added as the IMP Suite grows. Most functions set data in, or get data from the containers provided in the class.

Units are specified in square brackets in the doc strings. In additon to SI units (e.g. [Hz], [sec], [Volts], …) some functions use the following native lockin, or digital units:

  • PCU - phase counter units, an integer number between 0 and 2**42.

  • ADU - analog to digital units, integer steps of an AD converter.

  • DAU - digital to analog units, integer steps of a DA converter

Examples

>>> # instanciate class and load data from file
>>> sd = ScanData.ScanData('scan01612.imp')
>>> # get the frequency array, units Hz
>>> freqs = sd.get_karray()*sd.get_df()
>>> # load all image data in to a large array, complex format, untis [ADU]
>>> image_data = sd.get_data()
>>> # pick out the spectrm at one pixel x=100, y=99, and convert to units [nm]
>>> pixel = image_data[:, 99, 100]*sd.get_invOLR()
>>> # convert from complex format to amplitude and phase
>>> amps = np.abs(pixel)
>>> phases = np.arctan2( np.imag(pixel), np.real(pixel) )

Note

Functions in this class do not set or get the actual measurement conditions of the multi-frequency lockin. Setting data read from a file does not change the file on disk, unless the data is written again with ScanData.ScanData.save_to_file()

get_Q(mode_type='flexural', mode_nr=1)

Get the cantilever quality factor.

Parameters
  • mode_type (str, optional) – Name of mode, i.e. ‘flexural’ or ‘torsional’

  • mode_nr (int, optional) – Mode number, i.e. 1, 2, 3, …

Returns

mode quality factor

Return type

float

Raises

CalibrationError – if the mode was not calibrated

get_amplitudes(unit='digital')

Drive amplitudes for every tone. Undriven tones have zero amplitude.

Parameters

unit (str, optional) – {‘digital’, ‘ADU’, ‘calibrated’, ‘V’, ‘percent’, ‘%’}

Raises
  • CalibrationError – if the specified units require conversion, but no MLA calibration was set

  • ValueError – if unknown unit is specified

get_aspect()
Returns

aspect ratio of image (width over height)

Return type

float

Note

If no scan size was set, assumes images has aspect ratio 1

get_aspect_pixel()
Returns

aspect ratio of a pixel in the image (width over height)

Return type

float

Note

If no scan size was set, assumes images has aspect ratio 1

get_calib_mode_index(mode_type=None, mode_nr=1)

Find the index of calibration (if exist) in self.calib_list. Else return False and index=None.

Parameters
  • mode_type (str, optional) – type of cantilever mode, flexural or torsional

  • mode_nr (int, optional) – mode number

Returns

cal_exists, mode_index

bool: True if the calibration was found, False otherwise int: the index of the required calibration. None if not found.

Return type

tuple

get_cantilever_noise(mode_type='flexural', mode_nr=1)

Get the thermal noise force.

Parameters
  • mode_type (str, optional) – Name of mode, i.e. ‘flexural’ or ‘torsional’

  • mode_nr (int, optional) – Mode number, i.e. 1, 2, 3, …

Returns

cantilever thermal noise force in ADU**2 / Hz

Return type

float

Raises

CalibrationError – if the mode was not calibrated

Examples

>>> sd = ScanData.ScanData('scan01612.imp')
>>> psd = np.sqrt(sd.get_cantilever_noise()) * sd.get_k() * sd.get_invOLR() * 1e15
>>> print "Cantilever thermal noise force is {:.2f} fN/sqrt(Hz)".format(psd)
Cantilever thermal noise force is 21.90 fN/sqrt(Hz)
get_data(data_slice=(slice(None, None, None), slice(None, None, None), slice(None, None, None)), scan_pass='trace', data_format='complex', unit='ADU')

The data measured during the scan.

Parameters
  • data_slice (tuple, optional) – tuple of Python slice objects (tone_slice, y_slice, x_slice).

  • scan_pass (str or int, optional) – {‘trace’, ‘retrace’, ‘interleave trace’, ‘interleave retrace’} specifies scan pass.

  • data_format (str, optional) – {‘IQreal’, ‘complex’, ‘amp’, ‘phase’} specifies data type.

  • unit (str, optional) – {‘ADU’, ‘V’, ‘m’, ‘nm’, ‘rad’, ‘deg’} specifies units. ‘rad’ and ‘deg’ only for phase.

Returns

slice of the 3D data set. The data set has shape [index of tone, pixel y coord , pixel x coord]

Return type

np.ndarray

Examples

>>> sd = ScanData.ScanData('scan01612.imp')
>>> # get engaged response at pixel x=99 y=88, trace, complex values, in nm.
>>> data = sd.get_data(unit='nm')
>>> pixel = data[ : , 88 , 99 ]
>>> # alternative way, which avoids large object 'data'
>>> data_slice = np.s_[ : , 88 , 99 ]
>>> pixel = sd.get_data( data_slice, unit='nm')
>>> # get phase image at tone number 15, retrace, in degrees.
>>> data_slice = np.s_[ 15 , : , : ]
>>> phase_image = sd.get_data( data_slice, scan_pass='retrace', data_format='phase', unit='deg')
Raises
  • CalibrationError – if the specified units require conversion, but no MLA calibration was set

  • ValueError – if the specified format and units are incompatible, or the scan pass, format or units are unknown

get_dc(port, scan_pass='trace', data_format='real', unit='V')

The DC measured during the scan.

Parameters
  • port (int) – input port number.

  • scan_pass (str or int, optional) – {‘trace’, ‘retrace’, ‘interleave trace’, ‘interleave retrace’} specifies scan pass.

  • data_format (str, optional) – {‘real’} specifies data type.

  • unit (str, optional) – {‘V’} specifies units.

Returns

2D image of DC values for specified port.

Return type

np.ndarray

Raises

ValueError – if no DC was saved for the specified port.

get_detector_noise(mode_type='flexural', mode_nr=1)

Get the detector noise floor.

Parameters
  • mode_type (str, optional) – Name of mode, i.e. ‘flexural’ or ‘torsional’

  • mode_nr (int, optional) – Mode number, i.e. 1, 2, 3, …

Returns

detector noise floor in ADU**2 / Hz

Return type

float

Raises

CalibrationError – if the mode was not calibrated

Examples

>>> sd = ScanData.ScanData('scan01612.imp')
>>> psd = np.sqrt(sd.get_detector_noise()) * sd.get_invOLR() * 1e15
>>> print "The detector noise floor is {:.2f} fm/sqrt(Hz)".format(psd)
The detector noise floor is 138.13 fm/sqrt(Hz)
>>> psd = np.sqrt(sd.get_detector_noise()) * sd.get_invOLR() * sd.get_k() * 1e15
>>> print "The equivalent noise force is {:.0f} fN/sqrt(Hz)".format(psd)
The equivalent noise force is 5013 fN/sqrt(Hz)
get_df()

Measurement bandwidth.

Returns

Hertz, Hz

Return type

float

Examples

>>> sd = ScanData.ScanData('scan01612.imp')
>>> df = sd.get_df()
get_drive_amplitudes()

Amplitudes of driven tones.

Returns

lockin output amplitude digital units (LOA)

Return type

np.ndarray(np.int64)

get_drive_karray()

Frequencies of driven tones, as multiples of measurement bandwidth (df).

Returns

frequencies where drive amplitudes are non-zero

Return type

np.ndarray(dtype=np.int64)

Examples

>>> sd = ScanData.ScanData('scan01612.imp')
>>> # create frequency array for drive frequencies, in Hz
>>> freqs = sd.get_drive_karray() * sd.get_df()
get_drive_phases()

Phases of driven tones.

Returns

radians

Return type

np.ndarray(dtype=np.float64)

get_endtime()

Time at end of scan, in seconds since the epoch.

Returns

seconds

Return type

float

get_external_filename()

The filename of an external file associated with this scan.

Returns

filename

Return type

str

Note

Currently not implimented.

get_f0(mode_type='flexural', mode_nr=1)

Get the cantilever resonance frequency.

Parameters
  • mode_type (str, optional) – Name of mode, i.e. ‘flexural’ or ‘torsional’

  • mode_nr (int, optional) – Mode number, i.e. 1, 2, 3, …

Returns

mode resonance frequency in Hz

Return type

float

Raises

CalibrationError – if the mode was not calibrated

get_feedback()

Feedback gains of the host AFM.

Returns

[i_gain, p_gain] of host AFM. Will return zero if not implimented on host AFM.

Return type

np.ndarray(dtype=float64)

get_free(data_format='complex', unit='ADU')

Spectrum of free cantilever oscillation.

Parameters
  • data_format (str, optional) – {‘IQreal’, ‘complex’, ‘amp’, ‘phase’} specifies data type.

  • unit (str, optional) – {‘ADU’, ‘V’, ‘m’, ‘nm’, ‘rad’, ‘deg’} specifies units. ‘rad’ and ‘deg’ only for phase.

Returns

spectrum of free cantilever oscillation, with required data format and units

Return type

np.ndarray

Raises
  • CalibrationError – if the specified units require conversion, but no MLA calibration was set

  • ValueError – if the specified format and units are incompatible, or the scan pass, format or units are unknown

See also

get_lift()

Examples

>>> sd = ScanData.ScanData('scan01612.imp')
>>> # get free response in nm.
>>> data = sd.get_free(unit='nm')
>>> freqs = sd.get_karray()*sd.get_df()
>>> #plot amplitude vs. frequency
>>> l, = plot(freqs, np.abs(data))
get_frequencies()

Frequencies of the measured tones.

Returns

Hertz, Hz

Return type

np.ndarray(dtype=np.float64

get_fs()

Lockin sampling frequency.

Returns

samples/second, Hz

Return type

float

get_imp_str_list(mode=- 1)

Function to create a string list to lable the tones

Parameters

mode (int, optional) – {-1,0,1,2,3}

Returns

strings with names of imp’s, e.g. ‘Drive1’, ‘Drive2’, ‘IMP3L’, etc.

Return type

list

mode

Returns

-1

strings as saved in ImageData

0

as mode=-1, but empty strings, automatic mode==2

1

as mode=-1, but empty strings, automatic mode==3

2

strings of karray_imp integers e.g ‘k = 345’

3

strings as defined in ScannerPannel e.g.

To Do:

depreciate this function and have imp_str_list set by user in drive constructor or set to default value in auto setup.

get_input_ports()

Input port for each of the measured tones.

Returns

array of port numbers [1-4] where tones are measured

Return type

np.ndarray(dtype=np.int64)

See also

mlaapi.lockin.Lockin.get_port() mlaapi.lockin.Lockin.set_input_multiplexer()

get_invOLR(mode_type='flexural', mode_nr=1)

Get the inverse optical lever responsivity.

Parameters
  • mode_type (str, optional) – Name of mode, i.e. ‘flexural’ or ‘torsional’

  • mode_nr (int, optional) – Mode number, i.e. 1, 2, 3, …

Returns

mode invOLR in m/ADU

Return type

float

Raises

CalibrationError – if the mode was not calibrated

get_k(mode_type='flexural', mode_nr=1)

Get the cantilever stiffness.

Parameters
  • mode_type (str, optional) – Name of mode, i.e. ‘flexural’ or ‘torsional’

  • mode_nr (int, optional) – Mode number, i.e. 1, 2, 3, …

Returns

mode stiffness in N/m

Return type

float

Raises

CalibrationError – if the mode was not calibrated

get_karray()

Frequencies of measured tones, as multiples of measurement bandwidth (df).

Returns

Return type

np.ndarray(dtype=np.int64)

Examples

>>> sd = ScanData.ScanData('scan01612.imp')
>>> # create array of frequencies in [Hz] where response was measured
>>> freqs = sd.get_karray() * sd.get_df()
get_lift(data_format='complex', unit='ADU')

Spectrum of cantilever oscillation at the lifted scanner position.

Parameters
  • data_format (str, optional) – {‘IQreal’, ‘complex’, ‘amp’, ‘phase’} specifies data type.

  • unit (str, optional) – {‘ADU’, ‘V’, ‘m’, ‘nm’, ‘rad’, ‘deg’} specifies units. ‘rad’ and ‘deg’ only for phase.

Returns

spectrum of lifted cantilever oscillation, with required data format and units

Return type

np.ndarray

Raises
  • CalibrationError – if the specified units require conversion, but no MLA calibration was set

  • ValueError – if the specified format and units are incompatible, or the scan pass, format or units are unknown

Note

Used for separating background forces from nonlinear forces

See also

get_free()

get_loaded_filename()

The filename used when loading ScanData from disk.

Returns

filename

Return type

str

get_metadata_ascii()

Return all metadata as a string new-line separated string

Returns

str

Strategy for all following data entries:

IDENTIFIER[UNIT]: DATA

get_mla_calibration()

The hardware calibration of the MLA.

Returns

dict

get_mla_firmware_version()

Version of the firmware loaded into the MLA.

Returns

version number

Return type

int

See also

mlaapi.hardware.Hardware.get_firmware_version()

get_original_filename()

The file name when the data was first stored.

Returns

filename

Return type

str

get_output_mask()

Each bit in the mask determines weather the corresponing tone should be added to the output.

Returns

a list of int with the mask for each of the two output ports

Return type

list

See also

mlaapi.lockin.Lockin.set_output_mask() mlaapi.utils.mask_to_int()

get_phases(unit='rad')

Drive phases for every tone.

Parameters

unit (str, optional) – {‘rad’, ‘deg’}

Raises

ValueError – if unknown unit is specified

get_resolution()

Get the scan resolution.

Returns

(nx, ny)

int: number of pixels in fast-scan direction. int: number of pixels in slow-scan direction.

Return type

tuple

get_samples_per_pixel()

Number of samples in time window corresponding to one image pixel, fs/df.

Returns

samples per pixel

Return type

float

get_scan_rate()

Number of scan lines per second (trace + retrace).

Returns

Hertz, Hz

Return type

float

get_scan_size_x()
Returns

scan size in the fast-scan direction x in meters

Return type

float

Note

Scan size is determined by the host AFM. It is either entered manually in the GUI, or automaically when reading in height data. Automatic over-writes manual.

get_scan_size_y()
Returns

scan size in the slow-scan direction y in meters

Return type

float

Note

Scan size is determined by the host AFM. It is either entered manually in the GUI, or automaically when reading in height data. Automatic over-writes manual.

get_scan_subtype()

Additional scan sub-type identifier.

Returns

str

get_scan_type()

Scan type identifier (e.g. ImAFM, ImEFM, ImFFM, …).

Returns

str

get_setpoint()

Amplitude setpoint.

Returns

value of setpoint (at end of scan). Value between 0 and 1 is

the fraction of free oscillation amplitude at the feedback tone with index 0n (i.e. first element of frequency array and response arrays)

Return type

float

get_starttime()

Time at start of scan, in seconds since the epoch.

Returns

seconds

Return type

float

get_tip_Vac()

AC voltage applied to the tip in ImEFM.

Returns

Volts, V

Return type

float

get_tip_Vdc()

DC voltage applied to the tip in ImEFM.

Returns

Volts, V

Return type

float

get_transimpedance_gain(free=False)

Transimpedance gain, used in ImCFM.

Parameters

free (bool) – if True return gain used when measuring free, otherwise gain when measuring data

Returns

gain, V/a, or np.nan if not set

Return type

float

given_list_is_empty(lst)
Returns

True if list is [] or only has elements of type ‘’, otherwise False.

Return type

bool

has_calibration(mode_type='flexural', mode_nr=1)

Check if a valid calibration is stored.

Parameters
  • mode_type (str, optional) – type of cantilever mode, flexural or torsional

  • mode_nr (int, optional) – mode number

Returns

True for a valid calibration

Return type

bool

load_from_file(filename, minimal=False)

Summary

Parameters
  • filename (str) – filename to be opened

  • minimal (bool, optional) – if True, only load parameters

Raises

FileVersionError – if file version not supported

reset_lift()

Empty previously stored lift data.

save_to_ascii(dirname=None)

Export to a collection of generically named ascii-files in the directory ‘dirname’.

Creates a separate subdirectory for the scan and separate files for each amplitude and phase image for easy import into Matlab or similar.

Parameters

dirname (str, optional) – if None, the directory is automatically named after the ScanData file

save_to_file(filename)

Saves all data in the ScanData class to an hdf5 file.

Parameters

filename (str) – desired filename

set_Q(Q, mode_type='flexural', mode_nr=1, verbose=True)

Set the cantilever quality factor for an existing calibration.

Parameters
  • Q (float) – quality factor

  • mode_type (str, optional) – Name of mode, i.e. ‘flexural’ or ‘torsional’

  • mode_nr (int, optional) – Mode number, i.e. 1, 2, 3, …

  • verbose (bool, optional) – If True, print a message to the console

Raises

CalibrationError – if the mode was not calibrated

set_amplitudes(amps_digital)

Drive amplitudes for every tone. Undriven tones have zero amplitude.

Parameters

amps_digital (np.ndarray(dtype=np.int64)) – digital units, ADU

set_calibration(mode_type, mode_nr, file_name, f0, Q, k, invOLR, cantilever_noise, detector_noise)

Set calibration based on mode_type and mode_nr.

Parameters
  • mode_type (str) – Name of mode, i.e. ‘flexural’ or ‘torsional’

  • mode_nr (int) – Mode number, i.e. 1, 2, 3, …

  • file_name (str) – Name of calibration file belonging to this calibration

  • f0 (float) – Mode resonance frequency in Hz

  • Q (float) – Mode quality factor

  • k (float) – Mode stiffness in N/m

  • invOLR (float) – Inverse optical lever responsitivy in m/ADU

  • cantilever_noise (float) – Cantilever noise in ADU**2/Hz

  • detector_noise (float) – Detector noise in ADU**2/Hz

Note

If mode is already calibrated, overwrite current calibration. If it doesn’t exist, add it to self.calib_list.

set_cantilever_noise(p_thermal, mode_type='flexural', mode_nr=1, verbose=True)

Set the thermal noise force for an existing calibration.

Parameters
  • p_thermal (float) – thermal noise force in ADU**2 / Hz

  • mode_type (str, optional) – Name of mode, i.e. ‘flexural’ or ‘torsional’

  • mode_nr (int, optional) – Mode number, i.e. 1, 2, 3, …

  • verbose (bool, optional) – If True, print a message to the console

Raises

CalibrationError – if the mode was not calibrated

set_detector_noise(p_detector_white, mode_type='flexural', mode_nr=1, verbose=True)

Set the detector noise floor for an existing calibration.

Parameters
  • p_thermal (float) – thermal noise force in ADU**2 / Hz

  • mode_type (str, optional) – Name of mode, i.e. ‘flexural’ or ‘torsional’

  • mode_nr (int, optional) – Mode number, i.e. 1, 2, 3, …

  • verbose (bool, optional) – If True, print a message to the console

Raises

CalibrationError – if the mode was not calibrated

set_df(df)

Measurement bandwidth.

Parameters

df (float) – Hertz, Hz

set_endtime(t0)

Time at end of scan, in seconds since the epoch.

Parameters

t0 (float) – seconds

set_external_filename(filename)

The filename of an external file associated with this scan.

Parameters

filename (str) – filename

Note

Currently not implimented.

set_f0(f0, mode_type='flexural', mode_nr=1, verbose=True)

Set the cantilever resonance frequency for an existing calibration.

Parameters
  • f0 (float) – resonance frequency in Hz

  • mode_type (str, optional) – Name of mode, i.e. ‘flexural’ or ‘torsional’

  • mode_nr (int, optional) – Mode number, i.e. 1, 2, 3, …

  • verbose (bool, optional) – If True, print a message to the console

Raises

CalibrationError – if the mode was not calibrated

set_feedback(array)

Feedback gains of the host AFM.

Parameters

np.ndarray (dtype=float64) – feedback parameters of host AFM [i_gain, p_gain]. Not implimented on all host AFMs.

set_free(free, data_format='complex', unit='ADU')

Spectrum of free cantilever oscillation.

Parameters
  • free (np.ndarray) – spectrum of free cantilever oscillation with specified data format and units

  • data_format (str, optional) – {‘IQreal’, ‘complex’} specifies data type.

  • unit (str, optional) – {‘ADU’, ‘V’, ‘m’, ‘nm’, ‘rad’, ‘deg’} specifies units. ‘rad’ and ‘deg’ only for phase.

Raises
  • CalibrationError – if the specified units require conversion, but no MLA calibration was set

  • ValueError – if the specified format and units are incompatible, or the scan pass, format or units are unknown

See also

set_lift()

Examples

>>> sd = ScanData.ScanData('scan01612.imp')
>>> # get free response in nm.
>>> data = sd.get_free(unit='nm')
>>> freqs = sd.get_karray()*sd.get_df()
>>> #plot amplitude vs. frequency
>>> l, = plot(freqs, np.abs(data))
set_frequencies(freqs_Hz)

Frequencies of the measured tones.

Parameters

freqs_Hz (np.ndarray(dtype=np.float64)) – Hertz, Hz

set_fs(fs)

Lockin sampling frequency.

Parameters

fs (float) – samples/second, Hz

set_input_ports(ports)

Input port for each of the measured tones.

Parameters

np.ndarray (dtype=np.int64) – array of port numbers [1-4] where tones are measured

See also

mlaapi.lockin.Lockin.get_port() mlaapi.lockin.Lockin.set_input_multiplexer()

set_invOLR(invOLR, mode_type='flexural', mode_nr=1, verbose=True)

Set the inverse optical lever reposponsivity for an existing calibration.

Parameters
  • invOLR (float) – inverse optical lever reposponsivity in m/ADU

  • mode_type (str, optional) – Name of mode, i.e. ‘flexural’ or ‘torsional’

  • mode_nr (int, optional) – Mode number, i.e. 1, 2, 3, …

  • verbose (bool, optional) – If True, print a message to the console

Raises

CalibrationError – if the mode was not calibrated

set_k(k, mode_type='flexural', mode_nr=1, verbose=True)

Set the cantilever stiffness for an existing calibration.

Parameters
  • k (float) – stiffness in N/m

  • mode_type (str, optional) – Name of mode, i.e. ‘flexural’ or ‘torsional’

  • mode_nr (int, optional) – Mode number, i.e. 1, 2, 3, …

  • verbose (bool, optional) – If True, print a message to the console

Raises

CalibrationError – if the mode was not calibrated

set_lift(lift, data_format='complex', unit='ADU')

Spectrum of cantilever oscillation at the lifted scanner position.

Parameters
  • lift (np.ndarray) – spectrum of lift cantilever oscillation with specified data format and units

  • data_format (str, optional) – {‘IQreal’, ‘complex’} specifies data type.

  • unit (str, optional) – {‘ADU’, ‘V’, ‘m’, ‘nm’} specifies units.

Raises
  • CalibrationError – if the specified units require conversion, but no MLA calibration was set

  • ValueError – if the specified format and units are incompatible, or the scan pass, format or units are unknown

Note

Used for separating background forces from nonlinear forces

See also

set_free()

set_mla_all_settings(mla)

Convenience function to set all MLA related settings from a mla instance.

Parameters

mla (mlaapi.mla_suite.MLA) – object instance of MLA

Note

This method will set self.nr_input_freq, self.nr_output_freq and call the methods listed in “See also”

set_mla_calibration(cal)

The hardware calibration of the MLA.

Parameters

cal (dict) –

set_mla_firmware_version(ver)

Version of the firmware loaded into the MLA.

Parameters

ver (int) – version number

See also

mlaapi.hardware.Hardware.get_firmware_version()

set_output_mask(mask)

Each bit in the mask determines weather the corresponing tone should be added to the output.

Parameters

mask (list) – a list of int with the mask for each of the two output ports

See also

mlaapi.lockin.Lockin.set_output_mask() mlaapi.utils.mask_to_int()

set_phases(phases_rad)

Drive phases for every tone.

Parameters

phases_rad (np.ndarray(dtype=np.float64)) – radians, rad

set_resolution(nx, ny)

Set the scan resolution.

Parameters
  • nx (int) – number of pixels in fast-scan direction.

  • ny (int) – number of pixels in slow-scan direction.

set_samples_per_pixel(samples_per_pixel)

Number of samples in time window corresponding to one image pixel, fs/df.

Parameters

samples_per_pixel (float) – samples per pixel

set_scan_rate(scan_rate)

Number of scan lines per second (trace + retrace).

Parameters

scan_rate (float) – Hertz, Hz

set_scan_size_x(value)
Parameters

value (float) – scan size in the fast-scan direction x in meters

set_scan_size_y(value)
Parameters

value (float) – scan size in the slow-scan diretion y in meters

set_scan_subtype(scan_subtype)

Additional scan sub-type identifier.

Parameters

scan_subtype (str) –

set_scan_type(scan_type)

Scan type identifier (e.g. ImAFM, ImEFM, ImFFM, …).

Parameters

scan_type (str) –

set_setpoint(value)

Amplitude setpoint.

Parameters

value (float) – between 0 and 1 is the fraction of free oscillation amplitude at the feedback tone with index 0.

set_starttime(t0)

Time at start of scan, in seconds since the epoch.

Parameters

t0 (float) – seconds

set_tip_Vac(value)

AC voltage applied to the tip in ImEFM.

Parameters

value (float) – Volts, V

set_tip_Vdc(value)

DC voltage applied to the tip in ImEFM.

Parameters

value (float) – Volts, V

set_transimpedance_gain(value, free=False)

Transimpedance gain, used in ImCFM.

Parameters
  • value (float) – gain, V/A

  • free (bool) – if True set gain used when measuring free, otherwise gain when measuring data