Skip to main content

A library for defining and maintaining behavior tasks.

Project description

aind-behavior-services

CI PyPI - Version License ruff uv

A library for defining and maintaining behavior tasks.


Installation

The python package can be installed from pypi using the following command:

pip install aind-behavior-services

However, to use all the tasks and hardware that this package supports, you should over over the prerequisites and deployment sections.

Prerequisites

These should only need to be installed once on a fresh new system, and are not required if simply refreshing the install or deploying to a new folder.

  • Windows 10 or 11
  • Run ./scripts/install_dependencies.ps1 to automatically install dependencies
  • The following dependencies should be manually installed:
    • Spinnaker SDK 1.29.0.5 (device drivers for FLIR cameras)

      • On FLIR website: Download > archive > 1.29.0.5 > SpinnakerSDK_FULL_1.29.0.5_x64.exe

Deployment

Install the prerequisites mentioned below. From the root of the repository, run ./scripts/deploy.ps1 to bootstrap both python and bonsai environments.


Generating valid JSON input files

One of the core principles of this repository is the strict adherence to json-schemas. We use Pydantic as a way to write and compile our schemas, but also to generate valid JSON input files. These files can be used by Bonsai (powered by Bonsai.SGen code generation tool) or to simply record metadata. Examples of how to interact with the library can be found in the ./examples folder.


Regenerating schemas

Once a Pydantic model is updated, updates to all downstream dependencies must be made to ensure that the ground-truth data schemas (and all dependent interoperability tools) are also updated. This can be achieved by running uv run ./src/_generators/<__init__.py> from the root of the repository. This script will regenerate all json-schemas along with C# code (./scr/Extensions) used by the Bonsai environment.


Contributors

Contributions to this repository are welcome! However, please ensure that your code adheres to the recommended DevOps practices below:

Linting

We use ruff as our primary linting tool.

Testing

Attempt to add tests when new features are added. To run the currently available tests, run python -m unittest from the root of the repository.

Lock files

We use uv to manage our lock files.

Versioning

Where possible, adhere to Semantic Versioning.


Project dependency tree

classDiagram
    class aind_behavior_curriculum {
        +Task
        +Curriculum
    }

    class aind_behavior_services {
        +Task (Subclasses)
        +Rig (maintains hardware library)
        +Session
        +Calibration (maintains device/calibration library)
        +Deployment instructions
        +Ecosystem documentation
    }

    class clabe {
        +Launch experiment
        +Interfaces with external applications (e.g. Bonsai)
        +Interfaces with aind-services
    }

    class aind_behavior_some_task {
        +Concrete implementation of a task
        +Rig (Subclasses for some task)
        +Session
        +Task (Subclasses for some task)
        +Maintains a task data-schema
        +Saves data in standard format
    }

    class aind_behavior_some_task_analysis {
        +Analysis code for some task
    }

    class contraqctor {
        +Data ingestion
        +Data contract definition
        +Core analysis primitives
        +QC
    }

    aind_behavior_curriculum --|> aind_behavior_services : Subclasses Task
    aind_behavior_services --|> aind_behavior_some_task 
    aind_behavior_some_task --|> aind_behavior_some_task_analysis : Analysis
    contraqctor --|> aind_behavior_some_task_analysis : Imports core analysis methods
    aind_behavior_some_task_analysis --|> aind_behavior_curriculum : Metrics[Task]
    
    clabe --|> aind_behavior_some_task : Launches

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

aind_behavior_services-0.13.0.tar.gz (25.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aind_behavior_services-0.13.0-py3-none-any.whl (35.5 kB view details)

Uploaded Python 3

File details

Details for the file aind_behavior_services-0.13.0.tar.gz.

File metadata

  • Download URL: aind_behavior_services-0.13.0.tar.gz
  • Upload date:
  • Size: 25.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for aind_behavior_services-0.13.0.tar.gz
Algorithm Hash digest
SHA256 21874c1a4555ab2a3c2afef895f279dda48ea0cc3dbc6a7a2ee6fbd7139dc544
MD5 d0e20e0ee59ff720a272b75a7f3eaad7
BLAKE2b-256 e852169fe25fb69cb249ac86408cad77bcce0950e60cc6491e0117c26f206e91

See more details on using hashes here.

File details

Details for the file aind_behavior_services-0.13.0-py3-none-any.whl.

File metadata

  • Download URL: aind_behavior_services-0.13.0-py3-none-any.whl
  • Upload date:
  • Size: 35.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for aind_behavior_services-0.13.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9b0fe77c0a4ecddf9fcf1b1d8e791de2e16ad36425d053fc587f195f88bb7286
MD5 d4df7b0f954b2e0e7f3851b87a819475
BLAKE2b-256 9b356df8230287d3747ff04192b16bd61aec4bbf4867271c619960f5f66ea222

See more details on using hashes here.

Supported by

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