Skip to main content

RobustFitParams

Struct RobustFitParams 

Source
pub struct RobustFitParams {
    pub loss: RobustLoss,
    pub tuning: Option<f64>,
    pub iterations: usize,
    pub downweight_level: f64,
    pub flag_ratio: f64,
    pub estimate_offset: bool,
}
Expand description

Parameters for multi_echo_robust_fit.

Fields§

§loss: RobustLoss

Which robust loss turns a residual into a weight.

§tuning: Option<f64>

Tuning constant, in units of the robust scale; smaller is more aggressive.

None uses RobustLoss::conventional_tuning for whichever loss is selected, which is what you want unless you have measured otherwise. It is Option rather than a number because the two losses’ natural constants differ by about 3.5x: a fixed default would silently mean something quite different after changing Self::loss.

§iterations: usize

IRLS reweighting passes. Three is plenty: the weights are a bounded function of a residual that is already close after the first pass, and more iterations mostly re-confirm the same decision.

0 is allowed and means report only: every robust weight stays at 1, so the field map is exactly multi_echo_linear_fit’s, and EchoQuality (including EchoQuality::flagged, which reads the final fit’s residuals) is still computed.

§downweight_level: f64

Robust weight below which an echo counts as downweighted at a voxel, for EchoQuality::downweighted_fraction. Purely a reporting threshold — it changes no weight and no fit.

§flag_ratio: f64

How far the worst EchoQuality::outlier_score in the series has to sit above the best before EchoQuality::flagged names anything. Reporting only; nothing is dropped.

Relative, not absolute, because an absolute residual has no fixed meaning across field strengths, echo trains and SNR. Measured on the four-echo 7 T phantom, where the ratio is max(outlier_score) / min(outlier_score):

seriesratioflagged at 3.0
clean2.5no
one echo, 35% slab dropout + phase scramble40.1yes
one echo, +1 rad everywhere28.2yes
one echo, +2.5 rad everywhere35.6yes
one echo, 12% slab dropout9.8yes

3.0 sits in the gap between the clean series and the smallest true positive.

§estimate_offset: bool

Estimate and remove a constant phase offset, as in multi_echo_linear_fit. Costs one degree of freedom, which matters here — see multi_echo_robust_fit.

Implementations§

Source§

impl RobustFitParams

Source

pub fn min_echoes(&self) -> usize

Fewest echoes multi_echo_robust_fit can act on: the model’s parameter count plus two, so 4 with Self::estimate_offset and 3 without. Below this it has no residual degrees of freedom to judge an echo with and returns the plain fit.

Source

pub fn validate(&self) -> Result<(), String>

Check every field is in range, naming the first one that is not.

fieldvalid
tuningNone, or finite and > 0
iterationsany (0 = report only)
downweight_level0 < level ≤ 1
flag_ratio≥ 1 (+∞ never flags)

Trait Implementations§

Source§

impl Clone for RobustFitParams

Source§

fn clone(&self) -> RobustFitParams

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 RobustFitParams

Source§

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

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

impl Default for RobustFitParams

Source§

fn default() -> Self

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

impl PartialEq for RobustFitParams

Source§

fn eq(&self, other: &RobustFitParams) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for RobustFitParams

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for RobustFitParams

Auto Trait Implementations§

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
§

impl<T> CloneAny for T
where T: Any + Clone,

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
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

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

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

Converts &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)

Converts &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
where T: Any + Send,

§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_sync(self: Box<T>) -> Box<dyn Any + Send + Sync>

Converts Box<Trait> (where Trait: DowncastSync) to Box<dyn Any + Send + Sync>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync> ⓘ

Converts Arc<Trait> (where Trait: DowncastSync) to Arc<Any>, which can then be downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

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

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> 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> Serialize for T
where T: Serialize + ?Sized,

Source§

fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<(), Error>

Source§

fn do_erased_serialize( &self, serializer: &mut dyn Serializer, ) -> Result<(), ErrorImpl>

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.