gaussians_to_voxel — REPRCONV gaussians op

• Data kinds: gaussians → voxel

• Call: import fullseye as fs; fs.ledger.gaussians_to_voxel(gaussians, shape=(32, 32, 32), origin=(0.0, 0.0, 0.0), spacing=(1.0, 1.0, 1.0), truncate=3.0) (implementation को सीधे call करना हो तो import reprconv; reprconv.gaussians_to_voxel(gaussians, shape=(32, 32, 32), origin=(0.0, 0.0, 0.0), spacing=(1.0, 1.0, 1.0), truncate=3.0), registry से लेना हो तो opsreprconv.get("gaussians_to_voxel"))

उपयोग

gaussians → density voxel (D,H,W)। gaussians से 2रा निकास।

हर Gaussian को truncate * sigma पर काटकर जोड़ता है। मुख्य बात यह है कि grid का origin और step स्पष्ट arguments हैं: default spacing=(1,1,1) को वैसे ही इस्तेमाल करने का अर्थ है "world coordinates को सीधे index बनाना", जो real data में लगभग हमेशा गलत होता है -- और कोई exception नहीं आता, density बस किसी और जगह बनती है, इसलिए पता नहीं चलता। tests/test_reprconv.py इस गड़बड़ी को स्पष्ट रूप से मापता है।

अपरिवर्तनीय (irreversible)। 3 नुकसान हैं, और हर एक को संख्या में मापा जा सकता है:

• truncation -- truncation एक axis-parallel box है (हर axis पर ±truncate*sigma), इसलिए बचा हुआ mass erf(t/sqrt(2))**3 है। t = 3 पर 99.194%। ★यहाँ एक बार गलती हुई थी: पहले लिखा था "3 sigma के sphere का mass 97.07%", लेकिन implementation box है, इसलिए मान अलग है। step को 1.0 → 0.125 तक बारीक करके limit लेने पर यह 99.30% → 99.19% पर converge होता है और sphere के 97.07% के पास नहीं जाता, इससे खंडन हुआ (tests/test_reprconv.py::test_gaussians_to_voxel_mass_matches_box_truncation)। न exception, न NaN -- ठीक वही प्रकार की त्रुटि जो "चुपचाप गलत संख्या लौटाती है"।

• grid quadrature -- यह midpoint rule है, इसलिए sigma की तुलना में step मोटा हो तो मान ऊपर चला जाता है (measured: sigma = 1.5 पर step 1.0 में 99.94%, 0.125 में 99.30%)।

• boundary clipping -- box का जो हिस्सा volume से बाहर जाता है, वह गिर जाता है। जिन Gaussians का केंद्र किनारे के पास है, उनमें यह नुकसान truncation से कहीं अधिक होता है।

Args:

gaussians: mu / sigma / w वाला dict। mu (z, y, x) है।

shape: (D, H, W)।

origin: grid का (z, y, x) origin (world coordinates)।

spacing: grid का (dz, dy, dx) step (world units / voxel)।

truncate: कितने sigma पर काटना है (default 3)।

Returns:

(D, H, W) float64 density (मान "प्रति voxel weights का योग" हैं, और volume integral

sum(w) के पास पहुँचता है)।

Raises:

ValueError: गलत shape/spacing / truncate <= 0 / गलत gaussians।

संदर्भ (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 करते हैं)

• representation_roundtrip — py -3.11 examples/representation_roundtrip.py

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

correlation_score

इसी category के (gaussians)

points_to_gaussians · gaussians_to_points


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

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