pub enum FrameSchedule {
Sequential,
BrightfieldFirst,
SpiralOut,
RandomShuffle {
seed: u64,
},
SnrWeighted,
}Expand description
Rule for ordering acquisition frames within each reconstruction iteration.
Variants§
Sequential
Ascending acquisition-frame index.
BrightfieldFirst
Increasing transverse illumination magnitude, approximating brightfield first.
SpiralOut
Increasing polar radius then azimuth in transverse-wave-vector space.
RandomShuffle
Deterministic per-iteration pseudorandom permutation.
SnrWeighted
Highest empirical shot-noise SNR first. This requires measurements and
is applied by Self::order_for_problem; Self::order retains
sequential order because a compiled model alone contains no signal data.
Implementations§
Source§impl FrameSchedule
impl FrameSchedule
Sourcepub fn order(&self, model: &ImagePlaneModel, iteration: usize) -> Vec<usize>
pub fn order(&self, model: &ImagePlaneModel, iteration: usize) -> Vec<usize>
Returns a model-only frame order.
Self::SnrWeighted cannot be estimated from model geometry, so this
method returns sequential order for that variant. Reconstruction runners
use Self::order_for_problem and therefore have access to measurements.
Sourcepub fn order_for_problem<M: MeasurementRead>(
&self,
problem: &ReconstructionProblem<M>,
iteration: usize,
) -> Result<Vec<usize>>
pub fn order_for_problem<M: MeasurementRead>( &self, problem: &ReconstructionProblem<M>, iteration: usize, ) -> Result<Vec<usize>>
Returns a frame order using both the model and measured intensities.
The SNR-weighted schedule ranks frames by
frame_weight * sqrt(mean(max(measured - known_background, 0))) over
unmasked pixels. This is an empirical Poisson shot-noise proxy, not a
camera-noise calibration. Zero-weight or fully masked frames are placed
last, and equal scores retain ascending frame-index order.
Trait Implementations§
Source§impl Clone for FrameSchedule
impl Clone for FrameSchedule
Source§fn clone(&self) -> FrameSchedule
fn clone(&self) -> FrameSchedule
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for FrameSchedule
impl Debug for FrameSchedule
Source§impl Default for FrameSchedule
impl Default for FrameSchedule
Source§fn default() -> FrameSchedule
fn default() -> FrameSchedule
Source§impl<'de> Deserialize<'de> for FrameSchedule
impl<'de> Deserialize<'de> for FrameSchedule
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for FrameSchedule
impl RefUnwindSafe for FrameSchedule
impl Send for FrameSchedule
impl Sync for FrameSchedule
impl Unpin for FrameSchedule
impl UnsafeUnpin for FrameSchedule
impl UnwindSafe for FrameSchedule
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more