circos 学习手册(十五)
刻度线、网格以及标签(三)
6. 标签格式
在前面的教程中,刻度是由乘子 multiplier
和 format
参数设置的
乘数用于派生刻度标签的值(value = position * multiplier
),format
格式化字符串控制标签的显示方式
例如:
chromosomes_units = 1000000
multiplier = 1/1u = 1e-6
format = %d:
10000000 = 10u => label = 10
format = %.2f
label => 10.00
6.1 multiplier
乘数有助于避免标签中出现大量的 0
,例如
<ticks>
multiplier = 1/1u
...
<tick>
format = %d
...
</tick>
<tick>
format = %.1f
...
</tick>
...
</ticks>
如果乘数为 1/1u
,则间隔为 1Mb
的刻度的格式为 %d
,如果间隔为 0.1Mb
,格式为 %.1f
你可以调整刻度的乘数,例如
<ticks>
multiplier = 1/1u
...
<tick>
...
</tick>
<tick>
multiplier = 1000/1u
thousands_sep = yes
...
</tick>
...
</ticks>
第二刻度的级别为 1000/1u
,会使得标签为 100000
(如果设置 thousands_sep=yes
,将显示 100,000
) 而不是 100
6.2 模刻度
如果定义了 mod
的值,那么将会根据公式对刻度线执行模运算来调整标签
given
mod = M
then
tick_label = mod(tick_value,M) * multiplier
mod
参数在每个 <tick>
块中定义,其目的在于进一步降低刻度标签的复杂性,以获取更精细的刻度
例如,刻度间隔有 1u
和 0.1u,u=1,000,000
multiplier = 1/1u
<tick>
spacing = 0.1u
mod = 1u
</tick>
那么刻度为 10,100000
的标签为
mod(10,100,000 , 1,000,000) * 1e-6 = 100,000 * 1e-6 = 0.1
而不是 10.1
,如果将乘数定义为 10/1u
,那么你的刻度就是这个样子的
0 1 2 ... 8 9 10 1 2 ... 8 9 20 1 2 ... 8 9 30 1 2 ...
6.3 刻度间距的单位
你应该始终以 u
为单位定义刻度线参数,使其与 ideogram
具有相同的长度比例
例如,哺乳动物基因组可能使用 1u=1000000
,而较小的基因组可能使用 1u=1000
6.4 前缀和后缀
通过 prefix
和 suffix
参数为刻度标签添加前后缀
...
<tick>
suffix = kb
prefix = +
...
</tick>
也可以通过在 format
中添加前缀和后缀
<tick>
format = position %.1f kb
...
</tick>
![](https://img.haomeiwen.com/i18546936/084bf941699d4752.png)
7. 相对刻度
在前面的示例中,都是使用绝对距离标记刻度标签及其间隔,下面将介绍如何使用相对距离
有两个独立的相对刻度设置
- 相对间距
- 相对标签
相对间距用于将刻度线设置为相对于 ideogram
的长度
相对标签用于将刻度的标签格式化为相对于 ideogram
的长度
7.1 相对间距
使用 rspacing
和 spacing_type
参数 设置相对间距,例如,在染色体上每隔 1%
放置一个刻度
<ticks>
<tick>
spacing_type = relative
rspacing = 0.01
...
</tick>
...
</ticks>
注意:相对间距和绝对间距之间不会有冲突,你可以通过 spacing_type
参数 切换两种间距的显示
<ticks>
# relatively spaced
<tick>
spacing = 10u
rspacing = 0.01
spacing_type = relative
...
</tick>
# absolutely spaced
<tick>
spacing = 10u
rspacing = 0.01
spacing_type = absolute
...
</tick>
...
</ticks>
两种方式混合使用
<ticks>
# 假设 chromosome_units=1000000
<tick>
spacing = 1u
spacing_type = absolute
...
</tick>
# 每 1% 放置一个刻度
<tick>
rspacing = 0.01
spacing_type = relative
color = red
...
</tick>
...
</ticks>
![](https://img.haomeiwen.com/i18546936/a25e3d49ae0e0c6b.png)
7.2 相对标签
当刻度线使用相对间距值时,其标签也设置为相对的才更有意义
使用 label_relative
和 rmultiplier
参数将标签设置为相对的
<tick>
spacing_type = relative
rspacing = 0.01
label_relative = yes
format = %.2f
...
</tick>
你可以为标签定义相对乘子
下面的标签格式为 0.01 0.02 0.03 ...
<tick>
spacing_type = relative
rspacing = 0.01
label_relative = yes
format = %.2f # labels will be 0.01 0.02 0.03 ...
...
</tick>
设置 rmultiplier = 100
<tick>
spacing_type = relative
rspacing = 0.01
label_relative = yes
rmultiplier = 100 # labels will be 1 2 3 4 ...
format = %d
</tick>
标签的格式将变成 1 2 3 4 ...
再添加后缀
<tick>
spacing_type = relative
rspacing = 0.01
label_relative = yes
rmultiplier = 100
format = %d
suffix = % # labels will be 1% 2% 3% ...
</tick>
<tick>
spacing_type = relative
rspacing = 0.1
label_relative = yes
rmultiplier = 10
format = %d
suffix = "/10" # labels will be 1/10 2/10 3/10 ...
</tick>
7.3 相对刻度 —— 相对于染色体或 ideogram
如果一个 ideogram
就是一整条染色体,那么前面设置的相对刻度,是可以的
但是,如果你只是显示染色体的一部分,或者将其分割成多个 ideogram
,那么你可能想要的是相对于 ideogram
而不是染色体来设置间隔
可以设置 rdivisor
参数
<tick>
spacing_type = relative
rspacing = 0.1
rdivisor = ideogram
</tick>
![](https://img.haomeiwen.com/i18546936/327065b1253e39c4.png)
8. 特定位置的刻度
到目前为止,我们设置的刻度都是由间距定义的
下面我们将介绍如何在特定位置定义刻度线
8.1 特定的绝对位置的刻度
若要在特定位置上设置刻度,需要使用 position
参数,而不是 spacing
参数
<ticks>
<tick>
# 定义位置
position = 25u
...
</tick>
<tick>
# 多个位置
position = 30u,32u,34u,40u
...
</tick>
</ticks>
使用 position
参数就不要再用 spacing
参数了
8.2 特定的相对位置的刻度
放置在相对位置,要用 rposition
并设置 spacing_type = relative
<tick>
rposition = 0.5,0.7,0.9
spacing_type = relative
color = blue
label_relative = yes
format = %.2f
</tick>
注意:rspacing
和 rposition
不要同时使用
8.3 ideogram 的起始和终止位置的刻度
定了了两个特殊的位置:start
和 end
,表示 ideogram
的起始和终止位置
同时,可以为这两个刻度指定任意字符串作为标签
<tick>
position = start
label = 3'
...
</tick>
<tick>
position = end
label = 5'
...
</tick>
![](https://img.haomeiwen.com/i18546936/8b9634c0c1904005.png)
9. 刻度环
如果定义了多个位置,circos
会自动在多个半径位置绘制刻度
<tick>
# drawn at one radius
radius = dims(ideogram,radius_outer)
...
</tick>
<tick>
# drawn at two radii
radius = dims(ideogram,radius_outer)
radius = 0.8r
...
</tick>
<tick>
# drawn at three radii
radius = dims(ideogram,radius_outer)
radius = 0.8r
radius = 0.6r
...
</tick>
![](https://img.haomeiwen.com/i18546936/3639e2df372fc33b.png)