Select Git revision
drawKymosCondition.m
drawKymosCondition.m 4.75 KiB
% % ROOT = '/g/leverjs/Olivier/Agne/march_2023_20x/';
% ROOT = '/g/leverjs/Olivier/Agne/2022-06-03_48h-depr-transcr-drugs/';
% % ROOT = '/g/leverjs/Olivier/Agne/2023-03-25_DHB-proliferation-setup2/';
% kymo_dir = fullfile(ROOT,'kymo_downsize');
% flist = dir(fullfile(kymo_dir,'*.LEVER'));
%
% % for treatment (tx)
% tblClasses = readtable('../transcr-drugs/expDescr-2022-06-03.xlsx');
% classList = tblClasses.Cell_Type;
% % for steady state (ss)
% % classList = get_ssClasses(flist);
% % for DHB
% % tblClasses = readtable('../DHB/expDescr-2023-03-25.csv');
% % classList = tblClasses.Cell_Type;
%
% % outfile = 'dhb_erk_kymos_condition.pdf';
% outfile = 'tx_erk_kymos_condition.pdf';
%
% cbLabel = 'ERK SSF';
% targetChannels = 1;
function drawKymosCondition(flist,classList,labelNames,outfile,cbLabel,targetChannels,stride,framesPerHour)
if ~exist('xticksLabels','var')
xticksLabels.xticks = [];
xticksLabels.xlabels = {};
end
xClasses = unique(classList);
nKeep = 0;
clipLimits = SSF.getClipLimits(flist,targetChannels,nKeep);
xyim = []; % one per flist
xticks = [];
xtickLabels = {};
for cc = 1:length(xClasses)
idxCC = find(strcmp(classList,xClasses(cc)));
flistCC = flist(idxCC);
clf;imCC = {};
for ff = 1:length(flistCC)
fname = fullfile(flistCC(ff).folder,flistCC(ff).name);
imq = SSF.draw_ssf_kymo(fname,targetChannels,clipLimits{ff},nKeep);
szim(ff,:) = size(imq);
imq(:,1) = 0; imq(:,end) = 0;
imq(1:2,:) = 0; imq(end-1:end,:) = 0;
row = ceil(ff/stride);
col = 1 + mod(ff-1,stride);
if 1 == col
imCC{row} = [];
elseif size(imq,1) ~= size(imCC{row},1)
imq = imresize(imq,[size(imCC{row},1),NaN]);
end
imCC{row} = [ imCC{row}, imq];
end
sz = cellfun(@size,imCC,'UniformOutput',false);
sz = vertcat(sz{:});
if size(sz,1)>1
sz = max(sz);
end
for i = 1:length(imCC)
if size(imCC{i},2) < sz(2)
imCC{i}(end,sz(2)) = 0;
end
end
ccLabels= labelNames(idxCC);
imMontage = vertcat(imCC{:});
clf;imagesc(imMontage) ; hold on
axis off
% label movies
for ff = 1:length(flistCC)
row = ceil(ff/stride);
col = 1 + mod(ff-1,stride);
if 1 == col
x = 1;
end
y = (row-1) * szim(ff,1);
plot([x,x+szim(ff,2)],[y,y],'-k');
plot([x,x+szim(ff,2)],[y+szim(ff,1),y+szim(ff,1)],'-k');
plot([x,x],[y,y+szim(ff,1)],'-k')
% tPulseOn = regexp(flistCC(ff).name,'(\d)hNoPulse','tokens');
% tPulseOn = str2double(tPulseOn{1}{1});
% tPulseOff = regexp(flistCC(ff).name,'(\d)hPulse','tokens');
% tPulseOff = tPulseOn + str2double(tPulseOff{1}{1});
%
% plot([x+12*tPulseOn,x+12*tPulseOn], [y,y+szim(ff,1)], ':r')
% plot([x+12*tPulseOff,x+12*tPulseOff], [y,y+szim(ff,1)], ':k')
% don't draw to your right...
% plot([x+szim(ff,2),x+szim(ff,2)],[y,y+szim(ff,1)],'-k')
text(x,y,ccLabels{ff},'Interpreter','none','FontSize',6,'BackgroundColor',[0.9,0.5,0.7,0.5],...
'VerticalAlignment','top');
% label time
tHours = [48:48:szim(ff,2)-12];
for i = 1:length(tHours)
text(x+tHours(i),y+szim(ff,1),num2str(round(tHours(i)./framesPerHour)),'Interpreter','none','FontSize',6,...
'VerticalAlignment','bottom');
end
x = x + szim(ff,2);
% date_movie = regexp(flistCC(ff).name,'(\d{4}-\d{2}-\d{2}).+_(\d{2})','tokens');
% text(x,y,[date_movie{1}{1} '_' date_movie{1}{2}],'Interpreter','none','FontSize',6,'BackgroundColor',[0.8,0.8,0.8,0.5]);
% plot([x+62,x+62],[y+5,y+size(imq,1)-5],'-r')
% treatment = regexp(tblCC.Treatment{ff},'(.*)\w*(','tokens');
% text(x+30,y+20,[date_movie{1}{1} '_' date_movie{1}{2} ' :: ' treatment{1}{1}],'Interpreter','none','FontSize',6,'BackgroundColor',[0.8,0.8,0.8,0.7]);
end
% set background (index 0, colormap(1)) to white
cm = parula();
cm(1,:) = [1,1,1];
colormap(cm);
axis on
set(gca,'xtick',xticksLabels.xticks);
set(gca,'XTickLabel',xticksLabels.xlabels);
set(gca,'ytick',[]);
ylabel('xy \Downarrow x');
xlabel('time');
% fx = strfind(flist(ff).name,'.LEVER');
% fx = fx(1)-1;
% title(xClasses{cc},'Interpreter','none');
c1 = clipLimits{1};
c1 = linspace(c1(1),c1(end),254);
tick_targets = [1,64,128,192,254];
tick_labels = round(c1(tick_targets),2,'significant');
cb = colorbar('Ticks',tick_targets,'TickLabels',tick_labels);
cb.Label.String = cbLabel;
if 1 == cc
exportgraphics(gcf,outfile);
else
exportgraphics(gcf,outfile,'Append',true);
end
end