improv
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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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.