Skip to main content Skip to navigation

Using MatLab to produce a chromosome plot




chrs = dataset('file','chrlist.txt','ReadVarNames',false,'Varnames',{'order','chr','null','chrlen','strand'});
peaks = dataset('file','top1500Peaks.cod','ReadVarNames',false,'Varnames',{'order','chr','start','finish','strand','height'});

maxchr = length(chrs)-1;
interval = 2500000;
maxbins = round(chrs.chrlen(1)/interval)+1;

for i = 1:maxchr
theta = i/maxchr * 2 * pi;
color = [(cos(theta)+1)/2 (cos(theta - 0.66 * pi)+1)/2 (cos(theta + 0.66 * pi)+1)/2];
thisChr = chrs.chr{i};
chrLen = chrs.chrlen(i);
bins = round(chrLen/interval)+1;

centres = 0:interval:bins*interval;
vals = histc(peaks(strcmp(peaks.chr,thisChr),:).start,centres);

subplot(maxchr,1,i);
bar(vals,1.0,'FaceColor',color);
ax = get(gca,'Position');
ax(3) = bins/maxbins * ax(3);
set(gca,'Visible','off','YLim',[0,20],'XLim',[0 bins+1],'Position',[ax(1) ax(2) ax(3) ax(4)]);
text(ax(1)-8,ax(2)+3,thisChr,'Fontsize',8);
end