diff --git a/Modules/Pharmacokinetics/include/mitkOneTissueCompartmentModel.h b/Modules/Pharmacokinetics/include/mitkOneTissueCompartmentModel.h index be2ab24e38..1211729ddb 100644 --- a/Modules/Pharmacokinetics/include/mitkOneTissueCompartmentModel.h +++ b/Modules/Pharmacokinetics/include/mitkOneTissueCompartmentModel.h @@ -1,92 +1,88 @@ /*============================================================================ The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center (DKFZ) All rights reserved. Use of this source code is governed by a 3-clause BSD license that can be found in the LICENSE file. ============================================================================*/ #ifndef mitkOneTissueCompartmentModel_h #define mitkOneTissueCompartmentModel_h #include "mitkAIFBasedModelBase.h" #include "MitkPharmacokineticsExports.h" namespace mitk { class MITKPHARMACOKINETICS_EXPORT OneTissueCompartmentModel : public AIFBasedModelBase { public: typedef OneTissueCompartmentModel Self; typedef AIFBasedModelBase Superclass; typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; /** Method for creation through the object factory. */ itkFactorylessNewMacro(Self); itkCloneMacro(Self); /** Run-time type information (and related methods). */ itkTypeMacro(OneTissueCompartmentModel, ModelBase); static const std::string NAME_PARAMETER_K1; static const std::string NAME_PARAMETER_k2; static const std::string UNIT_PARAMETER_K1; static const std::string UNIT_PARAMETER_k2; static const unsigned int POSITION_PARAMETER_K1; static const unsigned int POSITION_PARAMETER_k2; static const unsigned int NUMBER_OF_PARAMETERS; - static const unsigned int NUMBER_OF_DERIVED_PARAMETERS; - static const std::string MODEL_DISPLAY_NAME; static const std::string MODEL_TYPE; std::string GetModelDisplayName() const override; std::string GetModelType() const override; ParameterNamesType GetParameterNames() const override; ParametersSizeType GetNumberOfParameters() const override; ParamterUnitMapType GetParameterUnits() const override; - ParametersSizeType GetNumberOfDerivedParameters() const override; - protected: OneTissueCompartmentModel(); ~OneTissueCompartmentModel() override; /** * Actual implementation of the clone method. This method should be reimplemeted * in subclasses to clone the extra required parameters. */ itk::LightObject::Pointer InternalClone() const override; ModelResultType ComputeModelfunction(const ParametersType& parameters) const override; void PrintSelf(std::ostream& os, ::itk::Indent indent) const override; private: //No copy constructor allowed OneTissueCompartmentModel(const Self& source); void operator=(const Self&); //purposely not implemented }; } #endif diff --git a/Modules/Pharmacokinetics/src/Models/mitkOneTissueCompartmentModel.cpp b/Modules/Pharmacokinetics/src/Models/mitkOneTissueCompartmentModel.cpp index eac58bc877..49deb33fac 100644 --- a/Modules/Pharmacokinetics/src/Models/mitkOneTissueCompartmentModel.cpp +++ b/Modules/Pharmacokinetics/src/Models/mitkOneTissueCompartmentModel.cpp @@ -1,149 +1,141 @@ /*============================================================================ The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center (DKFZ) All rights reserved. Use of this source code is governed by a 3-clause BSD license that can be found in the LICENSE file. ============================================================================*/ #include "mitkOneTissueCompartmentModel.h" #include "mitkConvolutionHelper.h" #include #include const std::string mitk::OneTissueCompartmentModel::MODEL_DISPLAY_NAME = "One Tissue Compartment Model"; const std::string mitk::OneTissueCompartmentModel::NAME_PARAMETER_K1 = "K_1"; const std::string mitk::OneTissueCompartmentModel::NAME_PARAMETER_k2 = "k_2"; const std::string mitk::OneTissueCompartmentModel::UNIT_PARAMETER_K1 = "1/min"; const std::string mitk::OneTissueCompartmentModel::UNIT_PARAMETER_k2 = "1/min"; const unsigned int mitk::OneTissueCompartmentModel::POSITION_PARAMETER_K1 = 0; const unsigned int mitk::OneTissueCompartmentModel::POSITION_PARAMETER_k2 = 1; const unsigned int mitk::OneTissueCompartmentModel::NUMBER_OF_PARAMETERS = 2; -const unsigned int mitk::OneTissueCompartmentModel::NUMBER_OF_DERIVED_PARAMETERS = 0; - const std::string mitk::OneTissueCompartmentModel::MODEL_TYPE = "Dynamic.PET"; std::string mitk::OneTissueCompartmentModel::GetModelDisplayName() const { return MODEL_DISPLAY_NAME; }; std::string mitk::OneTissueCompartmentModel::GetModelType() const { return MODEL_TYPE; }; mitk::OneTissueCompartmentModel::OneTissueCompartmentModel() { } mitk::OneTissueCompartmentModel::~OneTissueCompartmentModel() { } mitk::OneTissueCompartmentModel::ParameterNamesType mitk::OneTissueCompartmentModel::GetParameterNames() const { ParameterNamesType result; result.push_back(NAME_PARAMETER_K1); result.push_back(NAME_PARAMETER_k2); return result; } mitk::OneTissueCompartmentModel::ParametersSizeType mitk::OneTissueCompartmentModel::GetNumberOfParameters() const { return NUMBER_OF_PARAMETERS; } mitk::OneTissueCompartmentModel::ParamterUnitMapType mitk::OneTissueCompartmentModel::GetParameterUnits() const { ParamterUnitMapType result; result.insert(std::make_pair(NAME_PARAMETER_K1, UNIT_PARAMETER_K1)); result.insert(std::make_pair(NAME_PARAMETER_k2, UNIT_PARAMETER_k2)); return result; }; -mitk::OneTissueCompartmentModel::ParametersSizeType -mitk::OneTissueCompartmentModel::GetNumberOfDerivedParameters() const -{ - return NUMBER_OF_DERIVED_PARAMETERS; -}; - mitk::OneTissueCompartmentModel::ModelResultType mitk::OneTissueCompartmentModel::ComputeModelfunction( const ParametersType& parameters) const { if (this->m_TimeGrid.GetSize() == 0) { itkExceptionMacro("No Time Grid Set! Cannot Calculate Signal"); } AterialInputFunctionType aterialInputFunction; aterialInputFunction = GetAterialInputFunction(this->m_TimeGrid); unsigned int timeSteps = this->m_TimeGrid.GetSize(); //Model Parameters double K1 = (double) parameters[POSITION_PARAMETER_K1] / 60.0; double k2 = (double) parameters[POSITION_PARAMETER_k2] / 60.0; mitk::ModelBase::ModelResultType convolution = mitk::convoluteAIFWithExponential(this->m_TimeGrid, aterialInputFunction, k2); //Signal that will be returned by ComputeModelFunction mitk::ModelBase::ModelResultType signal(timeSteps); signal.fill(0.0); mitk::ModelBase::ModelResultType::iterator signalPos = signal.begin(); for (mitk::ModelBase::ModelResultType::const_iterator res = convolution.begin(); res != convolution.end(); ++res, ++signalPos) { *signalPos = K1 * (*res); } return signal; } itk::LightObject::Pointer mitk::OneTissueCompartmentModel::InternalClone() const { OneTissueCompartmentModel::Pointer newClone = OneTissueCompartmentModel::New(); newClone->SetTimeGrid(this->m_TimeGrid); return newClone.GetPointer(); }; void mitk::OneTissueCompartmentModel::PrintSelf(std::ostream& os, ::itk::Indent indent) const { Superclass::PrintSelf(os, indent); };