circos 学习手册(二十四)

2D 数据绘制(五)

9. 字形—Part I

规则不仅可以用于调整标签的文本,也可以为所有标签设置值

<rule>
condition  = 1
value      = X
</rule>

你可以把这个规则和其他规则结合起来。例如,如果文本是序列,则可以根据其标识设置字符的颜色,然后将其更改为其他值。

# first change color
<rule>
condition  = var(value) eq "A"
color      = red
flow       = continue
</rule>

<rule>
condition  = var(value) eq "T"
color      = blue
flow       = continue
</rule>

<rule>
condition  = var(value) eq "C"
color      = green
flow       = continue
</rule>

# change label text, for all data points
<rule>
condition  = 1
value      = X
</rule>

你可以通过更改字体并将文本标签调整为所需的字形(fonts/symbols/symbols.ttf)。例如,用符号字体设置方形符号

<plot>
label_font = glyph

<rules>
...
<rule>
condition = 1
value     = m
</rule>
...
</rules>

符号字体定义了以下字符

small
 | medium
 | | large
 | | |
 a b c   square
 d e f   rhombus
 g h i   triangle up
 j k l   triangle down
 m n o   circle

upper case - solid
lower case - hollow
image.png
image.png

10. 符号—Part II

将标签改为符号是制作一般字形轨迹的理想选择。例如,考虑一个基因列表(data/6/genes.glyph.txt)

...
hs12 56428271 56432431 CDK4_cancer
hs12 64504506 64595566 HMGA2_cancer
hs12 64504506 64638901 P52926_cancer
...
hs10 108323411 108914282 SORCS1_omim
hs10 111614513 111673192 XPNPEP1_omim
hs10 111755715 111885310 ADD3_omim
...
hs7 139864688 139948811 DENND2A_other
hs7 140019421 140041377 ADCK2_other
hs7 140042949 140052913 NDUFB2_other
...

其中 _cancer 后缀表示癌基因,_omim 表示疾病相关的,_other 表示剩余的基因,使用下面的规则改变基因的字形颜色

<rules>

flow = continue

<rule>
condition  = var(value) =~ /cancer/
color      = red
</rule>

<rule>
condition  = var(value) =~ /omim/
color      = green
</rule>

<rule>
condition  = var(value) =~ /other/
color      = blue
</rule>

<rule>
condition  = 1
value      = N
</rule>

</rules>

通过设置规则隐藏基因

<plot>

r0 = 1r+10p
r1 = 1r+200p
color = red
...

<rules>

<rule>
condition  = var(value) !~ /cancer/
# hide anything that doesn't match "cancer"
show = no
</rule>

<rule>
condition  = 1
# circle
value = N
</rule>

</rules>

</plot>
10.1 用符号密度绘制

最后看一个例子,其中符号的大小编码数据点的密度。circos 不会为你计算密度,但你可以预处理数据并将密度编码为标签大小。

data/6/gene.density.txt 文件中

...
hs1 3000000 3000000 cancer label_size=1
hs1 6000000 6000000 cancer label_size=2
...
hs1 1000000 1000000 omim label_size=9
hs1 2000000 2000000 omim label_size=14
...
hs1 1000000 1000000 other label_size=26
hs1 2000000 2000000 other label_size=10
...

使用规则,你可以将 label_size 重新映射到另一个值,原来的值范围是 1p42p

# linear remap to [6,50]
label_size = eval(remap_int(var(label_size),1,42,6,50))

# ... with shallower increase
label_size = eval(remap_int(sqrt(var(label_size)),1,sqrt(42),6,50))

# ... with steeper increase
label_size = eval(remap_int(var(label_size)**2,1,42**2,6,50))
image.png

11. 连接器

连接器是连接 ideogram 上两个径向位置之间的铰接线段

连接器的定义为

<plot>

type = connector
file = data/6/connectors.txt

r0   = 0.8925r
r1   = 0.999r

connector_dims = 0,0.3,0.4,0.3,0

thickness = 2
color     = black
</plot>

connector_dims 参数控制连接器的线的形状,这条线有 5 个片段,5 个值定义了每个片段的大小

数据文件定义了用线连接 r0r1 的位置

# connectors.txt
...
hs22 15116257 16046604
hs22 15136864 16056568
...
image.png

12. 组合绘制

在本节中,我们创建一个包含大量轨迹的图像,包括前面讨论的所有类型。

这张图片看起来像是心脏病发作,所有,如果不是为了探索 circos 的语法,并不建议这样做

12.1 在数据层之间放置高亮

当高亮显示定义为 plot 块时,你可以使用 z-depth 值将其放置在其他数据层中的任何位置

高亮绘制在热图的上方,但在折线图、直方图、线和图块下面。

12.2 随机抽样数据

你可以选择使用包含对随机数生成器的调用规则来随机隐藏数据点,Perl 函数 rand() 函数返回从 [0,1) 中均匀抽样的随机数.

<rule>
condition = rand() < 0.1
show      = no
</rule>

在这种情况下,平均 10% 的数据点不会出现。每次创建图像时,将隐藏一组不同的点。

12.3 随机格式化数据

例如,要使 50% 的点是红色的

<rule>
condition = rand() < 0.5
color     = red
</rule>
12.4 隐藏热图元素

你可以使用 show=no 来隐藏热图元素,也可以颠倒颜色列表,并在列表中包含背景颜色

type         = heatmap
...
color        = black,grey,vlgrey,white,lgreen,green,dgreen
...
</plot>
12.5 相邻直方图

可以通过堆叠两个直方图来创建一个浮动的直方图。外部直方图的朝向是向外,内部直方图朝向内

<plot>
type         = histogram
...
orientation  = in
r0           = 0.65r
r1           = 0.75r
...
</plot>

<plot>
type         = histogram
...
orientation  = out
r0           = 0.75r
r1           = 0.85r
...
</plot>
12.6 相邻 ideogram 半径

调整 ideogram 的字符标识及区域半径

chromosomes        = hs2[a]:5-35;hs2[b]:40-75;hs2[c]:80-115;hs2[d]:120-155;hs2[e]:160-195;hs2[f]:200-240
chromosomes_radius = a:0.95r;b:0.9r;c:0.85r;d:0.8r;e:0.75r;f:0.7r

最后图片长这样

image.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

名本无名

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值