Medical Imaging Interaction Toolkit  2025.12.02
Medical Imaging Interaction Toolkit
mitkModelBase.h
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 #ifndef mitkModelBase_h
14 #define mitkModelBase_h
15 
16 #include <iostream>
17 
18 #include <itkArray.h>
19 #include <itkArray2D.h>
20 #include <itkObject.h>
21 
22 #include "MitkModelFitExports.h"
24 
25 namespace mitk
26 {
47  class MITKMODELFIT_EXPORT ModelBase : public itk::Object, public ModelTraitsInterface
48  {
49  public:
50  typedef ModelBase Self;
51  typedef itk::Object Superclass;
54 
55  itkTypeMacro(ModelBase, itk::Object);
56 
62  typedef itk::Array<double> TimeGridType;
66 
69 
70  typedef double StaticParameterValueType;
71  typedef std::vector<StaticParameterValueType> StaticParameterValuesType;
72  typedef std::map<ParameterNameType, StaticParameterValuesType> StaticParameterMapType;
73 
74  typedef double DerivedParameterValueType;
75  typedef std::map<ParameterNameType, DerivedParameterValueType> DerivedParameterMapType;
76 
79 
82 
85 
88 
90  std::string GetModelDisplayName() const override;
91 
93  std::string GetModelType() const override;
94 
97 
99  ModellClassIDType GetClassID() const override;
100 
102  std::string GetXName() const override;
103 
105  std::string GetXAxisName() const override;
106 
108  std::string GetXAxisUnit() const override;
109 
111  std::string GetYAxisName() const override;
112 
114  std::string GetYAxisUnit() const override;
115 
122 
125 
126 
135 
145  void SetStaticParameters(const StaticParameterMapType& parameters, bool allParameters = true);
146 
151 
159 
163  virtual void SetTimeGrid(const TimeGridType& grid);
167  itkGetConstReferenceMacro(TimeGrid, TimeGridType);
168 
169  ModelResultType GetSignal(const ParametersType& parameters) const;
170 
171  protected:
172 
173  virtual ModelResultType ComputeModelfunction(const ParametersType& parameters) const = 0;
174 
181  virtual bool ValidateModel(std::string& error) const;
182 
187 
190  virtual void SetStaticParameter(const ParameterNameType& name,
191  const StaticParameterValuesType& values) = 0;
195 
197  ~ModelBase() override;
198 
199  void PrintSelf(std::ostream& os, ::itk::Indent indent) const override;
200 
201  //timeGrid in seconds
202 
204 
205  private:
206 
207  //No copy constructor allowed
208  ModelBase(const Self& source);
209  void operator=(const Self&); //purposely not implemented
210  };
211 }
212 
213 #endif
#define MITKMODELFIT_EXPORT
Base class for (dynamic) models. A model can be used to calculate its signal given the discrete time ...
Definition: mitkModelBase.h:48
virtual ModelResultType ComputeModelfunction(const ParametersType &parameters) const =0
std::string GetXName() const override
ModellClassIDType GetClassID() const override
virtual ParameterNamesType GetStaticParameterNames() const =0
DerivedParamterUnitMapType GetDerivedParameterUnits() const override
TimeGridType m_TimeGrid
virtual ParametersSizeType GetNumberOfStaticParameters() const =0
double DerivedParameterValueType
Definition: mitkModelBase.h:74
ModelTraitsInterface::DerivedParameterNamesType DerivedParameterNamesType
Definition: mitkModelBase.h:67
ModelTraitsInterface::DerivedParametersSizeType DerivedParametersSizeType
Definition: mitkModelBase.h:68
virtual bool ValidateModel(std::string &error) const
itk::SmartPointer< const Self > ConstPointer
Definition: mitkModelBase.h:53
virtual DerivedParameterMapType ComputeDerivedParameters(const ParametersType &parameters) const
itk::SmartPointer< Self > Pointer
Definition: mitkModelBase.h:52
ModelTraitsInterface::ParametersSizeType ParametersSizeType
Definition: mitkModelBase.h:65
ModelTraitsInterface::ParameterNamesType ParameterNamesType
Definition: mitkModelBase.h:64
std::map< ParameterNameType, DerivedParameterValueType > DerivedParameterMapType
Definition: mitkModelBase.h:75
virtual ParamterUnitMapType GetStaticParameterUnits() const
std::map< ParameterNameType, StaticParameterValuesType > StaticParameterMapType
Definition: mitkModelBase.h:72
~ModelBase() override
ModelBase Self
Definition: mitkModelBase.h:50
ModelTraitsInterface::ParameterValueType ParameterValueType
Definition: mitkModelBase.h:58
itk::Object Superclass
Definition: mitkModelBase.h:51
StaticParameterMapType GetStaticParameters() const
std::string GetModelType() const override
ParamterScaleMapType GetParameterScales() const override
virtual StaticParameterValuesType GetStaticParameterValue(const ParameterNameType &name) const =0
virtual void SetStaticParameter(const ParameterNameType &name, const StaticParameterValuesType &values)=0
std::string GetYAxisName() const override
std::vector< StaticParameterValueType > StaticParameterValuesType
Definition: mitkModelBase.h:71
virtual void SetTimeGrid(const TimeGridType &grid)
std::string GetXAxisName() const override
ModelResultType GetSignal(const ParametersType &parameters) const
DerivedParameterNamesType GetDerivedParameterNames() const override
FunctionStringType GetFunctionString() const override
ModelTraitsInterface::ParameterNameType ParameterNameType
Definition: mitkModelBase.h:63
ParamterUnitMapType GetParameterUnits() const override
void PrintSelf(std::ostream &os, ::itk::Indent indent) const override
double StaticParameterValueType
Definition: mitkModelBase.h:70
std::string GetXAxisUnit() const override
DerivedParamterScaleMapType GetDerivedParameterScales() const override
void SetStaticParameters(const StaticParameterMapType &parameters, bool allParameters=true)
DerivedParametersSizeType GetNumberOfDerivedParameters() const override
DerivedParameterMapType GetDerivedParameters(const ParametersType &parameters) const
ModelTraitsInterface::ModelResultType ModelResultType
Definition: mitkModelBase.h:55
itk::Array< double > TimeGridType
Definition: mitkModelBase.h:62
std::string GetYAxisUnit() const override
ModelTraitsInterface::ParametersType ParametersType
Definition: mitkModelBase.h:59
std::string GetModelDisplayName() const override
std::map< ParameterNameType, double > ParamterScaleMapType
ParametersType::SizeValueType ParametersSizeType
itk::Array< double > ModelResultType
ParametersSizeType DerivedParametersSizeType
std::map< ParameterNameType, std::string > ParamterUnitMapType
itk::Array< ParameterValueType > ParametersType
std::map< ParameterNameType, std::string > DerivedParamterUnitMapType
std::map< ParameterNameType, double > DerivedParamterScaleMapType
ParameterNamesType DerivedParameterNamesType
std::vector< ParameterNameType > ParameterNamesType
Find image slices visible on a given plane.