What is Whisker?
- Whisker is a system designed for controlling digital input and output devices, touchscreens, multiple computer monitors, audio output, mice and keyboards.
- Whisker is oriented towards creating powerful, flexible behavioural tasks for psychology and neuroscience research.
- It runs under the Windows NT/2000/XP family of operating systems on PC-compatible computers. It is based on a client-server system using the TCP/IP protocol suite.
- Designed to give you exceptional programming power. The client-server model used by Whisker means that you can write behavioural tasks in any programming language that supports TCP/IP communications. This brings many concrete benefits, including the following:
- Novice programmers can use a simple, familiar language, such as Visual Basic.
- Expert programmers can use powerful, unrestricted languages, such as C++. The Whisker communications protocol is simple and thoroughly documented.
- As the programming language is unrestricted, you can write tasks that interact with input/output devices, provide advanced monitoring of your task on-line (such as the calculation of complex measures of performance), store data directly to ODBC databases as well as to disk, or take control of novel experimental hardware that Whisker does not yet support. There is no limit.
- You can choose a compiled programming language, in which your typing errors will be found before you can run the program.
- Using a compiled language you can, if you wish, supply behavioural tasks to others with or without the source code necessary to modify the program.
- Programs written in different languages can be freely mixed and run simultaneously.
- Completely independent control of operant chambers. Independence of control — the ability to run a different task in every operant chamber, starting and stopping each at will — is intrinsic to Whisker. You don't have to wait for every subject in a batch to finish a lengthy task before starting more subjects. However, Whisker does not restrict you to independent control. If an experiment demands that one task controls two or more operant chambers simultaneously, as might be required for a yoking experiment, Whisker allows you to do this. (What Whisker does do is prevent two separate behavioural tasks from controlling the same device simultaneously.) This system also means that you can use one of your operant chambers for developing a new task, while running your day-to-day experiments in the other chambers.
- Runs on standard PC hardware. Whisker runs under multithreaded Win32 operating systems: Windows NT 4, Windows 2000, Windows XP. (Multiple monitor support requires Windows 2000/XP.)
- High-performance multitasking. Whisker typically gives a time resolution of ~1 ms with clients running on the control computer. On present PC hardware, it is perfectly possible to use your control computer for other tasks (word processing, data analysis, Internet access) while running behavioural tasks, thus giving you an extra computer in your lab. Windows-based pre-emptive multitasking ensures that the Whisker system runs uninterrupted. (Note that this does depend on your hardware and the time resolution required of your tasks. Whisker provides performance monitors so you can assess this, and demands a high priority from Windows. The slowest computer tested to date has been based on an AMD K6-2/450 MHz processor; this gave very acceptable performance.)
- Support for low-cost digital I/O hardware. If you are prepared to buy and wire your digital I/O hardware yourself, you can put together the hardware for a system capable of controlling 144 lines (in our lab, about 10 operant chambers) for under £2000 (1999 prices). Full documentation is included on how to wire the system. (This price does not include the Whisker software suite.)
- Not restricted to behavioural control. Any device using digital input/output can be controlled.
- Support for remote monitoring of behavioural tasks. You can monitor the status of your behavioural tasks — on any number of control computers —from any other networked computer, usinga dedicated status program or a Web browser. You can monitor your subjects from your office.
- Intrinsic support for networking. Using the facility whereby two clients can communicate with each other, you can synchronize independent tasks. (For example, a task implementing a schedule of reinforcement could communicate with a program controlling electrochemistry or microdialysis equipment to provide the necessary time-stamp data, allowing you to implement electrochemistry without placing the burden of e-chem control on each of your behavioural tasks.) If you wish, you can even run your behavioural tasks on a different computer to the one connected to the digital I/O hardware (though this is not recommended as it relies on good network performance.)
- Built-in safety features. Whisker is not guaranteed to be free of fault, and therefore its use to control life-critical devices is entirely at your own risk. Whisker should NEVER be used to control hardware that might potentially endanger human life, including medical devices. However, Whisker includes features to support the use of hardware that may potentially endanger animal life if misused, such as intravenous infusion pumps. These safety features are:
- The ability to apply 'fail-safes' to any output device; Whisker can turn the device off after it has been 'ignored' by its controlling client for a specified period, so if the controlling client fails the pump will not run for a dangerously long time.
- Whisker allows you to dedicate some output lines to the control of the power supply for critical devices, so that power cannot be supplied to the device unless Whisker is running and in control of the system.
- Operant control features directly relevant to behavioural control. For example, Whisker allows you to define multiple aliases for a given device — drastically simplifying the creation of counterbalanced tasks — and assign the same name to several devices, allowing rapid implementation of yoking.
- A development kit specifically designed for creating behavioural tasks. To make it exceptionally easy to program behavioural tasks (clients) for Whisker, a library is supplied for C++, removing the need for you to know how to communicate with Whisker over a network. This library also supports operations commonly used in behavioural tasks, such as pulsing and flashing output lines.
- Built-in support for monitoring and debugging features. At any time, you can see the state of any device attached to the system, and, via the server, observe and interact with tasks that are running — simply to monitor your subjects, or to test behavioural tasks being developed.
- Graphical displays, on multiple monitors. If you wish, you can create behavioural tasks with advanced graphical displays on your own. However, Whisker incorporates support for multimonitor display systems, dramatically simplifying the process of creating visually-driven tasks. Whisker provides simple-to-use support for the Windows graphics device interface (GDI) drawing functions, and allows bitmap (.BMP) pictures to be displayed, all with simple one-line text-based commands. Multiple monitors may be controlled independently or together.
- Touchscreens. Whisker supports the use of touchscreens, making touchscreen control as simple as providing a one-line message to display a picture, and asking for notification when that picture is touched. Whisker supports touchscreens from all manufacturers for which a 'universal pointing device driver' (UPDD, from Touch-Base Ltd) is available; currently, this represents the vast majority of touchscreens available today and used historically.
- Sound support, with multiple sound outputs. Waveformat (.WAV) files are supported, giving Whisker full multimedia capability.
- Support for a range of I/O hardware. At present, cards from Amplicon Liveline Ltd, Advantech, and ICS are supported. New cards can be supported on request.
- Full development kit for C++, Visual Basic, and any languages that can link C++ libraries.
- Digitally signed data logs to assist with USA FDA GLP compliance.
- Support for 'remote control' of behavioural tasks. At present, Whisker clients can communicate with each other if they both agree to do so. This may be formalized into a protocol by which a single 'remote control' program can configure, start, pause, and stop behavioural tasks that support this feature. While remote control of behavioural tasks is not necessarily desirable, this feature may assist those users using systems where the control computer's display is inside an operant chamber and therefore inconvenient to control directly. (It should be noted that, given a guaranteed high-performance network, this may also be achieved by running the behavioural task on a different computer, but guaranteed-performance networks are rare.)
- Support for analogue devices (as for electrophysiology and electrochemistry).
- Video capture.
- The cost of Whisker itself (see Ordering).
- The hardware cost (see Ordering). If you are prepared to wire up a system according to the instructions supplied with Whisker, the hardware cost will be very low.
- The cost of the behavioural tasks. You may buy prepackaged tasks (see Tasks and Ordering), write your own, or request custom-written tasks. If you write your own, your costs will be (1) that of a programming language (compiler or interpreter); (2) that of your time.