ChangeLog for ODIN


Version 2.0.4:
--------------

New Features:
- center-of-gravity calculation in micalc
- option '-framesplit' in FileIO to force splitting frames with different acquisition
  times into separate protocol-data pairs during read
- Morphological filter 'erode' and 'dilate'
- sqrt operation in micalc
- using two-component fit to histogram for better 'automask' filter

Internal Changes:
- Porting to Debian Buster
- Fixed issues with VTK-based magnetization plotter
- Increased efficiency of cluster algorithm


Version 2.0.3:
--------------

New Features:
- Added FilterSphereMask to create spherical ROI

Internal Changes:
- fixes for GCC6



Version 2.0.2:
--------------

New Features:
- Added 'Export->Save Data as ...' menu entry to MiView
- XML-based image format
- XML based protocol format with suffix 'xpro'
- Added read/write of ISMRMRD image data format

Internal Changes:
- renamed fileio_jdx to fileio_ser to deal with both XML- and JCAMP-DX-based image format



Version 2.0.1:
--------------

New Features:
- Support for several image file formats for '-dump' option of miview

Internal Changes:
- Porting to GSL-2
- Support for multiarch-based Qt on Debian during configure


Version 2.0.0:
--------------

API Changes:
- Using LDR (labeled data record) as parameter prefix instead of JDX, e.g. JDXint becomes LDRint
- SeqGradEcho: Partial Fourier in 2nd phase-encoding direction as parameter
- Separate functor 'halffour' in odinreco to deal with half-Fourier acquisition

New Features:
- Added PatientsSize as study parameter
- Added FilterInvert to invert gray scale
- Added ReceiveCoilName as system parameter
- Added freedesktop entries for Odin, Pulsar, MiView
- Implemented partial Fourier in multiple dimensions
- Added reader for ISMRMRD raw data format

Internal Changes:
- Porting to VTK-5.8/VTK-6
- New Allura-based SVN repo at SourceForge


Version 1.8.8:
--------------

New Features:
- Added FilterCluster (-cluster) for clustering of adjacent non-zero voxels
- Added FilterEdit (-edit) to edit single voxel values or range of values
- Added FilterTimeShift
- Storing PatientAge in DICOMs
- miview: Option to export/dump image legend separately to file
- micalc: Added option -histslotmap

Internal Changes:
- Added eventContext::abort to stop a running sequence during execution


Version 1.8.7:
--------------

New Features:
- Implemented on-the-fly drift correction in odinreco

Internal Changes:
- Fixed serious bug in SeqPulsar/SeqPulsarReph which affected
  all sequences based on SeqGradEcho (e.g. odingrech, odinfisp)


Version 1.8.6:
--------------

New Features:
- Added DownhillSimplex-based function fit 'FunctionFitDownhillSimplex'
- New FileIO module for simple Interfile format
- Implemented VtkFormat::read()
- Added new filter 'convolve' for spatial convolution with different kernels
- New filter 'slicetime' to correct for different slice acquisition times

API Changes:
- Added interface class 'FunctionFitInterface' and renamed
  'FunctionFit' to 'FunctionFitDerivative'
- Removed ModelFunction::fit()

Internal Changes:
- Adapted for blitz-0.10
- Ported to qwt6
- Using filter_slicetime in odinreco/slicetime
- Cleaned up interface of filter: only single header filter.h necessary
  to include FilterChain
- Using RescaleSlope/Intercept when writing DICOMs
- Simplified autoscaling: Removed 'noupscale' option, only Boolean
  as argument to converter functions, new command-line option
  FileWriteOpts::noscale to be used by file writers


Version 1.8.5:
--------------

New Features:
- Writing of multiple VTK files for dynamic data sets
- Storing protocol together with z-maps in miview fMRI
- Added dialect 'tcourse' to ASCII fileio
- SeqSimMonteCarlo now supports multi-threaded simulation
- Added gamma variate fitting function
- Added filter steps 'quantilmask' and 'resample'
- Filter steps 'minip', 'maxip' and 'proj' now with direction argument
- Added option 'weightmask' to micalc
- Added reco step 'qcspike' to detect spikes in signal
- Added reco steps 'driftcalc/driftcorr' for correction of field drift
- Added GSL-based DownhillSimplex optimizer

Internal Changes:
- Added thread-local storage to ThreadedLoop
- Removed usage of liboil
- Removed FileIO of Lipsia/Vista
- Rewrote filter_splice
- Adapted to libpng 1.5.x
- New implementation of unwrap_phase() function with variable startindex


Version 1.8.4:
--------------

New Features:
- Calculating reductions (maximum, minimum and sum projection)
  by one filter step
- Added write option 'fnamepar' to create file names of datasets based
  on arbitrary protocol parameters
- Added parameter to weight phase by exponent of magnitude when
  combining multi-channel data
- Added filter 'automask' to create mask using histogram-based threshold 

Internal Changes:
- Fixes for DCMTK 3.6.0
- Combination of files with different bit representations in autoread
- Using presence of DICOM trigger time to set PhysioTrigger
- Accounting for different TRs in gated mode when combining data


Version 1.8.3:
--------------

New Features:
- PhysioTrigger flag in GUI
- Partial Fourier acquisition in readout direction
- Reordering of phase lists

API Changes:
- Changed constructors of SeqAcqRead and SeqGradEcho to allow for
  partial Fourier acquisition in readout direction.

Internal Changes:
- Now using PREFIX/share/odin to install sequences, samples and coils
- Constructors of SeqGradTrapez and SeqAcqRead now account
  for rastered duration of of constant part
- Taking SeqVecIter objects into account when creating recoInfo



Version 1.8.2:
--------------

New Features:
- Read-only display of parameter blocks by a table
- Support for time varying samples to simulate fMRI, for instance
- (Re-)added SeqMagnReset to reset magnetization in simulation
- New FileIO plugin for ODIN measurement protocols

API Changes:
- Changed parameter order of Sample::resize()
- Removed obsolete B1 map in Sample
- Sample has extra time dimension (frames)

Internal Changes:
- Fixed noise generator of MRI simulator



Version 1.8.1:
--------------

New Features:
- 3D phase encoded PROPELLER sequence
- Support for diffusion tensor imaging
- New parameters for odinreco to fine-tune
  odinreco of PROPELLER data
- Added 3D mode to SeqGradEcho

API Changes:
- New operators /= for SeqGradChanParallel
- Moved set_gradrotmatrixvector() from
  SeqParallel to SeqObjList

Internal Changes:
- Using userdef dimension for messer/gesse sequence
- Separate functor for phase correction of blades


Version 1.8.0:
--------------

New Features:
- odinprop now possible with ramp sampling
- Dialect 'siemens' for DICOM read/write plugins

Internal Changes:
- Removed scanner-specific drivers from public
  distribution.


Version 1.7.3:
--------------

New Features:
- Auto-detecting number of cores for odinreco.
- Added functor 'fmri' to odinreco (fMRI localizer).
- Optimized trapezoidal gradient pulses.
- Added filter 'detrend' to remove slow drift over time.
- Added filter 'merge' to merge datasets into one.
- Added filter 'usemask' to generate 1D array using a mask.
- Multi-threaded simulation of MR signal.

API Changes:
- SeqPulsar::set_rephased() now accepts an optional
  argument to set the rephaser strength.

Internal Changes:
- New template class ThreadedLoop for parallelized loops.


Version 1.7.2:
--------------

New Features:
- New sequence 'odinprop' and appropriate reconstruction for PROPPELLER
  acquisition.

Internal Changes:
- Auto-generating manpages using 'help2man'.
- Added --enable/disable-<feature> to configure for 3rd part libraries.


Version 1.7.1:
--------------

New Features:
- Added residual-based robustness filter to GRAPPA reconstruction.
- New filter 'align' to register the data of one dataset to the
  geometry of another.

Internal Changes:
- Added reverseSlice to Geometry to account for different handness
  of coordinate system.
- Removed sonames of libraries.
- Filters now operate on whole maps of protocol-data pairs.


Version 1.7.0:
--------------

New Features:
- Full support for arbitrary oversampling on all platforms.
- Added ScanDate and ScanTime members to Study.
- New filters for intensity masks (genmask) and slice tiling (tile).
- Added SeqHalt for physiological triggering.

API Changes:
- Parameter for oversampling factor can now be specified
  in SeqAcq* constructors.
- Removed obsolete 'gradshift' from SeqAcqEPI constructor.

Internal Changes:
- Added configure option --enable-debug, release mode is now the default


Version 1.6.9:
--------------

New Features:
- Added common method SeqFreqChanInterface::set_phasespoiling() for RF
  spoiling.
- Added code for iterative GRAPPA interpolation in two phase encoding
  directions.
- New file formats in FileIO: 3db (Iris3D binary data), png (PNG image),
  reg (Ansoft HFSS ASCII).

API Changes:
- Removed obsolete get/set_attenuation() of pulse classes.
- Renamed SeqPulsNdim::get/set_wave() -> SeqPulsNdim::get/set_rfwave()
  and SeqPulsNdim::get/set_Gx/y/z() -> SeqPulsNdim::get/set_gradwave()
- Merged enums read/phase/sliceChannel and read/phase/sliceDirection
  into read/phase/sliceDirection
- New member 'methpars' in Protocol to accomodate custom sequence
  parameters.

Internal Changes:
- The protocol is now embedded in recoInfo instead of a separate
  file on disk.
- Using Siemens Ice(Configurator) to store raw data on disk.


Version 1.6.8:
--------------

New Features:
- Most of the tracing is now displayed directly in the messages
  window of Odin instead of the console.

API Changes:
- Replaced Debug module (in files tjutils/tjdebug*)
  by Log module (in files tjutils/tjlog*)

Internal Changes:
- Replaced most of uses of cout/cerr by using new Log module


Version 1.6.7:
--------------

New Features:
- Ported to Siemens IDEA VB15
- odinreco can reconstruct Twix-exported raw data from some
  Siemens sequences (EPI, FLASH)

Internal Changes:
- New ostringstream-based debugging framework which now supports
  standard ostream output to be redirected to the debug object


Version 1.6.6:
--------------

New Features:
- New class SeqGradPhaseEncFlowComp for 1st order flow-compensated
  phase encoding.
- Implemented 3D mode for SeqFieldMap.
- New framework for filter steps operating on datasets-protocols pairs
  in odindata/filter*.

Internal Changes:
- Added libodinreco in order to support external recos with a custom reader.
- Common template base classes for filter and reco steps in odindata/step.*.


Version 1.6.5:
--------------

New Features:
- Support for GNU-Zip compressed files in FileIO, e.g. files ending with nii.gz
  can be read directly.
- Oscilloscope in sequence plotter.
- New Mode 'B1' in odinquant and functor b1fit to produce B1 maps.
- Added true half fourier reco to odinreco/homodyne.*
- Ported to Siemens Numaris4 VB12

API Changes:
- JDXyesno renamed to JDXbool.

Internal Changes:
- Uniform handling of arguments and options of reco steps (functors) via a
  single set of parameters per step.
- Storing and using ReadoutShape instead of RegridMatrix for ramp-sampling
  correction.
- Using MinGW patch so that ODIN can be used on Windows Vista.
- Using name 'odindebug' as a uniform name for all local Debug objects.
- Renamed SeqMethodInterface/SeqPlatformInterface to SeqMethodProxy/SeqPlatformProxy.
- Extra configure option to include/exclude unit test.
- New simple list-based memory manager for custom heap.


Version 1.6.4:
--------------

New Features:
- Monte-Carlo simulator 'SeqSimMonteCarlo' to simulate diffusional
  averaging. Both simulators, 'SeqSimMagsi' and 'SeqSimMonteCarlo', are
  now accessible via a common interface 'SeqSimAbstract'.
- New sequence 'odinswi' and reco functor 'swi' for susceptibilty weighted imaging.
- New reco functor 'filter' and 'zerofill' for k-space filtering and
  zero filling.
- Input/output plugin for the Matlab ASCII file format in FileIO module.
- Improved Vista input/output plugin which is now compatible with Lipsia.
- Improved NIFTI input/output which now supports different data representation
  types and correctly handles slice orientations.
- New LAPACK-based linear algebra functions 'pseudo_inverse' and 'eigenvalues'
  in odindata/linalg.h.
- More filter plugins for JDXfilter

API Changes:
- Renamed header seqmagn.h to seqsim.h and class 'SeqMagn' to 'SeqSimMagsi'.
- Data::convert_to() has more convenient autoscaleOption instead of scale/offset.
- New parameter RFSpoiling in commonPars

Internal Changes:
- Increased efficiency of the tokenizer and STL replacement.
- Using liboil when available for array conversion.


Version 1.6.3:
--------------

New Features:
- Direct FT with conjugate-phase reconstruction for spiral imaging.
- Yet another optimized spiral trajectory (BoernertSpiral) as described in
  Boernert et al, MAGMA 9:29-41(1999).
- Support for NIFTI file format.

Internal Changes:
- Collected common code of different spirals into base class ArchimedianSpiral.
- Simplified interface to Paravision: A scan can now be started directly
  from the ODIN GUI. Communication between ODIN and Paravision is now
  bases solely on pvcmd.


Version 1.6.2:
--------------

New Features:
- Experimental support for VB* on Siemens.
- Slice ordering of Sinc and Gauss pulses is now interleaved
  by default.
- Added slice-time correction functor to odinreco.

API Changes:
- Now, the class SeqAcqEPI has an extra parameter 'reduction'
  in the constructor to realize GRAPPA encoding directly in the
  the SeqAcqEPI class in order to combine segmentation and parallel
  imaging of EPI.


Version 1.6.1:
--------------

New Features:
- Graphical installer to install ODIN on IDEA.
- Implemented partial Fourier acquisition: New sequence parameter
  'PartialFourier', added support for partial Fourier acquisition in
  SeqGradPhaseEnc/SeqGradEcho and homodyne reconstruction in odinreco.

API Changes:
- Overloading SeqMethod::method_reco() to perform method-specific reconstruction
  is no longer supported. Instead, each method can register a set of functors
  via RecoPars::set_Recipe() and RecoPars::set_PostProc3D().

Internal Changes:
- No longer providing Debian packages because of a bug in Blitz++, see
  http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=369753 for details.


Version 1.6.0:
--------------

New Features:
- New multi-threaded pipeline-based reconstruction 'odinreco' which replaces
  good old 'autoreco' as the image reconstruction framework within ODIN.
- Added components for multi-threading in tjutils/tjthread.h.
- New class SeqVecIter to iterate manually through vectors (e.g. phaselists).

API Changes:
- Removed Nyquist correction for EPI in favour of simple 1D phase correction.

Internal Changes:
- Renamed library for data processing from 'odinreco' to 'odindata'.


Version 1.5.1:
--------------

New Features:
- The FileIO module and the tools based on it (miconv,miview) now support
  datasets with differing protocols. These protocol-data pairs are now
  processed simultaneously. They are read from and written to a single file
  if the file format supports this option (e.g. Vista).
- Spiral trajectories with a free parameter can be optimized for minimum
  readout length using downhill simplex optimization.
- Various improvements to spiral reco: Faster k-space gridding, magnitude
  correction, optional reco by matrix inversion, ...

API Changes:
- Added ramp steepness as parameter to SeqGradTrapez and SeqAcqEPI.
- Restructured FileIO functionality: Instea of separate 'read/write_*_file'
  functions for each file format, the class Data now has single functions
  'autoread/autowrite' to import/export data from different file formats.
- The FileIO module now handles lists of protocol-data pairs: Data
  with differing protocols can be read in and written out simultaneously.
- New gridding and coodinate transform functors 'Gridding' and
  'CoordTransformation' which are nitialized once and can be applied
  multiple times.

Internal Changes:
- Using fast(!) LAPACK routines for SVD instead of those of GSL
  if LAPACK is available.


Version 1.5.0:
--------------

New Features:
- Added new sequence parameter GradientIntro which will
  automatically generate a 'tok tok tok' sound prior to
  the actual sequence if activated.
- New encodind scheme 'maxDistEncoding' which creates
  max distance between consecutive elements of a vector,
  e.g. for multi-slice excitation with minimum overlap.
- New class 'Study' and sub-object 'study' in class
  'Protocol' to hold info about current study, i.e. patient
  info, study name, etc.
- Fully standard-compliant DICOM export.
- To allow off-center FOV in read direction, oversampling
  will now be used to create a shift in autoreco before
  the FOV-band filter is applied.

Internal Changes:
- Migrated to subversion source code control
- Renamed internal interface classes of sequence objects
  from <SomeSeqClass>Abstract to <SomeSeqClass>Interface
- All Seq*Interface now implement automatic marshalling
  of virtual functions if a marshall is specified with
  set_marshall().
- Restructured type interface for amd64 bit compatability:
  Possible integer types are now s8bit, u8bit, s16bit, u16bit,
  s32bit, u32bit and will be mapped to the appropriate C types
  during './configure'.


Version 1.4.3:
--------------

API Changes:
- Argument for direction of ComplexData::fft(...) changed to bool value
- The function do_autoreco() is obsolete, autoreco is always performed
  prior to calling sequence-specific method_reco().

New Features:
- Added SeqPulsar::get_reph_gradintegral() to obtain rephasing integrals
  without creating a new gradient object.
- Ported ODIN to Windows using MinGW.

Internal Changes:
- Using GSL FFT instead of FFTW -> No more FFTW dependency


Version 1.4.2:
--------------

API Changes:
- Removed obsolete flag 'templateScan' from constructor of SeqAcqEPI

New Features:
- Added optimization code for RF pulses
- New constructor flag 'rephase' for SeqAcqDeph to create post-acquisition
  rephasing gradients.

Internal Changes:
- Many bug fixes



Version 1.4.1:
--------------

API Changes:
- Memory mapping of complex raw data has changed: The block
  can be reshaped at each load_block.


New Features:
- The EPI module now supports multiple echoes for each line
  in k-space. This is useful for field-map scans.
- Added EPI-based module for field-map pre-scan to odinspir
  sequence.


Internal Changes:
- Better integration into the Paravision PVM framework.
- Tagging of dimensions for reco is now performed mainly
  in autoreco for better performance.



Version 1.4.0:
--------------

New Features:
- Added support for multi-shot (segmented) EPI.
- Parallel imaging using GRAPPA. A new parameter
  'ReductionFactor' can be used to specify an acceleration
  factor and the class 'SeqGradPhaseEnc' is able to
  create undersampled phase encoding with auto-calibration
  lines.
- Embedded 1D plots (e.g. in Pulsar) can be detached
  by an entry in their context menu.
 
API Changes:
- The sub-elements of the Protocol class (system, geometry and seqpars)
  are no longer pointers, but actual objects.
- All 'set_*_vector' member functions of SeqAcqAbstract derived
  classes are now replaced by a single function 'set_reco_vector'
  which takes the desired dimension as its first argument via a
  'recoDim' parameter.
- The simple macro ODINMETHOD_ENTRY_POINT is now used in every sequence
  file/module instead of the old ODINMAIN function code.
- Changed constructor of SeqAcqEPI to support multi-shot (segmented) EPI
- Changed constructor of 2D SeqGradEcho: More convenient constructor
  with matrix sizes and FOVs instead of gradient strengths.
- Changed constructor of 'SeqGradPhaseEnc' to support parallel
  imaging.
- Removed property digitizerMode from the API, i.e. from all
  constructors of SeqAcq* objects.

Internal Changes:
- Removed tjview
- Using PVM instead of IMND interface on Paravision/Bruker.
- Various changes to use optimum filter/digitizer settings
  on Paravision/Bruker.



Version 1.3.2:
--------------

New Features:
- Added scale to all 2D plots

Internal Changes:
- Unit test of components is now handled by UnitTest and
  derived classes
- Fixed broken Debian package.



Version 1.3.1:
--------------

API Changes:
- Argument to get/set_spatial_offset of OdinPulse/SeqPulsarPinWheel
  is now channelNo enum instead of axis enum.
- Moved image.h/image.cpp from odinreco to odinpara lib.
- Renamed SeqRotMatrix to RotMatrix
- The argument to set_gradrotmatrix() is now RotMatrix, instead
  of a 3x3 float array
- Renamed set_mode/get_mode of JDX classes to 
  set_compat_mode/get_compat_mode
- The default compatability mode of parameters is now
  'notBroken' instead of 'bruker'
- The pre-defined frequency list 'pl90' is obsolete,
  use 'set_phase(90.0)' instead.

New Features:
- Multiple test cases are now supported for each sequence
  to cover more use cases during sequence test.
- ODIN image file format now contains additional information
  about the slice geometry.
- Added new program 'miview' which will eventually replace
  the good old, but messy 'tjview'
- It is now possible to display images as color map
  in tjview/miview via the '-color' command-line option.
- Any ImageSet (image.jdx) can be used as a background in geoedit

Internal Changes:
- Ported to Qt4 and Qwt5
- Ported to MacOS
- The class name of a sequences/methods is  now set
  by the define METHOD_CLASS in the method code to change
  the class name dynamically, which is required on MacOS.
- Improved DICOM im/export
- Navigator data set is now stored in ImageSet instead
  of obsolete PilotScan
- The global parameter 'EchoTime' is now a vector of doubles
  internally to support multi-echo sequences. However, in
  the UI it still appears as a scalar parameter.
- The sum immages of autoreco are now produced by
  averaging complex images instead of image magnitudes
  for better noise compensation.




Version 1.3.0:
--------------

API Changes:
- Location and name of headers have changed:
  tjutils/tjdx*.h   ->  odinpara/jdx*
  tjutils/tjreco.h  ->  odinpara/reco.h
  odinseq/seqgeo.h  ->  odinpara/geometry.h
  odinseq/seqsys.h  ->  odinpara/system.h
  odinseq/seqpars.h ->  odinpara/seqpars.h
- Renamed classes:
  SeqGeo  -> Geometry
  SeqSys  -> System
  SeqReco -> RecoPars
- Splitted SeqMagn into two separate classes
  Sample (in odinpara/sample.h) and
  SeqMagn (in odinseq/seqmagn.h) to separate
  the logic of sample properties and magnetization
- Changed member functions of PilotScan: Now
  only one function with an enum 'sliceOrientation'
  as first argument instead of 3 functions
- Constructor and redim functions of tjarray
  changed: Giving a dim parameter as first arg
  is no longer necessary, dim is determined from
  the number of args


New Features:
- A debugger can be attached to the running or newly started
  Odin process in order to debug sequences. It can be switched
  on/off under Preferences->Settings->AttachDebugger
- DICOM support added via dcmtk: reading/writing of DICOM
  files is now possible within the Data class
- new input/output functions autoread/autowrite in odinreco/fileio.h
  which detect the file format automatically according to the
  file extension
- rawcalc/micalc now handles a variety of file formats
- tjview is now capable of displaying DICOM files
- Added new class Protocol which is used to hold the
  whole protocol of one experiment
- Introduced new cmdline program 'miconv' which
  replaces the functionality of raw2vista, raw2vtk,
  vistasplit, etc. The file types are recognized
  according to file extension
- Simulation of MR sequences can now be done via
  cmdline-action 'simulate'
- Started work on drivers for GE (code generator
  for EPIC), drivers will be compiled in by default
- Added write support for MetaImage (mhd) file format
  to FileIO::autowrite

Internal Changes:
- New library odinpara which holds JCAMP-DX implementation
  and parameter classes for the MR protocol (geometry, system,
  sequence parameters)
- Added support for new version (3.x) of FFTW
- Removed obsolete intermediate class SeqClassSys

Misc:
- Windows version of tjview no longer available
- The parameters in ODIN user interface are now
  separated: commonPars and methodPars both have
  their own widget
- The sequence-label prefix is removed from parameter
  names in commonPars when written to disk
  (e.g. odinepi_FlipAngle is now simply FlipAngle)
- renamed command-line utilities:
  genphantom -> gensample
  rawcalc    -> micalc



Version 1.2.2:
--------------

New Features:
- rawcalc/micalc: It is now possible to use numbers instead of
  arrays to perform arithmetics with scalar numbers and arrays
- Added RandomDist, a class to calculate random number
  distributions.
- New header 'odinreco/linalg.h' and function 'solve_linear'
  to solve sets of linear equations using the singular value
  decomposition of GSL
- New function polynomial_fit in header 'odinreco/fitting.h'
  to fit polynomes at each point of an array
- New function transform in header 'odinreco/gridding.h'
  to perform coordinate transformation of Arrays
  (i.e. rotation, flipping, scaling, shifting)
- Made sequence plotting more convenient: Empty channels
  are discarded and signal curves are displayed right after
  simulation
- It is now possible to specify coil sensitivities for
  transmission and acquisition


Internal Changes:
- Now ComplexData::fft swaps quadrants before and after fftw
  (to obtain smooth phasemaps in the image)
- Automated test of autoreco
- Added unit tests for components in odinreco (gridding, fitting,
  statistics, fft)



Version 1.2.1:
--------------

New Features:
- Improved simulation of intra-voxel dephasing by using
  intra-voxel magnetization gradients
- Added vtk-support (writing 3D files)
- New cmdline util raw2vtk to convert raw data to vtk files
- Added TrueFISP sequence odinfisp
- Improved plotting/printing of sequences: Thicker lines
  while printing, wheels for y-axes to select y-range
- Added indication of x/y position when drawing profiles
  in tjview
- The home page now contains a list of avaiable sequences
  together with their descritions. This list is automatically
  generated from the source code files in the sequences dir.

Internal Changes:
- Fixed resizing/margins of JDX widgets on newer Qt versions 
- Automated release and test procedure (make release / make test)




Version 1.2.0:
--------------

API Changes:
- replaced value 'paravision1_1' of enum 'odinPlatform' by
  'paravision' to indicate support of (hopefully) all
  Paravision versions.

New Features:
- Adapted ODIN to Paravision 3
- It is now possible to iterate through a list of flip angles
  via the set_flipangles() and get_flipangle_vector()
  functions of SeqPulsAbstract (and its derived classes)
- Added horizontal/vertical-only zoom tool to sequence plot
- Increased max number of pulses on Paravision from 16 to 32
- Printing of sequence plot is now black on white
- Added Settings to sequence plot to select whether
  axes, grid, markers should be plotted

Internal Changes:
- Removed Qwt source code -> Qwt widget library has to
  be installed separately.
- Debian Sarge is now the reference platform on Linux.




Version 1.1.0:
--------------

API Changes:
- rewrote fitting framework in odinreco: Better usability
  with custom model functions via virtual functions instead
  of template classes

New Features:
- New class Image to handle image data. Data is stored
  on disk in compressed JCAMP-DX format. It is produced
  by 'autoreco' or by 'raw2image' and can be viewed with
  'tjview'.
- All parameters which are relevant for the measurement
  (systemInfo, geometryInfo, sequencePars) are now stored
  together with the raw data in a single file 'protocol'.
  The old files systemInfo, geometryInfo, and sequencePars
  are still available.
- Added integration.* in odinreco for easy integration of
  functions using the GSL
- New files utils.* in odinreco to hold spezialized utility
  functions for reconstruction

Internal Changes:
- Moved platform-specific processing of cmdline options
  to platform drivers
- New class OdinProcess to encapsulate platform-specific
  process creation/execution
- Singletons are now managed by SingletonHandler template
  class to solve problems with DLLs on windows
- New class OdinConf to hold/manage platform-specific
  configuration options



Version 1.0.0:
--------------

- small bug fixes

- Fixed geometry handling on IDEA

- improved geoedit GUI

- added Store/Load-Buttons to store ODIN protocols on Paravision

- added -s to rels action on Paravision to set parameters via
  the command line



Version 0.9.9:
--------------

- cleaned up Paravision interface of ODIN

- adaption of ODIN to NUMARIS VA25

- fixed calculation of composite pulses

- added calculation of eddy currents to plotting module

- added SeqSnapshot sequence object to dump magnetization
  at a specified point in time during simulation




Version 0.9.8:
--------------

- bug fixes

- moved saturation pulse into separate files seqsat.*

- new virtual samples for quality phantom

- different modes for geometry: slicepack and 3Dvoxel

- new Nyquist correction for EPI scans




Version 0.9.7:
--------------

- bug fixes




Version 0.9.6:
--------------

- Refectored magnetization class SeqSimMagn and its simulation.

- Implemented new sequence plotting/simulation framework in
  the ODIN GUI.

- Removed obsolete SeqDigitised class and audiofile generation
  which were formerly used to display sequences.


Version 0.9.5:
--------------

- Modified tjview so that it can be compiled for Windows

- New plotting facility to visualize sequences using a new StandAlone
  platform and the QwtPlot class

- Every platform has now its own systemInfo struct, but the interface
  does not change: systemInfo-> will be relayed to the particular
  systemInfo of the current platform.

- Refactored reorder vector: SeqVector now contains a pointer to
  its reordering vector so that every vector class can now be
  reordered.
  
Version 0.9.4:
--------------

- Cleaned up stream replacement and debugging facility

- Decreased memory usage of recoInfo structure

- Support for multi-channel acquisition (phased-array coils) added

- Cleaned up JCAMP-DX implementation

- Replaced tjstring by STD_string, which is simply a macro for std::string
  on platforms with a working STL

- Replaced tjcomplex by STD_complex, which is simply a macro for std::complex<float>
  on platforms with a working STL


Version 0.9.3:
--------------

- Moved C-standard-header includes into a single new file tjcstd.h

- Fixed performance problem when dealing with recoInfo of many-repetition scans




Version 0.9.2:
--------------

- Added recoInfo data structure to store reconstruction parameters

- Added autoreco executable to perform an automatic reconstruction based on recoInfo

- Improved STL-replacement: now true doubly linked list, list::sort() and list::unique() implemented

- Fully implemented hardware drivers (SeqGradTrapez and SeqGradChanParallel)



Version 0.9.1:
--------------

- Implemented hardware drivers by pure virtual driver base
  classes and their derivations for each platform

- Removed obsolete class SeqGradObjList and SeqGradObjLoop

Version 0.9.0:
--------------

- Added User Manual for ODIN user interface

- Now using Qwt for plotting 1D-graphs

- Improved handling of different nuclei, fixed decoupling class

- Added interpolation function to Data class



Version 0.8.4:
--------------

- Improved ODIN user interface

- Even more bug fixes

Version 0.8.3:
--------------

- Bug fixes!


Version 0.8.2:
--------------

- Improved release generation


Version 0.8.1:
--------------

- Bug fixes

- Improved fMRI analysis in tjview



Version 0.8.0:
--------------

- Restructured source code tree

- compilation for IDEA now uses autoconf/automake

- new library odinreco instead of recopp_blitz


Version 0.7.1:
--------------

- improved ODIN GUI: k-space display, etc.

- rewrote framework for JDXfunctions for minimal memory usage

- accelerated performance in the Siemens enviroment

- SeqRotMatrixVector now coupled to SeqParallel to be used with IDEA

- Started spiral sequence



Version 0.7.0:
--------------

- ODIN now contains a nice GUI for interactive sequence design

- complete rewrite of audio file generation


Version 0.6.2:
--------------

- Better integration of ODIN into Siemens GUI (TE/TR feedback)

- Now using release compilation on Siemens host/mpcu to decrease library size

- Added fMRI analysis to tjview



Version 0.6.1:
--------------

- Added custom memory manager for real time OS to avoid memory leaks

- Finished implementation of rotation matrix vector

- Reworked EPI implementation: different drivers for different platforms

- EPI reco now in separate function



Version 0.6.0:
--------------

- Improved automatic reconstruction via ICE

- Reworked implementation of reordering schemes for Bruker

- Fixed serious bug in frequency list generation



Version 0.5.3:
--------------

- Reordering schemes introduced

- Added code to ODIN that allows automatic reconstruction via the ICE framework

- bug fixes



Version 0.5.2:
--------------

- Improved method interface

- bug fixes



Version 0.5.1:
--------------

- New root classes SeqIdea and SeqParavision added that deal with the different scanner hardware

- bug fixes

- Partial fourier added to EPI module

- Program 'genmakefile' added that creates Makefiles for the methods on different platforms

- ICE program added that writes raw data to disk


Version 0.5.0:
--------------

- ODIN works together with IDEA!

- bug fixes

- global object 'commonPars' added that contains parameters found in nearly every sequence (TE,TR,..)






Version 0.4.9:
--------------

- ODIN now compiles with GCC3.2

- Various bug fixes


Version 0.4.8:
--------------

- Improved Pulsar


Version 0.4.6:
--------------

- Added ramp sampling for EPI


Version 0.4.4:
--------------

- Bug fixes for previous version


Version 0.4.3:
--------------

- Improved manual

- Added more stuff for IDEA support



Version 0.4.2:
--------------

- subsystem for gradient channel handling replaced: gradient
  channel objects can now be played out asynchroniously

- Improved EPI reco

- Predefined fat saturation pulse added



Version 0.4.1:
--------------

- Support for import/export of Vista files added.

- Frequency and delay lists for Bruker are now calculated
  by iterating through the sequence and retrieving their values.

- Gradient waveforms and gradient vectors (phase encoding) are
  now copied to the PARX parameter space via a predefined list
  of float arrays to minimise IMND compilation.

- Predefined sinc and Gauss pulse added.



Version 0.4.0:
--------------

- Support for IDEA added. ODIN now compiles with VC++ and the VxWorks
  cross-compiler.

- Added a rough but working STL replacement for platforms where STL is
  broken (VxWorks).

- ODIN Homepage improved: Download section now contains binaries for
  different platforms.

- IDE for this release was KDevelop 2.1


Version 0.3.3:
--------------

- Various bug fixes

- Documentation updated

- Composite pulses added to OdinPulse/Pulsar


Version 0.3.2:
--------------

- Simulation of sequences is now possible by using the 'simulate' option
  on the command line

- Sequences can now be stored as 6 channel AIFF files by using the 'audio'
  command line switch

- The command line switches 'events' and 'tree' for sequences print the
  events along the time axis or the hierachical sequence tree.

- Added variable delay vector SeqDelayVector

- renamed method tj_read_d to odingrech  (basic gradient echo sequence)



Version 0.3.1:
--------------

- New debugging framework. Functions are debugged by generating a local
  Debug object. Additional messages can be emitted by a stream-like syntax.

- The sequence library is distributed over a whole bunch of new files

- The static members systemInfo and geometryInfo are now pointers due to
  problems in initialising the libraries when they are loaded

- Added new program JdxEdit, an interactive editor for JCAMP-DX files


Version 0.3.0:
--------------

- Advanced pulses are now managed by a new class OdinPulse which allows adding new
  pulse shape, trajectory and filter functions via a plug-in style mechanism.

- The Pulsar user interface has been completely rewritten to make use of the OdinPulse class
  and of new mechanism of automatically building a widget from a given JCAMP-DX parameter set.

- Simulation of a sequence is now handled by two classes: SeqDigitised represents the
  digitised RF and gradient waveforms of the sequence and SeqSimMagn holds the magnetisation
  array. Both are then connected by a simulate function.

- The simulation of relaxation effects (T1,T2) were added by Robert Trampel

- The following methods are now part of ODIN:
  -odinmdeft : MDEFT sequence
  -odinonep : onepulse experiment

- IDE for this release was KDevelop 2.1
