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
,每对 link
的 id
都是唯一的,并保证每个 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
个大小分别为 1000
,1500
,2500bp
的 contig
时,可以创建如下文件
# 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-20
和 contig2:500-520
之间的连接
第二行定义了 contig3:50-80
和 contig2:750-760
之间的连接
1.3.2 link 参数
基础参数如下:
-
radius
—link
终止的径向位置,设置相对值时,如果小于1
表示相对于ideogram
内径,否则相对于外径 -
bezier_radius
— 控制贝塞尔曲线的第三个控制点(前两个由起止位置定义),未定义则使用直线 -
color
—link
线条的颜色 -
thickness
—link
线条厚度(不是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
控制点。定义后将会添加 p3
和 p4
,这些点在 link
的起止终端拥有同样的角位置
p3r,p4r = radius +/- |bezier_radius - radius| * crest
当 crest=0
时, p3
、p4
和 p0
、p1
处于同样的位置,这种情况下,crest
没有效果
当 crest=1
时,p3
和 p4
位于 p2
的径向位置,p2
是 bezier_radius
设置的控制点
注意 p2
和 p3
,p4
之间的区别。p2
被放置在由 p0
,center
,p1
形成的平分角的半径上,而 p3
,p4
被放置在与 p0
,p1
相同的半径上
上面是不是看懵了,没关系,知道它干嘛的就好了
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
调整每个 link
的 p2
位置,p2
控制点将沿着原来 p2
点位置与 p0-p1
和平分半径的交点构成的直线移动
当 purity=1,p2'=p2,purity=0,p2'=midpoint(p0,p1)
如果定义了 bezier_radius_purity
, crest
将会使用新的控制点 p'
2.5 perturb
可以使用一组参数来随机调整 bezier_radius
, bezier_radius_purity
和 crest
参数,使 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
网友评论