https://github.com/epnev/ca_source_extraction
Tip revision: 49b7884e93348d50df7173e1619d7499468bb1f6 authored by epnev on 22 August 2019, 14:24:41 UTC
fix bug introduced with 9e524e29f17d35db3c79a87de32209c7dccda186
fix bug introduced with 9e524e29f17d35db3c79a87de32209c7dccda186
Tip revision: 49b7884
estimate_percentile_level.m
function [level,cdf_val] = estimate_percentile_level(data,window,shift)
% Estimates the level of percentile filtering to be used in DF/F extraction
% using a kernel density estimator.
if ~exist('window','var'); window = 4000; end
if ~exist('shift','var'); shift = 2000; end
data = data(:);
T = length(data);
start_point = 1:shift:T;
end_point = [window:shift:T,T];
min_ln = min(length(start_point),length(end_point));
start_point = start_point(1:min_ln);
end_point = end_point(1:min_ln);
ln_seg = end_point - start_point + 1;
if ln_seg(end) < 2*window/3
start_point(end) = [];
end_point(end-1) = [];
ln_seg = end_point - start_point + 1;
end
level = zeros(length(start_point),1);
cdf_val = zeros(length(start_point),1);
for i = 1:length(start_point)
[~,density,xmesh,cdf] = kde(data(start_point(i):end_point(i)));
[~,ind] = max(density);
level(i) = xmesh(ind);
cdf_val(i) = cdf(ind)*100;
end
% interp_points = start_point + round(ln_seg/2);
%
% if length(level) > 1
% baseline = interp1(interp_points,level,1:T,'spline');
% else
% baseline = level*ones(1,T);
% end