tcspc_stats — PHOTON tcspc op

• Data kinds: counts → table

• Call: import fullseye as fs; fs.ledger.tcspc_stats(hist, bin_ps=100.0) (to call the implementation directly, import photoncount; photoncount.tcspc_stats(hist, bin_ps=100.0); from the registry, opsphoton.get("tcspc_stats"))

Usage

Descriptors of an arrival-time histogram: peak, centroid, width, background.

Returns a dict: total_counts · peak_bin (int) · peak_counts · peak_time_ps (the centre of the peak bin, (k + 0.5)*bin_ps) · centroid_ps (the first moment over the whole histogram, background included — run tcspc_background_subtract first if that matters) · fwhm_ps (full width at half maximum *above the background*, by linear interpolation of the two half-crossings around the peak) · background_per_bin (the median bin, the same robust estimate tcspc_background_subtract uses) · signal_counts (total - background*bins) · sbr (signal-to-background ratio, or None when the background estimate is 0) · n_bins · window_ps.

fwhm_ps is None — never a fabricated number — when the profile does not cross the half-maximum on both sides of the peak, which is exactly what a monotone fluorescence decay does (its peak is bin 0). A None here means "this histogram has no width in the FWHM sense", not "the measurement failed".

Ground truth: for a noiseless Gaussian return of FWHM 500 ps, centroid_ps matches the analytic 2d/c to 1.8e-12 ps. fwhm_ps comes back as 508.41 at 100 ps bins and 503.07 at 50 ps bins — the linear interpolation between two bins on either flank systematically overestimates a Gaussian's width, by 1.7% and 0.6% respectively, and the error shrinks with the bin width. That bias is a property of the estimator; it is reported here rather than hidden behind a "500" that only holds in the continuum limit.

Raises ValueError: negative, non-finite or non-1-D *hist*, a non-positive *bin_ps*, and an all-zero histogram (no photon arrived, so there is no arrival time; the centroid would be 0/0).

Detailed usage guide

• photon_timeresolved family guide

References (sample data, literature)

• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).

• Operator provenance and references — the sources of the research/methods this op family came from.

• The canonical algorithm (author, year) and its uses are named in the family usage guide above.

Runnable examples (verified samples that actually call this op)

• photon_timeresolved — py -3.11 examples/photon_timeresolved.py

Ops the type connects to (they accept table as input)

—

Same category (tcspc)

tcspc_simulate · tcspc_irf_convolve · tcspc_background_subtract


*Provenance: photoncount.py — PHOTON operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.