pub enum SeparationAlgorithm {
ChiSepIlsqr,
ChiSepMedi,
R2starQsm,
WaveSep,
Decompose,
HcChisep,
SusepNet,
ChiSepNet,
}Expand description
Susceptibility source-separation algorithm (χ+ / χ−).
Variants§
ChiSepIlsqr
Shin 2021 projected-CG, QSM-initialized (local field + R2’ + magnitude + QSM).
ChiSepMedi
MEDI-based Gauss-Newton (local field + R2’ + magnitude).
R2starQsm
Closed-form from a QSM + R2* (Dimov 2022; R2* fit from magnitude if absent).
WaveSep
Wavelet-L1 proximal-gradient from a QSM + R2’ (Fang 2023).
Decompose
Signal-domain per-voxel fit from a QSM + multi-echo magnitude (Chen 2021).
HcChisep
Hollow-cylinder fit from a QSM + R2’ + multi-echo magnitude (Wharton & Bowtell).
SusepNet
SUSEP-Net deep-learning separation from QSM + R2’ + local field (requires
the onnx feature and the susep-net weights; see crate::models).
ChiSepNet
χ-sepnet (SNU-LIST) deep-learning separation from local field + QSM + R2’
(requires the onnx feature and the chi-sepnet weights; see crate::models).
Implementations§
Source§impl SeparationAlgorithm
impl SeparationAlgorithm
Sourcepub fn orientation_support(&self) -> OrientationSupport
pub fn orientation_support(&self) -> OrientationSupport
How this method behaves when B0 is not along voxel +z.
The model-based separations carry the direction through their field terms. The rest either consume an already-reconstructed χ map and R2* (so orientation was settled upstream) or are networks trained on axial data.
Trait Implementations§
Source§impl Clone for SeparationAlgorithm
impl Clone for SeparationAlgorithm
Source§fn clone(&self) -> SeparationAlgorithm
fn clone(&self) -> SeparationAlgorithm
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for SeparationAlgorithm
Source§impl Debug for SeparationAlgorithm
impl Debug for SeparationAlgorithm
Source§impl PartialEq for SeparationAlgorithm
impl PartialEq for SeparationAlgorithm
Source§fn eq(&self, other: &SeparationAlgorithm) -> bool
fn eq(&self, other: &SeparationAlgorithm) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for SeparationAlgorithm
impl Serialize for SeparationAlgorithm
impl StructuralPartialEq for SeparationAlgorithm
Auto Trait Implementations§
impl Freeze for SeparationAlgorithm
impl RefUnwindSafe for SeparationAlgorithm
impl Send for SeparationAlgorithm
impl Sync for SeparationAlgorithm
impl Unpin for SeparationAlgorithm
impl UnsafeUnpin for SeparationAlgorithm
impl UnwindSafe for SeparationAlgorithm
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