pxrd op• Data kinds: image2d × signal × table → table
• Call: import fullseye as fs; fs.ledger.detector_calibrate(image, d_spacings, geometry_guess, n_azimuth=180, fit_tilt=True, min_rings=2) (to call the implementation directly, import pxrd; pxrd.detector_calibrate(image, d_spacings, geometry_guess, n_azimuth=180, fit_tilt=True, min_rings=2); from the registry, opsdrive.get("detector_calibrate"))
Calibrates the detector center, distance and tilt from the rings of a known standard (such as Si).
d_spacings is a list of standard d-spacings [Å] (need not be in order of strength); geometry_guess should contain at least pixel and
wavelength, and if known cx, cy, distance, tilt, tilt_dir. Procedure:
1. If there is no centre, start from the centroid of bright pixels, pick up the strongest ring along rays, and update the centre 3 times with circle fits.
2. If there is no distance, assign the first peak of the radial profile to candidate d values (4 from small 2θ), and choose the combination for which the predictions of the other rings best match the observed peaks.
3. With the current geometry, predict each ring's position on n_azimuth rays, pick points by the intensity centroid within a window, and fit scipy.optimize.least_squares with (cx, cy, distance, tilt の 2 成分) on the 2θ residual [deg]. Three times while shrinking the window. The tilt is solved as the 2 components of a rotation vector tilt·(cos φ, sin φ) (avoiding the singularity where φ is undefined at zero tilt).
Return value (dict): the geometry (cx, cy, distance, pixel, wavelength, tilt, tilt_dir) plus
rms_two_theta_deg, n_points, n_rings, rings_deg, ok (rms below the angle of 1/4 pixel 0.25·pixel/distance
and rings >= min_rings).
Raises ValueError: image not 2-D, no d at all, pixel / wavelength missing, min_rings rings not found.
• 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.
• poc_pxrd_phase_peel — py -3.11 examples/poc_pxrd_phase_peel.py
table as input)course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same
pxrd)cif_read · cubic_prototype · powder_reflections · scherrer_size · debye_ring_image · detector_two_theta · azimuthal_integrate · diffraction_peaks
*Provenance: pxrd.py — DRIVE 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.