New Siemens Syngo System Problem

Hi all,

We use Prisma Fit 3T Siemens MR scanner for our research. The hospital upgraded their syngo MR system E11 to XA30, after this upgrade MRS data format changed and we could not use LCModel. There is no CSA header in the new IMA format, and almost all scan parameters became private and hard to find, so LCModel software could not collect the necessary information. We tried to transfer spectral data of the new format into the old format, but it did not work. Is there anyone else who faces this problem, or do you have any suggestions?

Best regards,
G. Hale

Hi @GHale,

Yes, the newer systems generate DICOM data with SOPClassUID of 1.2.840.10008.5.1.4.1.1.4.2 MR Spectroscopy Storage rather than the Siemens private 1.3.12.2.1107.5.9.1. This is probably a good change for the long term as it brings various vendors into line with each other. However it is a pain when you’ve been used to the CSA headers. I have to admit I haven’t quite figured out the new structure as sometimes sequences seem to store pertinent information in PerFrameFunctionalGroupsSequence and sometimes in SharedFunctionalGroupsSequence tags.

You can try spec2nii which should handle this new format and give you a NIfTI-MRS file. You can then write a small script to convert from the nifti format into the LCModel raw format (see here for NIfTI I/O examples). Someone was talking about making a LCModel wrapper which loads NIfTI-MRS but I can’t remember who.

Will

Osprey can read NIfTI-MRS and call LCModel internally. @Helge has also added support for XA30 in Osprey this week, although it should be said this is a work in progress as we’re figuring the new parameter storage system out, as Will says.

Can anyone advise how to process CSI data from Syngo XA30? It doesn’t seem spec2nii handles CSI dataset properly, and because data are coming from a clinical scanner to which I don’t have direct access to, I can’t even check whether XA30 allows exporting to .rda.

Hi Peter,

It what way does spec2nii not handle csi data properly? If you have the data in DICOM format then it should work. I’ve extensively tested CSI data from VB and VE line scanners through it. However there is less XA data around. Happy to work with you to get the data working with spec2nii.

If you have twix/.dat data then you need to reconstruct that data first, and spec2nii is not a reconstruction program. There is nowhere near enough data stored in raw formats to be able to reliable carry out arbitrary/generalised kt-space recon of MRSI data.

Hi William,
here’s the output I get trying to use spec2nii with CSI DICOM from XA30:

C:\Users\Peter>spec2nii dicom C:\Users\Peter\Desktop\Asg\study\MULTIVOXEL_SPECTRO_TE135_8\IM-0001-0001.dcm
C:\Users\Peter\Python\lib\site-packages\spec2nii\Siemens\dicomfunctions.py:10: UserWarning: The DICOM readers are highly experimental, unstable, and only work for Siemens time-series at the moment
Please use with caution.  We would be grateful for your help in improving them
  import nibabel.nicom.dicomwrappers
Single file conversion.
Traceback (most recent call last):
  File "C:\Users\Peter\Python\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "C:\Users\Peter\Python\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Users\Peter\Python\Scripts\spec2nii.exe\__main__.py", line 7, in <module>
  File "C:\Users\Peter\Python\lib\site-packages\spec2nii\spec2nii.py", line 666, in main
    spec2nii(*args)
  File "C:\Users\Peter\Python\lib\site-packages\spec2nii\spec2nii.py", line 283, in __init__
    args.func(args)
  File "C:\Users\Peter\Python\lib\site-packages\spec2nii\spec2nii.py", line 512, in dicom
    self.imageOut, self.fileoutNames = multi_file_dicom(files_in, args.fileout, args.tag, args.verbose)
  File "C:\Users\Peter\Python\lib\site-packages\spec2nii\Siemens\dicomfunctions.py", line 118, in multi_file_dicom
    specDataCmplx, orientation, dwelltime, meta_obj = process_siemens_csi(img, verbose=verbose)
  File "C:\Users\Peter\Python\lib\site-packages\spec2nii\Siemens\dicomfunctions.py", line 308, in process_siemens_csi
    return process_siemens_csi_xa(img, verbose)
  File "C:\Users\Peter\Python\lib\site-packages\spec2nii\Siemens\dicomfunctions.py", line 314, in process_siemens_csi_xa
    raise NotImplementedError('Method process_siemens_csi_xa not implemented, example data needed!')
NotImplementedError: Method process_siemens_csi_xa not implemented, example data needed!

I’m using Win10, Python3.7

To be honest - I’m not sure at this point how converting the data to nii would help, as ultimately we would like to analyze the data in LCModel, which, as far as I know, does not support nii. But I’m just looking at various options; I’m hoping that nii2raw conversion exists/is possible (for CSI data).

I can share the DICOM if it helps with development. The caveat is, I can’t share the “original” DICOM from XA30 as it came from clinical scanner and is not anonymized, but I have (hopefully uncorrupted) anonymized version, after loading on our research VE11C and re-exporting. Obviously VE11C wasn’t able to read the spectro data, but as far as I can tell, they are still maintained in the DICOM file.

I forgot that I had chosen to explicitly throw an error for it. Yes please to any data. Is there any chance the original site could scan a phantom (water/oil/anything) and contribute it?

Hi all,

We are about to upgrade our Siemens system to XA30 and are anticipating this problem with our RDA files and LCModel.

Has a consensus been reached as to how to best approach this issue?

Thanks!
Meg

Unless someone with Fortran skills patches up a new LCModel executable that supports reading in the slightly changed header field names in the XA30 RDAs, these are your best bets:

1 Like

Thank you for the response!!! If @stevehui could kindly share his code that would be incredible! If not, there are two options we might take: (1) use the dat/twix files in FID-A and export the lcm files from that or (2) export to lcm within Osprey.

Our scanner is being updated in mid-late January, so once I can actually test these methods out on the XA30 files, I’d be happy to follow up with step by step directions in this thread.

Just FYI, Osprey can call LCModel directly and then re-import the results for the subsequent quantification. You can even use a template control file.