Reusing acquisition storage for screening and SSB

Reusing acquisition storage for screening and SSB#

Screening and SSB can borrow the same io.load result. The caller owns its lifetime and closes it after both workflows finish.

from quantem.gpu import io, screening, SSB

with io.load(path) as data:
    preview = screening.prepare(data)
    with SSB(data, source_path=str(path), **calibration) as ssb:
        result = ssb.fit_aberrations(tilt=True)

Screening excludes the stored flagged detector pixels from exact count sums, CoM and the mean diffraction pattern. SSB retains the loader’s median replacement. Sharing storage does not change these separate policies. Borrowed screening bypasses the file-product cache and never closes the source. SSB records the source dtype, logical size and hot-pixel correction. Sessions with a source path use their file signature; they do not calculate unused resident checksums. Sessions without a source path retain resident identity.

The fit remains 200 adaptive trials plus Newton. No detector pixels, scan positions or floating-point precision are removed. Parameter diagnostics use batches of four on MPS, preserving each candidate’s arithmetic; search batches remain unchanged.

Validation uses exact preview counts, phase and loss on physical CUDA and MPS, including flagged pixels inside the bright-field disk. Full acquisition workflow timings and scientific comparisons are retained in the private joint-workflow-benchmark-20261016 evidence bundle. These changes do not qualify native application UI behavior or establish a theoretical speed limit.