circos 学习手册(十六)

link 和 relationships(一)

1. 基本 links 的绘制

circos 核心用途之一就是展示轴上位置之间的关系

许多控制连接 link 的参数直接继承自 <highlights>

1.1 <links>

所有连接的数据都是在 <links> 块中定义,通常全局参数是在块根部设置,这些值将作为所有连接 <link> 的默认值

<links>

 # global parameters here

 <link>
 ...
 </link>

 <link>
 ...
 </link>

</links>
1.2 数据格式

link 数据文件的每行都是由位置对组成

...
hs1 100 200 hs2 250 300
hs1 400 550 hs3 500 750
hs1 600 800 hs4 150 350
...
1.2.1 两行格式

link 也可以跨两行定义,并使用相同的 link id,每对 linkid 都是唯一的,并保证每个 id 都有两行

...
segdup00010 hs1 100 200 
segdup00010 hs2 250 300
segdup00011 hs1 400 550
segdup00011 hs3 500 750
segdup00012 hs1 600 800
segdup00012 hs4 150 350
...

但是并不推荐这种格式,以后可能不再支持这一格式

1.2.2 link 可选参数

和高亮一样,可以添加可选字段来指定特定连接的参数

...
hs1 100 200 hs2 250 300 color=blue
hs1 400 550 hs3 500 750 color=red,thickness=5p
hs1 600 800 hs4 150 350 color=black
...
1.3 例子

在本例中,我们从重复片段定义的坐标文件中绘制数据,每个坐标定义了基因组的两个区域,作为重复片段(长度超过 1kb,相似性大于 90%)

<links>

<link>
file          = data/5/segdup.txt
color         = black_a5
radius        = 0.95r
bezier_radius = 0.1r
thickness     = 1
</link>

</links>
image.png
1.3.1 自定义 karyotype

当你想要绘制的片段上的连接并不是来自同一物种的染色体时,你需要创建自己的核型文件

例如,你有 3 个大小分别为 100015002500bpcontig 时,可以创建如下文件

# karyotype.txt
chr - contig1 1 0 1000 black
chr - contig2 2 0 1500 blue
chr - contig3 3 0 2500 red

circos.conf 中使用

karyotype = karyotype.txt

你的连接文件可能是像这样的

contig1 10 20 contig2 500 520 
contig3 50 80 contig3 750 760
...

在这里,第一行定义了 contig1:10-20contig2:500-520 之间的连接

第二行定义了 contig3:50-80contig2:750-760 之间的连接

1.3.2 link 参数

基础参数如下:

  • radiuslink 终止的径向位置,设置相对值时,如果小于 1 表示相对于 ideogram 内径,否则相对于外径
  • bezier_radius — 控制贝塞尔曲线的第三个控制点(前两个由起止位置定义),未定义则使用直线
  • colorlink 线条的颜色
  • thicknesslink 线条厚度(不是 stroke_thickness)
  • record_limit — 如果定义了这个参数,则从文件中读取的记录数将被限制
1.4 link 默认值

link 的默认参数值为

ribbon           = no
color            = black
thickness        = 1
radius           = 0.40r
bezier_radius    = 0r
crest                = 0.5
bezier_radius_purity = 0.75

这些值默认从 etc/tracks/link.conf 文件中导入,这个文件由 etc/housekeeping.conf 文件中的 track_defaults 参数设置

你可以见参数设置为 undef 来覆盖默认值

<link>
 ...
 crest = undef
 ...
</link>

或者

<<include etc/housekeeping.conf>>
track_defaults* = undef
1.5 贝塞尔曲线

link 可以绘制成直线或者二次贝塞尔曲线

对于后者,起始 p1 和终止 p3 控制点由坐标位置和半径参数定义,它们之间控制点 p2 由坐标和 bezier_radius 参数之间的中间点定义

绘制贝塞尔曲线时,其在 p1 处的切线由 p1-p2 定义,p3 处的切线由 p2-p3 定义

2. link 几何形状

link 的几何形状由 4 个参数定义:

  • radius
  • bezier_radius
  • bezier_radius_purity
  • crest

而在这些参数前面加上 perturb* 前缀,表示对这些参数进行随机调整

2.1 radius

radius 设置 link 终端的径向位置,可以定义为相对值或绝对值

# 50% of inner ideogram radius
radius = 0.5r 

# 50 pixels inside inner ideogram radius
radius = 1r - 50p

# 25 pixels outside inner ideogram radius
# careful - links will overlap with ideogram
radius = 1r + 25p

# links terminate 750 pixels from image center
radius = 750p

建议将半径值设置为相对值,以便后续调整

2.2 bezier_radius

bezier_radius 参数控制 link 曲率控制点的径向位置。在没有额外设置的情况下,每个 link 的控制点将位于相同的径向位置

2.3 crest

可以用 crest 参数设置两个额外的 bezier 控制点。定义后将会添加 p3p4,这些点在 link 的起止终端拥有同样的角位置

p3r,p4r = radius +/- |bezier_radius - radius| * crest

crest=0 时, p3p4p0p1 处于同样的位置,这种情况下,crest 没有效果

crest=1 时,p3p4 位于 p2 的径向位置,p2bezier_radius 设置的控制点

注意 p2p3p4 之间的区别。p2 被放置在由 p0centerp1 形成的平分角的半径上,而 p3p4 被放置在与 p0p1 相同的半径上

上面是不是看懵了,没关系,知道它干嘛的就好了

crest 参数的目的在于使 link 的终端与 ideogram 半径垂直,这个参数只有在 bezier_radius 被定义的情况下发挥作用

2.4 bezier_radius_purity

bezier_radius 参数对于所有 link 都是常量,对于确定的 bezier_radius 参数值,无论 link 的起始和终止位置如何,p2 控制点始终处于相同的位置。

这会使靠近 link 起止终端的线条高度弯曲

为了缓解这一问题,bezier_radius_purity 允许你定义一个 link 起止终端的距离函数

bezier_radius_purity 调整每个 linkp2 位置,p2 控制点将沿着原来 p2 点位置与 p0-p1 和平分半径的交点构成的直线移动

purity=1,p2'=p2,purity=0,p2'=midpoint(p0,p1)

如果定义了 bezier_radius_puritycrest 将会使用新的控制点 p'

2.5 perturb

可以使用一组参数来随机调整 bezier_radius, bezier_radius_puritycrest 参数,使 link 更有条理。

每个参数的扰动量定义为一对值:

  • pmin
  • pmax

给定扰动,新值的计算方式为

new_value = value * [ pmin + (pmax-pmin)*urd ]

其中,urd 是在 [0,1] 范围内的均匀随机偏差。因此,新值将在 [value*pmin, value*pmax] 范围内采样

例如,定义了

perturb               = yes
perturb_crest         = 0
perturb_bezier_radius = 0.5,1.2
perturb_bezier_radius_purity = 0.5,1

crest 将不受影响,将分别在其原始值的 50-120%50-100% 之间随机缩放

通过使用 pmin<0,可以使某些值强制变为负数。例如,如果 crest=0.5,那么 perturb_crest = -1,2 会使 crest[-0.5,1] 范围波动

来画张图看看

<links>

z      = 0
radius = 0.90r
crest  = 0.9
bezier_radius        = 0.9r
bezier_radius_purity = 0.5

perturb               = yes
perturb_crest         = 0
perturb_bezier_radius = 0.8,1.2
perturb_bezier_radius_purity = 0.5,1.5

<link>
color        = vvdgrey
thickness    = 2
file         = data/5/curves.repeated.txt
</link>

</links>
image.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

名本无名

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

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

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

打赏作者

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

抵扣说明:

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

余额充值