<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Neuroeng.</journal-id>
<journal-title>Frontiers in Neuroengineering</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Neuroeng.</abbrev-journal-title>
<issn pub-type="epub">1662-6443</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3389/fneng.2014.00043</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Neuroscience</subject>
<subj-group>
<subject>Methods Article</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>A low-cost programmable pulse generator for physiology and behavior</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name><surname>Sanders</surname> <given-names>Joshua I.</given-names></name>
<xref ref-type="aff" rid="aff1"/>
<xref ref-type="author-notes" rid="fn001"><sup>&#x0002A;</sup></xref>
<uri xlink:href="http://community.frontiersin.org/people/u/173194"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Kepecs</surname> <given-names>Adam</given-names></name>
<xref ref-type="aff" rid="aff1"/>
<uri xlink:href="http://community.frontiersin.org/people/u/7575"/>
</contrib>
</contrib-group>
<aff id="aff1"><institution>Neuroscience, Cold Spring Harbor Laboratory, Kepecs Lab, Cold Spring Harbor</institution> <country>NY, USA</country></aff>
<author-notes>
<fn fn-type="edited-by"><p>Edited by: Laura Ballerini, University of Trieste, Italy</p></fn>
<fn fn-type="edited-by"><p>Reviewed by: Domenico Caputo, La Sapienza University, Italy; Hun-Kuk Park, Kyung Hee University, South Korea</p></fn>
<fn fn-type="corresp" id="fn001"><p>&#x0002A;Correspondence: Joshua I. Sanders, Neuroscience, Cold Spring Harbor Laboratory, Kepecs Lab, Cold Spring Harbor, 1 Bungtown Road, NY 11724, USA e-mail: <email>sanders&#x00040;cshl.edu</email></p></fn>
<fn fn-type="other" id="fn002"><p>This article was submitted to the journal Frontiers in Neuroengineering.</p></fn>
</author-notes>
<pub-date pub-type="epub">
<day>11</day>
<month>12</month>
<year>2014</year>
</pub-date>
<pub-date pub-type="collection">
<year>2014</year>
</pub-date>
<volume>7</volume>
<elocation-id>43</elocation-id>
<history>
<date date-type="received">
<day>17</day>
<month>07</month>
<year>2014</year>
</date>
<date date-type="accepted">
<day>25</day>
<month>11</month>
<year>2014</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#x000A9; 2014 Sanders and Kepecs.</copyright-statement>
<copyright-year>2014</copyright-year>
<license license-type="open-access" xlink:href="http://creativecommons.org/licenses/by/4.0/"><p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution and reproduction in other forums is permitted, provided the original author(s) or licensor are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p>
</license>
</permissions>
<abstract><p>Precisely timed experimental manipulations of the brain and its sensory environment are often employed to reveal principles of brain function. While complex and reliable pulse trains for temporal stimulus control can be generated with commercial instruments, contemporary options remain expensive and proprietary. We have developed Pulse Pal, an open source device that allows users to create and trigger software-defined trains of voltage pulses with high temporal precision. Here we describe Pulse Pal&#x02019;s circuitry and firmware, and characterize its precision and reliability. In addition, we supply online documentation with instructions for assembling, testing and installing Pulse Pal. While the device can be operated as a stand-alone instrument, we also provide application programming interfaces in several programming languages. As an inexpensive, flexible and open solution for temporal control, we anticipate that Pulse Pal will be used to address a wide range of instrumentation timing challenges in neuroscience research.</p></abstract>
<kwd-group>
<kwd>Pulse Pal</kwd>
<kwd>stimulator</kwd>
<kwd>open source</kwd>
<kwd>optogenetics</kwd>
<kwd>maple</kwd>
<kwd>arduino</kwd>
<kwd>pulse generator</kwd>
<kwd>timing</kwd>
</kwd-group>
<counts>
<fig-count count="4"/>
<table-count count="0"/>
<equation-count count="0"/>
<ref-count count="37"/>
<page-count count="8"/>
<word-count count="5574"/>
</counts>
</article-meta>
</front>
<body>
<sec sec-type="introduction" id="s1">
<title>Introduction</title>
<p>Patterned voltage pulse trains are commonly used in neuroscience research to precisely control stimulus isolators (Flaherty and Graybiel, <xref ref-type="bibr" rid="B12">1994</xref>; Bisley et al., <xref ref-type="bibr" rid="B2">2001</xref>; Cohen and Newsome, <xref ref-type="bibr" rid="B9">2004</xref>; Histed et al., <xref ref-type="bibr" rid="B15">2009</xref>), light sources for optogenetic manipulations (Boyden et al., <xref ref-type="bibr" rid="B3">2005</xref>; Cardin et al., <xref ref-type="bibr" rid="B8">2009</xref>), sensory stimuli (Soto-Faraco et al., <xref ref-type="bibr" rid="B31">2002</xref>), and to synchronize events between instruments (Nikolic et al., <xref ref-type="bibr" rid="B22">2009</xref>). Pulse trains can also be also triggered by a particular experimental contingency, providing closed-loop feedback at low latency (Girardeau et al., <xref ref-type="bibr" rid="B13">2009</xref>; Venkatraman et al., <xref ref-type="bibr" rid="B32">2009</xref>; Ber&#x000E9;nyi et al., <xref ref-type="bibr" rid="B1">2012</xref>; Newman et al., <xref ref-type="bibr" rid="B21">2013</xref>). Laboratory instruments specialized for these purposes are commercially available, for example Master 8 (AMPI), PSG-2 (ISSI), Pulsemaster A300 (WPI), BPG-1 (Bak Electronics), StimPulse PGM (FHC Inc.) and Multistim 3800 (A-M Systems). Commercial solutions have been widely adopted, however their cost is a constraint in research and educational settings with limited funding. As proprietary instruments, researchers are also unable to add hardware or software features that would suit their unique needs: for instance, to implement a custom set of triggering rules in firmware, or to develop an interface to the device in a desired programming language. This flexibility can be especially beneficial for experimental design in systems neuroscience, where integration of custom instrumentation is frequently employed to measure and control behavior (Brunton et al., <xref ref-type="bibr" rid="B5">2013</xref>), acquire neural data (Yamamoto and Wilson, <xref ref-type="bibr" rid="B36">2008</xref>; Karlsson and Frank, <xref ref-type="bibr" rid="B18">2009</xref>) and to stimulate the brain both electrically (O&#x02019;Doherty et al., <xref ref-type="bibr" rid="B24">2009</xref>) and optically (O&#x02019;Connor et al., <xref ref-type="bibr" rid="B23">2013</xref>).</p>
<p>To address these needs, we developed Pulse Pal (Figure <xref ref-type="fig" rid="F1">1</xref>), an open source pulse train generator costing &#x0007E;$210 (US) in easily obtained parts, with essential functionality comparable to commercial stimulators.</p>
<fig id="F1" position="float">
<label>Figure 1</label>
<caption><p><bold>Pulse Pal is a programmable pulse train generator. (A)</bold> Pulse Pal front view, illustrating front panel features. 1: High contrast oLED screen permits programming with thumb joystick for stand-alone use. 2: Custom laser-cut acrylic enclosure. 3: Two optically isolated digital trigger channels. 4: Thumb joystick. 5: Rack-mount wing. 6: Channel activity indicators illuminate when channel voltage is not the set resting voltage (i.e., during a pulse). 7: Each of four analog output channels can be programmed with independent pulse trains and linked to either trigger channel.<bold> (B&#x02013;E)</bold> Example pulse trains in black, acquired with an oscilloscope (see methods). Trigger voltage traces are shown in red. <bold>(B)</bold> A Pulse Pal output channel configured to deliver a train of 5 V, 100 &#x000B5;s square pulses with 200 &#x000B5;s intervals. <bold>(C)</bold> A train of biphasic +/&#x02212;5 V 100 &#x000B5;s pulses, gated programmatically to produce pulse bursts. Trigger channel mode set to &#x0201C;toggle&#x0201D; aborts the ongoing pulse train in mid-burst when a second pulse arrives. <bold>(D)</bold> A train of 500 &#x000B5;s pulses with custom onset times and voltages. Pulses with consecutive onset times merge to form more complex waveforms (right). <bold>(E)</bold> A train of consecutive 100 &#x000B5;s pulses, whose voltages and onset times were configured to generate one period of a sine waveform. The output channel uses &#x0201C;loop mode&#x0201D;, to repeat the sine waveform until a parametrically specified pulse train end. The trigger channel mode was set to &#x0201C;pulse gated&#x0201D; mode, to abort the pulse train when its voltage returned low.</p></caption>
<graphic xlink:href="fneng-07-00043-g0001.tif"/>
</fig>
</sec>
<sec id="s2">
<title>System design</title>
<sec id="s2-1">
<title>Hardware</title>
<p>Pulse Pal was designed to be assembled at a laboratory soldering bench in approximately 1 h with minimal tools: a soldering iron, solder, a miniature Phillips head screw driver and a 4&#x02013;40 tap. We provide instructions for ordering the necessary parts, assembling the device and programming firmware on the Pulse Pal wiki<xref ref-type="fn" rid="fn0001"><sup>1</sup></xref>. Hardware design files, drivers, firmware, and software interfaces to the device in MATLAB, Python and C++ are provided in a public repository.<xref ref-type="fn" rid="fn0002"><sup>2</sup></xref> The assembled device and example pulse trains demonstrating key features are shown in Figure <xref ref-type="fig" rid="F1">1</xref>.</p>
<p>Pulse Pal&#x02019;s essential triggering and stimulation circuit for a single trigger and analog output channel are shown in Figure <xref ref-type="fig" rid="F2">2</xref>. Pulse Pal passes incoming trigger logic signals through an optocoupler IC to protect microcontroller input pins and reduce potential for ground loops. Trigger signals are then read by Pulse Pal&#x02019;s ARM Cortex M3 microcontroller (STM32F103RBT6, ST microsystems) provided as part of the open source Maple microcontroller platform (LeafLabs). The microcontroller generates analog waveforms by controlling an external 4-channel digital to analog converter (DAC) IC (MAX500ACPE+, Maxim Integrated Products), configured with bipolar output circuitry as specified in figure 9 of the MAX500 datasheet. This output circuitry consists of an Op Amp (TL084ACN, Texas Instruments) and two 10 k resistors (R3,R4) that divide the DAC reference voltage, collectively providing output voltages in the range of &#x02212;10 to +10 V from each (otherwise unipolar) DAC output channel. A capacitor (C1) was added across each amplifier to suppress voltage transient overshoot. Voltage instructions are sent to the DAC over an 18 MHz hardware serial bus. For bipolar operation in the range of &#x02212;10 to +10 V, the DAC requires power supplied at +/&#x02212; 12 VDC. This supply is derived from Maple&#x02019;s USB power supply with an integrated DC voltage converter (CC3-512DF-E, TDK Lambda). To set the range of the DAC to +/&#x02212; 10 V, a separate 10 V reference voltage is provided to the DAC from the +12 V supply, using a linear voltage regulator (L78S10CV, ST Microsystems).</p>
<fig id="F2" position="float">
<label>Figure 2</label>
<caption><p><bold>Schematic of the basic circuit for triggering and pulse generation</bold>. The schematic for Pulse Pal&#x02019;s trigger and stimulation circuitry is shown for a single trigger and output channel, omitting duplicate circuitry for all other channels. Thumb joystick, oLED display, indicator LED and EEPROM connections with the microcontroller were omitted for clarity.</p></caption>
<graphic xlink:href="fneng-07-00043-g0002.tif"/>
</fig>
<p>Further circuitry (not shown in Figure <xref ref-type="fig" rid="F2">2</xref>) was added to equip Pulse Pal for stand-alone operation. An oLED character display (NHD-0216KZW-AB5, Newhaven Display) and a two-axis pushbutton thumb joystick (802-30110A, P3 America) are used as an interface to program each channel&#x02019;s parameters and test-trigger the device from a menu tree implemented in firmware. To retain parameters across power cycles, we added an external EEPROM IC (on a separate 9 MHz serial bus to accommodate the chip&#x02019;s lower clock speed constraint; 25LC640A-I/P, Microchip Technology). An LED above each channel was added to indicate when the channel&#x02019;s voltage is set to a value different from its programmed resting voltage (i.e., the channel is delivering a pulse). The complete schematic and circuit board layout are provided in the Pulse Pal repository, as files for Eagle printed circuit board (PCB) software (CadSoft) and as GERBER files for PCB manufacture.</p>
</sec>
<sec id="s2-2">
<title>Software</title>
<p>The ARM processor that subserves Pulse Pal was programmed with custom firmware, written in the LeafLabs derivative of the Arduino language&#x02014;a C++ based programming language for AVR and ARM microcontrollers. Pulse Pal&#x02019;s firmware was programmed to execute its main loop every 50 &#x000B5;s when delivering pulse trains. Loop execution is triggered by a hardware timer, provided as an internal feature of the microcontroller. On each loop cycle, the microcontroller updates the DAC, reads trigger-channel logic and any single-byte USB serial instructions, computes the logic of the current cycle&#x02019;s voltage transitions, and adjusts indicator LED status. USB serial instructions employ a system of single byte op-codes, enabling a software client to program and trigger Pulse Pal, abort ongoing stimulation, set fixed voltages for output channels, or set logic values of Maple&#x02019;s I/O lines for debugging. To distinguish it from subsequent updates, the firmware version used to acquire performance data for the present publication is provided in a dedicated folder in the code repository.</p>
<p>Pulse Pal is programmed either using its thumb joystick interface or via USB by setting channel parameters (indicated below by their cross-platform syntax in italic, and illustrated in Figure <xref ref-type="fig" rid="F3">3</xref> for output channels). A single parameter for each trigger channel, <italic>TriggerMode</italic>, controls how it interprets incoming logic. Three trigger modes are provided: &#x0201C;normal&#x0201D;, &#x0201C;toggle&#x0201D; and &#x0201C;pulse gated&#x0201D;. In normal mode, an incoming logic pulse triggers all linked output channels, but subsequent triggers are ignored during playback. In toggle mode, subsequent triggers terminate ongoing pulse trains on linked output channels. In pulse gated mode, pulse trains are triggered by a low to high logic transition on the trigger channel, and terminated by the subsequent high to low transition if it occurs during playback.</p>
<fig id="F3" position="float">
<label>Figure 3</label>
<caption><p><bold>Illustration of output channel parameters</bold>.</p></caption>
<graphic xlink:href="fneng-07-00043-g0003.tif"/>
</fig>
<p>The stimulus parameters of each output channel can be independently programmed. Output channels can deliver either parametric pulse trains or custom pulse trains, for which each pulse has a specified onset time and voltage. Pulse shape and frequency are defined by 7 parameters: <italic>IsBiphasic</italic> (0 if pulses are monophasic, 1 if biphasic), <italic>Phase1Voltage</italic> (voltage of the first phase, &#x02212;10 V to +10 V), <italic>Phase2Voltage</italic> (same range), <italic>Phase1Duration</italic> (duration of the first phase, 0.1 s to 3600 s), <italic>InterPhaseInterval</italic> (the time between phases of a biphasic pulse), <italic>Phase2Duration</italic>, and <italic>InterPulseInterval</italic> (time between pulses). Pulse trains are defined by an additional 4 parameters: <italic>BurstDuration</italic> (time during which the underlying pulse train is gated &#x0201C;on&#x0201D;) <italic>BurstInterval</italic> (a period alternating with <italic>BurstDuration</italic> during which the pulse train is gated &#x0201C;off&#x0201D;), <italic>PulseTrainDelay</italic> (time between trigger and pulse train onset), and <italic>PulseTrainDuration</italic> (duration of the pulse train). Two custom pulse trains of up to 1,000 pulses each can be defined, where the user specifies the onset time and voltage of each pulse. Use of a custom train on an output channel is selected by setting the channel&#x02019;s <italic>CustomTrainID</italic> parameter to a non-zero value (1 or 2, specifying which train). For custom trains, two additional parameters are configurable: <italic>CustomTrainTarget</italic> (for onset times and voltages; 0 if these refer to pulses, 1 if these refer to bursts of pulses), and <italic>CustomTrainLoop</italic> (0 if pulse train ends after final pulse defined, 1 if pulse train loops from trigger until the value of <italic>PulseTrainDuration</italic>). Each output channel has three additional settings: <italic>LinkTriggerChannel1</italic>, <italic>LinkTriggerChannel2</italic> and <italic>RestingVoltage</italic>. The first two of these parameters specify which trigger channels control the output channel. The third specifies the output channel&#x02019;s resting voltage between pulse phases, pulses and pulse trains (0 V by default).</p>
<p>Design files for a device enclosure that can be laser cut from a single sheet of 30.48 &#x000D7; 30.48 cm (12&#x02033; &#x000D7; 12&#x02033;) acrylic are provided in the repository. Raster-engraved text in the design indicates channel and USB port identities. Light pipes (PLP2, Bivar) press into holes above each channel, routing light from indicator LEDs on the circuit board to the enclosure surface. The enclosure attaches to the circuit board with screws fastened to threaded circuit board stand-offs, and contains a removable wing for attaching the device to a server rack (shown in Figure <xref ref-type="fig" rid="F1">1A</xref>).</p>
</sec>
</sec>
<sec id="s3">
<title>Measures of reliability and precision</title>
<p>To validate Pulse Pal as a practical solution for stimulus control, we tested the precision and reliability of the shortest pulses the device can process on both trigger and output channels, and several other properties relevant for neurophysiology research. All tests were performed on a single Pulse Pal device, connected to a controlling computer (Macbook Pro, Apple).</p>
<p>While output channels are updated once per execution of the microcontroller&#x02019;s 50 &#x000B5;s main loop, the shortest configurable pulse is restricted to 100 &#x000B5;s (to ensure that the smallest output channel pulse can also reliably trigger the device). To measure the precision of a 100 &#x000B5;s pulse, we programmed Pulse Pal to deliver a train of three 100 &#x000B5;s pulses, separated by 100 &#x000B5;s intervals on all 4 output channels each time a software trigger was detected. Pulse Pal&#x02019;s first output channel was connected to a digital oscilloscope (DS1102D, Rigol). Pulse Pal was then software-triggered 100,000 times over 24 h by a custom test script written in MATLAB r2013a (Mathworks) on the controlling computer. After each trigger event, the resulting waveform was returned from the oscilloscope to the computer. Pulse Pal generated a unique waveform of three pulses after each trigger, demonstrating high software trigger reliability. The first 100 pulse trains are shown superimposed in Figure <xref ref-type="fig" rid="F4">4A</xref>, aligned to first pulse onset to demonstrate pulse jitter. The pulse widths of all 300,000 pulses are shown in Figure <xref ref-type="fig" rid="F4">4B</xref>. Cycle widths ranged from 96.9 &#x000B5;s to 102.9 &#x000B5;s, and 99.97% of pulses were within 3 &#x000B5;s of 100 &#x000B5;s.</p>
<fig id="F4" position="float">
<label>Figure 4</label>
<caption><p><bold>Measurements of precision and reliability. (A&#x02013;B)</bold> For a train of three 100 &#x000B5;s pulses with 100 &#x000B5;s pulse intervals: <bold>(A)</bold> the first 100 waveforms captured with the oscilloscope are shown superimposed, and <bold>(B)</bold> distribution of pulse widths measured from 100,000 3-pulse trains, captured as in <bold>(A)</bold>. <bold>(C&#x02013;D)</bold> For a train of a single 10 s pulse: <bold>(C)</bold> waveforms from the first 20 trials and <bold>(D)</bold> 10,000 pulse widths. <bold>(E)</bold> The latency of a pulse train of one 10 V, 100 &#x000B5;s pulse captured from an output channel (shown in black for 100 trials) was measured with respect to a 5 V, 100 &#x000B5;s pulse delivered to a linked trigger channel (shown in red). <bold>(F)</bold> Distribution of pulse train latencies for 100,000 trials. <bold>(G)</bold> 100 superimposed 78.1 mV pulses, showing the smallest possible increment of the digital to analog converter and channel noise caused by digital feed-through from the SPI bus. <bold>(H)</bold> Simultaneous and rapid settling of the voltage on channels 1 and 4 when delivering a +10 V pulse from a resting voltage of &#x02212;10 V. <bold>(I)</bold> USB transfer time is shown for a 5,006 byte message containing pulse times and voltages for a 1,000-pulse custom train. Transfer time was measured with hardware (HW, black; using firmware modified to indicate transmission start and end with a voltage pulse) and software (SW, gray; using the controlling computer&#x02019;s clock). <bold>(J)</bold> 1 ms pulses of light, produced by controlling a blue diode laser with Pulse Pal, converted to voltage with an Si transimpedence amplified photodetector (PDA10A, ThorLabs), and captured with an oscilloscope. Single traces are shown for voltage pulses ranging from 78 mV to 5 V in amplitude.</p></caption>
<graphic xlink:href="fneng-07-00043-g0004.tif"/>
</fig>
<p>Next, we measured clock drift, to ensure that the timing variability we observed in 100 &#x000B5;s-long pulses did not propagate. We programmed Pulse Pal to deliver a single 10 s pulse (spanning 200,000 microcontroller loop cycles) when triggered. We captured the resulting waveform on 10,000 trials with an analog capture device (NI USB-6210, National Instruments), sampled at 100 kHz. 100 example pulse waveforms are shown in Figure <xref ref-type="fig" rid="F4">4C</xref>, and all 10,000 pulse widths are shown in Figure <xref ref-type="fig" rid="F4">4D</xref>. All pulses measured either 9.99998 s or 9.99997 s, corresponding to a consistent clock drift of 3 &#x000B5;s/s with respect to the NI USB-6210 clock.</p>
<p>To measure pulse train latency and trigger channel reliability, we connected two Pulse Pals in series. The first was soft-triggered by the computer on each of 100,000 trials. It generated a single 5 V, 100 &#x000B5;s square pulse simultaneously on two output channels&#x02014;one delivered to the first trigger channel of the second Pulse Pal, and the other to an oscilloscope (see Figure <xref ref-type="fig" rid="F4">4H</xref> for a separate experiment demonstrating the simultaneity of these pulses). The second Pulse Pal generated a single 100 &#x000B5;s pulse on each output channel when its first trigger channel was triggered, which was captured from one output channel by a separate oscilloscope channel. In Figure <xref ref-type="fig" rid="F4">4E</xref>, 100 trials are shown. Trigger pulses from the first (triggering) Pulse Pal are shown in red, and pulses from the second Pulse Pal in black. All 100,000 pulses captured were unique waveforms, indicating high hardware trigger reliability. Output channel latency for all 100,000 trials ranged relatively uniformly between 91.0 and 146.7 &#x000B5;s (Figure <xref ref-type="fig" rid="F4">4F</xref>).</p>
<p>Next we sought to determine whether channel noise was low enough that a single bit DAC increment produced a non-overlapping change in voltage. Since the MAX500ACPE+ DAC that drives Pulse Pal&#x02019;s output channels has 8-bits of precision mapped across a 20 V range (&#x02212;10 V to +10 V), its least significant bit (LSB) increments the channel voltage by 78.1 mV. Therefore we set up PulsePal to trigger two 78.1 mV pulses 100 times (shown in Figure <xref ref-type="fig" rid="F4">4G</xref>). Fluctuations in voltage on individual trials ranged as much as 8 mV about the mean in the 100 ms interval prior to pulse train onset, and as much as 65 mV about the mean during the first 100 ms pulse. The increased noise during playback was mostly attributable to digital feed-through from the SPI channels controlling the DAC (data not shown), but remained significantly less than the DAC&#x02019;s minimum voltage increment. While several board layout and circuit modifications could be implemented by researchers wishing to further reduce digital feed-through (for instance, by optical isolation of the SPI bus), Pulse Pal can exploit the full bit-width of its DAC in its present form, rendering it useful for many control applications in neuroscience instrumentation. The resting voltage of the output channel was programmatically set to 0 V, but was measured in this experiment to be 10.55 mV (within the 15 mV &#x0201C;zero code error&#x0201D; specified for the MAX500ACPE+ DAC in its datasheet), indicating that an offset from the 0 V set-point was present but slight.</p>
<p>In experiments with precisely timed events, it is useful to produce signals that occur simultaneously. Therefore we measured the simultaneity of output channel updates by comparing pulses triggered on the first and last output channels. We set the first and fourth output channels to a resting voltage of &#x02212;10 V, delivered 100 +10 V pulses, and captured the rising waveform of each pulse with the oscilloscope (Figure <xref ref-type="fig" rid="F4">4H</xref>). On all trials, the output voltage on both channels settled within 100 mV of +10 V after 3.5 &#x000B5;s. This measurement also confirmed that DAC and output amplifier slew rates were fast enough to produce 100 us pulses useful for most applications in neuroscience research.</p>
<p>In many experiments, pulse train parameters and timing data must be updated rapidly in response to recently acquired information. Since the same microcontroller controls pulse timing and USB communication, Pulse Pal cannot be updated while a pulse train is being delivered. Therefore we sought to ensure that updates could be achieved rapidly between experimental trials. We measured the USB data transfer speed by sending a 1000-pulse train (5006 bytes) 100 times, from the Pulse Pal MATLAB client to Pulse Pal. For a measure of the hardware transfer speed without client-side software overhead, Pulse Pal&#x02019;s firmware was modified to indicate the start of data transfer by setting output channel 1&#x02013;5 V, and the end of data transfer by returning channel 1&#x02013;0 V. The resulting pulse was captured by the oscilloscope on each trial. The client-side transfer time was separately measured for the blocking MATLAB serial fwrite command, by flanking it with tic and toc commands. Transfers completed in 26&#x02013;35 ms (averaging 171 KB/s), while client-side overhead cost an additional 12 ms on average (Figure <xref ref-type="fig" rid="F4">4I</xref>). Consistent with this transfer speed measurement, a separate transfer updating <italic>all</italic> of Pulse Pal&#x02019;s channel parameters for all channels (163 bytes) completed on the hardware side in less than 1 ms (data not shown).</p>
<p>Finally, we sought to verify Pulse Pal&#x02019;s suitability for precise optical control in optogenetic experiments, by using it to control a 447 nm diode laser&#x02019;s timing and intensity. We connected the laser (BML447-50FLD, Lasermate Group) through an optical fiber (M31L02, ThorLabs) to a silicon transimpedence amplified photodetector (PDA10A, ThorLabs), delivered 1 ms pulses from a Pulse Pal output channel to the laser power supply&#x02019;s analog input, and captured the resulting waveforms with an oscilloscope (DS1102D, Rigol). Pulses ranged in amplitude from 78 mV to 5.0 V in 78 mV increments. In Figure <xref ref-type="fig" rid="F4">4J</xref>, the single traces captured for each voltage are shown superimposed, skipping every second voltage for clarity. Pulse Pal elicited precisely gated pulses of light from the laser, with programmatic (albeit slightly nonlinear) control of light intensity.</p>
</sec>
<sec id="s4">
<title>Applications</title>
<sec id="s4-1">
<title>Light timing and intensity control for optogenetics</title>
<p>Pulse Pal was originally developed in a laboratory setting, to provide an intuitive and affordable way to achieve fine temporal control in optogenetics experiments (Pi et al., <xref ref-type="bibr" rid="B26">2013</xref>). In these studies, Pulse Pal was used to control a laser coupled to an optical fiber as in Figure <xref ref-type="fig" rid="F4">4J</xref>, providing precisely timed pulse trains to photostimulate specific classes of interneurons. In this role, Pulse Pal provides a simple and open alternative to commercial pulse train generators (e.g., Master 8 (AMPI), PSG-2 (ISSI), Pulsemaster A300 (WPI), BPG-1 (Bak Electronics), StimPulse PGM (FHC Inc.) and Multistim 3800 (A-M Systems).</p>
</sec>
<sec id="s4-2">
<title>Sensory pattern generation with low latency gating</title>
<p>In the same research study, Pulse Pal doubled as a programmable waveform generator, providing simple, low-latency acoustic stimuli for a Go/No-Go perceptual decision task. In this application, each output channel directly drove a separate amplified speaker. Beyond the simple cues used in these experiments, temporally patterned auditory and visual pulse stimuli are often used to study the algorithmic basis for human and animal decision making. A binaural Poisson click stream (Sanders and Kepecs, <xref ref-type="bibr" rid="B29">2012</xref>; Brunton et al., <xref ref-type="bibr" rid="B5">2013</xref>) can be generated using Pulse Pal&#x02019;s custom pulse trains, where a 100 us, 1 V pulse delivered to an amplified headphone speaker generates a precisely timed audible click. For visual stimuli, each channel can be configured to produce precisely timed visual flashes (Zylberberg et al., <xref ref-type="bibr" rid="B37">2012</xref>), by gating a commercial LED driver (e.g., BuckPuck, LED Dynamics). Thus, the stimuli can be triggered and stopped with much lower latency and higher temporal precision than a commercial sound card or computer video display (Kleiner et al., <xref ref-type="bibr" rid="B20">2007</xref>). For sensory decision making experiments that require fine temporal control, Pulse Pal provides a simple and open alternative to custom instrumentation.</p>
</sec>
<sec id="s4-3">
<title>General analog control of laboratory instruments</title>
<p>Several neuroscience instruments use analog signals as an interface to control device parameters. Some examples are galvanometer mirrors for laser scanning stimulation (e.g., GVSM002, Thor Labs), and monochromators to measure spectral tuning in optogenetics (e.g., Polychrome V, Till Photonics). Programmatic control of unipolar voltage can be accomplished inexpensively in some cases with microcontroller platforms (e.g., Arduino) or low-cost automation devices (e.g., U3, LabJack). However, many devices (including the two listed above) require control voltages in the industry standard range of &#x02212;10 V to +10 V, necessitating expensive, proprietary computer hardware (e.g., NI PCIe-6323, National Instruments). For these applications, Pulse Pal provides an inexpensive way to achieve analog control.</p>
</sec>
<sec id="s4-4">
<title>Closed-loop feedback in electrophysiology</title>
<p>As a temporal control tool, Pulse Pal complements a growing array of open source <italic>acquisition</italic> tools for neuroscience research, which have become available in recent years. These range from electrophysiology acquisition systems (Rolston et al., <xref ref-type="bibr" rid="B28">2009</xref>; Voigts et al., <xref ref-type="bibr" rid="B33">2013a</xref>) to electrode interface devices (Voigts et al., <xref ref-type="bibr" rid="B34">2013b</xref>) and data acquisition software tools (Brainard, <xref ref-type="bibr" rid="B4">1997</xref>; Pologruto et al., <xref ref-type="bibr" rid="B27">2003</xref>; Englitz et al., <xref ref-type="bibr" rid="B11">2013</xref>; Campagnola et al., <xref ref-type="bibr" rid="B7">2014</xref>). Pulse Pal has been formally integrated into the software for one of these tools, the Open Ephys electrophysiology acquisition system,<xref ref-type="fn" rid="fn0003"><sup>3</sup></xref> where it is provided as one method for low latency closed loop feedback.</p>
</sec>
</sec>
<sec id="s5">
<title>General discussion</title>
<p>For our research, we required a pulse generator with high precision at timescales relevant for alignment of stimulation events to action potentials (pulse time jitter at least a factor of 10 less than an action potential width; Figures <xref ref-type="fig" rid="F4">4A,B</xref>), low clock drift (Figures <xref ref-type="fig" rid="F4">4C,D</xref>), first pulse latency (Figures <xref ref-type="fig" rid="F4">4E,F</xref>) comparable to short mammalian action potentials (Kandel et al., <xref ref-type="bibr" rid="B17">2000</xref>) and high reliability (100% of 300,000 soft triggers, 100% of 100,000 100 &#x000B5;s trigger pulses). In developing Pulse Pal, we recognized that simplified control of voltage pulse timing is a general need, and expanded the project&#x02019;s scope to meet five additional design objectives: low material cost ($210 USD), stand-alone functionality (Figure <xref ref-type="fig" rid="F1">1</xref>), bench-side assembly with common tools (see illustrated guide on wiki), support for common computing platforms and programming languages (WinXP, Win7, OSX, Ubuntu 14.04; MATLAB, C++, Python) and comprehensive online documentation.</p>
<p>In fulfilling these objectives, Pulse Pal provides a general resource for precise temporal control of stimulation and environmental cues in the laboratory. It encapsulates the problem of temporal pattern generation for many applications in physiology and psychophysics, where in lieu of commercial instrumentation, this control problem had often been addressed <italic>ad-hoc</italic> by writing custom software for microcontrollers (da Silva Pinto et al., <xref ref-type="bibr" rid="B10">2011</xref>; Weick et al., <xref ref-type="bibr" rid="B35">2011</xref>; Bugaj et al., <xref ref-type="bibr" rid="B6">2013</xref>; Haikala et al., <xref ref-type="bibr" rid="B14">2013</xref>; Ohayon et al., <xref ref-type="bibr" rid="B25">2013</xref>; Smear et al., <xref ref-type="bibr" rid="B30">2013</xref>; Inagaki et al., <xref ref-type="bibr" rid="B16">2014</xref>; Klapoetke et al., <xref ref-type="bibr" rid="B19">2014</xref>).</p>
<p>Pulse Pal&#x02019;s parametric approach to stimulation features trigger logic rules and stimulus pattern motifs commonly implemented in neuroscience research, however custom applications may require the device to perform less common functions. Unlike its commercial counterparts, Pulse Pal&#x02019;s firmware is provided in the public domain with an open source license. To facilitate access, the firmware was written in the Arduino language<xref ref-type="fn" rid="fn0004"><sup>4</sup></xref> &#x02014;a reduced set of C++ syntax with extensive online documentation for developers who lack a programming background. The adaptation of Arduino for Pulse Pal&#x02019;s microcontroller platform<xref ref-type="fn" rid="fn0005"><sup>5</sup></xref> exposes further functionality specific to the ARM Cortex M3 microcontroller. We anticipate that this lower barrier to entry will be exploited by researchers using Pulse Pal&#x02019;s hardware, firmware and software as a starting point for tailored applications beyond its present niche.</p>
</sec>
<sec id="s6">
<title>Conflict of interest statement</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
</body>
<back>
<ack>
<p>The following people are gratefully acknowledged for their contributions to Pulse Pal: Josh Siegle for contributing initial work on the C++ client and providing integration with the Open Ephys GUI, and Duda Kvitsiani, Ebru Demir, Hyun-Jae Pi, Bal&#x000E1;zs Hangya, Junya Hirokawa, Alex Vaughan, Uri Livneh, Onyekachi Odemene, Matthew Kaufman, Brittany Cazakoff, Steven Shea, Rob Campbell, Ankit Sethi, Ofer Yizhar, Jeffrey Erlich and Gabriella Nyitrai for feedback during beta testing. Also, we are thankful to the LeafLabs team and members of the LeafLabs forum, especially users <italic>gbulmer</italic>, <italic>mbolivar</italic>, <italic>siy</italic> and <italic>ala32</italic> for frequent assistance with the Maple platform. This research was supported by grants from the US National Institutes of Health (R01NS07553, R01MH097061) and the McKnight Foundation.</p>
</ack>
<ref-list>
<title>References</title>
<ref id="B1"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Ber&#x000E9;nyi</surname> <given-names>A.</given-names></name> <name><surname>Belluscio</surname> <given-names>M.</given-names></name> <name><surname>Mao</surname> <given-names>D.</given-names></name> <name><surname>Buzs&#x000E1;ki</surname> <given-names>G.</given-names></name></person-group> (<year>2012</year>). <article-title>Closed-loop control of epilepsy by transcranial electrical stimulation</article-title>. <source>Science</source> <volume>337</volume>, <fpage>735</fpage>&#x02013;<lpage>737</lpage>. <pub-id pub-id-type="doi">10.1126/science.1223154</pub-id><pub-id pub-id-type="pmid">22879515</pub-id></citation></ref>
<ref id="B2"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Bisley</surname> <given-names>J. W.</given-names></name> <name><surname>Zaksas</surname> <given-names>D.</given-names></name> <name><surname>Pasternak</surname> <given-names>T.</given-names></name></person-group> (<year>2001</year>). <article-title>Microstimulation of cortical area MT affects performance on a visual working memory task</article-title>. <source>J. Neurophysiol.</source> <volume>85</volume>, <fpage>187</fpage>&#x02013;<lpage>196</lpage>. <pub-id pub-id-type="pmid">11152719</pub-id></citation></ref>
<ref id="B3"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Boyden</surname> <given-names>E. S.</given-names></name> <name><surname>Zhang</surname> <given-names>F.</given-names></name> <name><surname>Bamberg</surname> <given-names>E.</given-names></name> <name><surname>Nagel</surname> <given-names>G.</given-names></name> <name><surname>Deisseroth</surname> <given-names>K.</given-names></name></person-group> (<year>2005</year>). <article-title>Millisecond-timescale, genetically targeted optical control of neural activity</article-title>. <source>Nat. Neurosci.</source> <volume>8</volume>, <fpage>1263</fpage>&#x02013;<lpage>1268</lpage>. <pub-id pub-id-type="doi">10.1038/nn1525</pub-id><pub-id pub-id-type="pmid">16116447</pub-id></citation></ref>
<ref id="B4"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Brainard</surname> <given-names>D. H.</given-names></name></person-group> (<year>1997</year>). <article-title>The psychophysics toolbox</article-title>. <source>Spat. Vis.</source> <volume>10</volume>, <fpage>433</fpage>&#x02013;<lpage>436</lpage>. <pub-id pub-id-type="doi">10.1163/156856897x00357</pub-id><pub-id pub-id-type="pmid">9176952</pub-id></citation></ref>
<ref id="B5"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Brunton</surname> <given-names>B. W.</given-names></name> <name><surname>Botvinick</surname> <given-names>M. M.</given-names></name> <name><surname>Brody</surname> <given-names>C. D.</given-names></name></person-group> (<year>2013</year>). <article-title>Rats and humans can optimally accumulate evidence for decision-making</article-title>. <source>Science</source> <volume>340</volume>, <fpage>95</fpage>&#x02013;<lpage>98</lpage>. <pub-id pub-id-type="doi">10.1126/science.1233912</pub-id><pub-id pub-id-type="pmid">23559254</pub-id></citation></ref>
<ref id="B6"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Bugaj</surname> <given-names>L. J.</given-names></name> <name><surname>Choksi</surname> <given-names>A. T.</given-names></name> <name><surname>Mesuda</surname> <given-names>C. K.</given-names></name> <name><surname>Kane</surname> <given-names>R. S.</given-names></name> <name><surname>Schaffer</surname> <given-names>D. V.</given-names></name></person-group> (<year>2013</year>). <article-title>Optogenetic protein clustering and signaling activation in mammalian cells</article-title>. <source>Nat. Methods</source> <volume>10</volume>, <fpage>249</fpage>&#x02013;<lpage>252</lpage>. <pub-id pub-id-type="doi">10.1038/nmeth.2360</pub-id><pub-id pub-id-type="pmid">23377377</pub-id></citation></ref>
<ref id="B7"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Campagnola</surname> <given-names>L.</given-names></name> <name><surname>Kratz</surname> <given-names>M. B.</given-names></name> <name><surname>Manis</surname> <given-names>P. B.</given-names></name></person-group> (<year>2014</year>). <article-title>ACQ5: an open-source software platform for data acquisition and analysis in neurophysiology research</article-title>. <source>Front. Neuroinform.</source> <volume>8</volume>:<fpage>3</fpage>. <pub-id pub-id-type="doi">10.3389/fninf.2014.00003</pub-id><pub-id pub-id-type="pmid">24523692</pub-id></citation></ref>
<ref id="B8"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Cardin</surname> <given-names>J. A.</given-names></name> <name><surname>Carl&#x000E9;n</surname> <given-names>M.</given-names></name> <name><surname>Meletis</surname> <given-names>K.</given-names></name> <name><surname>Knoblich</surname> <given-names>U.</given-names></name> <name><surname>Zhang</surname> <given-names>F.</given-names></name> <name><surname>Deisseroth</surname> <given-names>K.</given-names></name> <etal/></person-group>. (<year>2009</year>). <article-title>Driving fast-spiking cells induces gamma rhythm and controls sensory responses</article-title>. <source>Nature</source> <volume>459</volume>, <fpage>663</fpage>&#x02013;<lpage>667</lpage>. <pub-id pub-id-type="doi">10.1038/nature08002</pub-id><pub-id pub-id-type="pmid">19396156</pub-id></citation></ref>
<ref id="B9"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Cohen</surname> <given-names>M. R.</given-names></name> <name><surname>Newsome</surname> <given-names>W. T.</given-names></name></person-group> (<year>2004</year>). <article-title>What electrical microstimulation has revealed about the neural basis of cognition</article-title>. <source>Curr. Opin. Neurobiol.</source> <volume>14</volume>, <fpage>169</fpage>&#x02013;<lpage>177</lpage>. <pub-id pub-id-type="doi">10.1016/j.conb.2004.03.016</pub-id><pub-id pub-id-type="pmid">15082321</pub-id></citation></ref>
<ref id="B10"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>da Silva Pinto</surname> <given-names>M. A.</given-names></name> <name><surname>de Souza</surname> <given-names>J. K. S.</given-names></name> <name><surname>Baron</surname> <given-names>J.</given-names></name> <name><surname>Tierra-Criollo</surname> <given-names>C. J.</given-names></name></person-group> (<year>2011</year>). <article-title>A low-cost, portable, micro-controlled device for multi-channel LED visual stimulation</article-title>. <source>J. Neurosci. Methods</source> <volume>197</volume>, <fpage>82</fpage>&#x02013;<lpage>91</lpage>. <pub-id pub-id-type="doi">10.1016/j.jneumeth.2011.02.004</pub-id><pub-id pub-id-type="pmid">21320530</pub-id></citation></ref>
<ref id="B11"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Englitz</surname> <given-names>B.</given-names></name> <name><surname>David</surname> <given-names>S. V.</given-names></name> <name><surname>Sorenson</surname> <given-names>M. D.</given-names></name> <name><surname>Shamma</surname> <given-names>S. A.</given-names></name></person-group> (<year>2013</year>). <article-title>MANTA&#x02014;an open-source, high density electrophysiology recording suite for MATLAB</article-title>. <source>Front. Neural Circuits</source> <volume>7</volume>:<fpage>69</fpage>. <pub-id pub-id-type="doi">10.3389/fncir.2013.00069</pub-id><pub-id pub-id-type="pmid">23653593</pub-id></citation></ref>
<ref id="B12"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Flaherty</surname> <given-names>A.</given-names></name> <name><surname>Graybiel</surname> <given-names>A. M.</given-names></name></person-group> (<year>1994</year>). <article-title>Input-output organization of the sensorimotor striatum in the squirrel monkey</article-title>. <source>J. Neurosci.</source> <volume>14</volume>, <fpage>599</fpage>&#x02013;<lpage>610</lpage>. <pub-id pub-id-type="pmid">7507981</pub-id></citation></ref>
<ref id="B13"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Girardeau</surname> <given-names>G.</given-names></name> <name><surname>Benchenane</surname> <given-names>K.</given-names></name> <name><surname>Wiener</surname> <given-names>S. I.</given-names></name> <name><surname>Buzs&#x000E1;ki</surname> <given-names>G.</given-names></name> <name><surname>Zugaro</surname> <given-names>M. B.</given-names></name></person-group> (<year>2009</year>). <article-title>Selective suppression of hippocampal ripples impairs spatial memory</article-title>. <source>Nat. Neurosci.</source> <volume>12</volume>, <fpage>1222</fpage>&#x02013;<lpage>1223</lpage>. <pub-id pub-id-type="doi">10.1038/nn.2384</pub-id><pub-id pub-id-type="pmid">19749750</pub-id></citation></ref>
<ref id="B14"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Haikala</surname> <given-names>V.</given-names></name> <name><surname>Joesch</surname> <given-names>M.</given-names></name> <name><surname>Borst</surname> <given-names>A.</given-names></name> <name><surname>Mauss</surname> <given-names>A. S.</given-names></name></person-group> (<year>2013</year>). <article-title>Optogenetic control of fly optomotor responses</article-title>. <source>J. Neurosci.</source> <volume>33</volume>, <fpage>13927</fpage>&#x02013;<lpage>13934</lpage>. <pub-id pub-id-type="doi">10.1523/JNEUROSCI.0340-13.2013</pub-id><pub-id pub-id-type="pmid">23966712</pub-id></citation></ref>
<ref id="B15"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Histed</surname> <given-names>M. H.</given-names></name> <name><surname>Bonin</surname> <given-names>V.</given-names></name> <name><surname>Reid</surname> <given-names>R. C.</given-names></name></person-group> (<year>2009</year>). <article-title>Direct activation of sparse, distributed populations of cortical neurons by electrical microstimulation</article-title>. <source>Neuron</source> <volume>63</volume>, <fpage>508</fpage>&#x02013;<lpage>522</lpage>. <pub-id pub-id-type="doi">10.1016/j.neuron.2009.07.016</pub-id><pub-id pub-id-type="pmid">19709632</pub-id></citation></ref>
<ref id="B16"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Inagaki</surname> <given-names>H. K.</given-names></name> <name><surname>Jung</surname> <given-names>Y.</given-names></name> <name><surname>Hoopfer</surname> <given-names>E. D.</given-names></name> <name><surname>Wong</surname> <given-names>A. M.</given-names></name> <name><surname>Mishra</surname> <given-names>N.</given-names></name> <name><surname>Lin</surname> <given-names>J. Y.</given-names></name> <etal/></person-group>. (<year>2014</year>). <article-title>Optogenetic control of Drosophila using a red-shifted channelrhodopsin reveals experience-dependent influences on courtship</article-title>. <source>Nat. Methods</source> <volume>11</volume>, <fpage>325</fpage>&#x02013;<lpage>332</lpage>. <pub-id pub-id-type="doi">10.1038/nmeth.2765</pub-id><pub-id pub-id-type="pmid">24363022</pub-id></citation></ref>
<ref id="B17"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Kandel</surname> <given-names>E. R.</given-names></name> <name><surname>Schwartz</surname> <given-names>J. H.</given-names></name> <name><surname>Jessell</surname> <given-names>T. M.</given-names></name></person-group> (<year>2000</year>). <source>Principles of Neural Science (Vol. 4).</source> <publisher-loc>New York</publisher-loc>: <publisher-name>McGraw-Hill</publisher-name>.</citation></ref>
<ref id="B18"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Karlsson</surname> <given-names>M. P.</given-names></name> <name><surname>Frank</surname> <given-names>L. M.</given-names></name></person-group> (<year>2009</year>). <article-title>Awake replay of remote experiences in the hippocampus</article-title>. <source>Nat. Neurosci.</source> <volume>12</volume>, <fpage>913</fpage>&#x02013;<lpage>918</lpage>. <pub-id pub-id-type="doi">10.1038/nn.2344</pub-id><pub-id pub-id-type="pmid">19525943</pub-id></citation></ref>
<ref id="B19"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Klapoetke</surname> <given-names>N. C.</given-names></name> <name><surname>Murata</surname> <given-names>Y.</given-names></name> <name><surname>Kim</surname> <given-names>S. S.</given-names></name> <name><surname>Pulver</surname> <given-names>S. R.</given-names></name> <name><surname>Birdsey-Benson</surname> <given-names>A.</given-names></name> <name><surname>Cho</surname> <given-names>Y. K.</given-names></name> <etal/></person-group>. (<year>2014</year>). <article-title>Independent optical excitation of distinct neural populations</article-title>. <source>Nat. Methods</source> <volume>11</volume>, <fpage>338</fpage>&#x02013;<lpage>346</lpage>. <pub-id pub-id-type="doi">10.1038/nmeth.2836</pub-id><pub-id pub-id-type="pmid">24509633</pub-id></citation></ref>
<ref id="B20"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kleiner</surname> <given-names>M.</given-names></name> <name><surname>Brainard</surname> <given-names>D.</given-names></name> <name><surname>Pelli</surname> <given-names>D.</given-names></name> <name><surname>Ingling</surname> <given-names>A.</given-names></name> <name><surname>Murray</surname> <given-names>R.</given-names></name> <name><surname>Broussard</surname> <given-names>C.</given-names></name></person-group> (<year>2007</year>). <article-title>What&#x02019;s new in Psychtoolbox-3</article-title>. <source>Perception</source> <volume>36</volume>, <fpage>1.1</fpage>&#x02013;<lpage>1.16</lpage>.</citation></ref>
<ref id="B21"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Newman</surname> <given-names>J. P.</given-names></name> <name><surname>Zeller-Townson</surname> <given-names>R.</given-names></name> <name><surname>Fong</surname> <given-names>M.-F.</given-names></name> <name><surname>Desai</surname> <given-names>S. A.</given-names></name> <name><surname>Gross</surname> <given-names>R. E.</given-names></name> <name><surname>Potter</surname> <given-names>S. M.</given-names></name></person-group> (<year>2013</year>). <article-title>Closed-loop, multichannel experimentation using the open-source NeuroRighter electrophysiology platform</article-title>. <source>Front. Neural Circuits</source> <volume>6</volume>:<fpage>98</fpage>. <pub-id pub-id-type="doi">10.3389/fncir.2012.00098</pub-id><pub-id pub-id-type="pmid">23346047</pub-id></citation></ref>
<ref id="B22"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Nikolic</surname> <given-names>K.</given-names></name> <name><surname>Grossman</surname> <given-names>N.</given-names></name> <name><surname>Grubb</surname> <given-names>M. S.</given-names></name> <name><surname>Burrone</surname> <given-names>J.</given-names></name> <name><surname>Toumazou</surname> <given-names>C.</given-names></name> <name><surname>Degenaar</surname> <given-names>P.</given-names></name></person-group> (<year>2009</year>). <article-title>Photocycles of Channelrhodopsin-2</article-title>. <source>Photochem. Photobiol.</source> <volume>85</volume>, <fpage>400</fpage>&#x02013;<lpage>411</lpage>. <pub-id pub-id-type="doi">10.1111/j.1751-1097.2008.00460.x</pub-id><pub-id pub-id-type="pmid">19161406</pub-id></citation></ref>
<ref id="B23"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>O&#x02019;Connor</surname> <given-names>D. H.</given-names></name> <name><surname>Hires</surname> <given-names>S. A.</given-names></name> <name><surname>Guo</surname> <given-names>Z. V.</given-names></name> <name><surname>Li</surname> <given-names>N.</given-names></name> <name><surname>Yu</surname> <given-names>J.</given-names></name> <name><surname>Sun</surname> <given-names>Q.-Q.</given-names></name> <etal/></person-group>. (<year>2013</year>). <article-title>Neural coding during active somatosensation revealed using illusory touch</article-title>. <source>Nat. Neurosci.</source> <volume>16</volume>, <fpage>958</fpage>&#x02013;<lpage>965</lpage>. <pub-id pub-id-type="doi">10.1038/nn.3419</pub-id><pub-id pub-id-type="pmid">23727820</pub-id></citation></ref>
<ref id="B24"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>O&#x02019;Doherty</surname> <given-names>J. E.</given-names></name> <name><surname>Lebedev</surname> <given-names>M. A.</given-names></name> <name><surname>Hanson</surname> <given-names>T. L.</given-names></name> <name><surname>Fitzsimmons</surname> <given-names>N. A.</given-names></name> <name><surname>Nicolelis</surname> <given-names>M. A.</given-names></name></person-group> (<year>2009</year>). <article-title>A brain-machine interface instructed by direct intracortical microstimulation</article-title>. <source>Front. Integr. Neurosci.</source> <volume>3</volume>:<fpage>20</fpage>. <pub-id pub-id-type="doi">10.3389/neuro.07.020.2009</pub-id><pub-id pub-id-type="pmid">19750199</pub-id></citation></ref>
<ref id="B25"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Ohayon</surname> <given-names>S.</given-names></name> <name><surname>Grimaldi</surname> <given-names>P.</given-names></name> <name><surname>Schweers</surname> <given-names>N.</given-names></name> <name><surname>Tsao</surname> <given-names>D. Y.</given-names></name></person-group> (<year>2013</year>). <article-title>Saccade modulation by optical and electrical stimulation in the macaque frontal eye field</article-title>. <source>J. Neurosci.</source> <volume>33</volume>, <fpage>16684</fpage>&#x02013;<lpage>16697</lpage>. <pub-id pub-id-type="doi">10.1523/JNEUROSCI.2675-13.2013</pub-id><pub-id pub-id-type="pmid">24133271</pub-id></citation></ref>
<ref id="B26"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Pi</surname> <given-names>H.-J.</given-names></name> <name><surname>Hangya</surname> <given-names>B.</given-names></name> <name><surname>Kvitsiani</surname> <given-names>D.</given-names></name> <name><surname>Sanders</surname> <given-names>J. I.</given-names></name> <name><surname>Huang</surname> <given-names>Z. J.</given-names></name> <name><surname>Kepecs</surname> <given-names>A.</given-names></name></person-group> (<year>2013</year>). <article-title>Cortical interneurons that specialize in disinhibitory control</article-title>. <source>Nature</source> <volume>503</volume>, <fpage>521</fpage>&#x02013;<lpage>524</lpage>. <pub-id pub-id-type="doi">10.1038/nature12676</pub-id><pub-id pub-id-type="pmid">24097352</pub-id></citation></ref>
<ref id="B27"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Pologruto</surname> <given-names>T. A.</given-names></name> <name><surname>Sabatini</surname> <given-names>B. L.</given-names></name> <name><surname>Svoboda</surname> <given-names>K.</given-names></name></person-group> (<year>2003</year>). <article-title>ScanImage: flexible software for operating laser scanning microscopes</article-title>. <source>Biomed. Eng. Online</source> <volume>2</volume>:<fpage>13</fpage>. <pub-id pub-id-type="doi">10.1186/1475-925X-2-13</pub-id><pub-id pub-id-type="pmid">12801419</pub-id></citation></ref>
<ref id="B28"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Rolston</surname> <given-names>J. D.</given-names></name> <name><surname>Gross</surname> <given-names>R. E.</given-names></name> <name><surname>Potter</surname> <given-names>S. M.</given-names></name></person-group> (<year>2009</year>). <article-title>A low-cost multielectrode system for data acquisition enabling real-time closed-loop processing with rapid recovery from stimulation artifacts</article-title>. <source>Front. Neuroeng.</source> <volume>2</volume>:<fpage>12</fpage>. <pub-id pub-id-type="doi">10.3389/neuro.16.012.2009</pub-id><pub-id pub-id-type="pmid">19668698</pub-id></citation></ref>
<ref id="B29"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Sanders</surname> <given-names>J. I.</given-names></name> <name><surname>Kepecs</surname> <given-names>A.</given-names></name></person-group> (<year>2012</year>). <article-title>Choice ball: a response interface for psychometric discrimination in head-fixed mice</article-title>. <source>J. Neurophysiol.</source> <volume>108</volume>, <fpage>3416</fpage>&#x02013;<lpage>3423</lpage>. <pub-id pub-id-type="doi">10.1152/jn.00669.2012</pub-id><pub-id pub-id-type="pmid">23019000</pub-id></citation></ref>
<ref id="B30"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Smear</surname> <given-names>M.</given-names></name> <name><surname>Resulaj</surname> <given-names>A.</given-names></name> <name><surname>Zhang</surname> <given-names>J.</given-names></name> <name><surname>Bozza</surname> <given-names>T.</given-names></name> <name><surname>Rinberg</surname> <given-names>D.</given-names></name></person-group> (<year>2013</year>). <article-title>Multiple perceptible signals from a single olfactory glomerulus</article-title>. <source>Nat. Neurosci.</source> <volume>16</volume>, <fpage>1687</fpage>&#x02013;<lpage>1691</lpage>. <pub-id pub-id-type="doi">10.1038/nn.3519</pub-id><pub-id pub-id-type="pmid">24056698</pub-id></citation></ref>
<ref id="B31"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Soto-Faraco</surname> <given-names>S.</given-names></name> <name><surname>Lyons</surname> <given-names>J.</given-names></name> <name><surname>Gazzaniga</surname> <given-names>M.</given-names></name> <name><surname>Spence</surname> <given-names>C.</given-names></name> <name><surname>Kingstone</surname> <given-names>A.</given-names></name></person-group> (<year>2002</year>). <article-title>The ventriloquist in motion: illusory capture of dynamic information across sensory modalities</article-title>. <source>Brain Res. Cogn. Brain Res.</source> <volume>14</volume>, <fpage>139</fpage>&#x02013;<lpage>146</lpage>. <pub-id pub-id-type="doi">10.1016/s0926-6410(02)00068-x</pub-id><pub-id pub-id-type="pmid">12063137</pub-id></citation></ref>
<ref id="B32"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Venkatraman</surname> <given-names>S.</given-names></name> <name><surname>Elkabany</surname> <given-names>K.</given-names></name> <name><surname>Long</surname> <given-names>J. D.</given-names></name> <name><surname>Yao</surname> <given-names>Y.</given-names></name> <name><surname>Carmena</surname> <given-names>J. M.</given-names></name></person-group> (<year>2009</year>). <article-title>A system for neural recording and closed-loop intracortical microstimulation in awake rodents</article-title>. <source>IEEE Trans. Biomed. Eng.</source> <volume>56</volume>, <fpage>15</fpage>&#x02013;<lpage>22</lpage>. <pub-id pub-id-type="doi">10.1109/TBME.2008.2005944</pub-id><pub-id pub-id-type="pmid">19224714</pub-id></citation></ref>
<ref id="B33"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Voigts</surname> <given-names>J.</given-names></name> <name><surname>Siegle</surname> <given-names>J. H.</given-names></name> <name><surname>Kemere</surname> <given-names>C.</given-names></name> <name><surname>Moore</surname> <given-names>C. L.</given-names></name> <name><surname>Wilson</surname> <given-names>M. A.</given-names></name></person-group> (<year>2013a</year>). &#x0201C;<article-title>A low-cost, open-source system for combining high-channel count electrophysiology with closed-loop optogenetic feedback</article-title>,&#x0201D; in <conf-name>Paper Presented at the Society for Neuroscience</conf-name> (<conf-loc>San Diego, CA</conf-loc>).</citation></ref>
<ref id="B34"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Voigts</surname> <given-names>J.</given-names></name> <name><surname>Siegle</surname> <given-names>J. H.</given-names></name> <name><surname>Pritchett</surname> <given-names>D. L.</given-names></name> <name><surname>Moore</surname> <given-names>C. I.</given-names></name></person-group> (<year>2013b</year>). <article-title>The flexDrive: an ultra-light implant for optical control and highly parallel chronic recording of neuronal ensembles in freely moving mice</article-title>. <source>Front. Syst. Neurosci.</source> <volume>7</volume>:<fpage>8</fpage>. <pub-id pub-id-type="doi">10.3389/fnsys.2013.00008</pub-id><pub-id pub-id-type="pmid">23717267</pub-id></citation></ref>
<ref id="B35"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Weick</surname> <given-names>J. P.</given-names></name> <name><surname>Liu</surname> <given-names>Y.</given-names></name> <name><surname>Zhang</surname> <given-names>S.-C.</given-names></name></person-group> (<year>2011</year>). <article-title>Human embryonic stem cell-derived neurons adopt and regulate the activity of an established neural network</article-title>. <source>Proc. Natl. Acad. Sci. U S A</source> <volume>108</volume>, <fpage>20189</fpage>&#x02013;<lpage>20194</lpage>. <pub-id pub-id-type="doi">10.1073/pnas.1108487108</pub-id><pub-id pub-id-type="pmid">22106298</pub-id></citation></ref>
<ref id="B36"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Yamamoto</surname> <given-names>J.</given-names></name> <name><surname>Wilson</surname> <given-names>M. A.</given-names></name></person-group> (<year>2008</year>). <article-title>Large-scale chronically implantable precision motorized microdrive array for freely behaving animals</article-title>. <source>J. Neurophysiol.</source> <volume>100</volume>, <fpage>2430</fpage>&#x02013;<lpage>2440</lpage>. <pub-id pub-id-type="doi">10.1152/jn.90687.2008</pub-id><pub-id pub-id-type="pmid">18667539</pub-id></citation></ref>
<ref id="B37"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zylberberg</surname> <given-names>A.</given-names></name> <name><surname>Barttfeld</surname> <given-names>P.</given-names></name> <name><surname>Sigman</surname> <given-names>M.</given-names></name></person-group> (<year>2012</year>). <article-title>The construction of confidence in a perceptual decision</article-title>. <source>Front. Integr. Neurosci.</source> <volume>6</volume>:<fpage>79</fpage>. <pub-id pub-id-type="doi">10.3389/fnint.2012.00079</pub-id><pub-id pub-id-type="pmid">23049504</pub-id></citation></ref>
</ref-list>
<fn-group>
<fn id="fn0001"><p><sup>1</sup><ext-link ext-link-type="uri" xlink:href="https://sites.google.com/site/pulsepalwiki/home">https://sites.google.com/site/pulsepalwiki/home</ext-link></p></fn>
<fn id="fn0002"><p><sup>2</sup><ext-link ext-link-type="uri" xlink:href="https://github.com/PulsePal/PulsePal">https://github.com/PulsePal/PulsePal</ext-link></p></fn>
<fn id="fn0003"><p><sup>3</sup><ext-link ext-link-type="uri" xlink:href="http://www.open-ephys.org">www.open-ephys.org</ext-link></p></fn>
<fn id="fn0004"><p><sup>4</sup><ext-link ext-link-type="uri" xlink:href="http://www.arduino.cc">www.arduino.cc</ext-link></p></fn>
<fn id="fn0005"><p><sup>5</sup><ext-link ext-link-type="uri" xlink:href="http://www.leaflabs.com">www.leaflabs.com</ext-link></p></fn>
</fn-group>
</back>
</article>