You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently SQw objects write and store the computed pixel information i.e. qx, qy, qz, E which are $\mathcal{O}\left(n_{\text{run}} n_{\text{Efix}} n_{\text{det}} n_{\text{Ebin}} \right) \times 4$ data.
Instead, it is possible to store only the $E_{fix}$, detectors, $E_{bin}$ arrays and the mapping of the pixels to the requisite indices in these arrays (already stored as det_id, en_id, run_id) to compute qx, qy, qz, E on-the-fly (these expansions are available in e.g. calculate_qw_pixels2). This instead results in $\mathcal{O}\left(n_{\text{run}} (n_{\text{Efix}} + n_{\text{det}} + n_{\text{Ebin}} ) \right)$ (given unique detector compression, this may in fact be smaller than this; signal and error and *_id will still need to be stored as $\mathcal{O}\left(n_{\text{run}} n_{\text{Efix}} n_{\text{det}} n_{\text{Ebin}} \right)$ )
Not only this, but it should be possible to eliminate zero-counts (possibly following a low-pass filter stage) from the storage by dropping these detector results from the mapping. This could be done by:
splitting the detectors into "signalling"-"non-signalling" and dumping as separate blocks
by deliberately ordering these to the bottom of the data arrays
It would then be possible to drop the signal & error components for these pixels and assume any "empty" detector signal is 0. This will inherently further reduce the volume of stored data.
Initial estimates for standard data suggest that these could result in savings ~5x with respect to current storage.
The text was updated successfully, but these errors were encountered:
Currently SQw objects write and store the computed pixel information i.e.$\mathcal{O}\left(n_{\text{run}} n_{\text{Efix}} n_{\text{det}} n_{\text{Ebin}} \right) \times 4$ data.
qx, qy, qz, E
which areInstead, it is possible to store only the$E_{fix}$ , detectors, $E_{bin}$ arrays and the mapping of the pixels to the requisite indices in these arrays (already stored as $\mathcal{O}\left(n_{\text{run}} (n_{\text{Efix}} + n_{\text{det}} + n_{\text{Ebin}} ) \right)$ (given unique detector compression, this may in fact be smaller than this; $\mathcal{O}\left(n_{\text{run}} n_{\text{Efix}} n_{\text{det}} n_{\text{Ebin}} \right)$ )
det_id
,en_id
,run_id
) to computeqx, qy, qz, E
on-the-fly (these expansions are available in e.g.calculate_qw_pixels2
). This instead results insignal
anderror
and*_id
will still need to be stored asNot only this, but it should be possible to eliminate zero-counts (possibly following a low-pass filter stage) from the storage by dropping these detector results from the mapping. This could be done by:
It would then be possible to drop the
signal
&error
components for these pixels and assume any "empty" detector signal is0
. This will inherently further reduce the volume of stored data.Initial estimates for standard data suggest that these could result in savings ~5x with respect to current storage.
The text was updated successfully, but these errors were encountered: