circos 学习手册(十九)

link 和 relationships(四)

8. link rules - Part V

在前面的示例中,我们根据 link 或数据点的位置来调整它们的格式参数。在下面的例子中,我们将展示如何根据格式参数的值出发规则。

本例的输入数据集是重复片段的自己,我们通过将下列格式参数随机分配给数据行来格式化 link

  • color = red
  • color = blue
  • thickness = 5

输入的数据是这样的

segdup00002 hs1 486 76975
segdup00002 hs15 100263879 100338121
segdup00011 hs1 71096 76975 thickness=5
segdup00011 hs1 388076 393885 thickness=5
...
segdup00062 hs1 120975 125718 color=blue
segdup00062 hs1 220708073 220712741 color=blue
segdup00071 hs1 129327 166636 color=red
segdup00071 hs1 665046 702417 color=red
...

包含四种连接:

  • 无格式
  • 红色
  • 蓝色
  • 厚度 5

下面展示如何编写基于格式参数调整 link 参数的规则。

<rule>
condition  = var(thickness) == 4
condition  = rand() < 0.25
thickness  = 10
color      = green
z          = 15
</rule>

<rule>
condition  = var(color) eq "red"
thickness  = 4
z          = 10
flow       = restart
</rule>

<rule>
condition  = var(color) ne "grey" && var(thickness) == 2
z          = 5
</rule>

第一个规则适用于厚度为 4 的连接,并将其厚度指定为 10,颜色指定为绿色,z-depth 设置为 15。第二个条件指定应用范围为这些 link25%

第二个规则设置红色连接的厚度和深度,然后重新启动规则链,使更厚的红色连接在第一个规则中进一步被修改,然后在第二个循环,为了避免无限循环,规则只能重新启动规则链一次

最后一个规则设置厚度为 2 且颜色为灰色的连接的深度。

image.png

9. ribbons

在前面所有的示例中,连接都被绘制为均匀厚度的曲线,厚度是通过参数设置的,与 link 文件中定义的跨度大小无关。

因此,尽管线条的粗细可以单独设置为某个像素值,但从根本上说,通过简单曲线对 link 的显示并不能传达 link 间距的大小

9.1 正常 VS 丝带(ribbon)

正常的 link 是贝塞尔曲线,其控制点可使用 bezier_radiuscrest 参数进行定义。曲线两端位于每个跨度中间。

当连接变成丝带时,连接的厚度是可变的,可以在整个长度上平滑缩放。你可以使用以下方式将连接切换为丝带

ribbon = yes

link 的每端,丝带的厚度与相应的连接跨度大小相同

9.2 格式化丝带

一旦连接变成丝带,你可以使用 stroke_colorstroke_thickness 参数来勾勒连接的轮廓

调整丝带的深度是在分层数据中非常有效的,丝带的交织,在视觉上很吸引人

image.png

10. ribbon twists

ribbon 丝带将绘制为填充路径,路径的角点是由 link 的跨度的起始和终止位置

linkID chr1 start1 end1
linkID chr2 start2 end2

丝带路径的绘制方向是

>>  start1 >> end1 >> end2 >> start2 >>
 |                                     |
 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

请注意,link 的跨度的起始和结束位置由路径连接

因此,根据与 link 相关的 ideogram 的方向以及起始终止坐标的方向,色带可能会发生扭曲

10.1 通过 ideogram 方向控制条带的扭转

控制条带扭转的方法是调整 ideogram 的方向。当你在 ideogram 对之间有连接时,这种方法非常有效

如果你的连接在两个 ideogram 上的方向相同(即 start1>end1,start2>end2),那么如果 ideogram 的方向相同,条带就会扭曲。解开条带扭曲的方式是调整第二个 ideogram 的方向

chromosomes_reverse = hs2
10.2 通过 flat 参数删除扭转

如果你要解开所有条带的扭转,而不管其 ideogram 的方向或者它们的相对起始、终止位置如何,可以设置 flat 参数

<link>
ribbon = yes
flat   = yes
...
</link>

在设置了 flat 参数时,对 ideogram 的前进和方向的任何调整都不会对条带产生影响,条带的绘制总是不缠绕的

也可以将 flat 参数单独添加到文件中

linkID chr1 start1 end1 flat=yes
linkID chr2 start2 end2 flat=yes
10.3 使用 twist 强制扭转

如果你就是想要扭转所有的条带,而不管其 ideogram 的方向或它们的相对起始、终止位置,可以设置 twist 参数

<link>
ribbon = yes
twist  = yes
...
</link>

flat 一样,不管如何,条带总是扭转的,也可以在文件中设置

linkID chr1 start1 end1 twist=yes
linkID chr2 start2 end2 twist=yes
10.4 使用方向坐标添加扭转

flattwist 指定了条带的扭转状态。当你需要特定的扭转状态时,非常有用。

而另一种合并扭转的方法是定义反向坐标,因此

linkID chr1 start1 end1 
linkID chr2 start2 end2

变成了

linkID chr1 end1 start1
linkID chr2 start2 end2

或者,你希望始终保持起点坐标小于终点坐标,可以使用 inversed=1

link1 hs1 10 20 inverted=1 # this inverts role of start/end for this span (now start=20 end=10)
link1 hs2 10 20
image.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

名本无名

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

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

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

打赏作者

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

抵扣说明:

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

余额充值