diff --git a/Modules/ModelFit/autoload/Models/mitkModelFitModelsActivator.cpp b/Modules/ModelFit/autoload/Models/mitkModelFitModelsActivator.cpp index 986612331f..e58a17b569 100644 --- a/Modules/ModelFit/autoload/Models/mitkModelFitModelsActivator.cpp +++ b/Modules/ModelFit/autoload/Models/mitkModelFitModelsActivator.cpp @@ -1,60 +1,62 @@ /*============================================================================ 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 #include #include //general models #include "mitkGenericParamModelFactory.h" #include "mitkLinearModelFactory.h" #include "mitkT2DecayModelFactory.h" +#include "mitkExpDecayOffsetModelFactory.h" namespace mitk { /* * This is the module activator for the IO aspects of the "ModelFit" module. */ class ModelFitModelsActivator : public us::ModuleActivator { public: template void RegisterProvider(us::ModuleContext* context) { auto provider = new TProvider(); provider->RegisterService(context); m_RegisteredProviders.push_back(std::unique_ptr(provider)); } void Load(us::ModuleContext* context) override { m_RegisteredProviders.clear(); RegisterProvider >(context); RegisterProvider >(context); RegisterProvider >(context); + RegisterProvider >(context); } void Unload(us::ModuleContext* ) override { } private: std::vector > m_RegisteredProviders; }; } US_EXPORT_MODULE_ACTIVATOR(mitk::ModelFitModelsActivator) diff --git a/Modules/ModelFit/files.cmake b/Modules/ModelFit/files.cmake index 85f16dc618..a46a3694cb 100644 --- a/Modules/ModelFit/files.cmake +++ b/Modules/ModelFit/files.cmake @@ -1,76 +1,79 @@ file(GLOB_RECURSE H_FILES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/include/*") set(CPP_FILES Common/mitkExtractTimeGrid.cpp Common/mitkTimeGridHelper.cpp Common/mitkMaskedDynamicImageStatisticsGenerator.cpp Common/mitkModelFitConstants.cpp Common/mitkModelFitParameter.cpp Common/mitkModelFitCmdAppsHelper.cpp Common/mitkParameterFitImageGeneratorBase.cpp Common/mitkPixelBasedParameterFitImageGenerator.cpp Common/mitkROIBasedParameterFitImageGenerator.cpp Common/mitkModelFitInfo.cpp Common/mitkModelFitStaticParameterMap.cpp Common/mitkModelGenerator.cpp Common/mitkModelFitResultHelper.cpp Common/mitkScalarListLookupTable.cpp Common/mitkScalarListLookupTableProperty.cpp Common/mitkScalarListLookupTablePropertySerializer.cpp Common/mitkIModelFitProvider.cpp Common/mitkModelFitParameterValueExtraction.cpp Common/mitkBinaryImageToLabelSetImageFilter.cpp Common/mitkFormulaParser.cpp Common/mitkFresnel.cpp Common/mitkModelFitPlotDataHelper.cpp Common/mitkModelSignalImageGenerator.cpp Common/mitkModelFitResultRelationRule.cpp Functors/mitkSimpleFunctorBase.cpp Functors/mitkSimpleFunctorPolicy.cpp Functors/mitkChiSquareFitCostFunction.cpp Functors/mitkReducedChiSquareFitCostFunction.cpp Functors/mitkConstraintCheckerBase.cpp Functors/mitkSimpleBarrierConstraintChecker.cpp Functors/mitkSquaredDifferencesFitCostFunction.cpp Functors/mitkSumOfSquaredDifferencesFitCostFunction.cpp Functors/mitkMVConstrainedCostFunctionDecorator.cpp Functors/mitkMVModelFitCostFunction.cpp Functors/mitkNormalizedSumOfSquaredDifferencesFitCostFunction.cpp Functors/mitkSVModelFitCostFunction.cpp Functors/mitkModelFitFunctorBase.cpp Functors/mitkLevenbergMarquardtModelFitFunctor.cpp Functors/mitkDummyModelFitFunctor.cpp Functors/mitkModelFitInfoSignalGenerationFunctor.cpp Functors/mitkIndexedValueFunctorPolicy.cpp Functors/mitkModelDataGenerationFunctor.cpp Models/mitkModelBase.cpp Models/mitkModelFactoryBase.cpp Models/mitkModelParameterizerBase.cpp Models/mitkLinearModel.cpp Models/mitkLinearModelFactory.cpp Models/mitkInitialParameterizationDelegateBase.cpp Models/mitkImageBasedParameterizationDelegate.cpp Models/mitkGenericParamModel.cpp Models/mitkGenericParamModelFactory.cpp Models/mitkGenericParamModelParameterizer.cpp Models/mitkValueBasedParameterizationDelegate.cpp Models/mitkT2DecayModel.cpp Models/mitkT2DecayModelFactory.cpp - Models/mitkT2DecayModelParameterizer.cpp + Models/mitkT2DecayModelParameterizer.cpp + Models/mitkExpDecayOffsetModel.cpp + Models/mitkExpDecayOffsetModelFactory.cpp + Models/mitkExpDecayOffsetModelParameterizer.cpp TestingHelper/mitkTestModel.cpp TestingHelper/mitkTestModelFactory.cpp ) set(TPP_FILES include/itkMultiOutputNaryFunctorImageFilter.tpp include/itkMaskedStatisticsImageFilter.hxx include/itkMaskedNaryStatisticsImageFilter.hxx include/mitkModelFitProviderBase.tpp ) set(HXX_FILES ) set(MOC_H_FILES ) diff --git a/Modules/ModelFit/include/mitkT2DecayModel.h b/Modules/ModelFit/include/mitkExpDecayOffsetModel.h similarity index 80% copy from Modules/ModelFit/include/mitkT2DecayModel.h copy to Modules/ModelFit/include/mitkExpDecayOffsetModel.h index e9ac0ebf3e..49fc24ae24 100644 --- a/Modules/ModelFit/include/mitkT2DecayModel.h +++ b/Modules/ModelFit/include/mitkExpDecayOffsetModel.h @@ -1,84 +1,87 @@ /*============================================================================ 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 __MITK_T2_DECAY_MODEL_H_ -#define __MITK_T2_DECAY_MODEL_H_ +#ifndef __MITK_Exp_DECAY_OFFSET_MODEL_H_ +#define __MITK_Exp_DECAY_OFFSET_MODEL_H_ #include "mitkModelBase.h" #include "MitkModelFitExports.h" namespace mitk { - /** Simple model of the MR T2 signal decay. */ - class MITKMODELFIT_EXPORT T2DecayModel : public mitk::ModelBase + /** @class ExpDecayOffsetModel + * @brief Implementation of a general exponential decay model with offset, + * following the function: f(x) = a * exp(-1.0 * x * b) + c. + */ + class MITKMODELFIT_EXPORT ExpDecayOffsetModel : public mitk::ModelBase { public: - typedef T2DecayModel Self; + 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(T2DecayModel, ModelBase); + itkTypeMacro(ExpDecayOffsetModel, ModelBase); std::string GetModelDisplayName() const override; std::string GetModelType() const override; FunctionStringType GetFunctionString() const override; std::string GetXName() const override; ParameterNamesType GetParameterNames() const override; ParametersSizeType GetNumberOfParameters() const override; ParameterNamesType GetStaticParameterNames() const override; ParametersSizeType GetNumberOfStaticParameters() const override; protected: - T2DecayModel() {}; - ~T2DecayModel() override {}; + 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 - T2DecayModel(const Self& source); + ExpDecayOffsetModel(const Self& source); void operator=(const Self&); //purposely not implemented }; } #endif diff --git a/Modules/ModelFit/include/mitkExpDecayOffsetModelFactory.h b/Modules/ModelFit/include/mitkExpDecayOffsetModelFactory.h new file mode 100644 index 0000000000..c8139ed9ee --- /dev/null +++ b/Modules/ModelFit/include/mitkExpDecayOffsetModelFactory.h @@ -0,0 +1,53 @@ +/*============================================================================ + +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 __EXP_DECAY_OFFSET_TEST_MODEL_FACTORY_H +#define __EXP_DECAY_OFFSET_TEST_MODEL_FACTORY_H + +#include + +#include "mitkConcreteModelFactoryBase.h" +#include "mitkExpDecayOffsetModel.h" + +#include "MitkModelFitExports.h" + +namespace mitk +{ + + class MITKMODELFIT_EXPORT ExpDecayOffsetModelFactory : public ConcreteModelFactoryBase + { + public: + mitkClassMacroItkParent(ExpDecayOffsetModelFactory, ConcreteModelFactoryBase); + itkFactorylessNewMacro(Self); + + ParametersType GetDefaultInitialParameterization() const override; + + //ConstraintCheckerBase::Pointer CreateDefaultConstraints() const override; + + protected: + ModelParameterizerBase::Pointer DoCreateParameterizer(const modelFit::ModelFitInfo* fit) + const override; + + ExpDecayOffsetModelFactory(); + + ~ExpDecayOffsetModelFactory() override; + + private: + + //No copy constructor allowed + ExpDecayOffsetModelFactory(const Self& source); + void operator=(const Self&); //purposely not implemented + }; +} + + +#endif //__LINEAR_TEST_MODEL_FACTORY_H diff --git a/Modules/ModelFit/include/mitkExpDecayOffsetModelParameterizer.h b/Modules/ModelFit/include/mitkExpDecayOffsetModelParameterizer.h new file mode 100644 index 0000000000..596c42753e --- /dev/null +++ b/Modules/ModelFit/include/mitkExpDecayOffsetModelParameterizer.h @@ -0,0 +1,63 @@ +/*============================================================================ + +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 __EXP_DECAY_OFFSET_MODEL_PARAMETERIZER_H +#define __EXP_DECAY_OFFSET_MODEL_PARAMETERIZER_H + +#include "mitkConcreteModelParameterizerBase.h" +#include "mitkExpDecayOffsetModel.h" +#include "MitkModelFitExports.h" + +namespace mitk +{ + + class MITKMODELFIT_EXPORT ExpDecayOffsetModelParameterizer : public + mitk::ConcreteModelParameterizerBase + { + public: + typedef ExpDecayOffsetModelParameterizer Self; + typedef mitk::ConcreteModelParameterizerBase Superclass; + typedef itk::SmartPointer< Self > Pointer; + typedef itk::SmartPointer< const Self > ConstPointer; + + itkTypeMacro(ExpDecayOffsetModelParameterizer, + mitk::ConcreteModelParameterizerBase); + itkFactorylessNewMacro(Self); + + typedef Superclass::ModelBaseType ModelBaseType; + typedef Superclass::ModelBasePointer ModelBasePointer; + + typedef Superclass::ModelType ModelType; + typedef ModelType::Pointer ModelPointer; + + typedef Superclass::StaticParameterValueType StaticParameterValueType; + typedef Superclass::StaticParameterValuesType StaticParameterValuesType; + typedef Superclass::StaticParameterMapType StaticParameterMapType; + + typedef Superclass::IndexType IndexType; + + ParametersType GetDefaultInitialParameterization() const override; + + protected: + ExpDecayOffsetModelParameterizer(); + + ~ExpDecayOffsetModelParameterizer() override; + + private: + + //No copy constructor allowed + ExpDecayOffsetModelParameterizer(const Self& source); + void operator=(const Self&); //purposely not implemented + }; +} + +#endif // __LINEAR_MODEL_PARAMETERIZER_H diff --git a/Modules/ModelFit/include/mitkT2DecayModel.h b/Modules/ModelFit/include/mitkT2DecayModel.h index e9ac0ebf3e..9d41fbc82a 100644 --- a/Modules/ModelFit/include/mitkT2DecayModel.h +++ b/Modules/ModelFit/include/mitkT2DecayModel.h @@ -1,84 +1,95 @@ /*============================================================================ 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 __MITK_T2_DECAY_MODEL_H_ #define __MITK_T2_DECAY_MODEL_H_ #include "mitkModelBase.h" #include "MitkModelFitExports.h" namespace mitk { - /** Simple model of the MR T2 signal decay. */ + /** @class T2DecayModel + * @brief Simple model of the MR T2 signal decay. This corresponds to an exponential decay in the form of: + * f(t) = M0 * exp(-t/T2) with T2 being the transverse / spin-spin relaxation time. The derived parameter R2 + * is calculated from T2 by inversion. + */ class MITKMODELFIT_EXPORT T2DecayModel : public mitk::ModelBase { public: typedef T2DecayModel 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(T2DecayModel, ModelBase); std::string GetModelDisplayName() const override; std::string GetModelType() const override; FunctionStringType GetFunctionString() const override; std::string GetXName() const override; ParameterNamesType GetParameterNames() const override; ParametersSizeType GetNumberOfParameters() const override; ParameterNamesType GetStaticParameterNames() const override; ParametersSizeType GetNumberOfStaticParameters() const override; + DerivedParametersSizeType GetNumberOfDerivedParameters() const override; + + DerivedParameterNamesType GetDerivedParameterNames() const override; + + mitk::ModelBase::DerivedParameterMapType ComputeDerivedParameters( + const mitk::ModelBase::ParametersType ¶meters) const; + protected: T2DecayModel() {}; ~T2DecayModel() 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 T2DecayModel(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 new file mode 100644 index 0000000000..4b9a687d65 --- /dev/null +++ b/Modules/ModelFit/src/Models/mitkExpDecayOffsetModel.cpp @@ -0,0 +1,101 @@ +/*============================================================================ + +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" + +std::string mitk::ExpDecayOffsetModel::GetModelDisplayName() const +{ + return "Exponential Decay Offset Model"; +}; + +std::string mitk::ExpDecayOffsetModel::GetModelType() const +{ + return "Generic"; +}; + +mitk::ExpDecayOffsetModel::FunctionStringType mitk::ExpDecayOffsetModel::GetFunctionString() const +{ + return "a*exp(-1.0*x*b)+c"; +}; + +std::string mitk::ExpDecayOffsetModel::GetXName() const +{ + return "x"; +}; + +mitk::ExpDecayOffsetModel::ParameterNamesType +mitk::ExpDecayOffsetModel::GetParameterNames() const +{ + ParameterNamesType result; + result.push_back("a"); + result.push_back("b"); + result.push_back("c"); + return result; +}; + +mitk::ExpDecayOffsetModel::ParametersSizeType +mitk::ExpDecayOffsetModel::GetNumberOfParameters() const +{ + return 3; +}; + +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 0; +} + +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(); +}; diff --git a/Modules/ModelFit/src/Models/mitkExpDecayOffsetModelFactory.cpp b/Modules/ModelFit/src/Models/mitkExpDecayOffsetModelFactory.cpp new file mode 100644 index 0000000000..e2ad25fa07 --- /dev/null +++ b/Modules/ModelFit/src/Models/mitkExpDecayOffsetModelFactory.cpp @@ -0,0 +1,36 @@ +/*============================================================================ + +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 "mitkExpDecayOffsetModelFactory.h" +#include "mitkExpDecayOffsetModelParameterizer.h" +#include "mitkSimpleBarrierConstraintChecker.h" + +mitk::ExpDecayOffsetModelFactory::ExpDecayOffsetModelFactory() +{ +}; + +mitk::ExpDecayOffsetModelFactory::~ExpDecayOffsetModelFactory() +{ +}; + +mitk::ModelParameterizerBase::ParametersType +mitk::ExpDecayOffsetModelFactory::GetDefaultInitialParameterization() const +{ + return ExpDecayOffsetModelParameterizer::New()->GetDefaultInitialParameterization(); +}; + + +mitk::ModelParameterizerBase::Pointer mitk::ExpDecayOffsetModelFactory::DoCreateParameterizer( + const modelFit::ModelFitInfo* /*fit*/) const +{ + return ExpDecayOffsetModelParameterizer::New().GetPointer(); +}; diff --git a/Modules/ModelFit/src/Models/mitkExpDecayOffsetModelParameterizer.cpp b/Modules/ModelFit/src/Models/mitkExpDecayOffsetModelParameterizer.cpp new file mode 100644 index 0000000000..e5ec5260d3 --- /dev/null +++ b/Modules/ModelFit/src/Models/mitkExpDecayOffsetModelParameterizer.cpp @@ -0,0 +1,33 @@ +/*============================================================================ + +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 "mitkExpDecayOffsetModelParameterizer.h" + +mitk::ExpDecayOffsetModelParameterizer::ParametersType +mitk::ExpDecayOffsetModelParameterizer::GetDefaultInitialParameterization() const +{ + ParametersType initialParameters; + initialParameters.SetSize(2); + initialParameters[0] = 1.0; //a + initialParameters[1] = 1.0; //b + initialParameters[1] = 0.0; //c + + return initialParameters; +}; + +mitk::ExpDecayOffsetModelParameterizer::ExpDecayOffsetModelParameterizer() +{ +}; + +mitk::ExpDecayOffsetModelParameterizer::~ExpDecayOffsetModelParameterizer() +{ +}; diff --git a/Modules/ModelFit/src/Models/mitkT2DecayModel.cpp b/Modules/ModelFit/src/Models/mitkT2DecayModel.cpp index 0723cd7473..900a5a1bc7 100644 --- a/Modules/ModelFit/src/Models/mitkT2DecayModel.cpp +++ b/Modules/ModelFit/src/Models/mitkT2DecayModel.cpp @@ -1,100 +1,123 @@ /*============================================================================ 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 "mitkT2DecayModel.h" +#include "mitkNumericConstants.h" std::string mitk::T2DecayModel::GetModelDisplayName() const { return "T2 Decay Model"; }; std::string mitk::T2DecayModel::GetModelType() const { return "MRSignal"; }; mitk::T2DecayModel::FunctionStringType mitk::T2DecayModel::GetFunctionString() const { return "M0 * exp(-t/T2)"; }; std::string mitk::T2DecayModel::GetXName() const { return "t"; }; mitk::T2DecayModel::ParameterNamesType mitk::T2DecayModel::GetParameterNames() const { ParameterNamesType result; result.push_back("M0"); result.push_back("T2"); return result; }; mitk::T2DecayModel::ParametersSizeType mitk::T2DecayModel::GetNumberOfParameters() const { return 2; }; mitk::T2DecayModel::ModelResultType mitk::T2DecayModel::ComputeModelfunction(const ParametersType& parameters) const { ModelResultType signal(m_TimeGrid.GetSize()); ModelResultType::iterator signalPos = signal.begin(); for (const auto& gridPos : m_TimeGrid) { *signalPos = parameters[0] * exp(-1.0 * gridPos/ parameters[1]); + ++signalPos; } return signal; }; mitk::T2DecayModel::ParameterNamesType mitk::T2DecayModel::GetStaticParameterNames() const { ParameterNamesType result; return result; } mitk::T2DecayModel::ParametersSizeType mitk::T2DecayModel::GetNumberOfStaticParameters() const { return 0; } void mitk::T2DecayModel::SetStaticParameter(const ParameterNameType& /*name*/, const StaticParameterValuesType& /*values*/) { //do nothing }; mitk::T2DecayModel::StaticParameterValuesType mitk::T2DecayModel::GetStaticParameterValue( const ParameterNameType& /*name*/) const { StaticParameterValuesType result; //do nothing return result; }; +mitk::T2DecayModel::DerivedParametersSizeType mitk::T2DecayModel::GetNumberOfDerivedParameters() const +{ + return 1; +} + +mitk::T2DecayModel::DerivedParameterNamesType mitk::T2DecayModel::GetDerivedParameterNames() const +{ + ParameterNamesType result; + result.push_back("R2"); + return result; +}; + +mitk::ModelBase::DerivedParameterMapType mitk::T2DecayModel::ComputeDerivedParameters( + const mitk::ModelBase::ParametersType ¶meters) const +{ + DerivedParameterMapType result; + double inverse = 1.0 / (parameters[1] + mitk::eps); + result.insert(std::make_pair("R2", inverse)); + return result; +}; + itk::LightObject::Pointer mitk::T2DecayModel::InternalClone() const { T2DecayModel::Pointer newClone = T2DecayModel::New(); newClone->SetTimeGrid(this->m_TimeGrid); return newClone.GetPointer(); };