yes, I can imagine that having to put together a MR reconstruction framework without having any experience with MRI must be very tough. I honestly don't envy you for this task.

The reference data can come from different source but the most straight forward case is, that it has been acquired as a separate scan, i.e. a different .h5 file.

You were right, the reconstruction pipeline is still working even without ExtractGadget(). The problem occurs when I try to access the reconstructed coil maps using coimaps.image_as_array(), because this creates a float and not complex float numpy array. Maybe there is a way of checking if the array is one or the other, or otherwise maybe we could add another method coilmaps.image_as_cplx_array? What would you suggest?


--
Dr. Christoph Kolbitsch
Medical Physics and Metrological Information Technologies
Physikalisch-Technische Bundesanstalt
Abbestr. 2-12
10587 Berlin, Germany
phone: +49 30 3481 7761



Von:        <[log in to unmask]>
An:        <[log in to unmask]>, <[log in to unmask]>
Datum:        18.03.2016 14:45
Betreff:        RE: coil maps




Christoph,
 
It is not you who is lost here. On the contrary, you have a clear picture of what is what, whereas I have to guess most of the time.
 
So let us see whether I have understood your latest explanations correctly. What I seem to have learnt is:
 
1.       In order to compute coil sensitivity maps you apply your 6-gadget chain to some reference data ref.h5 (I thought it was data for a known object, but David says it is not so).
 
2.       These maps and actual acquisition data in im.h5 are then used to reconstruct the object.
 
This have always been obvious to you but not to me, who wrongly thought that coil sensitivity maps, being a feature of the scanner (again, David has just explained to me that it is not so), come with the other acquisition data either explicitly (as in testdata.h5) or implicitly (as in opismrmrd.h5, in which case a special gadget is needed to extract them from the acquisition data).
 
What I still do not understand is where you get reference data from.
Now back to guessing.
 
By the look of it, CalculateCsmGadget computes coil sensitivity maps as complex images and sends these images down the remaining chain, i.e. to ExtractGadget, which takes complex images on input and returns real ones. Is this correct?
 
If it is, then I do not understand what goes wrong if you remove ExtractGadget. I would expect your coilmaps simply to be a set of complex images.
 
From: CCP-PETMR Developers list [mailto:[log in to unmask]] On Behalf Of Christoph Kolbitsch
Sent:
18 March 2016 11:30
To:
[log in to unmask]
Subject:
Re: coil maps

 
Sorry, I am a bit lost of what it is we are trying to achieve right now.

I thought the idea was that we have two files one with k-space data of a reference scan ref.h5 and one with the undersampled image data im.h5 and we want to


1) reconstruct the coil maps from ref.h5

2) read in and prepare the forward and backward acquisition model for the undersampled scan

3) provided the coil maps to the forward and backward model

4) carry out SENSE reconstruction


I only saved the coil maps in a file (together with the actual image data to be sure we are using the same data) because you asked me to send them to you. In a real world example we would not need to do any of that, but simply keep it in memory.


The pipeline I have right now is

   gadget1 = pGadgets.RemoveROOversamplingGadget()

   gadget2 = pGadgets.AcquisitionAccumulateTriggerGadget()

   gadget3 = pGadgets.BucketToBufferGadget()

   gadget4 = pGadgets.FFTGadget()

   gadget5 = pGadgets.CalculateCsmGadget()

   gadget6 = pGadgets.ExtractGadget()


Then I call
   recon.set_input(input_data)

   recon.process()

   
   # get reconstructed images

   coilmaps = recon.get_output()


If I leave ExtractGadget() out, then it does not work, i.e. CalculateCsmGadget cannot pass on the data.


In order to save the coil maps to send them to you I used coilmaps.write


--

Dr. Christoph Kolbitsch

Medical Physics and Metrological Information Technologies

Physikalisch-Technische Bundesanstalt

Abbestr. 2-12

10587 Berlin, Germany

phone: +49 30 3481 7761




Von:        
Evgueni Ovtchinnikov <[log in to unmask]>
An:        
[log in to unmask]
Datum:        
18.03.2016 11:59
Betreff:        
Re: coil maps
Gesendet von:        
CCP-PETMR Developers list <[log in to unmask]>





Sorry, I should have realized that you cannot get coil maps as complex NDArrays from a gadget because at present Gadgetron can only send images and acquisitions to the client.

 
I note though that ImageWriterGadget can write complex images to a file as well. Could you try to remove ExtractGadget from the chain and see if you can get one complex image file instead of two real? Just saves some extra work afterwards.

 
I am still a bit puzzled about coil_maps group in opismrmrd.h5. So far as I can see, ImageWriterGadget writes to a binary file named out_* with extension depending on data type, not to an ISMRMRD::Dataset file.

 
Also, I wonder if you compared your coil map for testdata.h5 with that in this file.

 
 
From:
Kolbitsch, Christoph [
mailto:[log in to unmask]]
Sent:
17 March 2016 18:46
To:
Ovtchinnikov, Evgueni (STFC,RAL,SC)
Subject:
Re: King's College London: File transfer service

 
I did not give them these names, this is what ExtractGadget() creates and what the ImageWriterGadget() puts to disk.
 
 
On 17 Mar 2016, at 16:47,
[log in to unmask] wrote:
 
Ok, I will combine them into one complex array in my code then.

Let them be in coil_maps - this way the code will know what to expect.

Any reason you named them image_1000 and image_2000? In the circumstances, real and imag would be more meaningful, would they not?

-----Original Message-----
From: Kolbitsch, Christoph [
mailto:[log in to unmask]]
Sent: 17 March 2016 15:38
To: Ovtchinnikov, Evgueni (STFC,RAL,SC)
Subject: Re: King's College London: File transfer service

no worries, but I don't think I can get the complex ISMRMRD::NDArray.

I can only get the coil maps from gadgetron via ExtractGadget and this only returns real valued data. Complex data is saved as different image series.

________________________________________
From:
[log in to unmask] <[log in to unmask]>
Sent: 17 March 2016 15:27
To: Kolbitsch, Christoph
Subject: RE: King's College London: File transfer service

Sorry for nagging, but can you append them as one complex ISMRMRD::NDArray instead?

Also, can you please name the folder 'csm' (as it is named in testdata.h5) rather than 'coil_maps'.

I have just pushed updates to iUtilities and xGadgetron that provide access to some acquisition header data. Please have a go with test_acg.py and let me know which other header data you need to access.

-----Original Message-----
From: Kolbitsch, Christoph [
mailto:[log in to unmask]]
Sent: 17 March 2016 15:07
To: Ovtchinnikov, Evgueni (STFC,RAL,SC)
Subject: Re: King's College London: File transfer service

one is the real part and the other the imaginary part of the data

________________________________________
From:
[log in to unmask] <[log in to unmask]>
Sent: 17 March 2016 14:55
To: Kolbitsch, Christoph
Subject: RE: King's College London: File transfer service

In coil_maps there are two subfolders: image_1000 and image_2000.

-----Original Message-----
From: Kolbitsch, Christoph [
mailto:[log in to unmask]]
Sent: 17 March 2016 14:54
To: Ovtchinnikov, Evgueni (STFC,RAL,SC)
Subject: Re: King's College London: File transfer service

What do you mean with two coil maps?

________________________________________
From:
[log in to unmask] <[log in to unmask]>
Sent: 17 March 2016 14:53
To: Kolbitsch, Christoph
Subject: RE: King's College London: File transfer service

Thanks for the file.

Why do you have two coil maps there?

-----Original Message-----
From:
[log in to unmask] [mailto:[log in to unmask]]
Sent: 17 March 2016 14:31
To: Ovtchinnikov, Evgueni (STFC,RAL,SC)
Subject: King's College London: File transfer service


[log in to unmask] has placed a file on the King's file transfer service for you.

The filename is 'opismrmrd.h5', size 913.2 MB.
Notes: attached as "coil_maps"

To retrieve it, use this link within 21 days:


https://transfer.kcl.ac.uk?route=fileDownload&key=xEbb57sSa89vn8zA

Enter your email address
[log in to unmask]

You have a maximum of three attempts to retrieve the file. If you have any difficulty retrieving, please contact the sender.

________________________________________________
File transfer service at King's College London
 

Christoph Kolbitsch (PhD)

Division of Imaging Sciences & Biomedical Engineering
King's College London
St Thomas' Hospital
Lambeth Wing (3rd floor)
SE1 7EH London

[log in to unmask]