4 #include <AnimaMCMExport.h> 30 virtual double GetFourierTransformedDiffusionProfile(
double smallDelta,
double bigDelta,
double gradientStrength,
const Vector3DType &gradient) ITK_OVERRIDE;
31 virtual ListType &GetSignalAttenuationJacobian(
double smallDelta,
double bigDelta,
double gradientStrength,
const Vector3DType &gradient) ITK_OVERRIDE;
32 virtual double GetLogDiffusionProfile(
const Vector3DType &sample) ITK_OVERRIDE;
34 virtual void SetParametersFromVector(
const ListType ¶ms) ITK_OVERRIDE;
35 virtual ListType &GetParametersAsVector() ITK_OVERRIDE;
37 virtual ListType &GetParameterLowerBounds() ITK_OVERRIDE;
38 virtual ListType &GetParameterUpperBounds() ITK_OVERRIDE;
41 void SetEstimateOrientationConcentration(
bool arg);
42 void SetEstimateAxialDiffusivity(
bool arg);
43 void SetEstimateExtraAxonalFraction(
bool arg);
45 void SetCompartmentVector(ModelOutputVectorType &compartmentVector) ITK_OVERRIDE;
47 unsigned int GetCompartmentSize() ITK_OVERRIDE;
48 unsigned int GetNumberOfParameters() ITK_OVERRIDE;
49 ModelOutputVectorType &GetCompartmentVector() ITK_OVERRIDE;
52 void SetOrientationTheta(
double num) ITK_OVERRIDE;
53 void SetOrientationPhi(
double num) ITK_OVERRIDE;
54 void SetOrientationConcentration(
double num) ITK_OVERRIDE;
55 void SetExtraAxonalFraction(
double num) ITK_OVERRIDE;
56 void SetAxialDiffusivity(
double num) ITK_OVERRIDE;
59 const Matrix3DType &GetDiffusionTensor() ITK_OVERRIDE;
60 double GetApparentFractionalAnisotropy() ITK_OVERRIDE;
65 m_EstimateOrientationConcentration =
true;
66 m_EstimateAxialDiffusivity =
true;
67 m_EstimateExtraAxonalFraction =
true;
68 m_ChangedConstraints =
true;
70 m_ModifiedParameters =
true;
71 m_ModifiedConcentration =
true;
76 m_WatsonSHCoefficients.clear();
77 m_WatsonSHCoefficientDerivatives.clear();
79 m_IntraAxonalSignal = 0;
80 m_IntraAngleDerivative = 0;
81 m_IntraKappaDerivative = 0;
82 m_IntraAxialDerivative = 0;
83 m_ExtraAxonalSignal = 0;
85 m_CurrentBValue = -1.0;
86 m_CurrentGradient.fill(0.0);
92 void UpdateSignals(
double bValue,
const Vector3DType &gradient);
95 void UpdateKappaValues();
98 bool m_EstimateOrientationConcentration, m_EstimateAxialDiffusivity, m_EstimateExtraAxonalFraction;
99 bool m_ChangedConstraints;
100 unsigned int m_NumberOfParameters;
103 bool m_ModifiedParameters;
104 bool m_ModifiedConcentration;
107 double m_CurrentBValue;
108 Vector3DType m_CurrentGradient;
111 std::vector <double> m_WatsonSHCoefficients, m_WatsonSHCoefficientDerivatives;
112 double m_Tau1, m_Tau1Deriv;
113 double m_ExtraAxonalSignal, m_IntraAxonalSignal;
114 double m_IntraAngleDerivative, m_IntraKappaDerivative, m_IntraAxialDerivative;
std::vector< double > ListType
itk::VariableLengthVector< double > ModelOutputVectorType
bool GetTensorCompatible() ITK_OVERRIDE
itk::Matrix< double, 3, 3 > Matrix3DType
vnl_vector_fixed< double, 3 > Vector3DType
itk::SmartPointer< const Self > ConstPointer
DiffusionModelCompartmentType
Superclass::Vector3DType Vector3DType
itk::SmartPointer< Self > Pointer
virtual ~NODDICompartment()
Superclass::ModelOutputVectorType ModelOutputVectorType
itk::SmartPointer< Self > Pointer
Superclass::Pointer BasePointer
Superclass::Matrix3DType Matrix3DType
BaseCompartment Superclass