0001 function [X,Y] = getInfoScores (dirname, xChoice, recalcInfo, CONST)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032 dirname = fixDir(dirname);
0033 if ~strcmp (xChoice,'segs') && ~strcmp (xChoice,'regs')
0034 disp('no x chosen, optimizing segments');
0035 xChoice = 'segs';
0036 end
0037 if strcmp (xChoice,'segs')
0038 contents = dir([dirname,'*_seg.mat']);
0039 else
0040 contents = dir([dirname,'*_seg*.mat']);
0041 end
0042
0043
0044 Y = [];
0045 X = [];
0046
0047 for i = 1 : numel(contents)
0048 data = load([dirname,contents(i).name]);
0049 disp(contents(i).name);
0050 if recalcInfo && exist('CONST','var') && ~isempty(CONST)
0051 disp ('recalculating');
0052 data = calculateInfo (data,CONST,xChoice);
0053 save ([dirname,contents(i).name],'-struct','data');
0054 end
0055
0056 if strcmp (xChoice,'segs')
0057 X = [X;data.segs.info];
0058 Y = [Y;data.segs.score];
0059
0060 else
0061 X = [X;data.regs.info];
0062 Y = [Y;data.regs.score];
0063 end
0064
0065
0066
0067 end
0068
0069 [indices] = find(~isnan(Y));
0070 X = X(indices,:);
0071 Y = Y(indices);
0072
0073 [indices] = find(isfinite(sum(X,2)));
0074 X = X(indices,:);
0075 Y = Y(indices);
0076
0077
0078 function [data] = calculateInfo (data,CONST,xChoice)
0079 if strcmp (xChoice,'regs')
0080 oldInfo = data.regs.info;
0081 ss = size(data.mask_cell);
0082 data.regs.regs_label = bwlabel(data.mask_cell);
0083 data.regs.props = regionprops( data.regs.regs_label,'BoundingBox','Orientation','Centroid','Area');
0084 data.regs.num_regs = max(data.regs.regs_label(:));
0085 data.regs.info = [];
0086
0087 for ii = 1:data.regs.num_regs
0088 [xx,yy] = getBBpad( data.regs.props(ii).BoundingBox, ss, 1);
0089 mask = data.regs.regs_label(yy,xx)==ii;
0090 data.regs.info(ii,:) = CONST.regionScoreFun.props( mask, data.regs.props(ii) );
0091 end
0092
0093
0094
0095 newInfo = data.regs.info;
0096 if isempty(newInfo) || all(size (oldInfo)~=size(newInfo))
0097 error('size')
0098 elseif all (oldInfo~=newInfo)
0099 error('hi')
0100 end
0101
0102 elseif strcmp (xChoice,'segs')
0103
0104 data = superSeggerOpti( data, [], 0, CONST );
0105
0106
0107
0108
0109
0110
0111 end
0112 end
0113
0114 end
0115
0116