ChangeLog for ODIN Version 2.0.6: -------------- Version 2.0.5: -------------- New Features: - miview now with enhanced mode to mark ROIs (use command-line option '-rois' to activate): - multiple ROIs per slice - ROIs as colored overlay - Default values printed in usage information (if applicable) - New mask-generating filter 'nonzeromask' - miconv/micalc/miview: Logging application of filters to cmdline Internal Changes: - Improved configure script: Headers will be searched in specific subdirectories of /usr/include and the argument to '--with-extra-include-base' - Improved speed of morphological filters 'erode' and 'dilate' 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- 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 Abstract to 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 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