Skip to main content

Read Photonscore LINCam .photons (D7) files

Project description

photonsfile

Pure-Python reader for Photonscore LINCam .photons files (the D7 container). numpy only, with optional numba acceleration for the varint decode.

Photonscore LINCam is a position-sensitive single-photon detector: every photon carries an (x, y) detector position, a TCSPC micro time (dt), and a macro time in milliseconds (ms). This library decodes those per-photon streams and can bin them into an intensity image, a TCSPC decay, or a (Y, X, H) FLIM cube.

The D7 format

A .photons file is a paged container: 16 KB pages, each carrying a 2-byte page marker, holding a protobuf-style header, a per-dataset index, and an epilogue. Each dataset (/photons/x, /photons/y, /photons/dt, /photons/ms, and on dual-TDC detectors /start/time and /stop/time) is stored as a seed value followed by zigzag-varint delta blocks. dt to time is calibrated from the file's /photons/TacChannel attribute (picoseconds per raw unit).

The format is documented at github.com/photonscore/d7 (Apache-2.0). This reader was written from that specification and validated bit-exact against the Photonscore SDK. No vendor source is redistributed.

Install

pip install photonsfile          # numpy only
pip install photonsfile[all]     # + numba, for a faster varint decode

Usage

from photonsfile import PhotonsFile, imread

with PhotonsFile('sample.photons') as f:
    ph = f.photons()               # {'x', 'y', 'dt', 'ms'} arrays, one per photon
    img = f.image(pixels=512)      # (Y, X) intensity image
    decay = f.decay(bins=256)      # summed TCSPC histogram
    cube = f.flim_image(512, 256)  # (Y, X, H) FLIM cube
    dt_res = f.tcspc_resolution(256)   # seconds per bin, from TacChannel
    print(f.attributes)            # D7 file attributes

img = imread('sample.photons')     # shortcut for the intensity image

Low-level access to the decoder is also exported: read_header, read_attributes, read_photons, dataset_names, has_dual_tdc.

numba is optional; without it the varint decode uses a vectorised numpy fallback. photonsfile.have_numba() reports which path is active.

Provenance

Reverse-engineered from the public D7 specification and checked bit-exact against the Photonscore SDK on a 284-million-photon sample. Thanks to Photonscore for open-sourcing the D7 format.

License

MIT - 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

photonsfile-2026.7.8.tar.gz (8.9 kB view details)

Uploaded Source

Built Distribution

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

photonsfile-2026.7.8-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

File details

Details for the file photonsfile-2026.7.8.tar.gz.

File metadata

  • Download URL: photonsfile-2026.7.8.tar.gz
  • Upload date:
  • Size: 8.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.7

File hashes

Hashes for photonsfile-2026.7.8.tar.gz
Algorithm Hash digest
SHA256 00a59f5408a2864ab21fa46a08303f50c333ffb5520313974d0827879aaad197
MD5 abd19afd07562afc5fa6b075d7494382
BLAKE2b-256 4922ddd7fa7a98ee8e44d04388ca24ed5510c79a30e50e11ee90e7eb9a64287a

See more details on using hashes here.

File details

Details for the file photonsfile-2026.7.8-py3-none-any.whl.

File metadata

  • Download URL: photonsfile-2026.7.8-py3-none-any.whl
  • Upload date:
  • Size: 9.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.7

File hashes

Hashes for photonsfile-2026.7.8-py3-none-any.whl
Algorithm Hash digest
SHA256 6258fa702976f2cec0ef8b38f5d7a7820127a37c711fa93dfda78711e22cd97f
MD5 6c26b3b882a9d423b2b236a3c458c584
BLAKE2b-256 59b90adccecf2e49691390c0ae472c9c440f01d32bb89af6941a7cfd19e6790a

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