Jobfile for PRESS

Hi Osprey developers,

I adapted a HERMES jobfile for PRESS analysis. So far I’ve run a few datasets and everything looks fine but could you please let me know whether everything is correctly set up for 35 ms PRESS datasets?

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% 1. SPECIFY SEQUENCE INFORMATION %%%

% Specify sequence type
seqType = ‘unedited’; % OPTIONS: - ‘unedited’ (default)
% - ‘MEGA’
% - ‘HERMES’
% - ‘HERCULES’

                            % Specify data scenario

dataScenario = ‘invivo’; % OPTIONS: - ‘invivo’ (default)
% - ‘phantom’

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% 2. SPECIFY DATA HANDLING AND MODELING OPTIONS %%%

% Save LCModel-exportable files for each spectrum?
opts.saveLCM = 0; % OPTIONS: - 0 (no, default)
% - 1 (yes)
% Save jMRUI-exportable files for each spectrum?
opts.saveJMRUI = 0; % OPTIONS: - 0 (no, default)
% - 1 (yes)

% Save processed spectra in vendor-specific format (SDAT/SPAR, RDA, P)?
opts.saveVendor = 0; % OPTIONS: - 0 (no, default)
% - 1 (yes)

% Select the metabolites to be included in the basis set as a cell array,
% with entries separates by commas.
% With default Osprey basis sets, you can select the following metabolites:
% Ala, Asc, Asp, bHB, bHG, Cit, Cr, CrCH2, EtOH, GABA, GPC, GSH, Glc, Gln,
% Glu, Gly, H2O, Ins, Lac, NAA, NAAG, PCh, PCr, PE, Phenyl, Scyllo, Ser,
% Tau, Tyros, MM09, MM12, MM14, MM17, MM20, Lip09, Lip13, Lip20.
% If you enter ‘default’, the basis set will include all of the above
% except for Ala, bHB, bHG, Cit, EtOH, Glc, Gly, Phenyl, Ser, and Tyros.
opts.fit.includeMetabs = {‘default’};

% Choose the fitting algorithm
opts.fit.method = ‘Osprey’; % OPTIONS: - ‘Osprey’ (default)
% - ‘AQSES’ (planned)
% - ‘LCModel’ (planned)
% - ‘TARQUIN’ (planned)

% Choose the fitting style for difference-edited datasets (MEGA, HERMES, HERCULES)
% (only available for the Osprey fitting method)
opts.fit.style = ‘Separate’; % OPTIONS: - ‘Concatenated’ (default) - will fit DIFF and SUM simultaneously)
% - ‘Separate’ - will fit DIFF and OFF separately

% Determine fitting range (in ppm) for the metabolite and water spectra
opts.fit.range = [0.5 4.2]; % [ppm] Default: [0.2 4.2]
opts.fit.rangeWater = [2.0 7.4]; % [ppm] Default: [2.0 7.4]

% Determine the baseline knot spacing (in ppm) for the metabolite spectra
opts.fit.bLineKnotSpace = 0.4; % [ppm] Default: 0.4.

% Add macromolecule and lipid basis functions to the fit?
opts.fit.fitMM = 1; % OPTIONS: - 0 (no)
% - 1 (yes, default)
opts.fit.coMM3 = ‘1to1GABA’;
opts.fit.FWHMcoMM3 = 14;

% Which metabolites are edited?
% editTarget = {‘GABA’,‘GSH’};

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Thank you in advance,
Andreia

Hi @AndreiaPereira,

Looks correct to me. I would change the opts.fit.range to [0.5 4.0] to avoid any impact of the water suppression on the quantification.

Best,
Helge

Hi Helge,

Thank you for your feedback.

BW,
Andreia

Hi Helge,

Would you recommend doing the same change for other sequences, e.g. HERMES?

Best,
Andreia

Hi @AndreiaPereira,

Sorry for the delay.

I would only use those settings for conventional short TE MRS. For GABA-edited MRS you can follow the model setup described here (https://doi.org/10.1002/nbm.4618) which implies that a full range fit from 0.5 to 4 ppm with a dedicated MM3.0 model.

For HERMES you can follow the descriptions here (Impact of acquisition and modeling parameters on test-retest reproducibility of edited GABA+ | bioRxiv) which imply improved test-retest CVs for sparser knot spacing of 0.55 ppm for GABA+ but slightly worse CVs for GSH if the knot spacing is sparse. You could also run the analysis twice with a 0.4 ppm knot spacing for GSH and 0.55 ppm for GABA+. If you are reporting water referenced ratios you can directly use the results. If you are reporting creatine ratios and you want to use the same creatine estimates for both analysis you will have to manually calculate those from the amplitude estimates in the amplitude tsv file.

Best,
Helge

Hi @Helge,

Thanks for the detailed reply and references. Do I simply divide GABA or GSH amplitudes by the tCr amplitudes in the tsv file to get the ratios for each analysis in the case of running two separate analyses?

Best,
Andreia

Hi @AndreiaPereira,

Yes, for tCr ratios, you can simply divide them.

Best,
Helge

1 Like

Hi @Helge,

Just read the paper. I understand that the 3to2MM model performed better for HERMES20. Can I simply change this in the jobfile to change the model being used? I’m using version 2.5.

Specifically, can I change the “1to1GABA” to “3to2MM” below?

% Add macromolecule and lipid basis functions to the fit?
opts.fit.fitMM = 1; % OPTIONS: - 0 (no)
% - 1 (yes, default)
opts.fit.coMM3 = ‘1to1GABA’;
opts.fit.FWHMcoMM3 = 14;

And nothing else?

For the GSH quantification this is irrelevant, right?

Thanks,
Andreia

Hi @AndreiaPereira,

This should be all you have to do, and it also won’t affect the GSH quantification.

Best,
Helge

1 Like

Hi @Helge,

I’ve divided the GABA, Glx amplitudes by the tCr amplitude in the tsv file, but the ratios seem far off as they are in the order of thousands. Whereas, the ratios in the tCr tsv are more as expected in the order of 1.0 or 0.1.

This seems odd, could you please advise?

Thank you,
Andreia

Hi @AndreiaPereira,

That’s odd. I just did a sanity check on one of the example datasets. For example:

A_amplMets_Voxel_1_Basis_1.tsv tCr = 8.02 and tNAA = 14.18 so tNAA/tCr = 14.18/8.02 =1.76 and the tNAA value from A_tCr_Voxel_1_Basis_1 is 1.76 too.

Same for diff1_amplMets_Voxel_1_Basis_1.tsv GABA = 1.71 so GABA/tCr =1.71/8.02=0.21 and the GABA value from diff1_tCr_Voxel_1_Basis_1 is 0.21 too.

Can you tell me which numbers you are getting from which document?
Another potential issue is the basis set scaling performed within Osprey. Usually, this doesn’t matter because this is handled internally. But you are using the results from two separate MRS containers, right? Can you check that the MRSCont.fit.scale entries match between them?

Best,
Helge

Hi @Helge,

I’m picking all amplitude values from diff1_amplMets_Voxel_1_basis. I’m dividing Glx, tNAA and GABAplus amplitudes by the tCr amplitude. This is within the same amplitude file, so same MRS container. I didn’t move on to get the metabolite values from the other container as I couldn’t get to the expected numbers using this approach.

I don’t find any A_amplMets_Voxel_1_Basis_1 tsv

Attaching the amplitudes file I’m using here.

diff1_amplMets_voxel_1_basis_1.xlsx (22.1 KB)

I also found it weird that the diff1_tCr_Voxel_1_Basis_1 table has a value for tCr itself that is not 1 (if that’s the ratios file shouldn’t the tCr/tCr be 1 instead of 0.00…?) The file is attached below too.

diff1_tCr_voxel_1_basis_1.xlsx (22.0 KB)

BW,
Andreia

Hi @AndreiaPereira,

As you are using HERMES there should be a sum_amplMets_voxel_1_basis_1.tsv file. This is from where the tCr estimates are taken internally.

So what Osprey does to create the tCr ratios is that it takes the tCr amplitude from the sum spectrum and divides the amplitude estimates from all other sub-spectra (diff1, diff2, and sum) by this number.
If you want to calculate creatine ratios yourself you have to take the tCr amplitudes from sum_amplMets_voxel_1_basis_1.tsv and use it to divide all amplitude outputs (diff1, diff2, and sum amplitude tsv files) by this number.

For the diff1 spectrum the creatine is subtracted out and the estimate is 0 so the tCr_diff1/tCr_sum is 0.

Let me know if this makes sense

Helge

Hi @Helge,

It makes total sense, I now realise this was a rather silly mistake. Thanks for clarifying.

BW,
Andreia