Changeset 127


Ignore:
Timestamp:
May 12, 2010, 11:31:40 AM (9 years ago)
Author:
tjniskan
Message:
  • Added some sorting options to dcm_info.m

M misclib/dcm_info.m

File:
1 edited

Legend:

Unmodified
Added
Removed
  • misclib/dcm_info.m

    r45 r127  
    11function dcm_info(pathname,add_params)
    2 % Print some information from DICOM files...
     2% Print some information from DICOM files exported from PACS
    33
    44% Copyright (C) 2006 Juha-Pekka Niskanen <Juha-Pekka.Niskanen@uku.fi>
    5 % 
     5%
    66% Department of Physics, Department of Neurobiology
    77% University of Kuopio, FINLAND
     
    1919  'AcqTime'};
    2020Param_length = [25 8];
     21SortByAcqTime = true;
    2122
    2223if nargin==0 || isempty(pathname)
    2324  try
    24         tmp_dir=getpref('Analyze2','GetDcmDir');
     25    tmp_dir=getpref('Aedes','GetDcmDir');
    2526  catch
    26         tmp_dir = '';
     27    tmp_dir = '';
    2728  end
    2829  pathname=uigetdir(tmp_dir);
    2930  if isequal(pathname,0)
    30         % Canceled
    31         return
     31    % Canceled
     32    return
    3233  end
    33   setpref('Analyze2','GetDcmDir',pathname)
     34  setpref('Aedes','GetDcmDir',pathname)
    3435elseif nargin>2
    3536  error('Too many input argumetns')
     
    5152
    5253for ii=1:length(pathname)
    53   % Get the im_(number) folders 
     54  % Get the im_(number) folders
    5455  s=dir(pathname{ii});
    5556  fpath = {s([s(:).isdir]).name};
    56  
     57
    5758  % Find the im_(number folders)
    5859  tmp=regexp(fpath,'^im_\d{1,2}$');
    5960  ind=~cellfun(@isempty,tmp);
    6061  if any(ind)
    61         fp={fpath{find(ind)}};
    62        
    63         %fprintf(1,'***************************************************\n')
    64         fprintf(1,'%s\n',repmat('*',1,total_width))
    65         fprintf(1,'%s\n\n',pathname{ii})
    66         fprintf(1,'%7s',' ')
    67         fprintf(1,'%s  ',l_trunkStr(Param{1},Param_length(1)))
    68         fprintf(1,'%s  ',l_trunkStr(Param{2},Param_length(2)))
    69        
    70        
    71         for tt=3:length(Param)
    72           fprintf(1,'%s  ',l_trunkStr(Param{tt},Param_length(tt)));
    73         end
    74         fprintf(1,'%s\n',l_trunkStr('nFiles',6))
    75         fprintf(1,'%s\n',repmat('-',1,total_width))
    76        
    77         for kk=1:length(fp)
    78           % Get the number of files in the current folder
    79           s=dir(fullfile(pathname{ii},fp{kk}));
    80           fn={s(~[s(:).isdir]).name};
    81           nFiles = length(find(~cellfun(@isempty,regexp(fn,'^i\d{4}_\d{4}b.dcm$'))));
    82          
    83           % Read the dicom headers
    84           try
    85                 hdr=dicominfo(fullfile(pathname{ii},fp{kk},fname));
    86           catch
    87                 fprintf(1,'Could not read: %s\n',fullfile(pathname{ii},fp{kk},fname))
    88                 continue
    89           end
    90           fprintf(1,'%5s: ',fp{kk});
    91           fprintf(1,'%s  ',l_trunkStr(hdr.SeriesDescription,25));
    92           fprintf(1,'%s:%s:%s  ',hdr.AcquisitionTime(1:2),...
    93                 hdr.AcquisitionTime(3:4),...
    94                 hdr.AcquisitionTime(5:6));
    95          
    96           for tt=3:length(Param)
    97                 if not(isfield(hdr,Param{tt}))
    98                   str = 'N/A';
    99                 else
    100                   if isnumeric(hdr.(Param{tt}))
    101                         str = num2str(hdr.(Param{tt})(:).');
    102                   else
    103                         str = num2str(hdr.(Param{tt}));
    104                   end
    105                 end
    106                 fprintf('%s  ',l_trunkStr(str,Param_length(tt)))
    107           end
    108           fprintf('(%d)\n',nFiles)
    109         end
    110         fprintf(1,'%s\n\n\n',repmat('*',1,total_width))
     62    fp={fpath{find(ind)}};
     63   
     64    % Sort fp
     65    [tmp_fp,ind2]=sort(regexprep(fp,'(^.*_)(\d{1})$','$10$2'));
     66    fp=fp(ind2);
     67   
     68    %fprintf(1,'***************************************************\n')
     69    fprintf(1,'%s\n',repmat('*',1,total_width))
     70    fprintf(1,'%s\n\n',pathname{ii})
     71    fprintf(1,'%7s',' ')
     72    fprintf(1,'%s  ',l_trunkStr(Param{1},Param_length(1)))
     73    fprintf(1,'%s  ',l_trunkStr(Param{2},Param_length(2)))
     74
     75   
     76    for tt=3:length(Param)
     77      fprintf(1,'%s  ',l_trunkStr(Param{tt},Param_length(tt)));
     78    end
     79    fprintf(1,'%s\n',l_trunkStr('nFiles',6))
     80    fprintf(1,'%s\n',repmat('-',1,total_width))
     81
     82    dir_info={};
     83    AcqTime=[];
     84    for kk=1:length(fp)
     85      % Get the number of files in the current folder
     86      s=dir(fullfile(pathname{ii},fp{kk}));
     87      fn={s(~[s(:).isdir]).name};
     88      nFiles = length(find(~cellfun(@isempty,regexp(fn,'^i\d{4}_\d{4}b.dcm$'))));
     89
     90      % Read the dicom headers
     91      try
     92        hdr=dicominfo(fullfile(pathname{ii},fp{kk},fname));
     93      catch
     94        dir_info{kk}=sprintf('Could not read: %s\n',fullfile(pathname{ii},fp{kk},fname));
     95        continue
     96      end
     97      dir_info{kk}='';
     98      dir_info{kk} = [dir_info{kk} sprintf('%5s: ',fp{kk})];
     99      dir_info{kk} = [dir_info{kk} sprintf('%s  ',l_trunkStr(hdr.SeriesDescription,25))];
     100      dir_info{kk} = [dir_info{kk} sprintf('%s:%s:%s  ',...
     101        hdr.AcquisitionTime(1:2),...
     102        hdr.AcquisitionTime(3:4),...
     103        hdr.AcquisitionTime(5:6))];
     104      AcqTime(kk)=str2num([hdr.AcquisitionTime(1:2),...
     105        hdr.AcquisitionTime(3:4),...
     106        hdr.AcquisitionTime(5:6)]);
     107      %fprintf(1,'%5s: ',fp{kk});
     108      %fprintf(1,'%s  ',l_trunkStr(hdr.SeriesDescription,25));
     109      %fprintf(1,'%s:%s:%s  ',hdr.AcquisitionTime(1:2),...
     110      %  hdr.AcquisitionTime(3:4),...
     111      %  hdr.AcquisitionTime(5:6));
     112
     113      for tt=3:length(Param)
     114        if not(isfield(hdr,Param{tt}))
     115          str = 'N/A';
     116        else
     117          if isnumeric(hdr.(Param{tt}))
     118            str = num2str(hdr.(Param{tt})(:).');
     119          else
     120            str = num2str(hdr.(Param{tt}));
     121          end
     122        end
     123        dir_info{kk} = [dir_info{kk} ...
     124          sprintf('%s  ',l_trunkStr(str,Param_length(tt)))];
     125      end
     126       dir_info{kk} = [dir_info{kk} ...
     127         sprintf('(%d)\n',nFiles)];
     128    end
     129    if SortByAcqTime
     130      [tmp,sort_ind]=sort(AcqTime);
     131      dir_info=dir_info(sort_ind);
     132    end
     133    for jj=1:length(dir_info)
     134      fprintf(dir_info{jj});
     135    end
     136    fprintf('%s\n\n\n',repmat('*',1,total_width));
    111137  else
    112         % Print warning and continue to next iteration
    113         fprintf(1,'\nWarning: Cannot find im_# folders from\n');
    114         fprintf(1,'%s\n',pathname{ii});
    115         fprintf(1,'Skipping folder...\n\n\n')
    116         continue
     138    % Print warning and continue to next iteration
     139    fprintf(1,'\nWarning: Cannot find im_# folders from\n');
     140    fprintf(1,'%s\n',pathname{ii});
     141    fprintf(1,'Skipping folder...\n\n\n')
     142    continue
    117143  end
    118  
     144
    119145end
    120146
Note: See TracChangeset for help on using the changeset viewer.

Powered by Trac 1.0.9.Copyright © Juha-Pekka Niskanen 2008