csvFiles = dir('*.csv'); for i=1:length(csvFiles) fileName = csvFiles(i).name; DateAndTime = fileName(8:16); csvFileName = dir(['*' DateAndTime '*.csv']); fileName = csvFileName.name; dlcData = importDLCfile(fileName); vidFileName = dir(['*' DateAndTime '*.avi']); FinchHead = dlcData(:,4:6); FinchBeak = dlcData(:,1:3); FinchTail = dlcData(:,7:9); FinchBack = dlcData(:,16:18); onsetFile = dir(['*' DateAndTime '*.mat']); load(onsetFile.name); onsetFrame(i) = DataMat(2,1); DataDLC(i).StartFrame = onsetFrame(i); DataDLC(i).fileName = fileName; DataDLC(i).vidFileName = vidFileName; clear Distances for n=1:length(FinchBeak) Skeleton = [FinchBeak(n,1:2); FinchHead(n,1:2); FinchBack(n,1:2); FinchTail(n,1:2)] ; Distances(n,:) = pdist(Skeleton,'euclidean'); end DataDLC(i).Skeleton = [FinchBeak(:,1:2) FinchHead(:,1:2) FinchBack(:,1:2) FinchTail(:,1:2)]; DataDLC(i).Distances = Distances; means = mean(Distances); stds = std(Distances); maxVal = means+1.96*stds; minVal = means-1.96*stds; clear p1 p2 CoM Ang GoodFrames Vel k = 1; for n = 1:length(Distances) Skeleton = [FinchBeak(n,1:2); FinchHead(n,1:2); FinchBack(n,1:2); FinchTail(n,1:2)] ; tmp = Distances(n,:); minCheck = tmp>minVal; maxCheck = tmp1 Vel(k) = pdist(CoM((k-1):k,:))/((GoodFrames(k)-GoodFrames(k-1))/30); end k = k+1; end end DataDLC(i).GoodFrames = GoodFrames; DataDLC(i).CoM = CoM; DataDLC(i).Ang = Ang; DataDLC(i).Vel = Vel; movie_obj = VideoReader(vidFileName.name); clear indH tmp tmp1 ind1 = GoodFrames; mean_movie = zeros(movie_obj.Height,movie_obj.Width); NumFrames = movie_obj.NumFrames; K = randperm(NumFrames); maxFrames = 200; for kk=1:maxFrames k = K(kk); frame = mean(squeeze(read(movie_obj, k)),3); mean_movie = mean_movie +frame/(maxFrames); end figure(i) imagesc(mean_movie); colormap gray p1 = FinchHead(:,1:2); p2 = FinchBeak(:,1:2); ind11 = ind1; ang = atan2((p2(ind1,2)-p1(ind1,2)),(p2(ind1,1)-p1(ind1,1))); screenEdges = ginput(2); angLeft = atan2(-(p1(ind11,2)-screenEdges(1,2)),-(p1(ind11,1)-screenEdges(1,1))); angRight = atan2(-(p1(ind11,2)-screenEdges(2,2)),-(p1(ind11,1)-screenEdges(2,1))); ang(ang<0) = ang(ang<0)+2*pi; angLeft(angLeft<0) = angLeft(angLeft<0)+2*pi; angRight(angRight<0) = angRight(angRight<0)+2*pi; DataDLC(i).screenEdges = screenEdges; title('set cage limits') limits = ginput(4); limDists = pdist(limits); DataDLC(i).maxDistance = max(limDists)*1.2; DataDLC(i).limits = limits; h = figure(i); imagesc(mean_movie); colormap gray hold on plot(p1(ind1,1), p1(ind1,2), '.b') plot(p2(ind1,1),p2(ind1,2), '.r') inds = ind1(find((angangRight))); if isempty(inds) inds = ind11(find((ang>angLeft & ang