{"id":"sample-histogram-check","version":"1.0.0","description":"Check claimed histogram counts, outside count and densities for exact edges and an edge rule; returns the first bad bin.","supported_operations":["check claimed histogram bin counts","verify frequency table against raw values","validate histogram densities for given bin edges","check which values fall in each bin","audit numpy histogram counts","confirm out of range count for histogram bins"],"unsupported_operations":["choosing bin edges or a bin count (Sturges, Freedman-Diaconis)","weighted histograms or cumulative frequency claims","two-dimensional histograms","drawing or rendering a histogram"],"semantics":["Reference: NIST/SEMATECH e-Handbook (2012) 1.3.3.14 histogram counts; boundary rules from numpy.histogram and R graphics::hist; reference_version is returned with every result.","edges: 2-1001 exact values (safe integers or ASCII decimal strings), strictly increasing; bin i spans edges[i] to edges[i+1].","boundary_rule: left_closed_last_closed = [a, b) with a closed last bin (NumPy); left_closed = all [a, b); right_closed = all (a, b]; right_closed_first_closed = (a, b] with a closed first bin (R hist default). Values in no bin are outside.","claim.counts: one non-negative integer per bin; claim.outside: values in no bin; claim.densities (optional): exact count / ((n - outside) * width) per bin, invalid with reason density_undefined when n - outside = 0.","Check order: counts length, densities length, counts bin by bin, outside, densities bin by bin; the first failure gives field, bin_index, lower, upper, claimed and actual.","Length mismatches report the claimed and required lengths; bin_index, lower and upper are null for length and outside failures. Exact values use the canonical form (integer, terminating decimal or reduced p/q)."],"limits":{"max_sample_items":10000,"max_value_chars":40,"max_fraction_digits":30,"max_edges":1001},"pricing":{"status":"unpriced","charge_usd":null},"input_schema":{"type":"object","additionalProperties":false,"required":["sample","edges","boundary_rule","claim"],"properties":{"sample":{"type":"array","minItems":1,"maxItems":10000,"items":{"anyOf":[{"type":"integer"},{"type":"string","minLength":1,"maxLength":40,"pattern":"^-?(0|[1-9][0-9]*)(\\.[0-9]+)?$"}]}},"edges":{"type":"array","minItems":2,"maxItems":1001,"items":{"anyOf":[{"type":"integer"},{"type":"string","minLength":1,"maxLength":40,"pattern":"^-?(0|[1-9][0-9]*)(\\.[0-9]+)?$"}]}},"boundary_rule":{"type":"string","enum":["left_closed_last_closed","left_closed","right_closed","right_closed_first_closed"]},"claim":{"type":"object","additionalProperties":false,"required":["counts","outside"],"properties":{"counts":{"type":"array","maxItems":1001,"items":{"type":"integer","minimum":0}},"outside":{"type":"integer","minimum":0},"densities":{"type":"array","maxItems":1001,"items":{"anyOf":[{"type":"integer"},{"type":"string","minLength":1,"maxLength":40,"pattern":"^-?(0|[1-9][0-9]*)(\\.[0-9]+|/[1-9][0-9]*)?$"}]}}}}}},"output_schema":{"type":"object","additionalProperties":false,"required":["valid","reason","first_discrepancy","bins","reference_version"],"properties":{"valid":{"type":"boolean"},"reason":{"type":["string","null"],"enum":[null,"counts_length_mismatch","densities_length_mismatch","count_mismatch","outside_mismatch","density_undefined","density_mismatch"]},"first_discrepancy":{"type":["object","null"],"additionalProperties":false,"required":["field","bin_index","lower","upper","claimed","actual"],"properties":{"field":{"type":"string","enum":["counts","densities","outside"]},"bin_index":{"type":["integer","null"],"minimum":0},"lower":{"type":["string","null"]},"upper":{"type":["string","null"]},"claimed":{"type":"string"},"actual":{"type":["string","null"]}}},"bins":{"type":"integer","minimum":1},"reference_version":{"type":"string"}}},"examples":[{"input":{"sample":[1,2,1],"edges":[0,1,2,3],"boundary_rule":"left_closed_last_closed","claim":{"counts":[0,2,1],"outside":0}},"output":{"valid":true,"reason":null,"first_discrepancy":null,"bins":3,"reference_version":"NIST/SEMATECH e-Handbook (2012) 1.3.3.14; numpy.histogram and R hist() bin-edge rules; r60-sample-statistic-verifiers@1.0.0"}},{"input":{"sample":[1,2,1],"edges":[0,1,2,3],"boundary_rule":"right_closed","claim":{"counts":[0,2,1],"outside":0}},"output":{"valid":false,"reason":"count_mismatch","first_discrepancy":{"field":"counts","bin_index":0,"lower":"0","upper":"1","claimed":"0","actual":"2"},"bins":3,"reference_version":"NIST/SEMATECH e-Handbook (2012) 1.3.3.14; numpy.histogram and R hist() bin-edge rules; r60-sample-statistic-verifiers@1.0.0"}}],"execute_url":"/v1/tools/sample-histogram-check/versions/1.0.0/execute"}