Shipped Modules¶
In the following, I have assembled a short description of the provided modules along with their location.
All of these are based on core.FSRSModule
or its more specialized derivatives.
Modules are activated by copying them from the folder available_modules into the folder installed_modules and restarting pyFSRS. Deactivation simply by deleting them again. You can have multiple copies of a module for different device instances, for example. But keep in mind that each class has to have the same name as the file.
The dummyXX modules are a great starting point for new hardware modules.
Note
The documentation of the modules is rather short and I am working on writing a more exhaustive documentation that also includes the module’s properties and controls.
Devices.dummyAxis¶
dummyAxis provides a dummy axis device for testing purposes. You can use this file as a starting point when writing your own axis device module for pyFSRS.
Devices.dummyCamera¶
dummyCamera provides a dummy camera device for testing purposes. You can use this file as a starting point when writing your own camera device module for pyFSRS.
Devices.dummyDAQ¶
dummyDAQ provides a dummy input device for testing purposes. You can use this file as a starting point when writing your own input device module for pyFSRS.
Devices.dummyShutter¶
dummyShutter provides a dummy output device for testing purposes, in this case a digital output. You can use this file as a starting point when writing your own output device module for pyFSRS.
Devices.Nanomotion¶
Nanomotion provides a pyFSRS axis module for the Melles Griot NanoMover II.
It is assumed that the axis is used for a single pass optical delay stage and, therefore, positions are in fs. This setting can easily be changed and adapted to individual needs by changing the value of self.fs2mm.
Only the first attached controller is used at the moment. Multiple controllers could be supported by implementing the howMany function. However, multiple axes per controller are supported. Individual axes can be selected through a choice box. Only the active axis can be moved by external modules.
On startup, all motors are initialized and unparked. The current position is set to self.home (default: -3000.0 fs). The axis then moves to 0.0. When decive is disconnected, all motors go to self.home and park.
Devices.NIShutter¶
NIShutter provides a digital output module for controlling optical shutters based on PyDAQmx. It opens the device specified by the address in its shutter-property, which is hardcoded in the module. If you would like to use several independent shutters or digital outputs, copy and rename this module and file.
Does not change the initial value of the outputs upon startup.
Devices.NIShutterAO¶
NIShutterAO provides an analog output module for controlling optical shutters based on PyDAQmx. It sends 0 / 5 V to the output to signal LOW / HIGH state. Currently, only channels ao0 and ao1 are supported but this can be changed easily in the code. It opens the device specified by the address in its shutter-property, which is hardcoded in the module. If you would like to use several independent shutters or digital outputs, copy and rename this module and file.
Sets all analog out channels (ao0, ao1) to 0V at startup.
Devices.NIStepper¶
NIStepper provides an axis module for 4-coil stepper motors controlled by a Darlington array and a National Instruments DAQ board through pyDAQmx. The hardware settings and a variable number of motors are setup through self.motors. Motor positions are in units of (micro-) steps. If you want to change this behaviour, change the value of self.units2steps and the type of the target from int to float.
Upon startup, all channels are set to LOW, i.e., no current. The same is true in between steps to minimize current flow and heat load. As a consequence, the motors should only be used for applications where they do not have to hold something against external forces, e.g., gravity. If you require this option, you have to disable all calls to self.Ioff, except the one in self.shutdown.
Non-blocking axis movement is provided by a specialized class derived from threading.Thread.
It supports the following general stepping sequences:
normal:¶
Step Channels 1 1 0 0 0 2 0 1 0 0 3 0 0 1 0 4 0 0 0 1
highTQ:¶
Step Channels 1 1 1 0 0 2 0 1 1 0 3 0 0 1 1 4 1 0 0 1
halfstep:¶
Step Channels 1 1 1 0 0 2 0 1 0 0 3 0 1 1 0 4 0 0 1 0 5 0 0 1 1 6 0 0 0 1 7 1 0 0 1 8 1 0 0 0
Devices.PIXIS100¶
Camera module for PrincetonInstrument’s PICam compatible cameras. Currently, only the first attached camera is used.
This module is optimized for a PIXIS100 with a 1340 x 100 pixel sensor chip. If you are using a different camera, you have to go through the code and adapt it where necessary.
Devices.SR830¶
SR830 provides support for the Stanford SR830 Lock-In through pyVISA. Iterates through all connected GPIB devices and adds a module for each SR830 that has been found.
xDAQ.DAQScan¶
DAQScan provides a module for reading a single value, e.g., from a lock-in, as function of optical delay time (=stage position). Data may be saved as a TAB-delimited two-column ASCII file (time, value).
xDAQ.DAQStats¶
DAQStast reads N samples from an input device and displays statistics. Data may be saved as a TAB-delimited two-column ASCII file (time, value).
xFSRS.FSRSAcquire¶
FSRSAcquire reads N frames from the camera and displays the results. Supports dT/T, TA and FSRS modes. Allows to acquire M sets of data. The final result will be the average over the M sets, i.e., effectively NxM frames. Each set is in addition saved as an individual file. Data are saved as TAB-delimited three-column ASCII files (A, B, C), where column B is pump-off, C pump-on (or vice versa) and column A is either B/C, -log10(B/C) or -log(B/C) depending on measurement mode.
xFSRS.FSRSFocus¶
FSRSFocus reads N frames from the camera and displays the results as a live stream. Great for alignment purposes. Supports dT/T, TA and FSRS modes. Data cannot be saved, use ‘FSRSAcquire’ or ‘FSFSScan’ instead.
xFSRS.FSRSScan¶
FSRSScan reads a series of ground state / excited state FSRS spectra. Supports also dT/T, TA and FSRS modes. Allows to acquire M sets of data. The final result will be the average over the M sets, i.e., effectively NxM frames. Each set and timestep is saved as an individual file. Data are saved as TAB-delimited three-column ASCII files (A, B, C), where column B is pump-off, C pump-on (or vice versa) and column A is either B/C, -log10(B/C) or -log(B/C) depending on measurement mode. File names follow the historical Mathies lab convention.
Allows also to simultaneously measure a reference signal, e.g., the actinic pump power from a photodiode using some specified input device. This reference will be saved individually as a TAB-delimited two-column ASCII file (time, value).
xFSRS.XCScan¶
Measure a 2D contour map consisting of camera signal vs delay time. Can be used to measure Kerr cross-correlation, TA-maps, FSRS-maps or dT/T-maps. Allows fitting of the data columnwise to a Gaussian to determine probe chirp and IRF. Data are saved as TAB-delimited (N+1)-column ASCII files (time, N-frequency columns), where the frequency columns depend on the measurement mode.