美文网首页
circos 学习手册(十六)

circos 学习手册(十六)

作者: 名本无名 | 来源:发表于2020-12-23 17:34 被阅读0次

    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

    相关文章

      网友评论

          本文标题:circos 学习手册(十六)

          本文链接:https://www.haomeiwen.com/subject/jwrunktx.html