stat_histogram — MATH stats op

• Data kinds: signal → pairs

• Call: import fullseye as fs; fs.ledger.stat_histogram(x, bins=10, range=None, density=False) (implementation को सीधे call करना हो तो import mathops; mathops.stat_histogram(x, bins=10, range=None, density=False), registry से लेना हो तो opsmath.get("stat_histogram"))

• Ledger के ज़रिए return value: fullseye.ledger.stat_histogram(...) केवल घोषित out type pairs का value लौटाता है (मूल function सहायक जानकारी भी लौटाता है)। जो हिस्सा छोड़ दिया गया है उसकी ज़रूरत हो तो fullseye.ledger.stat_histogram.raw(...) का उपयोग करें, या mathops.stat_histogram को सीधे call करें।

उपयोग

binning को explicit रखते हुए 1-D sample का histogram।

> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।

*bins* is a positive integer count of equal-width bins; *range* is an explicit (lo, hi) (finite, lo < hi) or None to span the data (values exactly at hi land in the last bin, numpy's convention; with an explicit *range*, values outside it are excluded from every bin — they simply do not count, which is why passing *range* explicitly is the honest choice when comparing histograms across datasets). With density=False (default) *counts* are occurrence frequencies (int64, summing to the number of in-range samples); with density=True they form a probability density (float64, integrating to 1 over the range). A *range* that excludes every sample raises ValueError under density=True (the density would be 0/0 — silent NaNs refused) while density=False honestly returns all-zero counts. *bins* is capped at MAX_ELEMENTS (the edge/count arrays are allocations too).

Returns (counts, edges) — edges has bins + 1 entries; bin *i* is [edges[i], edges[i+1]).

HALCON: tuple_histo_range (and gray_histo for whole images).

पूरी family का input contract (fail-closed)

mathops के सभी ops गणना से पहले input की जाँच करते हैं (कुछ भी चुपचाप पास नहीं होता):

• complex input से ValueError — float64 में ज़बरदस्ती बदलने पर imaginary part चुपचाप छूट जाता है (numpy केवल ComplexWarning देता है और "सही दिखने वाला पर गलत" real number लौटाता है)। .real/.imag/abs() स्पष्ट रूप से लिखें, या complex data संभालने वाले complexops का उपयोग करें।

• masked array (masked elements वाला) से ValueError — mask हटाकर नीचे के raw values इस्तेमाल करने वाला implicit conversion अस्वीकार है। भरना है या हटाना है, यह स्पष्ट रूप से बताएँ।

• हर input पर NaN/Inf से ValueError (गिनती बताकर अस्वीकार — क्योंकि यह पूरे परिणाम में फैल जाता है)।

• Shape सख़्त है: 1-D और 2-D को implicit रूप से promote या broadcast नहीं किया जाता (vector slot में matrix या matrix slot में vector देने पर ValueError; reshape स्पष्ट रूप से करें)।

• Size की सीमा: matrix लेने वाले ops और stat_histogram के bins, mathops.MAX_ELEMENTS (2^26 ≈ 6.7 करोड़ elements) से अधिक होने पर ValueError देते हैं।

उपयोग की विस्तृत guide

• math_metrology family guide

पृष्ठभूमि guides (इस op के पीछे की physics और conventions)

• measurement_uncertainty — Measurement uncertainty और calibration — 'हम माप रहे हैं' कहने के लिए क्या चाहिए

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• math_metrology — py -3.11 examples/math_metrology.py

• poc_thermal_radiometry — py -3.11 examples/poc_thermal_radiometry.py

वे अगले ops जिनसे type जुड़ता है (pairs को input के रूप में लेते हैं)

neighbour_index_gaps · curve_locality

इसी category के (stats)

stat_describe · stat_covariance · stat_correlation · stat_zscore


*Provenance: mathops.py — MATH operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

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