data_to_pixel — ANNOTATE plot op

• Data kinds: axes × signal × signal → pairs

• Call: import fullseye as fs; fs.ledger.data_to_pixel(axes, x, y) (implementation को सीधे call करना हो तो import annotate; annotate.data_to_pixel(axes, x, y), registry से लेना हो तो opsannotate.get("data_to_pixel"))

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

उपयोग

axes_transform के mapping से data point को pixel (x,y) पर ले जाता है।

clip नहीं करता -- lo > hi (उल्टा axis) होने पर np.clip(v, lo, hi) चुपचाप hi लौटाता है, और सभी points किनारे से चिपके हुए "विश्वसनीय दिखने वाला झूठा figure" बन जाता है (इस repo का generator सच में एक बार इससे धोखा खा चुका है)। range से बाहर के मानों को रोकना plot_series के clip=True का काम है, और वहाँ यह exception होता है।

Returns

(ndarray, ndarray)

px, py (float, round नहीं किया जाता -- rounding बनाने वाले पक्ष का काम है)।

Raises

ValueError

जब log axis को 0 या उससे कम मान दिया जाए (-inf को "किनारा" मानकर बनाया गया figure झूठ होता है)।

जब x और y की लंबाई अलग हो (नीचे देखें)।

Notes

लंबाई के अंतर को reject करना 2026-09-02 को जोड़ा गया। chain fuzzer के इस op को चला पाने के ठीक बाद, अलग लंबाई के 2 signals देने वाले path पर miner np.stack के कच्चे ValueError से गिर गया, और यह पकड़ में आया। उससे पहले x में 7 points और y में 3 points होने पर भी यह कोई exception नहीं देता था और अलग लंबाई के 2 arrays वैसे ही लौटा देता था।

खतरा गिरने में नहीं, न गिरने में है -- लौटे 2 arrays को zip करने पर केवल 3 points, x के पहले 3 स्थानों पर बनते हैं। points गायब हुए, या x खिसक गया, यह figure से पता नहीं चलता। sibling plot_series इसी स्थिति को "x and y must have the same length" से reject करता था, इसलिए एक ही family के अंदर अनुशासन बँटा हुआ था (यह ऐसी गलती है जो एक ही तरफ़ ठीक करने पर दोबारा आती है, इसलिए शब्द भी एक जैसे किए गए हैं)।

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

• figure_annotation family guide

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

• dataset_conventions — Training dataset के conventions — COCO / YOLO / VOC और visual inspection में सावधानियाँ

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

• annotate_gallery — py -3.11 examples/annotate_gallery.py

• poc_beam_modal_video — py -3.11 examples/poc_beam_modal_video.py

• poc_camera_calibration — py -3.11 examples/poc_camera_calibration.py

• poc_crack_width_timeseries — py -3.11 examples/poc_crack_width_timeseries.py

• poc_motion_magnification — py -3.11 examples/poc_motion_magnification.py

• poc_strain_history — py -3.11 examples/poc_strain_history.py

• poc_structure_4d_deterioration — py -3.11 examples/poc_structure_4d_deterioration.py

• poc_superresolution_limits — py -3.11 examples/poc_superresolution_limits.py

• poc_traffic_counting — py -3.11 examples/poc_traffic_counting.py

• poc_wound_area_tracking — py -3.11 examples/poc_wound_area_tracking.py

• poc_xyt_event_surface — py -3.11 examples/poc_xyt_event_surface.py

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

label_points · annotate_invert_path · filled_polygon

इसी category के (plot)

axes_transform · nice_ticks · axes_frame · grid_lines · ticks · plot_series


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

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