123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- %plot CSD profiles of DS
- %show histogram of sinks
- %allows selection of sinks using mouse
- %2021 Dino Dvorak, New York University, neuraldino@gmail.com
- %Dentate spikes and external control of hippocampal function,
- %Cell Reports, Volume 36, Issue 5, 2021,109497,ISSN 2211-1247,
- %https://doi.org/10.1016/j.celrep.2021.109497
- clear; close all; clc;
- drCSD = 'DS_CSD/';
- %input LFP file (channels x samples)
- fnEEG = '2016_09_30_PP12_334_PRETRAIN_BASE_eeg.mat';
- load([drCSD fnEEG])
- figure('Position',[10 100 1000 800])
- plotAboveBelow = 1; %1=above,-1=below
- minmax = [-1e4 2e4]; %for CSD plot
- %minmax = [-3e4 4e4];
- %set sinks to nan for first run
- %sinks = nan(1,4);
- %edit sinks when you localize sink bands
- sinks = [104,118,177,190];
-
- subplot(1,6,1:3);
- imagesc(resultsCSD,minmax)
- colormap(jet);
- h = title(fnEEG);
- set(h,'Interpreter','none');
- maxes = [];
- mins = [];
-
- for i = 1:size(resultsCSD,2)
- x = resultsCSD(:,i)';
- %sources
- kMax = find((x > [x(1) x(1:(end-1))]) & (x >= [x(2:end) x(end)]));
- kMax = kMax(kMax > 1 & kMax < 200);
- xMax = x(kMax);
- %sinks
- kMin = find((x < [x(1) x(1:(end-1))]) & (x <= [x(2:end) x(end)]));
- kMin = kMin(kMin > 1 & kMin < 200);
- xMin = x(kMin);
- ma = cat(1,kMax,xMax); %concatenate
- mi = cat(1,kMin,xMin); %concatenate
- maxes = cat(2, maxes, ma);
- mins = cat(2, mins, mi);
- end
- edges = 0.5:1:200.5;
- hma = histc(maxes(1,:),edges); %hist of locations
- hmi = histc(mins(1,:),edges); %hist of locations
- subplot(1,6,4);
- hold on;
- %plot(hma,edges+0.5,'r');
- plot(hmi,edges+0.5,'b');
- for i = 1:length(sinks)
- x = sinks(i);
- if isnan(x); continue; end;
- plot(hmi(x),x,'r.','MarkerSize',20);
- end
- axis ij tight
- %CSD average based on top 2 sinks
- if ~isnan(sinks(1)) && ~isnan(sinks(2))
- kKeep = false(2,size(resultsCSD,2));
- for i = 1:size(resultsCSD,2)
- x = resultsCSD(:,i)';
- %sinks
- kMin = find((x < [x(1) x(1:(end-1))]) & (x <= [x(2:end) x(end)]));
- kMin = kMin(kMin > 1 & kMin < 200);
- if sum(kMin > sinks(1)-4 & kMin < sinks(1)+4) > 0 %DS1
- kKeep(1,i) = 1;
- end
- if sum(kMin > sinks(2)-4 & kMin < sinks(2)+4) > 0 %DS2
- kKeep(2,i) = 2;
- end
- end
- subplot(1,6,5); hold on;
- %DS1
- k = kKeep(1,:);
- csd = resultsCSD(:,k);
- csd = nanmean(csd,2);
- plot(csd,1:200,'r');
- %DS2
- k = kKeep(2,:);
- csd = resultsCSD(:,k);
- csd = nanmean(csd,2);
- plot(csd,1:200,'k');
- axis ij tight;
- end %top inks
- %CSD average based on bottom 2 sinks
- if ~isnan(sinks(3)) && ~isnan(sinks(4))
- kKeep = false(2,size(resultsCSD,2));
- for i = 1:size(resultsCSD,2)
- x = resultsCSD(:,i)';
- %sinks
- kMin = find((x < [x(1) x(1:(end-1))]) & (x <= [x(2:end) x(end)]));
- kMin = kMin(kMin > 1 & kMin < 200);
- if sum(kMin > sinks(3)-4 & kMin < sinks(3)+4) > 0 %DS1
- kKeep(1,i) = 1;
- end
- if sum(kMin > sinks(4)-4 & kMin < sinks(4)+4) > 0 %DS2
- kKeep(2,i) = 2;
- end
- end
- subplot(1,6,6); hold on;
- %DS1
- k = kKeep(2,:);
- csd = resultsCSD(:,k);
- csd = nanmean(csd,2);
- plot(csd,1:200,'r');
- %DS2
- k = kKeep(1,:);
- csd = resultsCSD(:,k);
- csd = nanmean(csd,2);
- plot(csd,1:200,'k');
- axis ij tight;
- end %top inks
-
|