Skip to content
Snippets Groups Projects
Select Git revision
  • c1df2378552b5840a192f5c0b97c0e43b1571dab
  • master default protected
  • v1.2.12
  • ctc2019
  • v1.1.11
  • v1.1.10
  • v1.1.8
  • v1.1.4
  • v1.0.9
  • v1.0.3
  • v1.0.2
11 results

drawKymosCondition.m

Blame
  • 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