Program
• | 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. |
Schedules
• | 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.

|