16 "Descriptive Pharmacokinetic Brix Model";
50 return "Perfusion.MR";
150 itkExceptionMacro(
"No Time Grid Set! Cannot Calculate Signal");
155 itkExceptionMacro(
"Injection time is 0! Cannot Calculate Signal");
166 TimeGridType::const_iterator timeGridEnd =
m_TimeGrid.end();
167 ModelResultType::iterator signalPos = signal.begin();
169 for (TimeGridType::const_iterator gridPos =
m_TimeGrid.begin(); gridPos != timeGridEnd;
170 ++gridPos, ++signalPos)
172 double t = (*gridPos) / 60.0;
179 else if ((t > tlag) && (t < (m_Tau + tlag)))
183 else if (t >= (m_Tau + tlag))
188 double kDiff = kep - kel;
189 double tDiff = t - tlag;
191 double expkel = (kep * exp(-kel * tDiff));
192 double expkeltx = exp(kel * tx);
193 double expkep = exp(-kep * tDiff);
194 double expkeptx = exp(kep * tx);
196 double value = 1 + (amplitude / m_Tau) * (((expkel / (kel * kDiff)) * (expkeltx - 1)) - ((
197 expkep / kDiff) * (expkeptx - 1)));
199 *signalPos = value * m_S0;
228 result.push_back(
GetTau());
233 result.push_back(
GetS0());
244 newClone->SetTau(this->m_Tau);
245 newClone->SetS0(this->m_S0);
247 return newClone.GetPointer();
251 ::itk::Indent indent)
const 255 os << indent <<
"Tau (injection time): " << m_Tau;
256 os << indent <<
"S0 (base value): " << m_S0;
ModelResultType ComputeModelfunction(const ParametersType ¶meters) const override
static const std::string NAME_PARAMETER_A
static const std::string UNIT_STATIC_PARAMETER_Tau
virtual void SetS0(double _arg)
static const std::string UNIT_PARAMETER_A
ModelTraitsInterface::ParametersType ParametersType
static const std::string NAME_PARAMETER_tlag
std::string GetXAxisName() const override
static const std::string NAME_STATIC_PARAMETER_Tau
virtual const double & GetTau()
StaticParameterValuesType GetStaticParameterValue(const ParameterNameType &name) const override
std::string GetXAxisUnit() const override
static const unsigned int POSITION_PARAMETER_kel
virtual const double & GetS0()
itk::LightObject::Pointer InternalClone() const override
std::string GetModelDisplayName() const override
virtual void SetTau(double _arg)
static const std::string MODEL_DISPLAY_NAME
std::string GetYAxisName() const override
static const std::string NAME_PARAMETER_kep
ParamterUnitMapType GetParameterUnits() const override
static const unsigned int NUMBER_OF_PARAMETERS
std::string GetModelType() const override
void PrintSelf(std::ostream &os, ::itk::Indent indent) const override
ParameterNamesType GetStaticParameterNames() const override
void SetStaticParameter(const ParameterNameType &name, const StaticParameterValuesType &values) override
ModelTraitsInterface::ParametersSizeType ParametersSizeType
std::vector< StaticParameterValueType > StaticParameterValuesType
static const std::string UNIT_STATIC_PARAMETER_S0
ModelTraitsInterface::ModelResultType ModelResultType
static const unsigned int POSITION_PARAMETER_A
static const unsigned int POSITION_PARAMETER_kep
ParametersSizeType GetNumberOfStaticParameters() const override
void PrintSelf(std::ostream &os, ::itk::Indent indent) const override
ModelTraitsInterface::ParameterNameType ParameterNameType
DescriptivePharmacokineticBrixModel()
ModelTraitsInterface::ParameterNamesType ParameterNamesType
ParameterNamesType GetParameterNames() const override
ParamterUnitMapType GetStaticParameterUnits() const override
~DescriptivePharmacokineticBrixModel() override
std::string GetYAxisUnit() const override
static const std::string UNIT_PARAMETER_kel
std::map< ParameterNameType, std::string > ParamterUnitMapType
static const unsigned int POSITION_PARAMETER_tlag
static const std::string NAME_STATIC_PARAMETER_S0
static const std::string UNIT_PARAMETER_tlag
static const std::string UNIT_PARAMETER_kep
ParametersSizeType GetNumberOfParameters() const override
static const std::string NAME_PARAMETER_kel