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

circos 学习手册(二十六)

作者: 名本无名 | 来源:发表于2021-01-02 09:53 被阅读0次

    技巧(一)

    1. 微生物基因组

    circos 适用于包含一条染色体的基因组,例如,环状细菌基因组。

    1.1 交叉原点结构

    首先,circos 实际上并不理解圆形染色体的概念。换句话说,由一个或多个 ideogram 表示的染色体必须有明确定义的开始和结束。

    这意味着,在圆形染色体上,穿过原点的结构必须由两个条目定义。例如,如果你有一个 1Mb 的基因组,并且希望有一个 95000050000 的高亮,那么你必须定义两个高亮:950000-1000000,然后另一个是 1-50000

    1.2 ideogram 断裂

    要获取 ideogram 为圆形的图像,可以将 ideogram 间距值设置为 0.这可以在 ideogram.conf 文件中 <ideogram><spacing> 块中定义

    <ideogram>
     <spacing>
      default = 0u
      break   = 0u
     </ideogram>
    </spacing>
    

    如果你想将染色体分解成多个 ideogram,则仍需要在染色体的起始和终止位置保持 0 间距。

    image.png

    2. link 的几何图形——控制贝塞尔曲线

    2.1 直线

    要绘制直线,需要保证 bezier_radius 未定义。

    下面,我们将 link 的半径设置为 ideogram 内部半径(0.98r)。然后隐藏较小重复片段(<1.5kb)。根据重复片段的大小设置厚度,并将那些 2 号染色体上的某个区域高亮的 link 标记为红色。

    radius = 0.98r
    # comment out bezier_radius, or leave out
    #bezier_radius        = 0.9r
    
    <link segdup>
    color        = vdgrey
    thickness    = 2
    file         = data/5/segdup.txt
    </link>
    
    <rules>
    
    <rule>
    importance = 110
    condition  = _SIZE1_ < 1.75kb || _SIZE2_ < 1.75kb
    show       = no
    </rule>
    <rule>
    importance = 100
    condition  = 1
    thickness  = eval(max(1,min(6,exp(_SIZE1_/50000))))
    flow       = continue
    </rule>
    <rule>
    importance = 90
    condition  = (_CHR1_ eq "hs2" && abs(_START1_ - 100Mb) < 20Mb) || (_CHR2_ eq "hs2" && abs(_START2_ - 100Mb) < 20Mb)
    color      = red
    </rule>
    </rules>
    

    注意,你可以使用常见的后缀 kbMb 来表示乘数值

    2.2 贝塞尔曲线

    直线对于连接两个间距很近的点不是很适用。定义 bezier_radius 参数,通过将 link 的起点和终点位置的二等分的角度建立第三个控制点来调整这条线的曲率。

    bezier_radius 参数指定控制点的半径。用 link 的起始点和终止点及控制点绘制贝塞尔曲线。贝塞尔曲线一般不经过控制点,而只是接近该点。

    因此,贝塞尔曲线半径越大,link 的中间与 ideogram 圆的近似越大。另一方面,如果 bezier_radius=0,则会使每一个 link 与圆心之间的近似很大

    2.3 动态更改参数

    使用 rule 控制 bezier_radius

    <rules>
    <rule>
    importance    = 95
    condition     = _CHR1_ eq _CHR2_ && abs(_START1_-_START2_) < 50Mb
    bezier_radius = 0.75r
    flow          = continue
    </rule>
    </rules>
    

    统一染色体内距离很近(<50Mb)的点之间的 linkbezier_radius 设置为 0.75r

    <rule>
    importance     = 95
    condition      = _CHR1_ eq _CHR2_ && abs(_START1_-_START2_) < 100Mb
    bezier_radius  = eval( (0.5 + 0.4*( 1 - abs(_START1_-_START2_) / 100Mb )) . "r" )
    flow           = continue
    </rule>
    

    使用 evalbezier_radius 重新映射。重新调整为 0.5r - 0.9r 的范围。

    2.4 隔绝染色体间的连接

    使用 rule 隐藏不符合条件的 link。如,仅绘制不同染色体间的连接,隐藏染色体内的连接

    <rule>
    importance = 100
    condition  = _CHR1_ eq _CHR2_
    show       = no
    </rule>
    

    也可以分别处理染色体间和染色体内的 link

    <rules>
    
    # intrachromosomal links with ends within 40 Mb placed outside circle
    
    <rule>
    importance = 90
    condition  = _CHR1_ eq _CHR2_ && abs(_START1_-_START2_) < 40Mb
    radius        = 1r+125p
    bezier_radius = 1r+225p
    crest         = 1
    color         = red
    </rule>
    
    # all other intrachromosomeal links hidden
    
    <rule>
    importance = 80
    condition  = _CHR1_ eq _CHR2_
    show       = no
    </rule>
    
    # interchromosomeal links involving start
    # of chromosome are inside circle
    
    <rule>
    importance = 70
    condition  = _CHR1_ ne _CHR2_ && (_START1_ < 20Mb || _START2_ < 20Mb)
    color      = black
    radius     = 0.99r
    bezier_radius = 0.5r
    crest         = 1
    </rule>
    
    # all remaining links are hidden
    
    <rule>
    importance = 10
    condition  = 1
    show       = no
    </rule>
    
    </rules>
    

    3. 条带标签

    下面的例子展示了如何在图片中添加窄条带文本标签

    首先,提取 karyotype 文件中条带的位置和名称

    > cat data/karyotype.human.txt | grep band | awk '{print $2,$5,$6,$3}'
    hs1 0 2300000 p36.33
    hs1 2300000 5300000 p36.32
    hs1 5300000 7100000 p36.31
    ...
    

    我们将条带标签放置在 ideogram 圆外围

    <plot>
    
    type  = text
    color = red
    file  = data/8/text.bands.txt
    
    r0 = 1r
    r1 = 1r+300p
    
    label_size = 12
    label_font = condensed
    
    show_links     = yes
    link_dims      = 0p,2p,6p,2p,5p
    link_thickness = 2p
    link_color     = black
    
    label_snuggle        = yes
    max_snuggle_distance = 1r
    snuggle_tolerance    = 0.25r
    snuggle_sampling     = 2
    snuggle_refine       = yes
    
    </plot>
    

    3.1 调整文本颜色

    rule 调整文本颜色,下面分别根据染色体、位置和文本标签来调整文本颜色

    <rules>
    <rule>
    condition  = on(hs1)
    color      = blue
    flow       = continue
    </rule>
    
    <rule>
    condition  = var(start) > 50mb && var(end) < 100mb
    color      = green
    flow       = continue
    </rule>
    
    <rule>
    condition  = var(value) =~ /[.]\d\d/
    color      = grey
    </rule>
    
    </rules>
    

    或者,直接在数据文件中设置相应的值

    hs10 111800000 114900000 q25.2 color=orange
    hs10 114900000 119100000 q25.3 color=orange
    hs10 119100000 121700000 q26.11 color=purple
    hs10 121700000 123100000 q26.12 color=purple
    hs10 123100000 127400000 q26.13 label_size=24p
    hs10 127400000 130500000 q26.2 label_size=18p
    hs10 130500000 135374737 q26.3 label_size=14p
    

    记住:如果未设置 overwrite=norule 将覆盖这些设置

    image.png

    4. 图像

    HTML 图像将会在后面介绍

    5. 图像透明度和背景

    标记背景透明

    <image>
    ...
    background = transparent
    </image>
    

    使用其他图像作为背景

    <image>
    ...
    background = data/8/background.png
    </image>
    

    输入的图像必须为 png,并且大小与 circos 图像相同。

    相关文章

      网友评论

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

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