Fitz Lab Rigs Overview
[This page is out of date as of 2010!]
This document provides an overview of the various recording configurations that have been used in the Fitzpatrick lab at Duke, and the principles of operation. Many scientists have had a role in creating these software and hardware combinations, and I'll do my best to acknowledge everyone's contribution here!
Rigs overview, Fitzpatrick lab
Prairie Technologies 2-photon rig
Consists of three computers; the Prairie 2-photon computer, a Macintosh OS 9 machine for visual stimulation, and a PC for data acquisition and synchronization.
Electrophysiology/intrinsic imaging rig
Consists of three computers; the VDAQ image acqusition computer, a Macintosh OS 9 machine for visual stimulation, and a PC for data acquisition and synchronization.
The FitzLab triggering and synchronization system
[Initially designed by Tom Tucker]
The clocks on modern computing devices are not synchronized from computer-to-computer; each one drifts at a rate a few microseconds per minute off from its neighbor. For this reason, synchronization of events that are generated or recorded on different computers are best synchronized by generating triggers that are recorded on a common machine. In the Fitzpatrick lab, this common machine is the data acquisition / analysis computer.
In the Fitzpatrick lab, the visual stimulus computers are Mac OS 9 desktop computers. Each stimulus computer is outfitted with a National Instruments PCI-DIO-96 parallel card for 1) communicating its state to the acquisition computer, and 2) reading stimulus commands (in practice, only the Optical Imaging, Inc., VDAQ system issues time-locked stimulus commands). The state output consists of 10 digital (5V or 0V for on or off) that indicates the status. One line (called Stim Trig) goes high at the onset of a visual stimulus; another line (Stim Sync) goes high each time the image changes on the screen (that is, it goes high briefly at the onset of each different video frame that is presented). The remaining 8 lines encode the Stim Code, a signal that can range from 0..255. The Stim Code is signalled at the same time as the Stim Trig line goes high, and can be used by the acquisition computer to read the stimulus number that is being shown on the screen (or played as a sound, depending upon the stimulus).
This state information is physically transmitted from the stimulus computers to our acquisition system via an interconnect box that has connections with 1) the PCI-DIO-96 board in the stimulus computer via National instruments ribbon cable, 2) the Cambridge Electronic Design 1401 acquisition system via 2 parallel ports (one for input to 1401, one for output from 1401), and 3) an Optical Imaging Inc, VDAQ board via 2 parallel ports (one for input to VDAQ, one for output from VDAQ). The interconnect is constructed by physically wiring connections from the PCI-DIO-96 output cable to a box with parallel port outputs (see "Stimcode interconnect.pdf" below).
On the acquisition side, the 1401 receives the Stim Trig and Stim Code signals via the parallel port, and indicates the stimulus code that it reads after each Stim Trig on the digimark channel in the Spike2 acquisition record. Usually, we use an external BNC cable to connect the Stim Sync channel to one of the inputs on the 1401. In this way, we obtain a record for stimulus onset, the stimulus number, and the time of each visual data frame change.
When the VDAQ system is used, the VDAQ insists on being the "master" computer, and it creates the random order of stimulus presentation. It then sends this information via its output parallel port, which is in turn read by the PCI-DIO-96 card in the Mac. There is a 'GO' line that the Mac watches, and when it goes high, a stimulus code code (0..255) is read from 8 additional lines. This stimulus is then presented on the screen.
For 2-photon recording, we typically connect the frame trigger of the 2-photon acquisition system to the 1401 so the trigger times can be extracted. The 2-photon can be configured to record frames in response to triggers, or to record asynchronously and generate triggers at each frame. Typically, we have recorded asynchronously, and the Prairie system generates triggers. The type of triggers that are generated varies with the Prairie Time Series acquisition mode. If "max speed" is unchecked, then there is a trigger generated at the onset of each frame (note: SV is _pretty sure_ it is the onset, and not the offset), so the number of triggers will equal the number of frames. Note that this mode has about a 300ms pause between frames for PrairieView to convert from its block file format to a .TIFF, which it does on the fly. If "max speed" is checked, then PrairieView only generates a trigger at the beginning of each Cycle; for this reason, we always record 3 cycles per record, to ensure we get at least 3 frames that are time stamped. In this mode, the number of triggers is equal to the number of cycles. The timing of individual 2-photon frames is computed by linearly interpolating between the times of all frames reported by the Prairie computer (recorded in the xml header file for that record) and the trigger times that are also recorded on the 1401. The analysis software calculates the time each pixel was recorded (using dwell time, line period, and frame period times, which include the acceleration/deceleration times of the mirrors), so we know whether each pixel corresponds to stimulated time or unstimulated time. We don't chunk whole frames, we do it at the pixel level (so, the software "knows" that the upper left is recorded about 1s earlier than the lower right, for example; it knows the time precisely for each pixel).
In the past, 2 strategies have been employed for interpreting the stimulus codes. Tom Tucker used to perform all of his analysis online in Spike2, and he assigned every stimulus he would show a number between 0 and 255. For example, for 16 orientation stimuli, he might use codes 0...17 (for each condition and a blank). This would be fixed across his experiments, and so he could record an individual cell in one long spike2 record.
More recently, Steve Van Hooser has recorded 1 stimulus run per Spike2 record, and has stored the results in an associated t0000N directory. All of the data for a given stimulus run is stored in this directory,and the spike2 script that is run extracts spike times, stimulus times, trigger times, etc, and places them in the directory. The stimulus computer also writes a stims.mat file that includes the stimulus script that was run, so that all parameters of the stimuli may be extracted by the analysis program. In this case, before analysis, the stimulus timing reported by the stimulus computer's own timing record and that recorded by Spike2 are reconciled before analysis.