ODIN data processing framework (odindata library)

This page describes the design guidelines of the module Classes of the ODIN data processing framework (odindata library)

Blitz++ for NMR

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:

Common Numerical Operations

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.

Coordinate Transformation

Transforming an array to a new coordinate system by rotation, scaling and shifting can be done by using the CoordTransformation functor.

Fourier Transform

FFT of a whole complex data set can be calculated by the ComplexData::fft() member function. If the FFT has to be applied only for certain dimensions, use ComplexData::partial_fft()

Linear Algebra

The functions solve_linear(), pseudo_inverse() and eigenvalues() will solve a sets of linear equations, calculate the pseudo inverse and eigenvalues, respectively.

Non-Linear Function Fitting

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.

Linear Regression

The class LinearFunction can be used for linear fitting.

Polynomial Fit

The function polyniomial_fit() provides pixel-wise fitting of polynomials using the values of neighbouring pixels.

Integration of Functions

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.

Basic Statistics

Simple statistics (mean, standard deviation) can be calculated by the statistics() function.

Correlation Analysis

Correlation of two vectors can be calculated by the correlation() function.

Convenient File Input/Output

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.