pub enum InversionAlgorithm {
Show 29 variants
Tkd,
Tsvd,
Tikhonov,
Tv,
Rts,
Nltv,
Medi,
Tfi,
Ilsqr,
Tgv,
Qsmart,
Ndi,
Fansi,
FansiTgv,
L1qsm,
Whqsm,
Hdqsm,
AmpPe,
Xqsm,
Qsmnet,
QsmnetPlus,
Autoqsm,
Qsmgan,
Ir2qsm,
Lpcnn,
ModlQsm,
Nextqsm,
Iqsm,
IqsmPlus,
}Expand description
Dipole inversion algorithm
Variants§
Tkd
Tsvd
Tikhonov
Tv
Rts
Nltv
Medi
Tfi
Preconditioned Total Field Inversion (single-step, total field).
Ilsqr
Tgv
Qsmart
Ndi
Nonlinear Dipole Inversion (FANSI ndi.m).
Fansi
FANSI nonlinear Total Variation (nlTV).
FansiTgv
FANSI nonlinear Total Generalized Variation (nlTGV).
L1qsm
L1 data-fidelity QSM (FANSI nlL1TV / PI-QSM).
Whqsm
Weak-Harmonic QSM (FANSI WH_nlTV).
Hdqsm
Hybrid two-stage L1→L2 QSM (HD-QSM).
AmpPe
Approximate Message Passing with built-in Parameter Estimation (AMP-PE).
Xqsm
xQSM deep-learning dipole inversion (requires the onnx feature and the
xqsm model weights; see crate::models).
Qsmnet
QSMnet deep-learning dipole inversion (requires the onnx feature and the
qsmnet model weights; see crate::models).
QsmnetPlus
QSMnet+ deep-learning dipole inversion (susceptibility-scaling augmented;
requires the onnx feature and the qsmnet-plus weights).
Autoqsm
AutoQSM single-step reconstruction (requires the onnx feature and the
autoqsm weights). NOTE: takes the total field — it does its own
background removal, so the local_field_ppm argument should be the total field.
Qsmgan
QSMGAN deep-learning dipole inversion (local field → χ; onnx + qsmgan weights).
Ir2qsm
IR2QSM unrolled deep-learning dipole inversion (local field → χ; onnx + ir2qsm weights).
Lpcnn
LPCNN learned-proximal deep-learning dipole inversion (local field → χ; onnx + lpcnn weights).
ModlQsm
MoDL-QSM model-based deep-learning dipole inversion (local field → χ33/STI component;
onnx + modl-qsm weights).
Nextqsm
NeXtQSM single-step reconstruction (requires onnx + the two nextqsm weight files).
NOTE: takes the total field — it does its own background removal.
Iqsm
iQSM single-step reconstruction from wrapped phase (end-to-end: joint unwrap +
background removal + inversion). Not a dipole-inversion-stage option — use
super::run_iqsm. Rejected by run_dipole_inversion.
IqsmPlus
iQSM+ single-step reconstruction from wrapped phase with orientation-adaptive
feature editing (uses the B0 direction). End-to-end; use super::run_iqsm_plus.
Implementations§
Source§impl InversionAlgorithm
impl InversionAlgorithm
Sourcepub fn orientation_support(&self) -> OrientationSupport
pub fn orientation_support(&self) -> OrientationSupport
How this method behaves when B0 is not along voxel +z.
Every classical inversion builds its dipole kernel from the supplied direction, directly or through the shared ADMM/FANSI spectral setup, so all of them handle oblique data on the acquired grid. The deep-learning methods take no direction at all.
Trait Implementations§
Source§impl Clone for InversionAlgorithm
impl Clone for InversionAlgorithm
Source§fn clone(&self) -> InversionAlgorithm
fn clone(&self) -> InversionAlgorithm
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 InversionAlgorithm
Source§impl Debug for InversionAlgorithm
impl Debug for InversionAlgorithm
Source§impl PartialEq for InversionAlgorithm
impl PartialEq for InversionAlgorithm
Source§fn eq(&self, other: &InversionAlgorithm) -> bool
fn eq(&self, other: &InversionAlgorithm) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for InversionAlgorithm
impl Serialize for InversionAlgorithm
impl StructuralPartialEq for InversionAlgorithm
Auto Trait Implementations§
impl Freeze for InversionAlgorithm
impl RefUnwindSafe for InversionAlgorithm
impl Send for InversionAlgorithm
impl Sync for InversionAlgorithm
impl Unpin for InversionAlgorithm
impl UnsafeUnpin for InversionAlgorithm
impl UnwindSafe for InversionAlgorithm
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