raw data to dicom (reconstruction)

707 views
Skip to first unread message

Ana Maria Escorza

unread,
Jan 19, 2017, 6:43:13 AM1/19/17
to Gadgetron
Hello,

I am new on this and I would like to reconstruct my HARDI acquisition raw data to dicom?
What would I do? or are there tutorial to do something like this?

Thanks in advance

Ana.

Michael Hansen

unread,
Jan 19, 2017, 7:28:58 AM1/19/17
to Gadgetron
Your question is a bit unspecific. I am assuming you simply have some diffusion weighted data and you would like to reconstruct?

What type of acquisition? EPI?

What scanner are they from? You need to convert your data to ISMRMRD and then send it through one of the Gadgetron chains. There are some DICOM Gadgets that you can use to get DICOM images back. 

In any case, we need some more information in order to be able to help you. 

Ana Maria Escorza

unread,
Jan 19, 2017, 9:43:44 AM1/19/17
to Gadgetron

What type of acquisition? EPI?

When we acquire we use PE sequence and  EPI readout  (diffusion weighted imaging, DTI)

With:

b-value: 400 ( 30 directions)
b-value: 700 (30 directions)
b-value: 2800 (45 directions)

What scanner are they from? . 

the scanner is philips is  3 T, 32  channels head coils


Thank you very much for your quick response

Michael Hansen

unread,
Jan 19, 2017, 11:40:34 AM1/19/17
to Gadgetron
You need to convert your data to ISMRMRD:


And then I would start with something like:


Hope this helps,
Michael

Ana Maria Escorza

unread,
Jan 19, 2017, 12:00:18 PM1/19/17
to Gadgetron
I tried the first one (https://github.com/ismrmrd/philips_to_ismrmrd) but I obtain a error:

"Failed to convert SIN file to XML", my raw data extension are .data and .list, is that correct??

Thanks.

Michael Hansen

unread,
Jan 20, 2017, 12:41:48 AM1/20/17
to Gadgetron
I responded to the issue you posted on the converter. As I said there, you need the LAB/RAW/SIN files. 

Hope this helps,
Michael

Ana Maria Escorza

unread,
Feb 1, 2017, 7:15:39 AM2/1/17
to Gadgetron
Hello,

I have another question. I have now the .raw data so I use ismrmrdPhilips and then:


But I obtained an error: Segment violation

Maybe is because I am using SENSE and not GRAPPA in my acquisition, because my machine is philips?

Thanks.

Ana Maria Escorza

unread,
Feb 1, 2017, 7:37:45 AM2/1/17
to Gadgetron
The exact error is: connection reset by peer.

Michael Hansen

unread,
Feb 1, 2017, 8:36:16 AM2/1/17
to Gadgetron
It could really be any number of things. 

SENSE is not implemented in that reconstruction chain as the name would imply. But if I were you, I would start with a very simple example. Get some non-accelerated 2D data and get some images and then slowly work your way to the example you want to run. 

The Philips converter is more of an example skeleton that people can use as a starting point for their own data. It is highly unlikely to just work, you should expect to be doing some hacking to get it working. 

Ana Maria Escorza

unread,
Feb 1, 2017, 9:02:00 AM2/1/17
to Gadgetron
The ismrmrdPhilips works, but the Generic_Cartesian_Grappa_EPI.xml don't. 

I tried to use dicom.xml as configuration but I obtained:

failed to load dll. 

Ana Maria Escorza

unread,
Feb 1, 2017, 9:34:34 AM2/1/17
to Gadgetron
I saw in the google groups to put in the terminal before gadgetron:
-  export ACE_DEBUG=1

But I did not obtain more information

Michael Hansen

unread,
Feb 1, 2017, 10:47:32 AM2/1/17
to Gadgetron
Again, start with some simple 2D data, it should reconstruct with that GRAPPA chain (even it doesn't have parallel imaging). Not sure what you mean by "ismrmrdPhilips works". It sounds like it doesn't. Just because it runs does not mean that it produces a meaningful dataset. 

A simpler reconstruction to try is default.xml

To provide anymore help, you need to post:

1) An ISMRMRD dataset
2) The complete Gadgetron log
3) Output of the command gadgetron_info

Michael 

Ana Maria Escorza

unread,
Feb 1, 2017, 11:24:04 AM2/1/17
to Gadgetron
ok.

I start with the hello word example with the generate data:

ismrmrd_generate_cartesian_shepp_logan -r 10

But when I tried to run gadgetron:


gadgetron_ismrmrd_client -f testdata.h5 

I obtained the next error, like with my data.




2017-02-01 19:16:20 INFO [GadgetStreamController.cpp:47] Connection from 127.0.0.1:33030
2017-02-01 19:16:20 INFO [GadgetStreamController.cpp:217] Running configuration: /usr/local/bin/..//share/gadgetron/config/default.xml
2017-02-01 19:16:20 INFO [GadgetStreamController.cpp:257] Found 1 readers
2017-02-01 19:16:20 INFO [GadgetStreamController.cpp:258] Found 1 writers
2017-02-01 19:16:20 INFO [GadgetStreamController.cpp:259] Found 7 gadgets
2017-02-01 19:16:20 INFO [GadgetStreamController.cpp:275] --Found reader declaration
2017-02-01 19:16:20 INFO [GadgetStreamController.cpp:276] Reader dll: gadgetron_mricore
2017-02-01 19:16:20 INFO [GadgetStreamController.cpp:277] Reader class: GadgetIsmrmrdAcquisitionMessageReader
2017-02-01 19:16:20 INFO [GadgetStreamController.cpp:278] Reader slot: 1008
2017-02-01 19:16:20 ERROR [GadgetStreamInterface.h:74] Failed to load DLL, Possible reasons:
2017-02-01 19:16:20 ERROR [GadgetStreamInterface.h:75] * Name of DLL is wrong in XML file
2017-02-01 19:16:20 ERROR [GadgetStreamInterface.h:76] * Path of DLL is not in your DLL search path (LD_LIBRARY_PATH on Unix)
2017-02-01 19:16:20 ERROR [GadgetStreamInterface.h:77] * Path of other DLLs that this DLL depends on is not in the search path
2017-02-01 19:16:20 ERROR [GadgetStreamController.cpp:285] Failed to load GadgetMessageReader from DLL
2017-02-01 19:16:20 ERROR [GadgetStreamController.cpp:127] GadgetStream configuration failed
2017-02-01 19:16:20 DEBUG [GadgetStreamController.cpp:173] handle_close called
2017-02-01 19:16:20 INFO [GadgetStreamController.cpp:178] Shutting down stream and closing up shop...
2017-02-01 19:16:20 DEBUG [EndGadget.h:19] Close called in EndGadget with flags 1
2017-02-01 19:16:20 DEBUG [EndGadget.h:30] Calling close in base class with flags 1
2017-02-01 19:16:20 DEBUG [Gadget.h:174] Gadget (EndGadget) Close Called with flags = 1
2017-02-01 19:16:20 DEBUG [EndGadget.h:19] Close called in EndGadget with flags 0
2017-02-01 19:16:20 DEBUG [EndGadget.h:30] Calling close in base class with flags 0
2017-02-01 19:16:20 DEBUG [Gadget.h:174] Gadget (EndGadget) Close Called with flags = 0
2017-02-01 19:16:20 DEBUG [Gadget.h:184] Gadget (EndGadget) waiting for thread to finish
2017-02-01 19:16:20 DEBUG [Gadget.h:186] Gadget (EndGadget) thread finished
2017-02-01 19:16:20 DEBUG [Gadget.h:123] Shutting down Gadget (EndGadget)
2017-02-01 19:16:20 INFO [GadgetStreamController.cpp:204] Stream is closed


Thank you for your quick response
 

Michael Hansen

unread,
Feb 1, 2017, 12:44:04 PM2/1/17
to Gadgetron
Probably because you don't have your PATH and/or LD_LIBRARY_PATH variables set correct. It could also be because some parts of the gadgetron were not compiled due to missing dependencies. Can you set ACE_DEBUG=1 before you start the Gadgetron and see what error messages you get?

Also we will need more information about your platform (Linux/Mac/Windows), how you installed, etc. etc. in order to help you out. Also the output of gadgetron_info would be helpful. 

Ana Maria Escorza

unread,
Feb 2, 2017, 3:52:32 AM2/2/17
to Gadgetron

My platform is Linux , version 16.04.1 LTS.

The output of gadgetron_info is:

root@sleep2014-Precision-WorkStation-T7400:/home/sleep2014# gadgetron_info
Gadgetron Version Info
  -- Version            : 3.14.1
  -- Git SHA1           : 83f3a0752654771e2224e00eefc16fe9f96490ec
  -- System Memory size : 32172 MB
  -- Python Support     : YES
  -- Matlab Support     : NO
  -- CUDA Support       : YES (-gencode arch=compute_20,code=sm_20;-gencode arch=compute_30,code=sm_30;-gencode arch=compute_35,code=sm_35)
    * Number of CUDA capable devices: 1
      - Device 0: Quadro FX 4600
         + CUDA Driver Version / Runtime Version: 6.5/5.5
         + CUDA Capability Major/Minor version number: 1.0
         + Total amount of global GPU memory: 767.312 MB

I put in the terminal

expor ACE_DEBUG=1

before I started the Gadgetron but I did not see any more error than yesterday:


root@sleep2014-Precision-WorkStation-T7400:/home/sleep2014# export ACE_DEBUG=1
root@sleep2014-Precision-WorkStation-T7400:/home/sleep2014# gadgetron
2017-02-02 11:45:26 INFO [main.cpp:200] Starting ReST interface on port 9080
2017-02-02 11:45:26 INFO [main.cpp:212] Starting cloudBus: localhost:8002
2017-02-02 11:45:26 INFO [main.cpp:260] Configuring services, Running on port 9002
2017-02-02 11:45:56 INFO [GadgetStreamController.cpp:47] Connection from 127.0.0.1:45072
2017-02-02 11:45:56 INFO [GadgetStreamController.cpp:217] Running configuration: /usr/local/bin/..//share/gadgetron/config/default.xml
2017-02-02 11:45:56 INFO [GadgetStreamController.cpp:257] Found 1 readers
2017-02-02 11:45:56 INFO [GadgetStreamController.cpp:258] Found 1 writers
2017-02-02 11:45:56 INFO [GadgetStreamController.cpp:259] Found 7 gadgets
2017-02-02 11:45:56 INFO [GadgetStreamController.cpp:275] --Found reader declaration
2017-02-02 11:45:56 INFO [GadgetStreamController.cpp:276]   Reader dll: gadgetron_mricore
2017-02-02 11:45:56 INFO [GadgetStreamController.cpp:277]   Reader class: GadgetIsmrmrdAcquisitionMessageReader
2017-02-02 11:45:56 INFO [GadgetStreamController.cpp:278]   Reader slot: 1008
2017-02-02 11:45:56 ERROR [GadgetStreamInterface.h:74] Failed to load DLL, Possible reasons:
2017-02-02 11:45:56 ERROR [GadgetStreamInterface.h:75]    * Name of DLL is wrong in XML file
2017-02-02 11:45:56 ERROR [GadgetStreamInterface.h:76]    * Path of DLL is not in your DLL search path (LD_LIBRARY_PATH on Unix)
2017-02-02 11:45:56 ERROR [GadgetStreamInterface.h:77]    * Path of other DLLs that this DLL depends on is not in the search path
2017-02-02 11:45:56 ERROR [GadgetStreamController.cpp:285] Failed to load GadgetMessageReader from DLL
2017-02-02 11:45:56 ERROR [GadgetStreamController.cpp:127] GadgetStream configuration failed
2017-02-02 11:45:56 DEBUG [GadgetStreamController.cpp:173] handle_close called
2017-02-02 11:45:56 INFO [GadgetStreamController.cpp:178] Shutting down stream and closing up shop...
2017-02-02 11:45:56 DEBUG [EndGadget.h:19] Close called in EndGadget with flags 1
2017-02-02 11:45:56 DEBUG [EndGadget.h:30] Calling close in base class  with flags 1
2017-02-02 11:45:56 DEBUG [Gadget.h:174] Gadget (EndGadget) Close Called with flags = 1
2017-02-02 11:45:56 DEBUG [Gadget.h:184] Gadget (EndGadget) waiting for thread to finish
2017-02-02 11:45:56 DEBUG [EndGadget.h:19] Close called in EndGadget with flags 0
2017-02-02 11:45:56 DEBUG [EndGadget.h:30] Calling close in base class  with flags 0
2017-02-02 11:45:56 DEBUG [Gadget.h:174] Gadget (EndGadget) Close Called with flags = 0
2017-02-02 11:45:56 DEBUG [Gadget.h:186] Gadget (EndGadget) thread finished
2017-02-02 11:45:56 DEBUG [Gadget.h:123] Shutting down Gadget (EndGadget)
2017-02-02 11:45:56 INFO [GadgetStreamController.cpp:204] Stream is closed


I install the gadgetron following the instruction in the wiki:

https://github.com/gadgetron/gadgetron/wiki/Linux-Installation

Michael Hansen

unread,
Feb 2, 2017, 9:42:11 AM2/2/17
to Gadgetron
Looks like some dependency of libgadgetron_mricore cannot be found. 

Could you send the output of:

ldd /usr/local/lib/libgadgetron_mricore.so

If you installed somewhere else than /usr/local, please adjust path. 

Look through the list and see what dependency cannot be found. Then add that to your LD_LIBRARY_PATH

Michael

Ana Maria Escorza

unread,
Feb 2, 2017, 10:00:55 AM2/2/17
to Gadgetron
sleep2014@sleep2014-Precision-WorkStation-T7400:~$ ldd /usr/local/lib/libgadgetron_mricore.so
    linux-vdso.so.1 =>  (0x00007ffc87d43000)
    libgadgetron_gadgetbase.so.3.14 => /usr/local/lib/libgadgetron_gadgetbase.so.3.14 (0x00007f889e2e6000)
    libgadgetron_toolbox_cpuoperator.so.3.14 => /usr/local/lib/libgadgetron_toolbox_cpuoperator.so.3.14 (0x00007f889dff8000)
    libgadgetron_toolbox_image_analyze_io.so.3.14 => /usr/local/lib/libgadgetron_toolbox_image_analyze_io.so.3.14 (0x00007f889dde0000)
    libismrmrd.so.1.3 => /usr/local/lib/libismrmrd.so.1.3 (0x00007f889db5c000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f889d91b000)
    libACE-6.3.3.so => /usr/lib/libACE-6.3.3.so (0x00007f889d581000)
    libarmadillo.so.6 => /usr/lib/libarmadillo.so.6 (0x00007f889d379000)
    libboost_system.so.1.58.0 => /usr/lib/x86_64-linux-gnu/libboost_system.so.1.58.0 (0x00007f889d174000)
    libboost_filesystem.so.1.58.0 => /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.58.0 (0x00007f889cf5c000)
    libgadgetron_toolbox_mri_core.so.3.14 => /usr/local/lib/libgadgetron_toolbox_mri_core.so.3.14 (0x00007f889cc97000)
    libgadgetron_toolbox_cpufft.so.3.14 => /usr/local/lib/libgadgetron_toolbox_cpufft.so.3.14 (0x00007f889ca69000)
    libgadgetron_toolbox_cpuklt.so.3.14 => /usr/local/lib/libgadgetron_toolbox_cpuklt.so.3.14 (0x00007f889c80a000)
    libgadgetron_toolbox_cpucore_math.so.3.14 => /usr/local/lib/libgadgetron_toolbox_cpucore_math.so.3.14 (0x00007f889c510000)
    libgadgetron_toolbox_log.so.3.14 => /usr/local/lib/libgadgetron_toolbox_log.so.3.14 (0x00007f889c309000)
    libiomp5.so => /opt/intel/lib/intel64_lin/libiomp5.so (0x00007f889bf66000)
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f889bbe4000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f889b8da000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f889b6c4000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f889b2fb000)
    libgadgetron_toolbox_cloudbus.so.3.14 => /usr/local/lib/libgadgetron_toolbox_cloudbus.so.3.14 (0x00007f889b0da000)
    libgadgetron_toolbox_cpudwt.so.3.14 => /usr/local/lib/libgadgetron_toolbox_cpudwt.so.3.14 (0x00007f889ae65000)
    libhdf5_serial.so.10 => /usr/lib/x86_64-linux-gnu/libhdf5_serial.so.10 (0x00007f889a9c7000)
    /lib64/ld-linux-x86-64.so.2 (0x000055b5c1c93000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f889a7c3000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f889a5bb000)
    libblas.so.3 => /usr/lib/libblas.so.3 (0x00007f889a34b000)
    liblapack.so.3 => /usr/lib/liblapack.so.3 (0x00007f8899b53000)
    libarpack.so.2 => /usr/lib/libarpack.so.2 (0x00007f8899908000)
    libsuperlu.so.4 => /usr/lib/x86_64-linux-gnu/libsuperlu.so.4 (0x00007f889969b000)
    libfftw3f.so.3 => /usr/lib/x86_64-linux-gnu/libfftw3f.so.3 (0x00007f8899290000)
    libfftw3.so.3 => /usr/lib/x86_64-linux-gnu/libfftw3.so.3 (0x00007f8898e91000)
    libmkl_intel_lp64.so => /opt/intel/mkl/lib/intel64/libmkl_intel_lp64.so (0x00007f88984a4000)
    libmkl_intel_thread.so => /opt/intel/mkl/lib/intel64/libmkl_intel_thread.so (0x00007f8896a96000)
    libmkl_core.so => /opt/intel/mkl/lib/intel64/libmkl_core.so (0x00007f8894fee000)
    libsz.so.2 => /usr/lib/x86_64-linux-gnu/libsz.so.2 (0x00007f8894deb000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f8894bd1000)
    libgfortran.so.3 => /usr/lib/x86_64-linux-gnu/libgfortran.so.3 (0x00007f88948a5000)
    libaec.so.0 => /usr/lib/x86_64-linux-gnu/libaec.so.0 (0x00007f889469d000)
    libquadmath.so.0 => /usr/lib/x86_64-linux-gnu/libquadmath.so.0 (0x00007f889445d000)

Michael Hansen

unread,
Feb 2, 2017, 10:08:35 AM2/2/17
to Gadgetron
Hmmm....nothing stands out. I suspect you have an MKL problem. 

Could you send me your LD_LIBRARY_PATH and also try `ldd` on those MKL libraries in the list.

Michael

Ana Maria Escorza

unread,
Feb 2, 2017, 10:22:48 AM2/2/17
to Gadgetron
sleep2014@sleep2014-Precision-WorkStation-T7400:~/Escritorio$ echo $LD_LIBRARY_PATH
:/usr/local/cuda/lib64:/usr/local/cula/lib64:/opt/intel/mkl/lib/intel64:/opt/intel/lib/intel64_lin/:/usr/local/lib:/usr/local/lib

sleep2014@sleep2014-Precision-WorkStation-T7400:~/Escritorio$ ldd /opt/intel/mkl/lib/intel64/libmkl_core.so
    linux-vdso.so.1 =>  (0x00007ffed7391000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007ffaf06d4000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007ffaf04b6000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ffaf00ed000)
    /lib64/ld-linux-x86-64.so.2 (0x000055f5bf50d000)

Ana Maria Escorza

unread,
Feb 2, 2017, 10:23:44 AM2/2/17
to Gadgetron
I obtain now this error with the file dicom.xml as configuration file


2017-02-02 18:09:13 INFO [GadgetStreamController.cpp:47] Connection from 127.0.0.1:50538
2017-02-02 18:09:13 INFO [GadgetStreamController.cpp:217] Running configuration: /usr/local/bin/..//share/gadgetron/config/dicom.xml
2017-02-02 18:09:13 INFO [GadgetStreamController.cpp:257] Found 1 readers
2017-02-02 18:09:13 INFO [GadgetStreamController.cpp:258] Found 1 writers
2017-02-02 18:09:13 INFO [GadgetStreamController.cpp:259] Found 8 gadgets
2017-02-02 18:09:13 INFO [GadgetStreamController.cpp:275] --Found reader declaration
2017-02-02 18:09:13 INFO [GadgetStreamController.cpp:276]   Reader dll: gadgetron_mricore
2017-02-02 18:09:13 INFO [GadgetStreamController.cpp:277]   Reader class: GadgetIsmrmrdAcquisitionMessageReader
2017-02-02 18:09:13 INFO [GadgetStreamController.cpp:278]   Reader slot: 1008
2017-02-02 18:09:13 INFO [GadgetStreamController.cpp:308] --Found writer declaration
2017-02-02 18:09:13 INFO [GadgetStreamController.cpp:309]   Writer dll: gadgetron_dicom
2017-02-02 18:09:13 INFO [GadgetStreamController.cpp:310]   Writer class: DicomImageWriter
2017-02-02 18:09:13 INFO [GadgetStreamController.cpp:311]   Writer slot: 1018
2017-02-02 18:09:13 ERROR [GadgetStreamInterface.h:74] Failed to load DLL, Possible reasons:
2017-02-02 18:09:13 ERROR [GadgetStreamInterface.h:75]    * Name of DLL is wrong in XML file
2017-02-02 18:09:13 ERROR [GadgetStreamInterface.h:76]    * Path of DLL is not in your DLL search path (LD_LIBRARY_PATH on Unix)
2017-02-02 18:09:13 ERROR [GadgetStreamInterface.h:77]    * Path of other DLLs that this DLL depends on is not in the search path

Michael Hansen

unread,
Feb 2, 2017, 10:27:02 AM2/2/17
to Gadgetron
I think you need to lay off the DICOM stuff until you get default.xml working.

You have a dependency problem with the DICOM one too.

Are you still having problems with default.xml?

Ana Maria Escorza

unread,
Feb 2, 2017, 10:29:26 AM2/2/17
to Gadgetron
with the default.xml I finally solved

How I could see what dependency I need it?

Michael Hansen

unread,
Feb 2, 2017, 10:44:07 AM2/2/17
to Gadgetron
How did you solve it for default.xml?

Run "ldd" on that shared library it is trying to load. Either the shared library is missing (was not compiled) or a dependency can't be found. I suspect the former. Did you install dcmtk?

This email was written on a mobile device. Please excuse brevity and/or typos.

_____________________________
From: Ana MariaEscort 
Sent: Thursday, February 2, 2017 10:29
Subject: Re: raw data to dicom (reconstruction)
To: Gadgetron <gadg...@googlegroups.com>
--
You received this message because you are subscribed to the Google Groups "Gadgetron" group.
To unsubscribe from this group and stop receiving emails from it, send an email togadgetron+...@googlegroups.com.
To post to this group, send email to gadg...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/gadgetron/00492c79-f087-4b7c-abf0-0e13491dac2b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Ana Maria Escorza

unread,
Feb 2, 2017, 10:58:29 AM2/2/17
to Gadgetron
Yes, I did 

sudo apt-get install libdcmtk2-dev


and I solved. 

What library do you mean?


Thanks for everything

Ana Maria Escorza

unread,
Feb 2, 2017, 11:54:53 AM2/2/17
to Gadgetron
This is my data, the acquisition noddi and one b0. It is with a phantom

The link:




El jueves, 16:58:29 (UTC+1), Ana Maria Escorza escribió:

Michael Hansen

unread,
Feb 2, 2017, 1:23:39 PM2/2/17
to Gadgetron
Just quickly looked at the file. This data is lab/raw/sin format. You need to use the philips_to_ismrmrd converter to convert the data. It is unlikely to "just work". It is more of a skeleton/example application that you can modify to get your data converted.

It will likely take some work and depending on what parallel imaging algorithm etc. etc. you are using you may also need more data. It is not really something that I can help with from this stage. 

Again, as I suggested, start with a simple 2D acquisition, get it converted and reconstructed and then move to your more advanced examples. It is highly unlikely that what you are trying will just work out of the box. 

Ana Maria Escorza

unread,
Feb 3, 2017, 3:33:54 AM2/3/17
to Gadgetron
Hello,

I already converted the data with philips_to_ismrmrd. I have  a simple 2D acquisition too. But I don't know what I would need to change in philips_to_ismrmrd and what it depends on? or Have I to change other files? Could you explain a little more?

Sorry for the inconvenience and thank you.

Michael Hansen

unread,
Feb 4, 2017, 7:30:54 AM2/4/17
to Gadgetron
The philips_to_ismrmrd converter is just an example of how one can read Philips data and convert it to ISMRMRD. It has been tested for some limited cases (basically the datasets I had available when I made it). There are many additional sequence possibilities for acquiring datasets on the Philips scanner they have not been tested, so it is likely that some additional steps are needed to convert the data. I am not a daily Philips user and so it is on the Philips community to expand the converter to make it versatile and support as many use cases as possible. I am sorry but I don't have the bandwidth get into the specifics of your data. You are the one with the expert domain knowledge, so you are the one who is ideally placed to fix your use case. So not to put too fine of a point on it, you probably have to roll up your sleeves yourself and do some debugging. Again, start with a simple example and work your way up. It is hard when have a giant dataset and you just expect it to it reconstruct without any modifications. 

When I run your data through the Gadgetron, I get a lot of errors like these:

2017-02-04 07:28:36 WARNING [BucketToBufferGadget.cpp:775] incoming readout 6730 is inside the encoding limits, but outside the encoded matrix for kspace_encode_step_1 : 92 out of 59
2017-02-04 07:28:36 WARNING [BucketToBufferGadget.cpp:775] incoming readout 6731 is inside the encoding limits, but outside the encoded matrix for kspace_encode_step_1 : 93 out of 59
2017-02-04 07:28:36 WARNING [BucketToBufferGadget.cpp:775] incoming readout 6732 is inside the encoding limits, but outside the encoded matrix for kspace_encode_step_1 : 94 out of 59
2017-02-04 07:28:36 WARNING [BucketToBufferGadget.cpp:775] incoming readout 6733 is inside the encoding limits, but outside the encoded matrix for kspace_encode_step_1 : 95 out of 59

So, there seems to be some mismatch between encoding indices, matrix sizes, encoding limites, etc. 

So some work to do. Again, start simple and work your way up. 

Michael

Ana Maria Escorza

unread,
Feb 6, 2017, 9:34:39 AM2/6/17
to Gadgetron
ok, thanks for your time. I will start with more simple image but I have some question:

- What file do I have to change in philips_to_ismrmrd to get a the correct one conversion of my data? Only the parameter file IsmrmrdPhilips.xsl? or more?

What does it depend on: Matrix size, voxel size, use of parallelization techniques? What things should I change?

I'm honestly a little lost right now.

Greetings,

Ana.

Michael Hansen

unread,
Feb 6, 2017, 11:19:16 AM2/6/17
to Gadgetron
Sorry. I can't tell you exactly which file or line to fix to convert your data correctly. I would have to first figure out how your data was acquired, how to describe it correctly with ISMRMRD and then look at how the code was written. You need to do that. Learn how your data should be described in terms of matrix, encoding limits, etc. see what the code does and then change it.


This email was written on a mobile device. Please excuse brevity and/or typos.

_____________________________
From: Ana Maria Escorza 
Sent: Monday, February 6, 2017 07:34

Ana Maria Escorza

unread,
Feb 7, 2017, 3:47:38 AM2/7/17
to Gadgetron
Hello Michael,

Thank you  very much for your help. Could you tell me what sequences did you test it with the philips_ismrmrd converter?

Cheers,
Ana.

Michael Hansen

unread,
Feb 7, 2017, 8:20:11 AM2/7/17
to Gadgetron
Sorry, don't have those details. A couple of people sent me a few different datasets, but I did not acquire the data. Again, this converter was meant as a template for for to a) interact with Philips files and access basic parameters and b) write ISMRMRD files. It was not intended to be a comprehensive test of specific use cases. 


This email was written on a mobile device. Please excuse brevity and/or typos.

_____________________________
From: Ana Maria Escorza
Sent: Tuesday, February 7, 2017 01:47

Ana Maria Escorza

unread,
Feb 23, 2017, 6:30:13 AM2/23/17
to Gadgetron
Hello  Michael,

As I understand now  If I achieve to convert my data correctly to hdf5 format with the ISMRMRD (adjusting their code) then  the gadgetron will work correctly without change code. It that`s mean for you?

Cheers,

Ana.

Michael Hansen

unread,
Feb 23, 2017, 9:06:03 AM2/23/17
to Gadgetron
In principle yes. I cannot guarantee that all possible permutations of valid ISMRMRD data can be reconstructed with the Gadgetron, but many relevant cases can. 

From your earlier comments, I understand that you are using SENSE with pre-acquired coil sensitivity maps. The strategy employed on Philips scanners. That is not generically supported in the Gadgetron and modifications would be needed. They can probably be made with a bit of work, but it will not "just work"

Hope this helps,
Michael
Reply all
Reply to author
Forward
0 new messages