Skip to main content

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.

Metadata

Release files for improv 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for improv 0.2.2
File Size Uploaded Provenance Actions
improv-0.2.2.tar.gz 638.9 kB Without provenance Details for improv-0.2.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for improv 0.2.2
File Interpreter ABI Platform Actions
improv-0.2.2-py3-none-any.whl Python 3 none any Details for improv-0.2.2-py3-none-any.whl

Total release size: 679.7 kB

Release files / improv-0.2.2.tar.gz

Download URL improv-0.2.2.tar.gz
Size 638.9 kB
Tags Source
SHA-256 checksum
How to use checksums
76b485a95c3dd52e3b764222f2aa64c382c000e7d10acb3536041d20446d6c1b
BLAKE2b-256 checksum
How to use checksums
771c6c60019985ff7a7afbfafdcb02a32141a459bea6e02052b2a9e3026aaebc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/4.0.2 CPython/3.11.7

Release files / improv-0.2.2-py3-none-any.whl

Download URL improv-0.2.2-py3-none-any.whl
Size 40.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8924cb08e11a3cb018de59f3dc8291e7d5b68c6641a1681d41fc30cd40b204d0
BLAKE2b-256 checksum
How to use checksums
94b72d0eb6266ee1acfabf54479526c946cb9bfbd2d39d5cfe469e5a20f7fbdc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/4.0.2 CPython/3.11.7

Security for improv 0.2.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page