0001 function totalVolume = get_runs(plotOPTS,data,cellVolume,lengthThreshold,changeThreshold)
0002
0003
0004
0005
0006
0007
0008
0009
0010 totalVolume=0;
0011
0012
0013 timeIdx=1:length(data);
0014
0015 dataChange=diff(data);
0016
0017 negIdx=dataChange<0;
0018
0019
0020
0021 dn=diff(negIdx);
0022 dnIdxStart=timeIdx(dn>0)+1;
0023 dnIdxEnd=timeIdx(dn<0);
0024
0025
0026 if (numel(dnIdxStart)==1 || numel(dnIdxEnd)==1)
0027 if dnIdxStart==dnIdxEnd
0028
0029 longOnesIdx(:,1:2)=nan(1,2);
0030 return
0031 end
0032 end
0033
0034 if sum(dnIdxStart)==0 || sum(dnIdxEnd)==0
0035
0036 longOnesIdx(:,1:2)=nan(1,2);
0037 return
0038 end
0039
0040 if dnIdxEnd(1)<dnIdxStart(1)
0041
0042 dnIdxEnd=dnIdxEnd(2:end);
0043 dnIdxStart=dnIdxStart(1:end-1);
0044 end
0045
0046
0047
0048 if length(dnIdxEnd)>length(dnIdxStart)
0049 timeIndices=(dnIdxEnd(1:end-1)-dnIdxStart)>=lengthThreshold;
0050 elseif length(dnIdxEnd)<length(dnIdxStart)
0051 timeIndices=(dnIdxEnd-dnIdxStart(1:end-1))>=lengthThreshold;
0052 elseif length(dnIdxEnd)==length(dnIdxStart)
0053 if dnIdxStart(1)==1
0054 timeIndices=(dnIdxEnd(1:end-1)-dnIdxStart(2:end))>=lengthThreshold;
0055 elseif dnIdxEnd(1)==1
0056 timeIndices=(dnIdxEnd(2:end)-dnIdxStart(1:end-1))>=lengthThreshold;
0057 else
0058 timeIndices=(dnIdxEnd-dnIdxStart)>=lengthThreshold;
0059 end
0060 else
0061 return
0062 end
0063
0064 if sum(timeIndices~=0)
0065 longOnesIdx(:,1)=dnIdxStart(timeIndices);
0066 longOnesIdx(:,2)=dnIdxEnd(timeIndices);
0067 else
0068 return
0069 end
0070
0071 totalVolume=0;
0072 for jj=1:size(longOnesIdx,1)
0073
0074
0075
0076 changeMetric=max(data(longOnesIdx(jj,1):longOnesIdx(jj,2)));
0077 if changeMetric<changeThreshold
0078 totalVolume=totalVolume+sum(cellVolume(longOnesIdx(jj,1):longOnesIdx(jj,2)));
0079 end
0080 end
0081
0082 end
0083