Git Product home page Git Product logo

acquire-python's Introduction

Build Test DOI Chat

acquire-imaging

This python package provides a multi-camera video streaming library focusing on performant microscopy.

Note This is an early stage project. If you find it interesting please reach out!

Support for:

  • Up to two independent video streams
  • Camera support:
    • Hamamatsu Orca Fusion BT (C15440-20UP) (windows only)
    • Vieworks VC-151MX-M6H00
  • Streaming file format support:
    • Tiff
    • Zarr v2

Installation

python -m pip install acquire-imaging

Usage

See the tests for more examples.

The provided napari plugin is a good example of how to stream for visualization.

List devices

import acquire
print(acquire.Runtime().device_manager().devices())

Finite triggered acquisition

import acquire
runtime=acquire.Runtime()
dm=runtime.device_manager()

props=runtime.get_configuration()
# select the first Hamamatsu camera
props.video[0].camera.identifier = dm.select(DeviceKind.Camera, "hamamatsu.*")
# stream to zarr
props.video[0].storage.identifier = dm.select(DeviceKind.Storage, "zarr")
props.video[0].storage.settings.filename="out.zarr"
props.video[0].camera.settings.shape = (2304, 2304)
props.video[0].camera.settings.pixel_type = SampleType.U16
props.video[0].max_frame_count = 100
props=runtime.configure(props)

runtime.start()
runtime.stop() # wait for acquisition to complete

Development

We welcome contributors. The following will help you get started building the code.

Environment

Requires

It's strongly recommended you create a python environment for development

conda create --name acquire python=3.11
conda activate acquire

Build

conda activate acquire
git submodule update --init --recursive
pip install maturin
maturin build -i python

Important When updating the 'acquire-video-runtime' (the c api), to need to manually trigger a rebuild by touching wrapper.h.

git submodule update # updates acquire-video-runtime
touch wrapper.h # will trigger a rebuild
python -m build

This package depends on a submodule (acquire-video-runtime) and binaries from the following Acquire drivers:

The build script will automatically try to fetch the binaries from GitHub releases. In order to configure which release of each driver to use, you can set the value in drivers.json:

{
  "acquire-driver-common": "0.1.0",
  "acquire-driver-hdcam": "0.1.0",
  "acquire-driver-egrabber": "0.1.0",
  "acquire-driver-zarr": "0.1.0"
}

These values can be set to a specific version, or to nightly for nightly builds.

Develop

pip install -e ".[testing]"
pytest -s --tb-short --log-cli-level=0

This project uses pre-commit to run required checks as git hooks.

pip install pre-commit
pre-commit install

Troubleshooting

Maturin can't find a python interpreter

Maturin is a command line tool associated with pyo3. It helps automate the build and packaging process. It's invoked by setuptools during a build.

  1. Double-check you've activated the right conda environment.
  2. Try maturin build -i python

This seems to happen on windows in anaconda environments when multiple python interpreters are available on the path.

It seems to happen less frequently when invoked via pip - pip install -e . will end up invoking maturin.

Working with an editable install, how do I update the build?

It depends on what you changed:

  • acquire-video-runtime (c/c++ code): touch wrapper.h; maturin develop
  • rust code: maturin develop

acquire-python's People

Contributors

aliddell avatar andy-sweet avatar dependabot[bot] avatar nclack avatar poofjunior avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.