circlize(R package) :circRNA與其靶miRNA的可視化

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()#清理
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容