Skip to main content

Platform for adaptive neuroscience experiments

Project description

improv

PyPI PyPI - Python Version docs tests Coverage Status PyPI - License Code style: black

A flexible software platform for real-time and adaptive neuroscience experiments.

improv is a streaming software platform designed to enable adaptive experiments. By analyzing data, such as 2-photon calcium images, as it comes in, we can obtain information about the current brain state in real time and use it to adaptively modify an experiment as data collection is ongoing.

This video shows raw 2-photon calcium imaging data in zebrafish, with cells detected in real time by CaImAn, and directional tuning curves (shown as colored neurons) and functional connectivity (lines) estimated online, during a live experiment. Here only a few minutes of data have been acquired, and neurons are colored by their strongest response to visual simuli shown so far. We also provide up-to-the-moment estimates of the functional connectivity by fitting linear-nonlinear-Poisson models online, as each new piece of data is acquired. Simple visualizations offer real-time insights, allowing for adaptive experiments that change in response to the current state of the brain.

How improv works

improv allows users to flexibly specify and manage adaptive experiments to integrate data collection, preprocessing, visualization, and user-defined analytics. All kinds of behavioral, neural, or modeling data can be incorporated, and input and output data streams are managed independently and asynchronously. With this design, streaming analyses and real-time interventions can be easily integrated into various experimental setups. improv manages the backend engineering of data flow and task execution for all steps in an experimental pipeline in real time, without requiring user oversight. Users need only define their particular processing pipeline with simple text files and are free to define their own streaming analyses via Python classes, allowing for rapid prototyping of adaptive experiments.


improv's design is based on a streamlined version of the actor model for concurrent computation. Each component of the system (experimental pipeline) is considered an 'actor' and has a unique role. They interact via message passing, without the need for a central broker. Actors are implemented as user-defined classes that inherit from improv's Actor class, which supplies all queues for message passing and orchestrates process execution and error handling. Messages between actors are composed of keys that correspond to items in a shared, in-memory data store. This both minimizes communication overhead and data copying between processes.

Installation

For installation instructions, please consult the docs on our github.

Contact

To get in touch, feel free to reach out on Twitter @annedraelos or @jmxpearson.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

improv-0.2.2.tar.gz (638.9 kB view details)

Uploaded Source

Built Distribution

improv-0.2.2-py3-none-any.whl (40.8 kB view details)

Uploaded Python 3

File details

Details for the file improv-0.2.2.tar.gz.

File metadata

  • Download URL: improv-0.2.2.tar.gz
  • Upload date:
  • Size: 638.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for improv-0.2.2.tar.gz
Algorithm Hash digest
SHA256 76b485a95c3dd52e3b764222f2aa64c382c000e7d10acb3536041d20446d6c1b
MD5 789f3f408bf93d6a466eaadad0fbdc0b
BLAKE2b-256 771c6c60019985ff7a7afbfafdcb02a32141a459bea6e02052b2a9e3026aaebc

See more details on using hashes here.

File details

Details for the file improv-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: improv-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 40.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for improv-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8924cb08e11a3cb018de59f3dc8291e7d5b68c6641a1681d41fc30cd40b204d0
MD5 1ceab72969a8201ece4d3f90a116d0d2
BLAKE2b-256 94b72d0eb6266ee1acfabf54479526c946cb9bfbd2d39d5cfe469e5a20f7fbdc

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page