Print

Print


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]