Error in FSL-MRS Quantification: "Specified metabolite isn't in the list of basis spectra"

Hi everyone,

I’m encountering an issue with FSL-MRS during the quantification step, and I’d appreciate any advice on resolving it. The error message indicates an unusual echo time and a missing water scaling metabolite. Here’s what I’ve done so far:

  1. Preprocessing: I used fsl_mrs_preproc to preprocess my data, which seemed to work well, although the NAA peak appears slightly lower than expected.

  2. Basis Set Simulation: I simulated my basis set with the command:
    fsl_mrs_sim -m Glu,H2O -o basis_output -e 30
    I generated a JSON file based on my MRS parameters (MRS_parameters.pdf (631.6 KB), but I’m not entirely sure if it’s accurate eja_svs_mpress_on_to_simulate_basis_set.txt (1.2 KB)

  3. Basis Set Output: This generated separate basis sets for H2O and Glu in .txt, .json , and .raw formats, as separate files for water and Glu.
    For fitting, I used:

fsl_mrs --data “path to my metab.nii file”
–basis “path to my Glu.txt”
–output “”
–h2o “path to my wref.nii”
–report

  1. Error Received:
    NoWaterScalingMetabolite: No suitable metabolite has been identified for water scaling.
    QuantificationException: No metabolites in FSL’s dictionary of water scaling metabolites are in the basis set. Please specify a water scaling metabolite manually (–wref_metabolite). Also specify --ref_protons and --ref_int_limits.

I’ve tried adjusting the command without success, and I also attempted to combine the Glu and H2O basis sets manually, but this hasn’t worked either. Does anyone have insights on correctly specifying the water scaling metabolite or suggestions for troubleshooting?

Thank you!

P.S. I forgot to add some important information: the sequence is MEGA-PRESS with water suppression. The data file structure includes 4 On sequences with 64 pulses each and 1 Off sequence. Currently, for my analysis, I am using only one On and one Off sequence because I’m uncertain whether I should average the raw data, the preprocessed sequences, or the final fitting outputs.

Additionally, it seems that the peak is being reduced during alignment.

Hi @Arsenic,

mI also looks a little high to me. I assume this is a healthy control subject? Was this a regular un-edited PRESS sequence, or is it possible that you have an edited dataset (perhaps being incorrectly processed as un-edited)?

Otherwise, the quality seems decent, and this spectrum won’t pose a challenge to the fitting algorithm.

For fitting, you’re on the right track, but:

So this is the main problem. The basis set should be a complete set of the metabolites you expect to be present in the spectrum – something like this:

fsl_mrs_sim -m Ala,Asp,GPC,PCh,Cr,PCr,GABA,Glc,Gln,Glu,GSH,Ins,Lac,NAA,NAAG,PE,Tau -o basis_without_mm -e 30 your_sequence.json

(see here). It’ll take a couple of minutes to run through. Note, you probably won’t need to include H2O in this scenario.

FSL-MRS typically expects Cr, PCr to be available as a water scaling reference (for unedited spectra), unless it’s told otherwise – that’s why you’re getting the error message. Just adding those two metabolites without the others would get rid of the error message, but still give you a very poor fit and probably meaningless results. You should get a reasonable fit with the components listed above.

It’s also generally best to include macromolecule components in the basis set; you can add synthetic MM components with:

basis_tools add_set --add_MM basis_without_mm/ basis_with_default_mm/

You can visually inspect the basis set with basis_tools vis [path_to_basis]

In this scenario, you would probably want to put the macromolecules into separate metab_groups so their linewidth and shifts can be modelled independently, like this:

fsl_mrs --data [path to your metab.nii file]
--basis [path to basis_with_default_mm]
--metab_groups MM09 MM12 MM14 MM17 MM21
--output [destination for output]
--h2o [path to your wref.nii]
--report

Hope this helps!

2 Likes

Could this be an averaged MEGA-PRESS experiment (i.e., ON+OFF)?

@alex Thanks for postingt hat detailed guide.

@admin , that’s what I would guess.

@Arsenic What do you get if you run mrs_tools vis raw_data.nii.gz --display_dim DIM_DYN? Where the raw_data is the input data to fsl_mrs_preproc?

Hi Alex,

Thank you so much; your advice was very helpful. I ran the analysis with synthetic MM components, and it seems to have resolved the water error. However, now it appears that it doesn’t recognize my Cr basis set, even though it is included in the file.
QuantificationError: Metabolite reference [‘Cr’, ‘PCr’] has not been fit (conc=0). Please choose another or refine fit first.

Hi, yes it is
The sequence is MEGA-PRESS with water suppression. The data file structure includes 4 On sequences with 64 pulses each and 1 Off sequence. Currently, for my analysis, I am using only one On and one Off sequence because I’m uncertain whether I should average the raw data, the preprocessed sequences, or the final fitting outputs.

Hi,

I tried that before, but I’m not sure if the issue is because I’m working in VS Code (with !) instead of directly in the terminal. I get a Figure(1000x1000) that doesn’t display. I assumed it was due to the environment, but, as I mentioned in my other reply, I’m only using one On and one Off sequence for my input, even though I have 4 On sequences. I’m uncertain at which stage I should average them.

That would explain the low NAA.

But if that’s the case, I’m afraid my advice was not good – even though this basis set may fit the data, the estimates you get out will be difficult to interpret meaningfully: NAA, Cr and Glx will all have been affected by the editing, in a manner your basis set isn’t capturing. It’s also unlikely that the echo time you have specified (-e 30) is correct for this dataset; most likely 68 ms.

This sounds unusual. Is this a special use-case (eg, functional MRS)?

Processing (and simulating for) edited sequences natively with FSL-MRS tools is not something I have a lot of experience with; perhaps @wclarke has some more concrete suggestions, but if it’s an otherwise fairly standard sequence you could also consider converting an existing published basis set.

No, it’s supposed to be static MRS. I think the idea was to do it four times to increase the resolution. Here’s an example of the file data structure for the raw data::


Thank you! I’ll do some research and try to convert an existing published set. I actually already have a basis set for a STEAM sequence, but I’ll try to find one for MEGA-PRESS and adjust my echo time.
I hope this will help resolve the issue with my reference metabolite.

I have some code for generating a basis set for that sequence. I can make sure it’s up on our gitlab in the next couple of days.

Are you just trying to average all this data together before analysing it? If so, we can figure out a fairly simple pipeline by merging the spec2nii converted files, before running it all through fsl_mrs_preproc_edit. Let me know if you would like some help setting that up.

Hi,

Yes, that would be very helpful. I think I am not generating my basis set correctly, so when I try to fit it, it doesn’t recognize my reference properly.

I would also appreciate any advice on how to merge raw data before running the preprocessing steps.

Thank you, and sorry for the delayed response.