.. title::
Autopilot - Distributed Behavior
.. raw:: html
:file: includes/autopilot_logo_banner.html
Autopilot is a Python framework to perform behavioral experiments with one or many `Raspberry Pis `_.
Its distributed structure allows arbitrary numbers and combinations of hardware components to be used in an experiment,
allowing users to perform complex, hardware-intensive experiments at scale.
Autopilot integrates every part of your experiment,
including hardware operation, task logic, stimulus delivery, data management, and visualization of task progress --
making experiments in behavioral neuroscience replicable from a single file.
Instead of rigid programming requirements, Autopilot attempts to be a flexible framework with many different modalities of use
in order to adapt to the way you do and think about your science rather than the other way around. Use only the parts of the
framework that are useful to you, build on top of it with its plugin system as you would normally, while also maintaining
the provenance and system integration that more rigid systems offer.
For developers of other tools, Autopilot provides a skeleton with minimal assumptions to integrate their work with its
broader collection of tools, for example our integration of `DeepLabCut-live `_
as the :class:`~.transform.image.DLC` transform (:cite:`kaneRealtimeLowlatencyClosedloop2020`).
Our long-range vision is to build a tool that lowers barriers to tool use and contribution, from code to contextual technical
knowledge, so our broad and scattered work can be cumulatively combined without needing a centralized consortium or
adoption of a singular standard.
For a detailed overview of Autopilot's motivation, design, and structure, see our `whitepaper `_.
.. admonition:: What's New :ref:`v0.5.0a0 - The Data Modeling Edition (2022-06-01) `
A prerelease as Jonny is finishing their dissertation and doesn't want to break anyone's experiments!
* Adding the whole :mod:`autopilot.data` module, which starts the process of making everything work with formal data models.
* Rewriting the :class:`~autopilot.data.subject.Subject` class!
* A :class:`.ModelWidget` to fill and edit data models that will eventually replace much of the aging GUI
* Less jitter in :class:`JackClient` by removing calls to ``queue.get``
* Repackaging autopilot with poetry!
* :mod:`.log_parsers` and programmatic reading of logs
* See the :ref:`changelog ` for more!
This documentation is very young and is very much a work in progress! Please `submit an issue `_ with any incompletenesses, confusion, or errors!
.. toctree::
:maxdepth: 1
:caption: User Guide:
Overview
Quickstart
Installation
Configuration
Training a Subject
Writing a Task
Using Plugins
Examples
FAQ
.. toctree::
:maxdepth: 1
:caption: API Documentation:
:titlesonly:
Agents
Data
GUI
Hardware
Networking
Stimuli
Tasks
Transformations
Utilities
Setup
Prefs
Root
External
.. toctree::
:maxdepth: 1
:caption: Meta:
Wiki
Discussion
Changelog
To-Do
References
.. toctree::
:caption: Tests:
tests/index
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`