diff --git a/Modules/ModelFit/include/mitkExpDecayOffsetModel.h b/Modules/ModelFit/include/mitkExpDecayOffsetModel.h index 5dbf61e1c3..c8e5053a3c 100644 --- a/Modules/ModelFit/include/mitkExpDecayOffsetModel.h +++ b/Modules/ModelFit/include/mitkExpDecayOffsetModel.h @@ -1,135 +1,133 @@ /*============================================================================ 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 mitkExpDecayOffsetModel_h #define mitkExpDecayOffsetModel_h #include "mitkModelBase.h" #include "MitkModelFitExports.h" namespace mitk { /** @class ExpDecayOffsetModel * @brief Implementation of a general exponential decay model with offset, * following the function: y(x) = y-intercept * exp(-rate*x) + baseline. */ class MITKMODELFIT_EXPORT ExpDecayOffsetModel : public mitk::ModelBase { public: typedef ExpDecayOffsetModel Self; typedef mitk::ModelBase Superclass; typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; typedef Superclass::ParameterNameType ParameterNameType; typedef Superclass::ParametersSizeType ParametersSizeType; /** Method for creation through the object factory. */ itkFactorylessNewMacro(Self); itkCloneMacro(Self); /** Run-time type information (and related methods). */ itkTypeMacro(ExpDecayOffsetModel, ModelBase); static const std::string NAME_PARAMETER_y0; static const std::string NAME_PARAMETER_k; static const std::string NAME_PARAMETER_y_bl; static const unsigned int NUMBER_OF_PARAMETERS; static const std::string UNIT_PARAMETER_y0; static const std::string UNIT_PARAMETER_k; static const std::string UNIT_PARAMETER_y_bl; static const unsigned int POSITION_PARAMETER_y0; static const unsigned int POSITION_PARAMETER_k; static const unsigned int POSITION_PARAMETER_y_bl; static const unsigned int NUMBER_OF_DERIVED_PARAMETERS; static const unsigned int NUMBER_OF_STATIC_PARAMETERS; static const std::string MODEL_DISPLAY_NAME; static const std::string MODEL_TYPE; static const std::string FUNCTION_STRING; static const std::string X_NAME; static const std::string X_AXIS_NAME; static const std::string X_AXIS_UNIT; static const std::string Y_AXIS_NAME; static const std::string Y_AXIS_UNIT; ParameterNamesType GetParameterNames() const override; ParametersSizeType GetNumberOfParameters() const override; ParamterUnitMapType GetParameterUnits() const override; - ParameterNamesType GetDerivedParameterNames() const override; - ParametersSizeType GetNumberOfDerivedParameters() const override; ParameterNamesType GetStaticParameterNames() const override; ParametersSizeType GetNumberOfStaticParameters() const override; std::string GetModelDisplayName() const override; std::string GetModelType() const override; FunctionStringType GetFunctionString() const override; std::string GetXName() const override; std::string GetXAxisName() const override; std::string GetXAxisUnit() const override; std::string GetYAxisName() const override; std::string GetYAxisUnit() const override; protected: ExpDecayOffsetModel() {}; ~ExpDecayOffsetModel() 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 SetStaticParameter(const ParameterNameType& name, const StaticParameterValuesType& values) override; StaticParameterValuesType GetStaticParameterValue(const ParameterNameType& name) const override; private: //No copy constructor allowed ExpDecayOffsetModel(const Self& source); void operator=(const Self&); //purposely not implemented }; } #endif diff --git a/Modules/ModelFit/src/Models/mitkExpDecayOffsetModel.cpp b/Modules/ModelFit/src/Models/mitkExpDecayOffsetModel.cpp index 8f6a72c5b5..71401a5b7b 100644 --- a/Modules/ModelFit/src/Models/mitkExpDecayOffsetModel.cpp +++ b/Modules/ModelFit/src/Models/mitkExpDecayOffsetModel.cpp @@ -1,185 +1,175 @@ /*============================================================================ 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 "mitkExpDecayOffsetModel.h" const std::string mitk::ExpDecayOffsetModel::NAME_PARAMETER_y0 = "y-intercept"; const std::string mitk::ExpDecayOffsetModel::NAME_PARAMETER_k = "rate"; const std::string mitk::ExpDecayOffsetModel::NAME_PARAMETER_y_bl = "baseline"; const unsigned int mitk::ExpDecayOffsetModel::NUMBER_OF_PARAMETERS = 3; const std::string mitk::ExpDecayOffsetModel::UNIT_PARAMETER_y0 = "[unit of y]"; const std::string mitk::ExpDecayOffsetModel::UNIT_PARAMETER_k = "1/[unit of x]"; const std::string mitk::ExpDecayOffsetModel::UNIT_PARAMETER_y_bl = "[unit of y]"; const unsigned int mitk::ExpDecayOffsetModel::POSITION_PARAMETER_y0 = 0; const unsigned int mitk::ExpDecayOffsetModel::POSITION_PARAMETER_k = 1; const unsigned int mitk::ExpDecayOffsetModel::POSITION_PARAMETER_y_bl = 2; const unsigned int mitk::ExpDecayOffsetModel::NUMBER_OF_DERIVED_PARAMETERS = 0; const unsigned int mitk::ExpDecayOffsetModel::NUMBER_OF_STATIC_PARAMETERS = 0; const std::string mitk::ExpDecayOffsetModel::MODEL_DISPLAY_NAME = "Exponential Decay Offset Model"; const std::string mitk::ExpDecayOffsetModel::MODEL_TYPE = "Generic"; const std::string mitk::ExpDecayOffsetModel::FUNCTION_STRING = "y(x) = y-intercept * exp(-rate*x) + baseline"; const std::string mitk::ExpDecayOffsetModel::X_NAME = "x"; const std::string mitk::ExpDecayOffsetModel::X_AXIS_NAME = "X"; const std::string mitk::ExpDecayOffsetModel::X_AXIS_UNIT = "unit of x"; const std::string mitk::ExpDecayOffsetModel::Y_AXIS_NAME = "Y"; const std::string mitk::ExpDecayOffsetModel::Y_AXIS_UNIT = "unit of y"; /////////// std::string mitk::ExpDecayOffsetModel::GetModelDisplayName() const { return MODEL_DISPLAY_NAME; }; std::string mitk::ExpDecayOffsetModel::GetModelType() const { return MODEL_TYPE; }; mitk::ExpDecayOffsetModel::FunctionStringType mitk::ExpDecayOffsetModel::GetFunctionString() const { return FUNCTION_STRING; }; std::string mitk::ExpDecayOffsetModel::GetXName() const { return X_NAME; }; std::string mitk::ExpDecayOffsetModel::GetXAxisName() const { return X_AXIS_NAME; }; std::string mitk::ExpDecayOffsetModel::GetXAxisUnit() const { return X_AXIS_UNIT; } std::string mitk::ExpDecayOffsetModel::GetYAxisName() const { return Y_AXIS_NAME; }; std::string mitk::ExpDecayOffsetModel::GetYAxisUnit() const { return Y_AXIS_UNIT; } mitk::ExpDecayOffsetModel::ParameterNamesType mitk::ExpDecayOffsetModel::GetParameterNames() const { ParameterNamesType result; result.push_back(NAME_PARAMETER_y0); result.push_back(NAME_PARAMETER_k); result.push_back(NAME_PARAMETER_y_bl); return result; }; mitk::ExpDecayOffsetModel::ParamterUnitMapType mitk::ExpDecayOffsetModel::GetParameterUnits() const { ParamterUnitMapType result; result.insert(std::make_pair(NAME_PARAMETER_y0, UNIT_PARAMETER_y0)); result.insert(std::make_pair(NAME_PARAMETER_k, UNIT_PARAMETER_k)); result.insert(std::make_pair(NAME_PARAMETER_y_bl, UNIT_PARAMETER_y_bl)); return result; } mitk::ExpDecayOffsetModel::ParametersSizeType mitk::ExpDecayOffsetModel::GetNumberOfParameters() const { return NUMBER_OF_PARAMETERS; }; -mitk::ExpDecayOffsetModel::ParameterNamesType -mitk::ExpDecayOffsetModel::GetDerivedParameterNames() const -{ - ParameterNamesType result; - - //do nothing - - return result; -}; - mitk::ExpDecayOffsetModel::ParametersSizeType mitk::ExpDecayOffsetModel::GetNumberOfDerivedParameters() const { return NUMBER_OF_DERIVED_PARAMETERS; }; mitk::ExpDecayOffsetModel::ModelResultType mitk::ExpDecayOffsetModel::ComputeModelfunction(const ParametersType& parameters) const { ModelResultType signal(m_TimeGrid.GetSize()); const auto timeGridEnd = m_TimeGrid.end(); ModelResultType::iterator signalPos = signal.begin(); for (auto gridPos = m_TimeGrid.begin(); gridPos != timeGridEnd; ++gridPos, ++signalPos) { *signalPos = parameters[0] * exp(-1.0 * (*gridPos) * parameters[1]) + parameters[2]; } return signal; }; mitk::ExpDecayOffsetModel::ParameterNamesType mitk::ExpDecayOffsetModel::GetStaticParameterNames() const { return {}; } mitk::ExpDecayOffsetModel::ParametersSizeType mitk::ExpDecayOffsetModel::GetNumberOfStaticParameters() const { return NUMBER_OF_STATIC_PARAMETERS; } void mitk::ExpDecayOffsetModel::SetStaticParameter(const ParameterNameType& /*name*/, const StaticParameterValuesType& /*values*/) { //do nothing }; mitk::ExpDecayOffsetModel::StaticParameterValuesType mitk::ExpDecayOffsetModel::GetStaticParameterValue( const ParameterNameType& /*name*/) const { StaticParameterValuesType result; //do nothing return result; }; itk::LightObject::Pointer mitk::ExpDecayOffsetModel::InternalClone() const { ExpDecayOffsetModel::Pointer newClone = ExpDecayOffsetModel::New(); newClone->SetTimeGrid(this->m_TimeGrid); return newClone.GetPointer(); };