Error READ DICOM - non-existent field

264 views
Skip to first unread message

Germain ARRIBARAT

unread,
Feb 2, 2016, 8:52:23 AM2/2/16
to medi-users

Dear Dr. Wang, and Dear QSM experts,  


My name is Germain Arribarat and I am a PhD student in University of Toulouse Neuro Institute, France. In my lab, we are currently working with QSM images. After reading your article "Quantitative Susceptibility Mapping (QSM): Decoding MRI Data for a Tissue Magnetic Biomarker", and also downloading the QSM toolbox, I tried to implement your program with my own DICOM (magnitude + phase = real + imaginary).


First, when I implements the guibeta03withStrip.m, I have a warning that appears, which provides:


Warning: Name is nonexistent or not a directory:..\fucntions\_spurs_gc.

>> In path at 110

   In addpath at 87

   In guibeta03withStrip at 28

In@(hObject,eventdata)guibeta03withStrip('DataLocationEditable_CreateFcn',hObject,eventdata,guidata(hObject))

   In graphics\private\hgloadStructDbl at 97

   In hgload at 69

   In openfig at 72

   In gui_mainfcn>local_openfig at 286

   In gui_mainfcn at 159

   In guibeta03withStrip at 43

   In run at 57

 

This error message appears five times in a row. That may be just a 'bug' GUI. However the GUI works properly afterwards.

 

Also, when I try to load my DICOM, (as explained in the README.m) an error message appears, which is:

 

??? Reference to non-existent field 'Private_0051_100f'.

 

Error in ==> Read_DICOM at 59

                   channelname{NumChannel} =info.Private_0051_100f;

 

Error in ==> guibeta03withStrip>Loadbutton_Callback at 163

[iField,voxel_size,matrix_size,CF,delta_TE,TE,B0_dir] = Read_DICOM(FilePath);

 

Error in ==> gui_mainfcn at 96

        feval(varargin{:});

 

Error in ==> guibeta03withStrip at 43

    gui_mainfcn(gui_State, varargin{:});

 

Error in ==> @(hObject,eventdata)guibeta03withStrip('Loadbutton_Callback',hObject,eventdata,guidata(hObject))

 

 

??? Error while evaluating uicontrol Callback

 

I do not know what the field 'Private_0051_100f' dicom. Looking in your code, I think I understand that this is the number of channel, but I'm not sure.

 

My question is this: How can I do to run the Toolbox? Is this missing field is related to the manufacturer? Maybe is a prob with my own files DICOM...

 

Finally, I wanted to congratulate you for your work, and the possibility of having access! The information on the site is very clear and precise. Thank you very much



------------------------------------

Arribarat Germain 

INSERM Neuro Institute - 1214

Alexey Dimov

unread,
Feb 2, 2016, 4:10:59 PM2/2/16
to medi-users
Hello Germain,

Thank you for the feedback!

As of the first problem, it was caused by a typo in 'guibeta03withStrip.m' file. Namely, line 28 should read addpath('../functions/','../functions/_LBV', '../functions/_spurs_gc');
You can correct the code by yourself or re-download the toolbox. Also make sure that you run guibeta03withStrip.m, and not just start guibeta03withStrip.fig

In case of the second problem, I can see that you try to load data from Siemens DICOMs. Is that correct?
I managed to load Siemens data acquired at our site without any error message. As a quick test, if you type dicominfo('name of any DICOM file from the folder you try to load') in Matlab, you should get a print out of all header fields; closer to the end of this list, do you see 'Private_...' entries? If yes, what are their names and values?
Finally, would it be possible for you to share this problem dataset with us so we can have a more detailed look at what's going on?

Regards,
-- 
Alexey V. Dimov
PhD Student
Department of Biomedical Engineering
Cornell University

Germain ARRIBARAT

unread,
Feb 3, 2016, 4:55:10 AM2/3/16
to medi-users

Hello !


Thank you very much for your quick response. For the first problem, your solution has functioned properly, there is no problem with the GUI now. Thank you very much for that specific answer !


For the second problem, I try to load data from Siemens DICOMs. 

I type dicominfo('name of any DICOM file from the folder you try to load'in Matlab, and i get a print out of all header fields. 

I find  'Private_...' entries, but which do not correspond to 'Private_0051_100f'… These are not the same head names.


I enclose a file that corresponds to the Matlab command: dicominfo ( 'name of  DICOM file').


Best regards,


------------------------------------

Arribarat Germain 

INSERM Neuro Institute - 1214


dicominfo(IMG-0001-00001.dcm).txt

Alexey Dimov

unread,
Feb 3, 2016, 2:50:01 PM2/3/16
to medi-users
Hello Germain,

I see the problem - somehow expected field with listed coil channels is not present in the headers. However, this should not be a problem since normally coil combination is done during reconstruction of DICOMs, thus effectively leaving with only one "channel" in final images. I prepared a test function that is supposed to bypass the problem you're having - please find it in attachment and put it under 'functions' directory. In order to use it you will also need to modify 'guibeta03withStrip.m' a bit - @ line 164 change "Read_DICOM" to "Read_DICOM_edt".

Please let me know how this solution works for you. If this resolves your issue, we'll include this modification in our toolbox.

Regards,
--
Alexey
Read_DICOM_edt.m

Germain ARRIBARAT

unread,
Feb 4, 2016, 4:30:32 AM2/4/16
to medi-users

Hello Alexey!


Thanks you very much for this quick answer! I have download your new file "Read_DICOM_edt.m", and follow your instruction. I have no more of error for the recovery of the "Private" data. Thank you again ! (--- Maybe we should also substitute Read DICOM.m by Read_DICOM_edt.m all over the program?)


However a new error appears, on retrieving the number of TE ("EchoNumber)". I try to understand why, but I can not find. The error is in line 74, in Read_DICOM_edt.m.


When I consult the DICOM fields, I find the number of echo = 0. And normally, the program do :


if TE(info.EchoNumber)==0

                    TE(info.EchoNumber)=info.EchoTime*1e-3;


The fields EchoNumber and Echotime appears in DICOM fields, but when Matlab attempted to access TE(0); he said the index must be a positive integer or logical.


I shall send you an attachment, the error report.


(I specify that this error occurs anyway, if we replace READ_DICOM.m by READ_DICOM_edt.m)


Best regards


------------------------

Arribarat Germain

Error_Echo time.txt
Reply all
Reply to author
Forward
0 new messages