Skip to main content

Mpie

Struct Mpie 

Source
pub struct Mpie {
    pub iterations: usize,
    pub object_step: f64,
    pub stability: f64,
    pub momentum_interval: usize,
    pub momentum_friction: f64,
    pub momentum_feedback: f64,
    pub batch_size: usize,
    pub epsilon: f64,
    pub loss_type: LossType,
}
Expand description

Momentum-accelerated regularized PIE adapted to image-plane FPM.

§Method

Mpie applies the same sequential, object-only rPIE projection as super::Fpie, then periodically accelerates the centered high-resolution object spectrum. After momentum_interval positive-weight measured-frame updates, it updates the complex velocity and object as

V <- momentum_friction * V + (O_rpie - O_anchor)

O <- O_rpie + momentum_feedback * V.

A multiplexed measurement counts once after all of its source modes are inserted. Zero-weight frames do not advance the interval. The counter, velocity, anchor, and defining parameters are checkpointed, so changing batch_size does not change the numerical path and a matching checkpoint resumes exactly.

§Adaptation and assumptions

The cited method was formulated and tested for scanned ptychography and applies momentum to both object and probe. This implementation accelerates only the fixed-pupil Fourier-ptychographic object spectrum. It separates the paper’s single eta_obj into friction and feedback controls; setting them equal reproduces its Eqs. (19) and (21). object_step corresponds to the paper’s gamma_obj in Eq. (22). Physical joint calibration is unsupported because recompiling the model would require an explicit rule for resetting or transporting momentum.

§Reference

A. Maiden, D. Johnson, and P. Li, “Further improvements to the ptychographical iterative engine” (2017), Optica 4(7), 736–745.

Fields§

§iterations: usize

Number of complete passes through the acquisition schedule.

§object_step: f64

Relaxation factor applied to each rPIE object-spectrum correction.

§stability: f64

Blend between local pupil power (0) and maximum pupil power (1) in the rPIE denominator.

§momentum_interval: usize

Positive-weight measured-frame updates between momentum events.

§momentum_friction: f64

Fraction of the previous velocity retained at each momentum event.

§momentum_feedback: f64

Fraction of the updated velocity added to the object spectrum.

§batch_size: usize

Number of measured frames supplied to each reconstruction step.

§epsilon: f64

Positive numerical floor added to the rPIE denominator.

§loss_type: LossType

Loss used for diagnostics; the projection itself always enforces the measured amplitude.

Implementations§

Source§

impl Mpie

Source

pub fn iterations(self, iterations: usize) -> Self

Sets the number of complete acquisition-schedule passes.

Source

pub fn object_step(self, object_step: f64) -> Self

Sets the finite positive relaxation applied to rPIE corrections.

Source

pub fn stability(self, stability: f64) -> Self

Sets the rPIE pupil-power blend; validation requires [0, 1].

Source

pub fn momentum_interval(self, momentum_interval: usize) -> Self

Sets the positive number of effective frame updates per momentum event.

Source

pub fn momentum_friction(self, momentum_friction: f64) -> Self

Sets the retained-velocity fraction; validation requires [0, 1).

Source

pub fn momentum_feedback(self, momentum_feedback: f64) -> Self

Sets the velocity-feedback fraction; validation requires [0, 1].

Source

pub fn batch_size(self, batch_size: usize) -> Self

Sets the positive number of acquisition frames supplied per step.

Source

pub fn epsilon(self, epsilon: f64) -> Self

Sets the finite positive numerical floor used by the rPIE denominator.

Source

pub fn loss_type(self, loss_type: LossType) -> Self

Sets the loss reported by diagnostics.

Trait Implementations§

Source§

impl Clone for Mpie

Source§

fn clone(&self) -> Mpie

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Mpie

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Mpie

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl ReconstructionAlgorithm for Mpie

Source§

type IterationMetrics = NoIterationMetrics

Algorithm-specific metrics emitted by each step and appended to the trace.
Source§

fn validate(&self) -> Result<()>

Validates solver parameters independently of a reconstruction problem.
Source§

fn initialize<M: MeasurementRead>( &self, problem: &ReconstructionProblem<M>, ) -> Result<ReconstructionState>

Creates the default CPU-backed state for problem.
Source§

fn initialize_with_backend<M: MeasurementRead>( &self, problem: &ReconstructionProblem<M>, backend: Arc<dyn Backend>, ) -> Result<ReconstructionState>

Creates reconstruction state using the supplied execution backend.
Source§

fn supports_joint_reconstruction(&self) -> bool

Reports whether the algorithm may run inside physical joint calibration. Read more
Source§

fn step<M: MeasurementRead>( &mut self, problem: &ReconstructionProblem<M>, state: &mut ReconstructionState, batch: &Batch, _iteration: usize, ) -> Result<StepOutput<Self::IterationMetrics>>

Updates state for one scheduled batch in zero-based iteration.
Source§

fn iterations(&self) -> usize

Returns the requested number of complete schedule passes.
Source§

fn batch_size(&self) -> usize

Returns the number of measured frames combined into one step.
Source§

fn validate_problem<M: MeasurementRead>( &self, _problem: &ReconstructionProblem<M>, ) -> Result<()>

Validates solver requirements that depend on problem.
Source§

fn canonicalize_state<M: MeasurementRead>( &self, _problem: &ReconstructionProblem<M>, _state: &mut ReconstructionState, ) -> Result<()>

Projects algorithm-owned ambiguities into a stable reported convention. Read more
Source§

fn run<M: MeasurementRead>( self, problem: &ReconstructionProblem<M>, ) -> Result<ReconstructionResult>
where Self: Sized,

Runs the algorithm with default sequential scheduling and no callbacks.
Source§

fn run_with_callbacks<M: MeasurementRead>( self, problem: &ReconstructionProblem<M>, callbacks: Vec<Box<dyn Callback>>, ) -> Result<ReconstructionResult>
where Self: Sized,

Runs the algorithm and invokes callbacks at their declared hooks.
Source§

fn run_from_checkpoint<M: MeasurementRead>( self, problem: &ReconstructionProblem<M>, checkpoint: ReconstructionCheckpoint, ) -> Result<ReconstructionResult>
where Self: Sized,

Resumes a run from a checkpoint after validating it against problem.

Auto Trait Implementations§

§

impl Freeze for Mpie

§

impl RefUnwindSafe for Mpie

§

impl Send for Mpie

§

impl Sync for Mpie

§

impl Unpin for Mpie

§

impl UnsafeUnpin for Mpie

§

impl UnwindSafe for Mpie

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts 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
§

impl<T> Key for T
where T: Clone,

§

fn align() -> usize

The alignment necessary for the key. Must return a power of two.
§

fn size(&self) -> usize

The size of the key in bytes.
§

unsafe fn init(&self, ptr: *mut u8)

Initialize the key in the given memory location. Read more
§

unsafe fn get<'a>(ptr: *const u8) -> &'a T

Get a reference to the key from the given memory location. Read more
§

unsafe fn drop_in_place(ptr: *mut u8)

Drop the key in place. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,