circos是一款强大的可视化软件,下面介绍一下如何将基因在染色体上标注出来。
1.生成测试数据,gene.txt文件。R代码如下:
options(scipen=200)
if (file.exists("gene.txt")){file.remove("gene.txt")}
sink("gene.txt", append=T)
for (i in 1:15){
if(i < 13){
cat("hs", i, "\t", 10000000*i, "\t", 10000000*(i+1), "\tgene", i, "\n", sep="")
}else{
cat("hs12\t", 120000000+1000000*(i-12), "\t", 120000000+1000000*(i-6), "\tgene", i, "\n", sep="")
}
}
sink()
gene.txt文件内容如下:
2.配置circos.conf文件。
####设置染色体
karyotype = ../data/karyotype/karyotype.human.hg38.txt #指定染色体文件核型文件位置
chromosomes_units = 1000000 #定义最小单位,即100万bp为一个units,即1u = 100w,后面刻度线长度都是基于此定义
##染色体属性
<ideogram>
<spacing>
default = 0.005r #指定染色体间隙宽度。r指的是圆的周长,设置0.5%圆的周长为间隙
</spacing>
radius = 0.6r #轮廓的位置,这里的r指的是半径,由圆心到圆周上范围依次是0-1r,,超出部分将不再显示。
thickness = 20p #染色体整体的宽度,这里p指的是像素大小,也可以用r表示,1r=1500p
fill = yes #是否为染色体填充颜色,如果为yes,自动用第七列定义的颜色着色
show_bands = yes
fill_bands = yes
stroke_color = dgrey #染色体边框的颜色,支持多种格式的输入,如:red或255,182,106
stroke_thickness = 0 #染色体边框的粗细
#染色体标签
show_label = yes #选择yes表示要显示label
label_radius = 0.9r #标签位置
label_font = default #字体可以再 etc/fonts.conf 查看所有,默认为CMUBright-Roman
label_size = 50 #字体的大小
label_parallel = yes #将Label的方向设置为与染色体平行
</ideogram>
##染色体刻度线
show_ticks = yes #是否显示刻度线
show_tick_labels = yes #是否显示刻度线的数值
#定义刻度线的整体位置与形状
<ticks>
radius = 1r #刻度线的位置,1r为最远距离,超过1r不再显示
color = black
thickness = 2p
multiplier = 1e-6 #把刻度线标签(bp)缩小10万倍显示
format = %d #然后以整数的形式标记在刻度线上
#定义小间隔的刻度线
<tick>
spacing = 5u #最开始我们定义1u = 1000000,表示每500w bp显示一个小刻度线
size = 5p
show_label = no #由于小的刻度线展示出来太密集,因此用no不展示,默认不展示
</tick>
#定义大间隔的刻度线
<tick>
spacing = 50u
size = 10p
show_label = yes
label_size = 20p
label_offset = 5p #设置数值和刻度线之间的间隔
format = %d
</tick>
</ticks>
###添加plots,包括text文字、scatter散点图、line折线图、histogram直方图、heatmap热图等等
<plots>
<plot>
type=text #限定plot为文本标签
color=red #限定文字标签颜色
<rules> #条件赋值
<rule>
condition = var(value) =~ /^gene2$|^gene4$|^gene8$/ #相当于if,适用perl语法
color = blue
</rule>
<rule>
condition = var(value) =~ /^gene3$|^gene15$/
color = green
</rule>
</rules>
file = gene.txt #text文件位置
label_font = condensed #文字字体类型
label_size = 30p #文字字体大小
label_snuggle = yes #如多个文本文字距离过近,避免重叠 参考:https://www.omicsclass.com/article/678
show_links = yes #是否显示标签和染色体之间的连接
link_color = gray #连接线颜色
link_dims = 0p,20p,50p,2p,2p #连接线细分五部分,各部分长度
link_thickness = 1p #连接线厚度
r0 = 1r #标签位置,其r0和r1大小能控制标签在内或在外
r1 = 1r+500p
rpadding = 5p #文字边缘大小
</plot>
</plots>
###其他基础设置,属于circos自带的配置文件,用于调用颜色,距离,报错等信息
<colors>
<<include etc/colors.conf>>
<<include etc/brewer.conf>>
</colors>
<fonts>
<<include etc/fonts.conf>>
</fonts>
<image>
<<include etc/image.conf>>
</image>
<<include etc/housekeeping.conf>>