Skip to main content

Snouty (AndrewGYork single-objective light-sheet) reader plugin for zarrmony.

Project description

zarrmony-snouty

Snouty (single-objective light-sheet, "SOLS") reader plugin for zarrmony. Detects a single Snouty GUI acquisition subdirectory (*_ht_sols_snap or *_ht_sols_acquire) and converts the raw skewed volume it contains to OME-NGFF 0.5:

zarrmony convert /path/to/<ts>_000_ht_sols_snap ./out

Install

pip install zarrmony-snouty

Not yet on PyPI. Until the first release, install from source:

pip install git+https://github.com/ferrinm/zarrmony-snouty

This pulls zarrmony from PyPI as a transitive dependency.

Verify the plugin registered

from zarrmony.readers.plugin import list_plugins
print([p.name for p in list_plugins()])
# -> [..., 'zarrmony-snouty']

For a clean-venv install smoke test (the same shape CI runs):

uv venv .venv-smoke
source .venv-smoke/bin/activate
uv pip install .
python -c "from zarrmony.readers.plugin import list_plugins; \
           assert 'zarrmony-snouty' in {p.name for p in list_plugins()}"

The same assertion runs in CI as tests/test_install_smoke.py.

Use

zarrmony inspect /path/to/2026-07-14_10-15-35_000_ht_sols_snap   # dims, channels, pixel sizes
zarrmony convert /path/to/2026-07-14_10-15-35_000_ht_sols_snap ./out

Output is a single <dir-basename>.ome.zarr store with dims (T=1, C=1, Z, Y, X), physical pixel sizes (X=sample_px_um, Y=sample_px_um, Z=scan_step_size_um) copied from the vendor's metadata/<name>.txt sidecar, and channel names from channels_per_slice. The verbatim sidecar text is preserved in the audit at <store>/OME/source/raw.snouty.txt.

The Z spacing reported here is the raw scan step — the physical distance the scan mirror moves between successive slices — not the de-sheared/rotated orthogonal Z. Downstream tools that need real orthogonal geometry will need to deshear the volume (see Roadmap below) or apply the sidecar's voxel_aspect_ratio themselves.

Supported acquisitions

  • Single-position, single-timepoint, single-channel snap or acquire runs. This is the simplest observed Snouty output shape and the target of v0.1. Multi-position, multi-timepoint, and multi-channel runs are detected and rejected with actionable errors (see Limitations).

Detection requires a directory whose name ends in _ht_sols_snap or _ht_sols_acquire and which contains sibling data/ and metadata/ subdirectories with at least one .tif and one .txt file respectively.

Limitations

  • No multi-position support. Data files named *_pNNNNNN.tif raise SnoutyMultipositionUnsupportedError (a NotImplementedError). Tracked for v0.2.
  • No multi-timepoint support. More than one .tif in data/ (or volumes_per_buffer > 1) raises SnoutyMultiTimepointUnsupportedError. Tracked for v0.2.
  • No multi-channel support. channels_per_slice with more than one entry raises SnoutyMultiChannelUnsupportedError. Tracked for v0.2.
  • No deshear or rotation. The output volume is the raw skewed (Z, Y, X) from the vendor's TIFF, with the top 8 rows (PCO BCD timestamp strip) cropped off. Deshear and traditional-view (rotated) modes are tracked for v0.2 — the reference algorithm lives in ../snouty-folder and will be ported.
  • No top-level GUI-session-dir support. Users must point zarrmony convert at individual *_ht_sols_* subdirs, not the parent *_ht_sols_gui/ directory. Multi-scene enumeration across a whole GUI session is tracked for v0.3.

Roadmap

  • v0.2 — deshear and traditional-view output modes (opt-in), ported from the CPU implementation in snouty-folder; multi-timepoint via T-concat across data/*.tif; multi-position (one scene per position); multi-channel wiring.
  • v0.3 — top-level *_ht_sols_gui/ directory as the input, one scene per subdir. Consider whether the XY position list surfaces as plate-shaped metadata.

Why a separate package?

Snouty is a custom-built microscope with no bioio backend. The vendor metadata is a bespoke key=value plaintext file, not OME-XML. The raw pixel data is a plain multi-slice TIFF but the geometry (55° light-sheet tilt, scan-shear along Y) requires a plugin that understands the sidecar to expose correct pixel sizes and eventually to deshear. See ADR-0001 for the rationale and the reader-plugin authoring guide for how to build your own plugin.

License

Apache-2.0. See LICENSE.

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

zarrmony_snouty-0.1.0.tar.gz (138.4 kB view details)

Uploaded Source

Built Distribution

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

zarrmony_snouty-0.1.0-py3-none-any.whl (13.7 kB view details)

Uploaded Python 3

File details

Details for the file zarrmony_snouty-0.1.0.tar.gz.

File metadata

  • Download URL: zarrmony_snouty-0.1.0.tar.gz
  • Upload date:
  • Size: 138.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for zarrmony_snouty-0.1.0.tar.gz
Algorithm Hash digest
SHA256 4a94de02a7219d901b4c88926e0458dd4948a39e73e9d26abb06c0fdc82e4775
MD5 5f143bc6f16647a82c192a1686477a26
BLAKE2b-256 121e1f98feaf5094cafba13193b38a1f3d771aa94d8144b66ddbce3024311f8e

See more details on using hashes here.

Provenance

The following attestation bundles were made for zarrmony_snouty-0.1.0.tar.gz:

Publisher: release.yml on ferrinm/zarrmony-snouty

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zarrmony_snouty-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: zarrmony_snouty-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 13.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for zarrmony_snouty-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c73efea2a5f152193071d4b07935a9c973b20ca4cd640c511c9f1c04e7252786
MD5 fc393fd9660de0cccee2d40162f7a2b5
BLAKE2b-256 69b9174c63439c58534bf43460e995a78a71b05b3ee4db19a173c154892f2f46

See more details on using hashes here.

Provenance

The following attestation bundles were made for zarrmony_snouty-0.1.0-py3-none-any.whl:

Publisher: release.yml on ferrinm/zarrmony-snouty

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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