installed and supported devices include , in our teaching setting , a national instruments ( ni ) data acquisition board and the sound port of a pc laptop computer .
the user may select a single interface from the pull down device menu , and connect to an arbitrary number of channels .
each channel may be independently controlled with a visualization offset , color , name , display scale , input gain range , and a display option ( see fig .
data logging , time series configurations ( sample rate and visualization width ) , and trigger modes are all implemented in the user interface .
parameters are error checked for appropriate values before setting , and descriptive errors are returned to the user if values are selected outside of allowed ranges ( i.e. typos in sample rates , etc ) .
configuration parameters are also limited , in many cases , to a set of discrete values in pop - up menus ( such as the  volts - per - division  field ) .
this allows intuitive interaction with the scope feature , and keeps the user from being overwhelmed by displayed options . by far ,
the data display is updated at 100ms intervals ( 10hz update rate ) utilizing the analog input 
data is streamed to memory ( or memory & disk when logging ) , and is extracted from the buffer and displayed in the associated channel trace in the software oscilloscope window .
this function is also the launching point for the real - time analysis features of the program .
after data is displayed , the raw data values are passed to the analysis function for filtering and event detection .
a number of pre - calculated low and high - pass filters can be applied to data streams for data visualization and event extraction .
pre - calculated filters are constructed as 3rd order butterworth iir filters at discrete frequencies between 10 hz and 10 khz .
a 60 hz iir -3db notch filter with a quality factor of 15 filters power line noise .
the user may also activate and place several amplitude threshold levels within which events will be logged and analysis results will be displayed ( fig .
2 ) . the most fundamental of these thresholds is the minimum absolute amplitude threshold .
when an input signal level crosses this threshold level , an  event  is detected .
a window of data points is collected around this event and the threshold cross point is placed at a certain location within the window of points such that 0 , 25 , 50 , or 75% of the window will precede the threshold cross in order to capture pre - trigger components of an event
. this could be the negative sweep of a multiphasic pulse , for example ( fig .
once a threshold crossing is detected , this window region is considered a single event , and other events must be located outside of the window region for detection . window maximum and minimum amplitudes are calculated and compared to a second amplitude threshold ( if activated ) .
if the event amplitude exceeds the secondary threshold , the event is discarded , saving only events between the two amplitude threshold levels .
once an amplitude - discriminated set of events is detected , the samples within the events are further analyzed .
the fast fourier transform ( fft ) of the event samples ( windowed with blackman window ) is calculated , and the energy density is calculated by summing fft amplitude components and normalizing to the window width .
peak frequency component is also calculated to describe the primary frequency component of the signal , and an inter - event interval is calculated between the current and previous event threshold crossing time .
the user may choose to display any pair of these seven parameters ( time , max , min , energy density , peak frequency , rate , interval ) in a two - dimensional space where further parameter thresholds may be applied . in real - time analysis , threshold pairs may reject values in the energy density and peak frequency parameter space .
in offline analysis , arbitrary boxes and polygons can be drawn to create a complex threshold in any two - dimensional data display space .
extracted event sets using this offline analysis method may be further groomed to remove outliers . once all analysis thresholds are applied ,
the user can correlate these events with the associated time points of another raw data channel currently connected in the scope , or to another logged data channel from an offline file ( fig .
this correlation consists of extraction of windows of samples at identical time points to detected events and a running average of these extracted points from event to event .
time correlated signals may rise out from noise sources , and both leading and lagging temporally synchronized events may be discerned .
users may also produce publication quality graphics or export / import a variety of file types for analysis . associated with each data display graph
is a button that will export the trace contents into a figure where a jpeg , png , or tiff format image may be produced .
histogram bar graphs may also be generated for visualizing distribution of events in a single parameter space .
compiled  to a stand - alone application , matlab code does not support the graph customization functionality available in the licensed product ( i.e. axis labeling , axis limiting , trace color , etc ) .
we added a limited axis editing tool to g - prime that provides customization features to data plots for clean , annotated graphics .
g - prime will load and parse data acquisition toolbox default logging format ( * .daq ) files , wave audio files ( up to 2-channels * .wav ) , matlab data files ( * .mat ) containing  data  and  time 
vectors , and text files with two columns of numbers ( first column representing a time vector ) .
logged daq files may be exported as .wav files ( single channel ) or as text files with columns of time and data for import into programs such as excel .
as source code developed , efficient computation became an important factor for display of large numbers of events in real - time .
the matlab profiler tool provides a line by line analysis of code execution times , and was instrumental in the development of streamlined analysis code .
pre - allocation of large matrices of known sizes and elimination of unnecessary input format validations ( such as in the  getdata  function ) greatly increase the efficiency of the underlying analysis and acquisition code .
once g - prime was in a stable configuration , a stand - alone executable could be exported using the matlab compiler toolbox .
contrary to the toolbox name , the  compiler  does not actually compile the code .
the matlab  .m  file itself is bundled into an executable , and the user must install the 
matlab runtime components  associated with the correct release to enable execution of the code .
this does , however , free gkl to release a version of the software free of the mathworks product licensing rules for applications on many of our own computers or for distribution to colleagues or customers . in the case of g - prime ,
installed and supported devices include , in our teaching setting , a national instruments ( ni ) data acquisition board and the sound port of a pc laptop computer .
the user may select a single interface from the pull down device menu , and connect to an arbitrary number of channels .
each channel may be independently controlled with a visualization offset , color , name , display scale , input gain range , and a display option ( see fig .
data logging , time series configurations ( sample rate and visualization width ) , and trigger modes are all implemented in the user interface .
parameters are error checked for appropriate values before setting , and descriptive errors are returned to the user if values are selected outside of allowed ranges ( i.e. typos in sample rates , etc ) .
configuration parameters are also limited , in many cases , to a set of discrete values in pop - up menus ( such as the  volts - per - division  field ) .
this allows intuitive interaction with the scope feature , and keeps the user from being overwhelmed by displayed options . by far ,
the data display is updated at 100ms intervals ( 10hz update rate ) utilizing the analog input 
data is streamed to memory ( or memory & disk when logging ) , and is extracted from the buffer and displayed in the associated channel trace in the software oscilloscope window .
this function is also the launching point for the real - time analysis features of the program .
after data is displayed , the raw data values are passed to the analysis function for filtering and event detection .
a number of pre - calculated low and high - pass filters can be applied to data streams for data visualization and event extraction .
pre - calculated filters are constructed as 3rd order butterworth iir filters at discrete frequencies between 10 hz and 10 khz . a 60 hz iir -3db notch filter with a quality factor of 15 filters power line noise .
the user may also activate and place several amplitude threshold levels within which events will be logged and analysis results will be displayed ( fig .
when an input signal level crosses this threshold level , an  event  is detected .
a window of data points is collected around this event and the threshold cross point is placed at a certain location within the window of points such that 0 , 25 , 50 , or 75% of the window will precede the threshold cross in order to capture pre - trigger components of an event .
this could be the negative sweep of a multiphasic pulse , for example ( fig .
once a threshold crossing is detected , this window region is considered a single event , and other events must be located outside of the window region for detection . window maximum and minimum amplitudes are calculated and compared to a second amplitude threshold ( if activated ) .
if the event amplitude exceeds the secondary threshold , the event is discarded , saving only events between the two amplitude threshold levels .
once an amplitude - discriminated set of events is detected , the samples within the events are further analyzed .
the fast fourier transform ( fft ) of the event samples ( windowed with blackman window ) is calculated , and the energy density is calculated by summing fft amplitude components and normalizing to the window width .
peak frequency component is also calculated to describe the primary frequency component of the signal , and an inter - event interval is calculated between the current and previous event threshold crossing time .
the user may choose to display any pair of these seven parameters ( time , max , min , energy density , peak frequency , rate , interval ) in a two - dimensional space where further parameter thresholds may be applied . in real - time analysis , threshold pairs may reject values in the energy density and peak frequency parameter space .
in offline analysis , arbitrary boxes and polygons can be drawn to create a complex threshold in any two - dimensional data display space .
extracted event sets using this offline analysis method may be further groomed to remove outliers . once all analysis thresholds are applied ,
the user can correlate these events with the associated time points of another raw data channel currently connected in the scope , or to another logged data channel from an offline file ( fig .
this correlation consists of extraction of windows of samples at identical time points to detected events and a running average of these extracted points from event to event .
time correlated signals may rise out from noise sources , and both leading and lagging temporally synchronized events may be discerned .
users may also produce publication quality graphics or export / import a variety of file types for analysis . associated with each data display graph
is a button that will export the trace contents into a figure where a jpeg , png , or tiff format image may be produced .
histogram bar graphs may also be generated for visualizing distribution of events in a single parameter space .
compiled  to a stand - alone application , matlab code does not support the graph customization functionality available in the licensed product ( i.e. axis labeling , axis limiting , trace color , etc ) .
we added a limited axis editing tool to g - prime that provides customization features to data plots for clean , annotated graphics .
g - prime will load and parse data acquisition toolbox default logging format ( * .daq ) files , wave audio files ( up to 2-channels * .wav ) , matlab data files ( * .mat ) containing  data  and  time  vectors , and text files with two columns of numbers ( first column representing a time vector ) . limited support for axon instruments binary file format ( abf ) is also included .
logged daq files may be exported as .wav files ( single channel ) or as text files with columns of time and data for import into programs such as excel .
as source code developed , efficient computation became an important factor for display of large numbers of events in real - time .
the matlab profiler tool provides a line by line analysis of code execution times , and was instrumental in the development of streamlined analysis code .
pre - allocation of large matrices of known sizes and elimination of unnecessary input format validations ( such as in the  getdata  function ) greatly increase the efficiency of the underlying analysis and acquisition code .
once g - prime was in a stable configuration , a stand - alone executable could be exported using the matlab compiler toolbox .
contrary to the toolbox name , the  compiler  does not actually compile the code .
the matlab  .m  file itself is bundled into an executable , and the user must install the 
matlab runtime components  associated with the correct release to enable execution of the code .
this does , however , free gkl to release a version of the software free of the mathworks product licensing rules for applications on many of our own computers or for distribution to colleagues or customers . in the case of g - prime ,
g - prime was developed in a feedback loop with an upper level undergraduate neurophysiology lab course at cornell university .
the students were mostly undergraduates from majors with neuroscience interest ( such as biology , psychology , computer science , and math ) , different engineering majors , and some first year graduate students from disciplines with neuroscience interest . during the semester
, students studied various topics based on the crawdad project ( wyttenbach et al . , 1999 ) .
these ranged from the basics of membrane passive properties , extracellular recording of sensory and motor activity , and intracellular recording of action and synaptic potentials to the effects of neuromodulatory chemicals on synaptic dynamics and membrane ion currents ( voltage clamping ) .
the student preparations were model systems ranging from single celled plants to crayfish and snail brains .
solution for neuroscience education and research . while there are many commercially and freely available tools for signal analysis ( mostly for audio applications ) , and many technical programming environments offer substrates for the development of customized packages , g - prime offered a  turnkey  solution designed with the classical physiologist and student in mind .
our goal with this project was to enable discovery while stimulating the budding neurobiologist s interest to explore the nervous system with more powerful engineering tools . throughout the semester of development
, students implemented existing laboratory protocols using new tools and techniques of g - prime . as bugs or feature limitations would appear ( in actual applications to neurobiological preparations ) , on the fly corrections would be made and distributed to the students .
as the students progressed through their course work , features were added that enabled new and more complex exploration of the teaching preparations . at the end of the semester ,
the students were fluent in the use of the program and produced some individual final projects on par with modern peer - reviewed work .
we present a few examples here of student data gathered and analyzed using g - prime with a ni a / d board running on a dell desktop .
, 2007 ) attached to either a small , purely motor nerve or a nerve containing large diameter stretch receptor neurons in the crayfish tail ( wyttenbach et al . , 1999 ) .
the students examine real time responses of stretch receptor neurons to constant tail bending in the crayfish .
the receptor response to stretch adapts over a span of 30 seconds , giving the students plenty of time to describe and acquire an intuition for the system s adaptation rate ( fig .
2 ) . detected spike times and amplitudes are extractable to a comma delimited text file and loaded into microsoft excel for curve fitting and further analysis . in the motor nerve recordings ,
students acquire spikes from the six - unit tonic motor neuron bundle , visualize them in real time , and characterize network reflex activity in response to sensory stimulation . frequently , the students are able to separate all six units utilizing g - prime s energy density calculation instead of the classical  max amplitude  calculation for a spike event ( fig .
3 ) . the energy density calculation ( sum of the amplitude components of the fourier transform of a window ) provides a relatively noise invariant measure of spike amplitude ( noise spectrum amplitude is constant and additive to spike amplitudes ) . later in the semester , students learn to achieve intracellular recordings from the crayfish tail muscle innervated by the six - unit tonic motorneuron bundle described above .
they use the spike triggered averaging tools of g - prime to match individual synaptic potentials ( fig .
4 ) with extracellular ap amplitude classes , and map out muscle innervation patterns . in addition ,
students design g - prime controlled stimulation of the motor nerve to describe and explore synaptic plasticity at this neuromuscular junction .
figure 5 shows an example student recording of synaptic facilitation caused by tetanic stimulation of the motor nerve , followed by a post - tetanic potentiation of the synaptic potential .
g - prime can record , manipulate and analyze any biological activity representable as a voltage change , even with large , complex data sets .
for example , electric organ discharges from two different morymrid fish can be discriminated by its analysis features ( fig .
students have also recorded and analyzed sounds with g - prime , for example courtship songs of fruit flies .
students download g - prime ( see below ) onto their personal pc laptops for data analysis and report graphics presentation outside the teaching lab .
the program does not work under macintosh operating systems , but runs on any 32-bit microsoft windows based system .
we present a few examples here of student data gathered and analyzed using g - prime with a ni a / d board running on a dell desktop .
students initially learn extracellular recording using suction electrodes ( johnson et al . , 2007 ) attached to either a small , purely motor nerve or a nerve containing large diameter stretch receptor neurons in the crayfish tail ( wyttenbach et al . , 1999 ) .
the students examine real time responses of stretch receptor neurons to constant tail bending in the crayfish .
the receptor response to stretch adapts over a span of 30 seconds , giving the students plenty of time to describe and acquire an intuition for the system s adaptation rate ( fig .
2 ) . detected spike times and amplitudes are extractable to a comma delimited text file and loaded into microsoft excel for curve fitting and further analysis . in the motor nerve recordings ,
students acquire spikes from the six - unit tonic motor neuron bundle , visualize them in real time , and characterize network reflex activity in response to sensory stimulation . frequently , the students are able to separate all six units utilizing g - prime s energy density calculation instead of the classical  max amplitude  calculation for a spike event ( fig .
the energy density calculation ( sum of the amplitude components of the fourier transform of a window ) provides a relatively noise invariant measure of spike amplitude ( noise spectrum amplitude is constant and additive to spike amplitudes ) . later in the semester , students learn to achieve intracellular recordings from the crayfish tail muscle innervated by the six - unit tonic motorneuron bundle described above .
they use the spike triggered averaging tools of g - prime to match individual synaptic potentials ( fig .
in addition , students design g - prime controlled stimulation of the motor nerve to describe and explore synaptic plasticity at this neuromuscular junction . figure 5 shows an example student recording of synaptic facilitation caused by tetanic stimulation of the motor nerve , followed by a post - tetanic potentiation of the synaptic potential .
g - prime can record , manipulate and analyze any biological activity representable as a voltage change , even with large , complex data sets .
for example , electric organ discharges from two different morymrid fish can be discriminated by its analysis features ( fig .
students have also recorded and analyzed sounds with g - prime , for example courtship songs of fruit flies .
students download g - prime ( see below ) onto their personal pc laptops for data analysis and report graphics presentation outside the teaching lab .
the program does not work under macintosh operating systems , but runs on any 32-bit microsoft windows based system .
the g - prime project is a powerful tool for undergraduate education and professional research .
it represents a hybridization of disciplines normally reserved for high level collaborative projects at research universities . by bridging commonly used engineering tools into biological applications , we hope to contribute to a new standard for neuroscience education .
new researchers and teachers in the modern era are realizing that they require the information processing and systems analysis tools previously only wielded by electrical engineers .
g - prime makes these powerful tools available to students and established professors / researchers in a user - friendly manner .
a compiled and license free version of g - prime and a g - prime users manual are available as a free download to the general public at the  crawdad 
website : http://crawdad.cornell.edu / gprime/. the source code for this software can also be found here .
g - prime is part of our continuing project to increase the availability of inexpensive and powerful technical resources for neuroscience teaching faculty ( see also land et al . , 2001 , 2004 , krans et al . , 2006 , and johnson et al
 we present g - prime , a software based tool for physiology data acquisition , analysis , and stimulus generation in education and research . 
 this software was developed in an undergraduate neurophysiology course and strongly influenced by instructor and student feedback . 
 g - prime is a free , stand - alone , windows application coded and  compiled  in matlab ( does not require a matlab license ) . 
 g - prime supports many data acquisition interfaces from the pc sound card to expensive high throughput calibrated equipment . 
 the program is designed as a software oscilloscope with standard trigger modes , multi - channel visualization controls , and data logging features . 
 extensive analysis options allow real time and offline filtering of signals , multi - parameter threshold - and - window based event detection , and two - dimensional display of a variety of parameters including event time , energy density , maximum fft frequency component , max / min amplitudes , and inter - event rate and intervals . 
 the software also correlates detected events with another simultaneously acquired source ( event triggered average ) in real time or offline . 
 g - prime supports parameter histogram production and a variety of elegant publication quality graphics outputs . 
 a major goal of this software is to merge powerful engineering acquisition and analysis tools with a biological approach to studies of nervous system function . 
PSEUDOCODE
Interface development
Real-Time & Offline Analysis Features
Report Generation & Input/Output Formats
Code Refinement, Compilation, & Distribution
RESULTS
Student Applications
DISCUSSION