Gannet 3.0 released

Introducing Gannet 3.0! This new version includes a number of new data processing features (incl. handling of HERMES data), a revamped output MATLAB structure, slight improvements in speed and efficiency and many other changes and bug fixes.

Gannet 3.0 is available for immediate download at the following link: https://github.com/richardedden/Gannet3.0/archive/master.zip

Release notes:

MAJOR CHANGES

+ Added new puffin logo
+ Changes to output structure to accommodate multi-metabolite and multi-voxel datasets
+ Removed unused/redundant lines of code throughout Gannet
+ Removed historical/unused .m files in Gannet folder
+ Optimized code where possible, e.g.:
    - Removing loops and vectorizing instead
    - Simplifying code, e.g., using one-line logical indexing for frequency ranges
    - Pre-allocating memory by setting up variables with zeros
    - Removed ‘convergence’ loop in metabolite signal fitting (should be enough to first run lsqcurvefit followed by nlinfit with high enough max iterations/low enough tolerances)
+ A number of updates to ‘PhilipsRead.m’, ‘GERead.m’ and ‘SiemensTwixRead.m’, e.g.:
    - Almost all acquisition parameters now parsed from the header
    - For P-files and TWIX data, coil combination/pre-phasing is performed by signal-weighting method using unsuppressed water data (when available)
    - Complete revamping of ’SiemensTwixRead.m’; automatic determination of MEGA-PRESS sequence type and scanner software version; removed this parameter from ‘GannetPreInitialise.m’
    - For Philips HERMES data, only the averages where editing pulses do not affect residual water are used for pre-phasing (currently geared towards GABA-/GSH-edited data)
+ Added support for DICOM MRS data files
+ Added functions to de-identify GE P-files, Philips SDAT/SPAR files and Siemens TWIX files
+ SPM segmentation now called by either ‘CallSPM8segmentation.m’ or ‘CallSPM12segmentation.m’ depending on which version of SPM is installed

GannetLoad:
+ Data are now zero-filled to obtain a nominal spectral resolution of 0.061 Hz/point by default (to handle acquisitions with number of data points/spectral width other than 2048/2000 Hz); removed this parameter from ‘GannetPreInitialise.m’
+ HSVD water filter is applied to both GABA-/GSH-edited HERMES data, and to both pre- and post-aligned DIFF spectra
+ For filtered HERMES data, baseline correction performed by demeaning (real) signal between 9 and 10 ppm

Spectral_Registration:
+ Now only first n points of FIDs used for registration, where n is the last point where SNR > 3
+ By default, median across data points of all transients is used as the reference ‘FID’
+ Frequency/phase offset estimates now saved for each processed dataset
+ Transients are now rejected if their respective standardized mean square error (from the nonlinear regression routine) exceeds +/-3 stds.
+ Added ‘Spectral_Registration_HERMES.m’ for frequency/phase correction of HERMES data

GannetFit:
+ GABA+Glx model fitting now performed by weighted nonlinear regression, where observation weights are supplied in nlinfit to down-weight any Cho subtraction artifact and (for HERMES data only) co-edited(?) signals downfield of 3.7 ppm Glx signal (thanks to Alex Craven of University of Bergen for this idea)
+ Added fitting of residual water in MEGA-PRESS data to calculate water suppression factor
+ Added fitting of NAA signal in OFF spectrum


MINOR CHANGES

+ Lots of minor bug fixes
+ Renamed module output folders to ‘Gannet*_output’ (e.g., ‘GannetLoad_output’)
+ Renamed module output PDFs to ‘<filename>_*.pdf’ (e.g., ‘S01_GABA_load.pdf*)
+ Text in output figures aligned more cleanly
+ Addressed MATLAB warnings
+ Made code easier to read/understand by indenting lines and adding a header comment here and there at beginning of processing steps
+ Optimization options for lsqcurvefit and nlinfit now set consistently throughout Gannet
+ Renamed some variables for the sake of consistency
+ Output figures now open in center of screen regardless of screen resolution (figure pixel dimensions are fixed, however)
+ When batch-processing, each output figure is cleared rather than closed all together
+ Some useful acquisition parameters (e.g., edit pulse frequencies) are parsed from the data file headers (and saved in vendor-specific fields) where available

GannetLoad:
+ Fixed ON/OFF indices for GABA-/GSH-edited HERMES data (for ‘offfirst’ only); assumes ‘C B A D’ as per NeuroImage paper
+ Color of pre-/post-alignment spectra now fixed to red/blue regardless of user’s MATLAB version
+ Post-alignment spectra always plotted second so that they are displayed in the foreground (this is helpful for HERMES data)
+ Renamed ‘SiemensRead_RE.m’ to ‘SiemensRead.m’
+ Renamed ‘Gannetplotprepostalign.m’ to ‘GannetPlotPrePostAlign.m’

GannetFit:
+ Water-scaled ON and OFF spectra now saved along with water-scaled DIFF spectrum
+ Models always plotted second so that they are displayed in the foreground
+ Renamed ‘GaussModel_area’, ‘GABAGlxModel_area’, etc. to ‘GaussModel’, GABAGlxModel’, etc.
+ Renamed ‘MRSGABAinstunits’ to ‘CalcInstUnits’
+ Improved quantification of lactate