Changeset 77


Ignore:
Timestamp:
Feb 5, 2009, 10:16:41 AM (10 years ago)
Author:
tjniskan
Message:
  • Fixed a strange bug related to resizing Aedes window in Matlab

R2008a (and possibly R2008b and R2009a).

  • Fixed bugs of Voxel TimeSeries? and Overlay Control figure

handles not being properly destroyed on exit.

  • Changed default values for reading VNMR files (now Fast Read is on

by default, output precision is single and data is oriented using
PROCPAR.orient)

  • Fixed a bug in the calculate SNR -plugin
  • Made a temporary workaround for controlling the output in the "View

ROI statistics" -table. A proper GUI implementation will (hopefully) follow
shortly. The output can be controlled by using Aedes preferences. For
example setpref('Aedes','StatPrintDirs?','TXYZV') will print in the
output Total, X-dir, Y-dir, Z-dir and V-dir statistics.

M an2_revision.m
M an2_data_read.m
M an2_resviewer.m
M aedes.m
M an2_res2table.m
M plugins/calculate_snr.m
M an2_readfid.m
M an2_readfidprefs.m
M an2_roi_stats.m

Files:
9 edited

Legend:

Unmodified
Added
Removed
  • aedes.m

    r73 r77  
    27122712
    27132713  if nargin>2 && strcmpi(opt,'PreserveData')
    2714         PreserveData = true;
     2714    PreserveData = true;
    27152715  else
    2716         PreserveData = false;
    2717   end
    2718 
    2719 % Warn if ROIs are not saved
    2720 if ~isempty(h) && ishandle(h) && ~PreserveData
    2721   cancel=l_CheckRoiSaved;
    2722   if cancel
    2723     return
    2724   end
    2725 end
     2716    PreserveData = false;
     2717  end
     2718
     2719  % Warn if ROIs are not saved
     2720  if ~isempty(h) && ishandle(h) && ~PreserveData
     2721    cancel=l_CheckRoiSaved;
     2722    if cancel
     2723      return
     2724    end
     2725  end
    27262726
    27272727% Reset uicontrol focus
     
    27882788
    27892789% Delete overlay control window
    2790 if isfield(H,'OVERLAY_CONTROL_FIG') && ishandle(H.OVERLAY_CONTROL_FIG)
     2790if isfield(H,'OVERLAY_CONTROL_FIG') && ~isempty(H.OVERLAY_CONTROL_FIG) ...
     2791    && ishandle(H.OVERLAY_CONTROL_FIG)
    27912792  delete(H.OVERLAY_CONTROL_FIG)
     2793  H.OVERLAY_CONTROL_FIG = [];
    27922794end
    27932795
     
    42854287 
    42864288  %% If overlay control window is already opened...
    4287   if isfield(H,'OVERLAY_CONTROL_FIG') && ishandle(H.OVERLAY_CONTROL_FIG)
     4289  if isfield(H,'OVERLAY_CONTROL_FIG') && ~isempty(H.OVERLAY_CONTROL_FIG) ...
     4290      && ishandle(H.OVERLAY_CONTROL_FIG)
    42884291    figure(H.OVERLAY_CONTROL_FIG)
    42894292    return
     
    46264629    setpref('Aedes','OverlayControlPos',[tmp_pos(1) tmp_pos(2)]);
    46274630        delete(H.OVERLAY_CONTROL_FIG)
     4631  H.OVERLAY_CONTROL_FIG = [];
    46284632       
    46294633  elseif strcmpi(opt,'climmin_edit')
     
    59485952set(H.UIVIEW_TIMESERIES,'checked','off')
    59495953Dat.ShowTimeSeries = false;
     5954H.TSFIG = [];
    59505955
    59515956end % function l_SaveTSfigPostion(h, 
     
    59765981% Close GUI
    59775982delete(fh)
     5983
    59785984
    59795985catch
     
    61936199
    61946200% Set axis positions
    6195 if ~isempty(Dat)
     6201if ~isempty(Dat) && isfield(Dat,'AxView') && isfield(Dat,'ZoomLevel')
    61966202  l_AxesPositions([],[],Dat.AxView,Dat.ZoomLevel);
    61976203end
  • an2_data_read.m

    r75 r77  
    289289    end
    290290  catch
    291         DATA=[];
    292         error('An error occurred while reading procpar file!')
    293   end
     291    DATA=[];
     292    error('An error occurred while reading procpar file!')
     293  end
     294 
     295  %% Fallback defaults for reading VNMR files
     296  ReadfidReturn = 1;
     297  ReadfidDCcorrection = 'off';
     298  ReadfidZeropadding = 'auto';
     299  ReadfidSorting = 'on';
     300  ReadfidFastRead = 'on';
     301  ReadfidPrecision = 'single';
     302  OrientImages = 'on';
     303  RemoveEPIphaseIm = 'off';
    294304 
    295305  %% Get defaults for Return
    296306  if ispref('Aedes','ReadfidReturn')
    297         ReadfidReturn = getpref('Aedes','ReadfidReturn');
    298   else
    299         ReadfidReturn = 1;
     307    ReadfidReturn = getpref('Aedes','ReadfidReturn');
    300308  end
    301309
    302310  %% Get defaults for DC correction
    303311  if ispref('Aedes','ReadfidDCcorrection')
    304         if getpref('Aedes','ReadfidDCcorrection')
    305           ReadfidDCcorrection = 'on';
    306         else
    307           ReadfidDCcorrection = 'off';
    308         end
    309   else
    310         ReadfidDCcorrection = 'off';
     312    if getpref('Aedes','ReadfidDCcorrection')
     313      ReadfidDCcorrection = 'on';
     314    else
     315      ReadfidDCcorrection = 'off';
     316    end
    311317  end
    312318
    313319  %% Get defaults for Zeropadding
    314320  if ispref('Aedes','ReadfidZeropadding')
    315         if getpref('Aedes','ReadfidZeropadding')==0
    316           ReadfidZeropadding = 'off';
    317         elseif getpref('Aedes','ReadfidZeropadding')==1
    318           ReadfidZeropadding = 'on';
    319         elseif getpref('Aedes','ReadfidZeropadding')==2
    320           ReadfidZeropadding = 'auto';
    321         else
    322           ReadfidZeropadding = 'auto';
    323         end
    324   else
    325         ReadfidZeropadding = 'auto';
     321    if getpref('Aedes','ReadfidZeropadding')==0
     322      ReadfidZeropadding = 'off';
     323    elseif getpref('Aedes','ReadfidZeropadding')==1
     324      ReadfidZeropadding = 'on';
     325    elseif getpref('Aedes','ReadfidZeropadding')==2
     326      ReadfidZeropadding = 'auto';
     327    else
     328      ReadfidZeropadding = 'auto';
     329    end
    326330  end
    327331
    328332  %% Get defaults for Sorting
    329333  if ispref('Aedes','ReadfidSorting')
    330         if getpref('Aedes','ReadfidSorting')
    331           ReadfidSorting = 'on';
    332         else
    333           ReadfidSorting = 'off';
    334         end
    335   else
    336         ReadfidSorting = 'on';
    337   end
    338 
     334    if getpref('Aedes','ReadfidSorting')
     335      ReadfidSorting = 'on';
     336    else
     337      ReadfidSorting = 'off';
     338    end
     339  end
     340 
    339341  %% Get defaults for FastRead
    340342  if ispref('Aedes','ReadfidFastRead')
    341         if getpref('Aedes','ReadfidFastRead')
    342           ReadfidFastRead = 'on';
    343         else
    344           ReadfidFastRead = 'off';
    345         end
    346   else
    347         ReadfidFastRead = 'off';
     343    if getpref('Aedes','ReadfidFastRead')
     344      ReadfidFastRead = 'on';
     345    else
     346      ReadfidFastRead = 'off';
     347    end
    348348  end
    349349 
    350350  %% Get defaults for Precision
    351351  if ispref('Aedes','ReadfidPrecision')
    352         if strcmpi(getpref('Aedes','ReadfidPrecision'),'single')
    353           ReadfidPrecision = 'single';
    354         else
    355           ReadfidPrecision = 'double';
    356         end
    357   else
    358         ReadfidPrecision = 'double';
     352    if strcmpi(getpref('Aedes','ReadfidPrecision'),'single')
     353      ReadfidPrecision = 'single';
     354    else
     355      ReadfidPrecision = 'double';
     356    end
    359357  end
    360358 
  • an2_readfid.m

    r75 r77  
    191191Dat.Sorting = true;
    192192Dat.UsePhaseTable = true;
    193 Dat.FastDataRead = false;
    194 Dat.precision = 'double';
     193Dat.FastDataRead = true;
     194Dat.precision = 'single';
    195195
    196196
  • an2_readfidprefs.m

    r75 r77  
    6868else
    6969  Dat.DCcorrection  = false;
    70   setpref('Aedes','ReadfidDCcorrection',false)
     70  setpref('Aedes','ReadfidDCcorrection',Dat.DCcorrection)
    7171end
    7272
     
    8484else
    8585  Dat.ZeroPadding = 2;
    86   setpref('Aedes','ReadfidZeropadding',2)
     86  setpref('Aedes','ReadfidZeropadding',Dat.ZeroPadding)
    8787end
    8888
     
    9696else
    9797  Dat.Sorting = true;
    98   setpref('Aedes','ReadfidSorting',true)
     98  setpref('Aedes','ReadfidSorting',Dat.Sorting)
    9999end
    100100
     
    107107  end
    108108else
    109   Dat.FastDataRead = false;
    110   setpref('Aedes','ReadfidFastRead',false)
     109  Dat.FastDataRead = true;
     110  setpref('Aedes','ReadfidFastRead',Dat.FastDataRead)
    111111end
    112112
     
    119119  end
    120120else
    121   Dat.Precision = 'double';
    122   setpref('Aedes','ReadfidPrecision','double')
     121  Dat.Precision = 'single';
     122  setpref('Aedes','ReadfidPrecision',Dat.Precision)
    123123end
    124124
     
    135135  Dat.OrientImages = getpref('Aedes','ReadfidOrientImages');
    136136else
    137   Dat.OrientImages = 'off';
    138   setpref('Aedes','ReadfidOrientImages','off')
     137  Dat.OrientImages = 'on';
     138  setpref('Aedes','ReadfidOrientImages','on')
    139139end
    140140
  • an2_res2table.m

    r53 r77  
    3535ResTable = {};
    3636ResFileName = '';
    37 dirs = [1 2 3]; % By default show all directions
     37dirs = [0 1 2 3 4]; % By default show all directions (1,2,3,4) and total (0)
    3838
    3939% Check Res-structure
     
    5757   case {'directions','dirs'}
    5858    tmp = varargin{ii+1};
    59     dirs = find(ismember('XYZ',tmp));
     59    dirs = find(ismember('TXYZV',tmp))-1;
    6060   otherwise
    6161    error('Unknown parameter %s',varargin{ii})
     
    7676      Res.Stat(ii).YD.Sum = NaN(1,length(Res.Stat(ii).YD.Mean));
    7777      Res.Stat(ii).ZD.Sum = NaN(1,length(Res.Stat(ii).ZD.Mean));
     78      Res.Stat(ii).VD.Sum = NaN(1,length(Res.Stat(ii).VD.Mean));
    7879    end
    7980  end
     
    150151
    151152    % Construct totals
    152     ResTable{5,1} = 'TOTAL';
    153     ResTable(6:7,:) = {'ROI','Mean','STD','Sum','Min','Max','Pixel count';...
    154                        '------','------','------','------',...
    155                        '------','------','------'};
    156     RowInd = 8;
    157     for kk=1:nRois
    158       totals = [Res.Stat(kk).Mean,Res.Stat(kk).Std,Res.Stat(kk).Sum,Res.Stat(kk).Min,...
    159                Res.Stat(kk).Max];
    160       ResTable{RowInd,1} = Res.Stat(kk).Label;
    161       ResTable(RowInd,2:6) = strrep(an2_cellsprintf(['%.' num2str(NumDec) 'f'],...
    162                                                   totals),'.',DecSep);
    163       ResTable(RowInd,7) =  strrep(an2_cellsprintf('%.0f',Res.Stat(kk).PixelCount),'.',...
    164                                      DecSep);
    165       RowInd=RowInd+1;
     153    if any(dirs==0)
     154      ResTable{5,1} = 'TOTAL';
     155      ResTable(6:7,:) = {'ROI','Mean','STD','Sum','Min','Max','Pixel count';...
     156        '------','------','------','------',...
     157        '------','------','------'};
     158      RowInd = 8;
     159      for kk=1:nRois
     160        totals = [Res.Stat(kk).Mean,Res.Stat(kk).Std,Res.Stat(kk).Sum,Res.Stat(kk).Min,...
     161          Res.Stat(kk).Max];
     162        ResTable{RowInd,1} = Res.Stat(kk).Label;
     163        ResTable(RowInd,2:6) = strrep(an2_cellsprintf(['%.' num2str(NumDec) 'f'],...
     164          totals),'.',DecSep);
     165        ResTable(RowInd,7) =  strrep(an2_cellsprintf('%.0f',Res.Stat(kk).PixelCount),'.',...
     166          DecSep);
     167        RowInd=RowInd+1;
     168      end
     169    else
     170      RowInd = 3;
    166171    end
    167172   
    168173    dir_str = {'X-Direction','XD';...
    169174               'Y-Direction','YD';...
    170                'Z-Direction','ZD'};
     175               'Z-Direction','ZD';...
     176               'V-Direction','VD'};
    171177   
    172178   
    173179    for kk=dirs
     180      if kk==0
     181        continue
     182      end
     183     
    174184      % Construct X, Y, and Z directions
    175185      RowInd = RowInd+2;
  • an2_resviewer.m

    r56 r77  
    4747Dat.SingleFileMode = false;
    4848Dat.Res=[];
     49
     50% A workaround for getting stats in V-direction. There will be a GUI
     51% implementation for this in the future...
     52if ispref('Aedes','StatPrintDirs')
     53  Dat.dirs = getpref('Aedes','StatPrintDirs');
     54else
     55  Dat.dirs = 'TXYZ';
     56end
    4957
    5058% If Res-structure is given as an input argument, go to "single-file" mode
     
    151159                                                                 'backgroundcolor',GD.col.frame);
    152160  H.OUTPUTTYPE_XLS = uicontrol('parent',H.EXPORT_FILETYPES_GRP,...
    153                                'style','checkbox',...
    154                                'position',[10 30 150 15],...
    155                                'value',1,...
    156                                'string','Excel sheet (XLS)',...
    157                                                            'backgroundcolor',GD.col.frame);
     161    'style','checkbox',...
     162    'position',[10 30 150 15],...
     163    'value',1,...
     164    'string','Excel sheet (XLS)',...
     165    'backgroundcolor',GD.col.frame);
     166  if isunix
     167    % Excel export is only supported in Windows...
     168    set(H.OUTPUTTYPE_XLS,'value',0,'enable','off')
     169  end
    158170  tmp = get(H.OUTPUTTYPE_XLS,'position');
    159171  H.OUTPUTTYPE_TXT = uicontrol('parent',H.EXPORT_FILETYPES_GRP,...
     
    223235  tmp = get(H.NUMDEC_TX,'position');
    224236  H.NUMDEC = uicontrol('parent',H.EXPORT_OPTIONS_GRP,...
    225                        'units','pixel',...
    226                        'position',[250-tmp(1)-10-100 tmp(2)-1 100 19],...
    227                        'style','edit',...
    228                        'string','3',...
    229                        'backgroundcolor','w',...
    230                        'callback',@l_PreviewFile);
    231  
    232  
     237    'units','pixel',...
     238    'position',[250-tmp(1)-10-100 tmp(2)-1 100 19],...
     239    'style','edit',...
     240    'string','3',...
     241    'backgroundcolor','w',...
     242    'callback',@l_PreviewFile);
     243 
     244 
     245 
     246                     
    233247  %% Selected files -listbox ------------------------------------
    234248 
     
    315329  tmp=get(H.RESTABLE,'position');
    316330  H.RESTABLE_TX = uicontrol('Parent',H.MAINFIG,...
    317                             'Units','pixel',...
    318                             'style','text',...
    319                             'position',[tmp(1) tmp(2)+tmp(4) tmp(3) 15],...
    320                             'string','Output preview ("N/A")',...
    321                             'horizontalalign','left',...
    322                             'fontweig','bold',...
    323                             'backgroundcolor',GD.col.mainfig);
     331    'Units','pixel',...
     332    'style','text',...
     333    'position',[tmp(1) tmp(2)+tmp(4) tmp(3) 15],...
     334    'string','Output preview ("N/A")',...
     335    'horizontalalign','left',...
     336    'fontweig','bold',...
     337    'backgroundcolor',GD.col.mainfig);
    324338 
    325339  % Display "Current results" text in single file mode
     
    611625  ResTable = an2_res2table(Dat.Res,'sortbyroi',sortbyroi,...
    612626                       'decsep',decsep,'numdec',numdec,...
    613                        'resfilename',Dat.ResFileName);
     627                       'resfilename',Dat.ResFileName,...
     628                       'dirs',Dat.dirs);
    614629 
    615630  set(H.RESFRAME,'visible','off')
     
    758773      ResTable = an2_res2table(tmp.Res,'sortbyroi',sortbyroi,...
    759774                           'decsep',decsep,'numdec',numdec,...
    760                            'resfilename',resfilename);
     775                           'resfilename',resfilename,...
     776                           'dirs',Dat.dirs);
    761777     
    762778      % Write XLS
     
    843859    ResTable = an2_res2table(Dat.Res,'sortbyroi',sortbyroi,...
    844860                         'decsep',decsep,'numdec',numdec,...
    845                          'resfilename','');
     861                         'resfilename','',...
     862                         'dirs',Dat.dirs);
    846863   
    847864    % Show an2_calc_wait
  • an2_revision.m

    r76 r77  
    9898% bash-script every time it is called so that this file "an2_revision.m" is
    9999% always in the list of committed files. DO NOT EDIT THE NEXT LINE!!!
    100 % - Svn Hook -
     100% - SVN Hook -
  • an2_roi_stats.m

    r74 r77  
    115115      Res.Stat(ii).Max = max(data);
    116116      Res.Stat(ii).Min = min(data);
    117       Res.Stat(ii).PixelCount = length(data);     
    118 if isempty(data)
    119 Res.Stat(ii).Mean = NaN;
    120 Res.Stat(ii).Std = NaN;
    121 Res.Stat(ii).Sum = NaN;
    122 Res.Stat(ii).Max = NaN;
    123 Res.Stat(ii).Min = NaN;
    124 Res.Stat(ii).PixelCount = 0;
    125 end
    126 
     117      Res.Stat(ii).PixelCount = length(data);
     118      if isempty(data)
     119        Res.Stat(ii).Mean = NaN;
     120        Res.Stat(ii).Std = NaN;
     121        Res.Stat(ii).Sum = NaN;
     122        Res.Stat(ii).Max = NaN;
     123        Res.Stat(ii).Min = NaN;
     124        Res.Stat(ii).PixelCount = 0;
     125      end
     126     
    127127      %% Calculate results in X direction
    128128      Res.Stat(ii).XD.Mean = [];
     
    214214        end
    215215      end
     216     
     217      %% Calculate results in V direction
     218      Res.Stat(ii).VD.Mean = [];
     219      Res.Stat(ii).VD.Std = [];
     220      Res.Stat(ii).VD.Sum = [];
     221      Res.Stat(ii).VD.Max = [];
     222      Res.Stat(ii).VD.Min = [];
     223      Res.Stat(ii).VD.PixelCount = [];
     224     
     225      for jj=1:size(ROI(ii).voxels{kk},4)
     226        roiv=ROI(ii).voxels{kk}(:,:,:,jj);
     227        datav = DATA{kk}.FTDATA(:,:,:,jj);
     228        tmpv=datav(roiv);
     229        tmpv=double(tmpv);
     230        if isempty(tmpv)
     231          Res.Stat(ii).VD.Mean(end+1) = NaN;
     232          Res.Stat(ii).VD.Std(end+1) = NaN;
     233          Res.Stat(ii).VD.Sum(end+1) = NaN;
     234          Res.Stat(ii).VD.Max(end+1) = NaN;
     235          Res.Stat(ii).VD.Min(end+1) = NaN;
     236          Res.Stat(ii).VD.PixelCount(end+1) = 0;
     237        else
     238          Res.Stat(ii).VD.Mean(end+1) = mean(tmpv);
     239          Res.Stat(ii).VD.Std(end+1) = std(tmpv);
     240          Res.Stat(ii).VD.Sum(end+1) = sum(tmpv);
     241          Res.Stat(ii).VD.Max(end+1) = max(tmpv);
     242          Res.Stat(ii).VD.Min(end+1) = min(tmpv);
     243          Res.Stat(ii).VD.PixelCount(end+1) = length(tmpv);
     244        end
     245      end
    216246    end
    217247  end
  • plugins/calculate_snr.m

    r76 r77  
    9797  for ii=1:size(DATA{1}.FTDATA,3)
    9898    vol=AddInfo.CurrentVol;
    99     signal=DATA{1}.FTDATA(ROI(SignalRoiInd).voxels{1}(:,:,ii,vol));
    100     noise=DATA{1}.FTDATA(ROI(NoiseRoiInd).voxels{1}(:,:,ii,vol));
     99    data = DATA{1}.FTDATA(:,:,ii,vol);
     100    signal=data(ROI(SignalRoiInd).voxels{1}(:,:,ii,vol));
     101    noise=data(ROI(NoiseRoiInd).voxels{1}(:,:,ii,vol));
    101102    if isempty(signal) || isempty(noise)
    102103      snr(ii) = NaN;
Note: See TracChangeset for help on using the changeset viewer.

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