circRNA可以作為sponge吸附大量的miRNA,從而調(diào)控下游基因的表達(dá)。對(duì)circRNA-miRNA結(jié)合的可視化我們可以通過 circlize來展現(xiàn)。

image.png
01數(shù)據(jù)準(zhǔn)備:
組成circRNA的exon位置信息:
#cat circRNA_position.txt
exon1 6320432
exon1 6320558
exon2 6327875
exon2 6327958
exon3 6343579
exon3 6343726
exon4 6348569
exon4 6348669
exon5 6376913
exon5 6377009
exon6 6383925
exon6 6384171
miRNA與circRNA結(jié)合的位置信息
#cat miRNA_position.txt
exon1 6320433 6320454 miRNA1
exon2 6327896 6327906 miRNA2
exon3 6343599 6343619 miRNA3
exon4 6348599 6348619 miRNA4
exon5 6376913 6376934 miRNA5
exon5 6376944 6376965 miRNA6
exon6 6383985 6384005 miRNA7
exon6 6383945 6383965 miRNA8
02可視化
library(circlize)
library(stringr)
# 讀取數(shù)據(jù)
dd= read.table('circRNA_position.txt')
colnames(dd) = c('sectors', 'x')
mi_dd = read.table('miRNA_position.txt')
colnames(mi_dd) = c('sectors', 'start', 'end', 'miRNA')
#circlize設(shè)定的tack范圍在0-1,設(shè)定y軸范圍0.99—0.999
dd$y = runif(nrow(dd), min = 0.99,max = 0.999)
#提取每個(gè)exon的起始位置
num_min = aggregate(dd$x,by = list(dd$sectors),min)
colnames(num_min) = c('sectors', 'min_n')
#將每個(gè)exon的起始位置設(shè)置為:0
dd = merge(dd,num_min)
dd$x = dd$x -dd$min_n
#固定circlize畫圖時(shí)exon的排序
dd$sort = as.numeric(str_split_fixed(dd$sectors,'exon',2)[,2])
dd = dd[order(dd$sort,decreasing = TRUE),]
dd$sectors = factor(dd$sectors)
#設(shè)置miRNA在不同exon中的位置
mi_dd = merge(mi_dd,num_min)
mi_dd$start = mi_dd$start - mi_dd$min_n
mi_dd$end = mi_dd$end - mi_dd$min_n
#固定繪圖順序
mi_dd$sort = as.numeric(str_split_fixed(mi_dd$sectors,'exon',2)[,2])
mi_dd = mi_dd[order(mi_dd$sort,decreasing = TRUE),]
#使用circlize進(jìn)行可視化
circos.par("track.height" = 0.1) #設(shè)定每個(gè)tack的寬度
circos.initialize(dd$sectors, x = dd$x) #設(shè)定每個(gè)tack中的分區(qū)區(qū)間
circos.genomicLabels(mi_dd,labels.column = 4, side = "outside") #對(duì)miRNA的position進(jìn)行可視化
circos.track(dd$sectors, y = dd$y, #設(shè)定circRNA的分區(qū)與y軸
panel.fun = function(x, y) {
circos.text(CELL_META$xcenter, #x軸labels放置在中間
CELL_META$cell.ylim[2] - mm_y(8), #labels y軸位置設(shè)定
CELL_META$sector.index, niceFacing =TRUE) #將sector列作為labels,niceFacing:可將label是旋轉(zhuǎn)為方便閱讀的角度
circos.axis(labels.cex = 0.6) #設(shè)置labels的大小
},
bg.col=rand_color(length(unique(dd$sectors))) # 顏色隨機(jī)設(shè)定(circlize自帶函數(shù))
)
text(0, 0, 'circRNA_100', cex = 1.6)#可以對(duì)圖片添加text分別為:x軸,y軸,所要添加的信息,大小
circos.clear()#清理