This page is still under construction! For a more detailed description, see the whitepaper, particularly “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
Terminal manages a swarm of
Pilot s that actually perform the experiments. Each
stim uli in a
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.
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
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…
gui- GUI classes built with PySide2/Qt5 used by the terminal
plots- Classes to plot data from ongoing tasks
pilot- Experimental agent that runs tasks on Raspberry Pis
networking- Networking modules used for communication between agents, tasks, and hardware objects
subject- Data and metadata storage
hardware- Hardware objects that can be used in tasks
tasks- Customizable and extendable Task templates
stim- Stimulus generation & presentation, of which sound is currently the most heavily developed