4 #include <vnl/vnl_vector_fixed.h> 6 #include <itkLightObject.h> 7 #include <itkObjectFactory.h> 8 #include <itkVariableLengthVector.h> 10 #include <AnimaMCMBaseExport.h> 50 virtual double GetFourierTransformedDiffusionProfile(
double smallDelta,
double bigDelta,
double gradientStrength,
const Vector3DType &gradient) = 0;
51 virtual ListType &GetSignalAttenuationJacobian(
double smallDelta,
double bigDelta,
double gradientStrength,
const Vector3DType &gradient) = 0;
52 virtual double GetLogDiffusionProfile(
const Vector3DType &sample) = 0;
55 virtual void SetParametersFromVector(
const ListType ¶ms) = 0;
56 virtual ListType &GetParametersAsVector() = 0;
58 virtual ListType &GetParameterLowerBounds() = 0;
59 virtual ListType &GetParameterUpperBounds() = 0;
62 virtual ModelOutputVectorType &GetCompartmentVector() = 0;
65 virtual void SetCompartmentVector(ModelOutputVectorType &compartmentVector) = 0;
68 virtual void CopyFromOther(Self *rhs);
71 virtual bool IsEqual(Self *rhs,
double tolerance = 1.0e-2,
double absoluteTolerance = 1.0e-8);
74 virtual unsigned int GetCompartmentSize() = 0;
77 virtual unsigned int GetNumberOfParameters() = 0;
80 virtual void Reorient(vnl_matrix <double> &orientationMatrix,
bool affineTransform);
103 double GetPredictedSignal(
double smallDelta,
double bigDelta,
double gradientStrength,
const Vector3DType &gradient);
107 virtual const Matrix3DType &GetDiffusionTensor();
110 virtual double GetApparentFractionalAnisotropy();
111 virtual double GetApparentMeanDiffusivity();
114 virtual double GetApparentParallelDiffusivity();
117 virtual double GetApparentPerpendicularDiffusivity();
122 m_OrientationTheta = 0.0;
123 m_OrientationPhi = 0.0;
125 m_AxialDiffusivity = 1.71e-3;
126 m_RadialDiffusivity1 = 1.5e-4;
127 m_RadialDiffusivity2 = 1.5e-4;
128 m_OrientationConcentration = 5.0;
129 m_ExtraAxonalFraction = 0.1;
130 m_TissueRadius = 0.01;
132 m_DiffusionTensor.SetIdentity();
137 static const unsigned int m_SpaceDimension = 3;
158 double m_OrientationTheta, m_OrientationPhi;
159 double m_PerpendicularAngle;
160 double m_AxialDiffusivity;
161 double m_RadialDiffusivity1, m_RadialDiffusivity2;
162 double m_OrientationConcentration;
163 double m_ExtraAxonalFraction;
164 double m_TissueRadius;
virtual bool GetTensorCompatible()
std::vector< double > ListType
virtual void SetAxialDiffusivity(double num)
ListType m_ParametersLowerBoundsVector
Vector holding current parameters lower bounds.
const double MCMAzimuthAngleUpperBound
Azimuth angle upper bound.
virtual void SetRadialDiffusivity2(double num)
virtual void SetTissueRadius(double num)
virtual double GetOrientationPhi()
itk::VariableLengthVector< double > ModelOutputVectorType
virtual void SetRadialDiffusivity1(double num)
itk::Matrix< double, 3, 3 > Matrix3DType
vnl_vector_fixed< double, 3 > Vector3DType
virtual void SetPerpendicularAngle(double num)
virtual double GetAxialDiffusivity()
ListType m_ParametersVector
Vector holding current parameters vector.
virtual double GetPerpendicularAngle()
virtual double GetOrientationTheta()
virtual void SetOrientationConcentration(double num)
DiffusionModelCompartmentType
virtual void SetExtraAxonalFraction(double num)
virtual double GetExtraAxonalFraction()
itk::SmartPointer< Self > Pointer
itk::LightObject Superclass
virtual void SetOrientationTheta(double num)
virtual ~BaseCompartment()
ListType m_ParametersUpperBoundsVector
Vector holding current parameters upper bounds.
virtual double GetRadialDiffusivity2()
ListType m_JacobianVector
Vector holding current jacobian value.
virtual double GetRadialDiffusivity1()
virtual void SetOrientationPhi(double num)
virtual double GetTissueRadius()
Matrix3DType m_DiffusionTensor
Matrix to hold working value of diffusion tensor approximation to the model.
itk::SmartPointer< const Self > ConstPointer
ModelOutputVectorType m_CompartmentVector
Vector to hold working value of compartment vector.
virtual double GetOrientationConcentration()