Top  Previous  Next



First version finished on 14 Jan 2000, pending examination of a few other quirks of the printout from the Paul Fray second-order program (i.e. do we need these features?).
Implemented as a dialogue-based Windows program using the Whisker C++ client library. Provides status information to the server to enable its progress to be monitored from a different location (using the WhiskerStatus tool)
Maintains rat configuration data files.
Produces a summary file containing the most useful information about the session, and a response file in comma-delimited format containing a time-stamped record of every response made, with information about whether that response produced a stimulus or a primary reinforcer.
Stores a session's complete data set directly in a database when the run is finished. This feature uses ODBC (Open Database Connectivity, a world standard for communicating with databases). An appropriately-configured database in Microsoft Access 97 format is supplied with SecondOrder.
Adapted for Whisker v2 server-side device definition files.




Supports FI/FR/VR for both unit and overall schedules. VR schedules are specified with a flat probability distribution function (i.e. you specify the minimum and maximum value, rather than the mean).
For overall-FI schedules, calculates index of curvature and proportions of responding in each quarter of the interval.
Supports left/right lever and nosepoke manipulanda, with variable location CS.
Inactive lever can optionally cause both levers to retract for a timeout period.
Supports pump/dipper reinforcement, with configurable multi-dip reinforcement, and timeout periods at reinforcement.
All stimulus and reinforcement timing parameters can be configured.
Records locomotor activity on up to three beams in bins of configurable size.
Session time and number of reinforcements can be capped.


Schedule and calculation details


Responding during a stimulus is counted towards totals and index-of-curvature plotting, but does not contribute towards the unit schedule in progress.


Responding during a reinforcement timeout (which is only possible for nosepokes and non-retractable levers) is recorded in the response log, and contributes towards the response totals, but does not contribute to progress on the schedule or to index-of-curvature data, as these responses are considered 'outside' the overall FI (the overall FI is considered to start at the end of this timeout period).


Inner workings of the program


I think it would be fair to say that this is not a simple program by experimental psychology standards, though this is due more to the user interface and the communication with the database than the complexity of the task. However, I tried to write it in as comprehensible a manner as I could. The source code is supplied, and I encourage you to explore it, though it may be easier to start with simpler clients (see the Whisker Programmer's Guide). The central function, CSecondOrderTask::IncomingEvent(CString strEvent), in SecondOrderTask.cpp, does all the work relating to the task, and it's quite simple.