Todo
This page is still under construction! For a more detailed description, see the whitepaper, particularly “Program Structure”
Overview¶
Program Structure¶
Autopilot performs experiments by distributing them over a network of desktop computers and Raspberry Pis.
Each Computer or Pi runs an Autopilot agent, like the user-facing Terminal
or a Raspberry Pi
Pilot
.
The Terminal
agent provides a gui
to operate the system, manage Subject
s and
experimental protocols, and plots
for visualizing data from ongoing experiments.
Each Terminal
manages a swarm of Pilot
s that actually perform the experiments. Each Pilot
coordinates hardware
and stim
uli in a Task
. Pilot
s can, in turn, coordinate their
own swarm of networked Children
that can manage additional hardware components – allowing Task
s to
use effectively arbitrary numbers and combinations of hardware.
Tasks¶
Behavioral experiments in Autopilot consist of Task
s. Tasks define the parameters, coordinate the hardware,
and perform the logic of an experiment.
Tasks may consist of one or multiple stages, completion of which constitutes a trial. Stages are analogous to states in a finite-state machine, but don’t share their limitations: Tasks can use arbitrary transitions between stages and have computation or hardware operation persist between stages.
Multiple Tasks can be combined to make protocols, in which subjects move between different tasks according to
graduation
criteria like accuracy or number of trials. Protocols can thus be used to automate shaping routines
that introduce a subject to the experimental apparatus and task structure.
For more details on tasks, see Writing a Task
Module Tour¶
Todo
A more comprehensive overview is forthcoming, but the documentation for the most important modules can be found in the API documentation. A short tour for now…
Terminal
- user facing agent class used to control and configure program operation. See Terminal Setup andsetup.setup_terminal
gui
- GUI classes built with PySide2/Qt5 used by the terminalplots
- Classes to plot data from ongoing taskspilot
- Experimental agent that runs tasks on Raspberry Pisnetworking
- Networking modules used for communication between agents, tasks, and hardware objectssubject
- Data and metadata storagehardware
- Hardware objects that can be used in taskstasks
- Customizable and extendable Task templatesstim
- Stimulus generation & presentation, of which sound is currently the most heavily developed