This page describes the design guidelines of the module Classes of the ODIN data processing framework (odindata library)
The Blitz++ library is great for numerical calculations, but it lacks some functionality that is crucial when using it together with NMR data:
For this reason, ODIN contains two classes that help dealing with these tasks:
In order to offer a framework for other numerical calculations, the following functions/classes are available within ODIN:
Regridding an array from one Cartesian grid to another can be done using the Data::congrid() member function. In addition, the functor Gridding can be used to data from a non-Cartesian grid to a Cartesian grid.
Transforming an array to a new coordinate system by rotation, scaling and shifting can be done by using the CoordTransformation functor.
Fitting of functions is accomplished by the two classes ModelFunction and FunctionFit. The former is used as a base class to specify the modelling function by implementing its virtual functions. The latter is used to do the actual fitting and to store temporary data of the fit.
The class LinearFunction can be used for linear fitting.
The function polyniomial_fit() provides pixel-wise fitting of polynomials using the values of neighbouring pixels.
Integration of one-dimensional functions can be achieved by the two classes Integrand and FunctionIntegral. The former is used as a base class to specify the function by implementing a virtual functions. The latter is used to do the actual integration and to store temporary data.
Simple statistics (mean, standard deviation) can be calculated by the statistics() function.
Correlation of two vectors can be calculated by the correlation() function.
The functions inside FileIO (Input/Output of medical image data (odindata library) ) are a convenient way ro read/write 4-dim Arrays, a variety of formats common for medical image are supported.