circos 学习手册(十八)

link 和 relationships(三)

5. link rules - Part II

规则 rule 可以允许你定制分层和格式化你的 link

上节,我们了解了如何根据染色体改变 link 的颜色

在这一节中,我们将展示如何根据 link 的染色体或基于位置和 link 末端的大小来对 link 进行分层和格式化

5.1 多条件

一个规则可以有多个条件参数。它们使用 AND 进行连接,即所有条件都要满足。

例如,测试 link 是否在染色体之间的且起始大小是否大于 40kb

<rule>
condition = var(interchr)
condition = var(size1) > 40kb
...
</rule>

也可以组合在一个参数内

condition = var(interchr) && var(size1) > 40kb

记住:条件使用 AND 组合,而不是 OR

5.2 帮助函数

下面几个帮助函数可以简化测试数据点的位置

  • on(CHR):数据所在染色体 CHR上返回 1,对于 links 将测试两端点
  • from(CHR):如果 link 起始点在染色体 CHR 上,返回 1,只用于 link
  • to(CHR):如果 link 结束在染色体 CHR,返回 1,只用于 link
  • between(CHR1,CHR2)linkCHR1CHR2 之间返回 1,忽略方向,只用于 link
  • fromto(CHR1,CHR2):如果 link 是从 CHR1CHR2 返回 1,只用于 link
  • tofrom(CHR1,CHR2):如果 link 是从 CHR2CHR1,返回 1,只用于 link

on() 函数还有一个变体,用于测试染色体以及坐标

  • on(CHR,START,END),如果数据点在染色体 CHR 的区间 START-END 内,返回 1link 测试两端

要测试数据点坐标是否完全落在区间内

  • within(CHR,START,END),如果数据点完全落在染色体 CHR 的区间 START-END 内,返回 1link 测试两端
5.3 示例
<rules>

<rule>
  
condition  = var(interchr) 
condition  = within(hs2,40Mb,80Mb)
z          = 60
color      = red
thickness  = 5
</rule>

<rule>
condition  = max(var(size1),var(size2)) > 40kb
z          = 50
color      = green
thickness  = 5
</rule>

<rule>
condition  = max(var(size1),var(size2)) > 10kb
z          = 45
color      = dgrey
thickness  = 4
</rule>

<rule>
condition  = max(var(size1),var(size2)) > 5kb
z          = 40
color      = grey
thickness  = 3
</rule>

<rule>
condition  = max(var(size1),var(size2)) > 1000
z          = 35
color      = lgrey
thickness  = 2
</rule>

</rules>

第一条规则,为任何一端位于 hs2:40-80Mb 区域的 link 添加颜色为红色

后面 4 条规则根据 link 末端的最大最小值更改颜色和厚度。最大的末端的 link 被绘制成绿色,后续规则测试较低的尺寸

image.png

6. link rules - Part III

rule 可以影响 link 的几何形状。我们修改前面的例子,使连接延伸到染色体的外径

image.png

下面的例子,将对染色体内的连接进行了采样。第一条规则将隐藏其两端彼此间的距离在 1Mb 以内的任何对象。

这里使用 var(pos1)var(pos2) 对连接的开始和结束位置进行中间采样

第二条规则应用于末端在 50Mb 以内的染色体连接,这些设置为蓝色并通过设置 bezier_radius 大于 1 使其朝外。

最后一条规则禁止任何其他染色体内的连接,即两端间距超过 100 Mb 的连接

<rule>
condition  = var(intrachr)
condition  = abs(var(pos1) - var(pos2)) < 1Mb
show       = no
</rule>

<rule>
condition  = var(intrachr)
condition  = abs(var(pos1) - var(pos2)) < 50Mb
color         = dblue_a2
bezier_radius = 1.1r
bezier_radius_purity = 0.25
</rule>

<rule>
condition  = var(intrachr)
condition  = abs(var(pos1) - var(pos2)) < 100Mb
color         = dgreen_a2
crest         = 2
bezier_radius = 0.75r
bezier_radius_purity = 0.25
</rule>

<rule>
condition  = var(intrachr)
show       = no
</rule>
image.png

7. link rules - Part IV

规则可以基于 link 特征函数设置格式化值。例如,你可以将 link 的厚度定义为与 link 的跨度大小成正比。

在前面的示例中,规则将常量赋值给格式参数

<rule>
...
thickness = 2
color     = red
</rule>

若要根据连接的特征指定值,可以使用 eval

<rule>
...
thickness = eval(max(1,round(var(size1)/1000)))
</rule>

eval() 将解析参数,并将其分配给参数。上面的 tickness 将连接的第一个跨度的大小除以 1000

如果跨度为 28kb,则厚度为 28.如果小于 500bp,则厚度为 1

对于本例的图像,我设置了四个表达式,它们都使用 eval 为连接指定厚度,半径,颜色和 z 深度的变量值

<rule>
condition  = 1
thickness  = eval(sprintf("%d",remap_round(max(var(size1),var(size2)),1,25000,2,6)))
radius     = eval(sprintf("%fr",remap(min(var(size1),var(size2)),1,25000,0.5,0.999)))
color      = eval(sprintf("spectral-11-div-%d",remap_round(scalar min(var(size1),var(size2)),1,25000,1,11)))
z          = eval(int(max(var(size1),var(size2))/100))
</rule>

厚度与跨度的大小成比例,max 函数取两个断点中跨度较大的值,remap_round() 函数将大小重新映射到 [2,6],并赋值给 tickness 参数

对半径和颜色应用了类似的重映射,我们将颜色映射到 [1,11],这是 Brewer 调色板的颜色范围

z-depth 表达式根据较大的跨度将连接有效的划分为 100bp 的存储单元。首先绘制与较小块跨度相关的 link,避免花费太多的时间来绘制单元,本例的规则也可以表示为

z = eval(int(max(var(size1),var(size2))/500))

z = eval(int(max(var(size1),var(size2))/1000))

可能不会对最终的图像造成太大影响

image.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

名本无名

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

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

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

打赏作者

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

抵扣说明:

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

余额充值