-
Notifications
You must be signed in to change notification settings - Fork 1
How do I create a new task?
The goal of behavior_control is to be generic enough to allow for several types of behavioural tasks to be flexibly created on the go.
Have a look at the GUI wiki page first.
In case a new behavioural task is to be designed to train animals, here are key things to consider. This is meant as a very general guide to help you get started.
Currently the types of data being used and/or saved are the lick piezo sensor data and TTL pulses related to different task events: whisker/auditory stimulus, galvo positions, valve openings, etc. All of this relates to physical devices/hardware.
Therefore, the first question that you need to ask yourself is: do I have everything on my setup to create that task? For example: do I need to add a piezo sensor? Do I need to add a light stimulus?
If anything new is required, you may need to update how Sessions
are created while keeping in my mind to be generic.
Many detection tasks variants can already be implemented without changes in the software, but by just changing the parameters in the GUI.
- Stimulus types: whisker (several amplitudes and proportions), auditory
- Optogenetic stimulation
- Timeout
- Trial durations, ITI
- Reward magnitude, with non-zero omission probabilities (for whisker only currently), reward delays, etc.
If any new type of information is introduced somewhere, following for example a new task design, you must now ask yourself whether the output files of behavior_control will actually have it.
Information to be saved are in two files:
-
session_config.json
: general session-wide metadata e.g. related to session type, fixed task parameters, etc. This is mostly a copy of thehandles
variable in the code, and saves last updated state of the GUI. -
results.csv
: trial-by-trial metadata e.g. related to stimulus information, mouse choice, etc.