pub struct FitPpmComplexResult {
pub field: Vec<f64>,
pub noise: Vec<f64>,
pub phase0: Vec<f64>,
pub relres: Vec<f64>,
pub echo_spacing: f64,
pub iterations: usize,
}Expand description
Output of fit_ppm_complex. Each map has one value per voxel.
Fields§
§field: Vec<f64>Field as phase accrued per echo spacing (radians), wrapped to [-π, π]: it still needs
spatial unwrapping. Divide by Self::echo_spacing for rad/s. Sign: that of the input
phase (it increases with TE for a positive field), the convention of QSM.rs’s other field
maps. MATLAB’s p1 is minus this, because Fit_ppm_complex.m fits conj(M).
noise: Vec<f64>A priori standard deviation of Self::field, radians per echo spacing (dp1, which
MEDI passes on as N_std). Depends only on the echo magnitudes; 0 where the fit is
undefined. Same as fit_ppm_complex_noise.
phase0: Vec<f64>Fitted phase at the first echo (radians, not wrapped). MATLAB’s p0 is minus this.
relres: Vec<f64>Relative residual Σₑ|Sₑ − Ŝₑ|² / Σₑ|Sₑ|² (relres); 0 where undefined.
echo_spacing: f64The echo spacing the field is per (s): TE₂ − TE₁, or TE₁ for a single echo, which is
how MEDI’s readers set delta_TE.
iterations: usizeGauss-Newton iterations run (the same for every voxel, as in the reference).
Trait Implementations§
Source§impl Clone for FitPpmComplexResult
impl Clone for FitPpmComplexResult
Source§fn clone(&self) -> FitPpmComplexResult
fn clone(&self) -> FitPpmComplexResult
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for FitPpmComplexResult
impl RefUnwindSafe for FitPpmComplexResult
impl Send for FitPpmComplexResult
impl Sync for FitPpmComplexResult
impl Unpin for FitPpmComplexResult
impl UnsafeUnpin for FitPpmComplexResult
impl UnwindSafe for FitPpmComplexResult
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
impl<T> CloneAny for T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSend for T
impl<T> DowncastSend for T
§impl<T> DowncastSync for T
impl<T> DowncastSync for T
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