redsun-mimir
Bundle of redsun components for the openUC2 "Mimir" microscope
About mimir
Mimir is the codename for an in-development portable interferometric scattering microscope (iSCAT), with an hardware controller developed by openUC2. It employs pymmcore-plus for camera control and pyserial for motor and laser control.
redsun-mimir is a bundle of components developed to target the specific hardware and software requirements for real-time acquisition with said microscope.
[!NOTE] This bundle has been used as a staging ground for development in cohesion with the main framework. Some components may be moved to
redsunitself to be provided as built-in functionalities. Expect breaking changes as the framework evolves.
[!WARNING] The
youseetoomodule has not been fully tested and there is currently no known way of testing it in a continous integration. Ensure you can pre-emptively test the components locally.
Installation
It is strongly reccomended to install redsun-mimir in a virtual environment.
uv (reccomended)
Be sure to install
uvfirst.
# create the venv
uv venv --python 3.11
# activate the environment in...
# ... linux
source .venv/bin/activate
# ... windows
.venv\Scripts\activate
uv pip install redsun-mimir
pip
You should have Python installed in your machine.
# create the venv
python -m venv .venv
# activate the environment in...
# ... linux
source .venv/bin/activate
# ... windows
.venv\Scripts\activate
pip install redsun-mimir
Installing from source
redsun-mimir is developed via uv; you can clone the repository and install development dependencies:
git clone https://github.com/redsun-acquisition/redsun-mimir
cd redsun-mimir
uv sync
Running a simulator container
redsun-mimir comes with a simple simulation environment with simulated devices for demonstration purposes.
To run it, you have to:
- install the package in your virtual environment by adding the
simoptional dependencies; - run
mmcore install(or alternatively one of the methods described here). - run the container via
mimir sim.
uv (reccomended)
# in your virtual environment
uv pip install redsun-mimir[sim]
# install micro-manager device adapters
mmcore install --test-adapters
# run the example container via command line
mimir sim
pip
# in your virtual environment
pip install redsun-mimir[sim]
# install micro-manager device adapters
mmcore install --test-adapters
# run the example container via command line
mimir sim
Wiring a session from YAML
The shipped containers declare their connections in wire(). A session built
only from a configuration file has no wire() to override, so it must declare
them in a wiring: section: without one the components build and connect to
nothing.
Do not add this section to a configuration that already backs a container class
with a wire() method. The two are applied one after the other, so every rule
would connect a second time and each slot would run twice per emission.
wiring:
- from: det_ctrl.sig_new_data
to: img_widget.update_layers
- from: median_ctrl.median
to: img_widget.update_layers
- from: median_ctrl.filtered
to: img_widget.update_layers
- from: det_widget.sig_property_changed
to: det_ctrl.set
- from: det_ctrl.sig_new_configuration
to: det_widget.on_new_configuration
- from: motor_widget.sig_motor_move
to: motor_ctrl.move
- from: light_widget.sig_toggle_light_request
to: light_ctrl.trigger
- from: light_widget.sig_intensity_request
to: light_ctrl.set
- from: acq_widget.sig_launch_plan_request
to: acq_ctrl.launch_plan
- from: acq_widget.sig_stop_plan_request
to: acq_ctrl.stop_plan
- from: acq_widget.sig_pause_resume_request
to: acq_ctrl.pause_or_resume_plan
- from: acq_widget.sig_action_request
to: acq_ctrl.toggle_action_event
- from: acq_ctrl.sig_plan_done
to: acq_widget.on_plan_done
- from: acq_ctrl.sig_action_done
to: acq_widget.on_action_done
- from: acq_ctrl.sig_pre_launch_notify
to: median_ctrl.clear_medians
- from: acq_ctrl.sig_pre_launch_notify
to: storage_ctrl.set_plan
- from: acq_ctrl.sig_plan_done
to: storage_ctrl.reset_plan
Component names are the keys used under devices:, presenters: and views:;
port names are the signal attributes and the names the slots declare. The last
two rules reach redsun's own StoragePresenter, which stopped discovering
those signals by itself in 0.11.0.
There is no rule feeding motor_widget.update_setpoint: the motor view
subscribes to the axis readbacks themselves, so its labels track the stage even
when a plan is what moved it.
Features
- Live data capture.
- Median computation based on square-scan movement for background noise reduction following the procedure described in this paper.
- Image visualization leveraging
napari. - Data storage in Zarr v3 format via
acquire-zarr. - Manual control of light source and motor drivers.
- Fully extensible via additional components following the
redsunframework.
Contributing
Contributions are very welcome. Tests can be run with pytest, please ensure the coverage at least stays the same before you submit a pull request.
License
Distributed under the terms of the Apache Software License 2.0 license,
redsun-mimir is free and open source software
Issues
If you encounter any problems, please file an issue along with a detailed description.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file redsun_mimir-0.3.1.tar.gz.
File metadata
- Download URL: redsun_mimir-0.3.1.tar.gz
- Upload date:
- Size: 53.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b307c9dfc521498d81691b0b8f55c7dc81a0a335ea62e2239709e95c26cfa911
|
|
| MD5 |
9431da8b0b98a4040e719d22ac77bdcb
|
|
| BLAKE2b-256 |
39bc8c1de0740c14e35fdd61526953c1f17383a001d68d0156567a61e31fd29b
|
Provenance
The following attestation bundles were made for redsun_mimir-0.3.1.tar.gz:
Publisher:
ci.yaml on redsun-acquisition/redsun-mimir
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
redsun_mimir-0.3.1.tar.gz -
Subject digest:
b307c9dfc521498d81691b0b8f55c7dc81a0a335ea62e2239709e95c26cfa911 - Sigstore transparency entry: 2327174020
- Sigstore integration time:
-
Permalink:
redsun-acquisition/redsun-mimir@be76edb72f0ed5c45512b8dc5e07650528b47841 -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/redsun-acquisition
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yaml@be76edb72f0ed5c45512b8dc5e07650528b47841 -
Trigger Event:
push
-
Statement type:
File details
Details for the file redsun_mimir-0.3.1-py3-none-any.whl.
File metadata
- Download URL: redsun_mimir-0.3.1-py3-none-any.whl
- Upload date:
- Size: 79.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8befae87a39efdb2b8a3bf538287de9e11d8638abb19735e97571b38dd8b6f20
|
|
| MD5 |
1f435a4b11f730c926eb9027101c7009
|
|
| BLAKE2b-256 |
5577329bf163801b64295c3ffd99ee5dffc28ef806fdc1a887fce034dee25160
|
Provenance
The following attestation bundles were made for redsun_mimir-0.3.1-py3-none-any.whl:
Publisher:
ci.yaml on redsun-acquisition/redsun-mimir
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
redsun_mimir-0.3.1-py3-none-any.whl -
Subject digest:
8befae87a39efdb2b8a3bf538287de9e11d8638abb19735e97571b38dd8b6f20 - Sigstore transparency entry: 2327174101
- Sigstore integration time:
-
Permalink:
redsun-acquisition/redsun-mimir@be76edb72f0ed5c45512b8dc5e07650528b47841 -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/redsun-acquisition
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yaml@be76edb72f0ed5c45512b8dc5e07650528b47841 -
Trigger Event:
push
-
Statement type: