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)
See also
-
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()
See also
-
get_drive_phases
()¶ Phases of driven tones.
- Returns
radians
- Return type
np.ndarray(dtype=np.float64)
See also
-
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
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_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
See also
-
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
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_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