• Added argument to adjust the legend font size in ortho3 function.
  • Improved metabolite simulation performance thanks to the expm package recently adding support for complex matrices.
  • abfit options for lipid and MM maximum broadening and maximum frequency shift now default to be the same as the metabolite values unless explicitly changed.
  • Added function to calculate the correlation matrix from a basis_set.
  • Fix for RDA files where a comma is sometimes used as a decimal point.
  • Added find_bids_mrs and mrs_data2bids helper functions.
  • Improved handling of CMRR semi-LASER SVS water reference scans.
  • Added functions for GLS coil combination.
  • Fixed compiler warnings for Fortran code.
  • Added glm_spec function.
  • Added add_noise_spec_snr function.
  • Added vertical line colour and linetype options for stackplots.
  • Added option to give Y axis labels in units of seconds for spectrograms.
  • Removed dependency on smoother package.
  • Added functions for generating BOLD and trapezoidal response shapes.
  • Improved automated file type detection.
  • Bug fixes for DICOM MRS reader.
  • scale_spec function now works with basis set objects.
  • Added invert_fit option to plotting methods.
  • Simulation duration output is now rounded to 2dp.
  • sim_basis now accepts a character vector of molecular names.
  • Added get_1h_brain_basis_names function.
  • Added subset option to mean_dyns function.
  • Added vline option to plot.
  • Added common 31P brain metabolites.
  • Added verbose option to sim_basis.
  • An SNR estimate of zero in comb_coils is now a failure case.
  • Bug fix for GE pfile reader header revision 20.
  • Added a function for finding valid MRS files : find_mrs_files.
  • Added vline argument to stackplot function.
  • Added functions to set MRS data TR and number of transients.
  • Improved defaults for sim_brain_1h function.
  • Added scale_basis_amp function.
  • Added crop_basis function.
  • Amplitude scaling functions duplicate water reference amplitudes when sensible.
  • Added hline option to the mrs_data plot function.
  • Bug fix for Siemens RDA slice thickness detection.
  • ProtocolName is now read from GE p-files.
  • Tentative support for UIH DICOM MRS format.
  • Improved support for reading GE p-files.
  • Added a WIP function to export a one-page summary pdf of the fit result “one_page_pdf”.
  • Bug fix when using align function with masked data.
  • mean_dyn_blocks returns the input data when block_size is set to 1.
  • Added Manufacturer tag to metadata.
  • Added mask_xy_corners and mask_xy_ellipse functions.
  • Added functions to fit T1 and T2 relaxation curves.
  • Updated CI checks.
  • Masked spectra plotted with image are now shown with a value of zero.
  • Added function to read .pta files - read_pulse_pta.
  • Added a function to make basis set objects from a directory of LCModel formatted RAW files - make_basis_from_raw.
  • Added horizontal line to fit result plots.
  • Improvements to reading LCM .raw files with variable numerical columns.
  • Improved function documentation for water concentration scaling.
  • Added water and tCr scaling examples to the introduction vignette.
  • Better error checking for reading ima files.
  • read_basis function improved to work with variable formatting.
  • Improved default method of time-domain signal amplitude estimation.
  • Added helper functions for working with basis set objects: scale_basis_from_singlet, resample_basis and get_basis_subset.
  • Bug fix for STEAM basis simulation being incorrectly scaled for internal water scaling methods.
  • Performance improvement for reading VD format TWIX files.
  • Function added to scale all metabolite levels by a set value (scale_amp_ratio_value).
  • Verbose option added to read_ima_coil_dir and read_ima_dyn_dir functions.
  • Support added for reading jMRUI txt formatted MRS data.
  • sim_brain_1h default sequence changed to semi-LASER and line-broadening option added.
  • Bug fix for reading LCModel RAW files.
  • Bug fix for HSVD filter when only 0 or 1 components are found in the filter region.
  • Improved removal of unwanted data points for reading TWIX formatted data.
  • A json sidecar is automatically written when exporting NIfTI MRS formatted data.
  • TWIX reader improved to only read data points from the last scan in the file. This also fixes a rare bug.
  • peak_info function now works with masked datasets.
  • Bug fix for HSVD function not working with frequency domain data.
  • Bug fix for TWIX affine calculation when not using power of two matrix dimensions.
  • New function (crop_td_pts_pot) to round a dataset length down to the nearest power of 2.
  • Added ret_metab_only option to comb_coils.
  • rats now only returns the corrected data by default, note this could break old code.
  • y-axis label can now be changed with a new argument (yaxis_lab) to plot.mrs_data.
  • Segmentation files are now checked for non-integer values.
  • gridplot has better row and col number defaults for MRSI, and has a bug fix for plotting masked spectra.
  • Updated functions for dealing with lists of MRSI datasets.
  • Bug fix for crop_xy function when working with odd matrix sizes.
  • magrittr pipe (%>%) is no longer loaded together with spant now the base pipe is part of R. Vignettes and tests have been updated to use the base pipe.
  • NIfTI MRS writer no longer fails when dealing with a NULL affine matrix.
  • Bug fix for NIfTI MRS writer, where frequency domain data was not correctly converted to time-domain before export.
  • Added MSM and acetone to the set of internally defined molecules.
  • write_mrs_nifti function removed from userspace. write_mrs should be used instead.
  • set_td_pts and crop_td_pts now work with lists of spectra.
  • Multiple files can now be written by passing a list of spectra to write_mrs.
  • Bug fix for get_mrsi_voi function due to incorrect rounding of MRSI matrix dimensions in some cases.
  • Added mask_fit_res function.
  • Option added to get_2d_psf function to ensure odd output dimensions.
  • Bug fix for using rats on datasets with masked voxels.
  • Added spec_decomp function.
  • Added ret_scale_factor option to scale_spec function.
  • Options added to ft_dyns to return the modulus of the 2D spectra and to pre-transform the chemical shift axis if needed.
  • Bug fix for printing lists of mrs_data objects.
  • comb_coils function now supports lists of mrs_data objects.
  • IMA reader now respects the verbose option in read_mrs.
  • Bug fix for get_mrsi_voi ignoring the ker argument.
  • Bug fix for reading Siemens TWIX files.
  • Added sum_mrs_list function.
  • Bug fix for operating on mrs_data with single values that aren’t numeric types. For example, multiplying mrs_data by a single complex number now works.
  • A number of common preprocessing functions now operate on lists of mrs_data objects.
  • Change to NIfTI MRS reader to fix a failing test when using the development version of RNifti.
  • Better behaviour when using stackplot with single spectra datasets.
  • Better behaviour when using image with single spectra datasets.
  • Bug fix for reading MEGA-PRESS data in TWIX format.
  • Better error checking for lists of spectra.
  • Bug fix for calculating NAA linewidth from MEGA-PRESS data.
  • New function added (recon_twix_2d) for reconstructing basic phase encoded twix 2D MRSI data.
  • File name argument for read_mrs now permits globbing, eg read_mrs(“*.dcm”).
  • Improved plotting of metabolite maps containing infinite values.
  • Improvements to GE p-file reader.
  • Bug fix for TWIX MRSI voxel dimensions.
  • get_mrsi2d_seg now returns partial volume maps as well as a data frame.
  • Improved error handling for spec_op function.
  • apodise_xy can now be applied to multi-coil and dynamic datasets.
  • The package has been published in the Journal for Open Source Software : “spant: An R package for magnetic resonance spectroscopy analysis. JOSS 2021, 6(67), 3646”.
  • The basis result of the HSVD function is now an mrs_data object.
  • The complete model signal is now output by the HSVD function.
  • image function x-axis updated to be consistent with other plotting methods.
  • Minor refactor of the simulation code and a dependency swap from complexplus to exmp packages.
  • Added a unit test for reading and writing LCM .basis formatted files.
  • Added FWHM estimates for tCr and tCho in ABfit.
  • Added water suppression efficiency and water FWHM measures to the diagnostic output of svs_1h_brain_analysis.
  • Added get_head_dyns and get_tail_dyns to return the first and last dynamic scans within a dataset.
  • Fixed CI errors.
  • Improved installation instructions.
  • Removed comb_csv_results function and reduced the number of required packages.
  • Added glycerol simulation parameters, e.g. get_mol_paras(“glyc”).
  • Bug fix for read_ima_* functions.
  • Improved y = 0 baseline for stackplot when setting bl_lty parameter.
  • Removed norm_mrs function and replaced with scale_spec for simple data scaling tasks, eg scaling based on the integration of a spectral region.
  • Added spec_op function for performing simple summary operations on spectral segments.
  • Changed the name of scale_mrs function to scale_mrs_amp.
  • Added mean_mrs_list function.
  • Improved LCM RAW and BASIS readers (contribution from Alex Craven).
  • ABfit frequency shifts limits are now specified in ppm rather than Hz to improve consistency between field strengths.
  • NAA linewidth is now estimated and output by ABfit when NAAG is absent - useful for BRAINO phantom scans.
  • Warning now given when spectra are mathematically combined and are not both in the same time/frequency domain.
  • sum_mrs function added to simplify combining spectra within a pipe.
  • scale_mrs function added to simplify scaling a spectrum within a pipe.
  • add_noise function added to simplify generating simulated data with a pipe.
  • hsvd_filt function now accepts a frequency range in ppm units and gives the option to return the model rather than the filtered data.
  • Bug fix for hsvd_filt function where the max_damp argument was ignored.
  • SVS reference scans, found in some TWIX files, are now removed by default.
  • Bug fix for reading list/data when only one coil element is used.
  • Added 2HG and citrate simulation parameters. e.g. get_mol_paras(“2hg”).
  • Better print output for molecular definitions.
  • Added metabolite and basis simulation vignettes.
  • Bug fix for setting the ppm reference when reading LCModel RAW files.
  • Bug fix for ABfit CRLB calculation of combined signals, eg tNAA, tCr.
  • Options added to allow extra information to attached to mrs_data and fit_result objects as a data frame.
  • New functions (combine_fit_XXX) for working with multiple fit results contained within a list structure.
  • Basis set and noise region are now checked for validity in ABfit.
  • Added spant_abfit_benchmark function.
  • Tentative functions for performing “standard” 1H brain analyses: svs_1h_brain_analysis and svs_1h_brain_batch_analysis.
  • Improved support for LCModel analyses.
  • Fix for NIfTI MRS reader/writer.
  • ortho3 now shows correct labels for orientations other than RAS.
  • ortho3_int function renamed to ortho3_inter.
  • Argument order change to plot_voi_overlay and plot_voi_overlay_seg to be more consistent with ortho3.
  • Regression fix for partial volume segmentation plotting.
  • Echo time parameter is now stored in the meta structure.
  • ABfit now performs a 1D phase parameter search before the prefit stage to improve reliability. May be disabled with the prefit_phase_search fit option.
  • NIfTI MRS reader and writer now uses the header extension for metadata. Thanks to Jon Clayden for adding extension read/write support to the RNifti package.
  • Default plots now have gridlines in the y-direction and the plot line is now thicker and coloured blue.
  • Opacity option added to the plotting functions (alpha).
  • Bug fix for comb_coils with SVS data.
  • Bug fixes for Siemens geometry information.
  • Changed the ordering of arguments to write_mrs and write_mrs_nifti to improve consistency with other functions.
  • Internal function (ortho3) now used to plot voxel locations on MRI.
  • Internal dicom reader function added.
  • Tentative support for Siemens and Philips DICOM MRS format added.
  • Internal changes to the way orientation information is handled.
  • Added gridplot function.
  • New functions added for down sampling.
  • Added signal space projection method for MRSI.
  • Geometry information is now read from Siemens twix files.
  • GitHub actions are now used for continuous integration instead of Travis and AppVeyor.
  • Added precomp function to avoid repeated computation.
  • mrs_data2mat function now collapses all dimensions to dynamics by default.
  • mrs_data objects now store the nucleus.
  • Added a reader for old Varian format (fid/procpar) data.
  • Added write_mrs function which guesses the output format from the file extension or can be specified as an argument. write_mrs_XXX functions have been depreciated.
  • read_mrs function now tries to guess the format from the file extension.
  • Added json sidecar to NIFTI MRS export function.
  • Added the option to read MRS data from a NIFTI file and json sidecar using the read_mrs function.
  • Changed default crop_spec region to between 4.0 and 0.2 ppm.
  • Bug fix for GE P file reader.
  • Added downsample_mrs function.
  • Tentative function (write_mrs_nifti) to write MRS data as a NIFTI format file
  • for evaluation purposes only.
  • Added an option to ABfit to allow the metabolite amplitudes to be negative (ahat_calc_method).
  • Removed lsei package dependency.
  • Added the option to plot a y = 0 baseline trace for stackplot.mrs_data.
  • Added convenience functions to read and write mrs_data to rds format.
  • Added get_fit_table function to combine all fit tables in a fit_result object into a single dataframe.
  • ppm function can now be applied to fit result objects.
  • Bug fix for plot_slice_fit_inter and added the option to specify a denominator.
  • Added the option to specify a denominator to plot_slice_fit.
  • Added the option to display a progress bar in fit_mrs function for better conformance to “Writing R Extensions” in non-interactive use.
  • Changed test tolerance to accommodate differences with OSX.
  • Performance improvement for HSVD water filter.
  • ABfit unit tests are now run on simulated data to improve consistency between different platforms.
  • Improvements to fit amplitude scaling code.
  • Improved checking for mrs_data processing functions.
  • Added preprocessing steps vignette.
  • Improved ppm labels for ABfit plot results.
  • Bug fix for plot_slice_fit when using fits from masked data.
  • Updated unit tests.
  • Added vignette on manually adjusting ABfit baseline smoothness.
  • Updated the introduction vignette.
  • Bug fixes for image and stackplot functions for masked MRS data.
  • Bug fix for using RATS with masked MRS data.
  • Changes to prepare for for R 4.0.0.
  • ABfit analysis method has been added, and is now default for the mrs_fit function.
  • Added reader for LCModel RAW format data.
  • Added read_mri_dyn_dir function for reading dynamic MRS exported from Siemens scanners.
  • Bug fixes for 2D MRSI voxel segmentation calculation.
  • Bug fixes for Siemens IMA format reader for SVS data.
  • Optional colourbar added to ortho3 function.
  • Added Asc, BHB, Cho, PEth and Ser simulation parameters.
  • Added ker option to get_mrsi_voi function.
  • Added append_basis function to combine two basis sets objects.
  • The align function now accepts more than one reference frequency.
  • Added a function to grid shift 2D MRSI data in the x/y direction.
  • Better plotting/fitting support for masking data by setting data points to NA.
  • Bug fix for interactive voxel selection position indicator.
  • Added mask_xy to mask voxels in a centred rectangular region.
  • Minor changes to improve parallel processing support.
  • SNR is now defined as the max data point divided by the standard deviation of the noise (n.b. factor of two has been removed in-line with upcoming terminology paper).
  • Default rats method improved to work with multidimensional datasets.
  • Added norm_mrs function to normalise the intensity of spectral data.
  • Added bc_constant function to correct spectral baselines by a constant offset.
  • Added re_weighting function to apply a resolution enhancement weighting to the FID.
  • Performance improvement for apodise_xy function.
  • sd function now works for mrs_data.
  • Added 2D MRSI support for Siemens IMA format.
  • Bug fix for using auto_phase function with a single spectrum.
  • Bug fix for comb_coils not returning unaveraged data when requested.
  • Added options to combine metabolite signals from the stackplot of a fit object and adjust the plot margins.
  • Added comb_fits function.
  • Added collapse_to_dyns function for mrs_fit objects.
  • RDA reader now extracts geometry information.
  • Added options to omit basis signals, change label names and combine lipid and MM signals from the stackplot of a fit object.
  • Added auto_phase function for zeroth order phase-correction of simple spectra.
  • Added get_subset function to aid MRSI slicing.
  • Added decimate_mrs function.
  • Added fit_amps function to quickly extract amplitude estimates from a fit object.
  • Bug fix for int_spec function.
  • sim_basis function arguments updated to accept acq_par objects.
  • Various bug fixes for Siemens TWIX reader.
  • rats and tdsr functions now use the mean spectrum as the default reference.
  • Added the option to remove the x axis in an mrs_data plot.
  • Added ylim and y_scale options to fit plotting.
  • Added %$% operator from magrittr package.
  • Added an interpolation option to calc_spec_snr.
  • Added hline and vline options to image.mrs_data.
  • Fit results stackplot now has the option to display labels.
  • Added the option to reverse eddy current correction.
  • Improved GE p-file reader.
  • diff function can now be applied to mrs_data objects.
  • Complex functions: Re, Im, Mod, Arg and Conj can now be applied to mrs_data objects.
  • Default simulations for Glc and NAAG have been improved.
  • Added mar argument to plot command.
  • td2fd and fd2td now give warnings when used with data already in the target domain.
  • Improved documentation formatting consistency and fixed some spelling errors.
  • Added rats method.
  • The names of in-built pulse sequence functions now all start with seq_* to make them easier to find.
  • Added new functions to simulate the following MRS sequences: CPMG, MEGA-PRESS, STEAM, sLASER. sLASER sequence kindly contributed by Pierre-Gilles Henry.
  • Bug fix for get_mol_names function.
  • stackplot function now accepts labels argument and time-domain plotting.
  • def_acq_paras function now accepts arguments to override the defaults.
  • Added a source field to mol.paras object to cite the origin of the values.
  • Option to restore plotting par defaults.
  • The magrittr pipe operator is now exported.
  • Updated plotting modes to be one of : “re”, “im”, “mod” or “arg”.
  • Updated int_spec function to use “re”, “im”, or “mod”.
  • Added a function to replicate data across a particular dimension.
  • Added a convenience function to simulate normal looking 1H brain MRS data.
  • phase and shift functions now accept vector inputs.
  • Added new function for frequency drift correction.
  • Added support for Siemens ima and TWIX SVS data.
  • Added support for GE p-file SVS data.
  • Added apply_axes fn.
  • Support for reading SPM style segmentation results (spm_pve2categorical).
  • Interactive plotting function added for fit results - plot_fit_slice_inter.
  • Bug fix for appending dynamic results.
  • Bug fix for reading list data files without reference data.
  • Bug fix for append_dyns function.
  • basis2mrs_data function has been extended to allow the summation of basis elements and setting of individual amplitudes.
  • Added a shift function for manual frequency shift adjustment.
  • Added initial unit tests and automated coveralls checking.
  • A default brain PRESS basis is now simulated by the fit_mrs function when the basis argument isn’t specified.
  • Added calc_peak_info function for simple singlet analyses.
  • crop_spec function now maintains the original frequency scale.
  • The basis set used for analyses has now been added to the fit result object.
  • Bug fix for simulating basis sets with one element.
  • lb function can now be used with basis-set objects.
  • Bug fix for spar_sdat reader for non-localised MRS.
  • AppVeyor now being used to test Windows compatibility - John Muschelli.
  • Bug fix for SPAR/SDAT SVS voxel dimensions.
  • MRSI support added for Philips SPAR/SDAT data.
  • Fit plots now default to the full spectral range unless xlim is specified.
  • Fit plots allow the x, y, z, coil, dynamic indices to be specified.
  • Added the option to subtract the baseline from fit plots.
  • Added stackplot method for fit objects.
  • Added functions for registering and visualising SVS volumes on images and performing partial volume correction.
  • Philips “list data” also now reads noise scans.
  • calc_coil_noise_cor, calc_coil_noise_sd functions added to aid coil combination.
  • Documentation updates for plotting methods.
  • Added some simulation methods to userland.
  • Added Siemens RDA format reader.
  • Added Philips “list data” format reader.
  • Added Bruker paravision format reader.
  • Added PROPACK option for HSVD based filtering.
  • Added a coil combination function.
  • Bug fix for incorrect ppm scale on fit plots when fs != 2000Hz.
  • Bug fix for VARPRO analytical jacobian calculation.
  • First public release.