技巧(一)
1. 微生物基因组
circos
适用于包含一条染色体的基因组,例如,环状细菌基因组。
1.1 交叉原点结构
首先,circos
实际上并不理解圆形染色体的概念。换句话说,由一个或多个 ideogram
表示的染色体必须有明确定义的开始和结束。
这意味着,在圆形染色体上,穿过原点的结构必须由两个条目定义。例如,如果你有一个 1Mb
的基因组,并且希望有一个 950000
至 50000
的高亮,那么你必须定义两个高亮:950000-1000000
,然后另一个是 1-50000
。
1.2 ideogram 断裂
要获取 ideogram
为圆形的图像,可以将 ideogram
间距值设置为 0
.这可以在 ideogram.conf
文件中 <ideogram><spacing>
块中定义
<ideogram>
<spacing>
default = 0u
break = 0u
</ideogram>
</spacing>
如果你想将染色体分解成多个 ideogram
,则仍需要在染色体的起始和终止位置保持 0
间距。
2. link 的几何图形——控制贝塞尔曲线
2.1 直线
要绘制直线,需要保证 bezier_radius
未定义。
下面,我们将 link
的半径设置为 ideogram
内部半径(0.98r
)。然后隐藏较小重复片段(<1.5kb
)。根据重复片段的大小设置厚度,并将那些 2
号染色体上的某个区域高亮的 link
标记为红色。
radius = 0.98r
# comment out bezier_radius, or leave out
#bezier_radius = 0.9r
<link segdup>
color = vdgrey
thickness = 2
file = data/5/segdup.txt
</link>
<rules>
<rule>
importance = 110
condition = _SIZE1_ < 1.75kb || _SIZE2_ < 1.75kb
show = no
</rule>
<rule>
importance = 100
condition = 1
thickness = eval(max(1,min(6,exp(_SIZE1_/50000))))
flow = continue
</rule>
<rule>
importance = 90
condition = (_CHR1_ eq "hs2" && abs(_START1_ - 100Mb) < 20Mb) || (_CHR2_ eq "hs2" && abs(_START2_ - 100Mb) < 20Mb)
color = red
</rule>
</rules>
注意,你可以使用常见的后缀 kb
或 Mb
来表示乘数值
2.2 贝塞尔曲线
直线对于连接两个间距很近的点不是很适用。定义 bezier_radius
参数,通过将 link
的起点和终点位置的二等分的角度建立第三个控制点来调整这条线的曲率。
bezier_radius
参数指定控制点的半径。用 link
的起始点和终止点及控制点绘制贝塞尔曲线。贝塞尔曲线一般不经过控制点,而只是接近该点。
因此,贝塞尔曲线半径越大,link
的中间与 ideogram
圆的近似越大。另一方面,如果 bezier_radius=0
,则会使每一个 link
与圆心之间的近似很大
2.3 动态更改参数
使用 rule
控制 bezier_radius
<rules>
<rule>
importance = 95
condition = _CHR1_ eq _CHR2_ && abs(_START1_-_START2_) < 50Mb
bezier_radius = 0.75r
flow = continue
</rule>
</rules>
统一染色体内距离很近(<50Mb
)的点之间的 link
的 bezier_radius
设置为 0.75r
<rule>
importance = 95
condition = _CHR1_ eq _CHR2_ && abs(_START1_-_START2_) < 100Mb
bezier_radius = eval( (0.5 + 0.4*( 1 - abs(_START1_-_START2_) / 100Mb )) . "r" )
flow = continue
</rule>
使用 eval
将 bezier_radius
重新映射。重新调整为 0.5r - 0.9r
的范围。
2.4 隔绝染色体间的连接
使用 rule
隐藏不符合条件的 link
。如,仅绘制不同染色体间的连接,隐藏染色体内的连接
<rule>
importance = 100
condition = _CHR1_ eq _CHR2_
show = no
</rule>
也可以分别处理染色体间和染色体内的 link
<rules>
# intrachromosomal links with ends within 40 Mb placed outside circle
<rule>
importance = 90
condition = _CHR1_ eq _CHR2_ && abs(_START1_-_START2_) < 40Mb
radius = 1r+125p
bezier_radius = 1r+225p
crest = 1
color = red
</rule>
# all other intrachromosomeal links hidden
<rule>
importance = 80
condition = _CHR1_ eq _CHR2_
show = no
</rule>
# interchromosomeal links involving start
# of chromosome are inside circle
<rule>
importance = 70
condition = _CHR1_ ne _CHR2_ && (_START1_ < 20Mb || _START2_ < 20Mb)
color = black
radius = 0.99r
bezier_radius = 0.5r
crest = 1
</rule>
# all remaining links are hidden
<rule>
importance = 10
condition = 1
show = no
</rule>
</rules>
3. 条带标签
下面的例子展示了如何在图片中添加窄条带文本标签
首先,提取 karyotype
文件中条带的位置和名称
> cat data/karyotype.human.txt | grep band | awk '{print $2,$5,$6,$3}'
hs1 0 2300000 p36.33
hs1 2300000 5300000 p36.32
hs1 5300000 7100000 p36.31
...
我们将条带标签放置在 ideogram
圆外围
<plot>
type = text
color = red
file = data/8/text.bands.txt
r0 = 1r
r1 = 1r+300p
label_size = 12
label_font = condensed
show_links = yes
link_dims = 0p,2p,6p,2p,5p
link_thickness = 2p
link_color = black
label_snuggle = yes
max_snuggle_distance = 1r
snuggle_tolerance = 0.25r
snuggle_sampling = 2
snuggle_refine = yes
</plot>
3.1 调整文本颜色
用 rule
调整文本颜色,下面分别根据染色体、位置和文本标签来调整文本颜色
<rules>
<rule>
condition = on(hs1)
color = blue
flow = continue
</rule>
<rule>
condition = var(start) > 50mb && var(end) < 100mb
color = green
flow = continue
</rule>
<rule>
condition = var(value) =~ /[.]\d\d/
color = grey
</rule>
</rules>
或者,直接在数据文件中设置相应的值
hs10 111800000 114900000 q25.2 color=orange
hs10 114900000 119100000 q25.3 color=orange
hs10 119100000 121700000 q26.11 color=purple
hs10 121700000 123100000 q26.12 color=purple
hs10 123100000 127400000 q26.13 label_size=24p
hs10 127400000 130500000 q26.2 label_size=18p
hs10 130500000 135374737 q26.3 label_size=14p
记住:如果未设置 overwrite=no
,rule
将覆盖这些设置
4. 图像
HTML
图像将会在后面介绍
5. 图像透明度和背景
标记背景透明
<image>
...
background = transparent
</image>
使用其他图像作为背景
<image>
...
background = data/8/background.png
</image>
输入的图像必须为 png
,并且大小与 circos
图像相同。
网友评论