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

circos 学习手册(九)

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

    ideogram(四)

    7、可变半径

    默认情况下,每个 ideogram 都放置在相同的径向位置,可以通过 <ideogram> 块中的 radius 参数控制(通常在 ideogram.conf 文件中)

    <ideogram>
    ...
    radius = 0.85r
    ...
    </ideogram>
    

    该值是相对于图像的半径

    你可以在配置文件的 root 中,设置 chromosomes_radius 参数,将各个 ideogram 配置为不同的径向位置

    chromosomes_radius = hs1:0.5r;hs2:0.55r;hs3:0.6r;hs4:0.65r;hs5:0.7r;hs6:0.75r;hs7:0.8r;hs8:0.85r;hs9:0.9r;hs10:0.95r
    

    此参数的径向位置是相对于在 <ideogram> 块中定义的默认的 ideogram 半径

    例如,如果图像半径为 1500p,默认 ideogram 半径为 0.9r,则表示所有 ideogram 都位于距离中心 1350(1500*0.9) 像素的位置。如果 chromosomes_radius 进一步指定 hs1:0.5r,则 hs1 将出现在距离中心 675 个像素出(1500*0.9*0.5)

    一旦使用 chromosomes_radius 参数重新定义了 ideogram 的径向位置,所有与 ideogram 相关的特征(如图形,连接,文字等),将会自动重新定位以匹配新的位置。

    7.1 为 tag 指定 radius

    如果在创建区间时使用了 tag 标识 ideograms

    chromosomes = hs1[a]:0-50;hs1[b]:150-);hs2[c]:0-50;hs2[d]:150-);hs3[e]
    

    可以使用 tag 标识来调整任何区域的半径

    chromosomes_radius = hs1:0.8r;a:0.9r;d:0.8r
    

    半径值将按顺序处理,后面的半径值会将前面的半径值覆盖掉

    例如,hs1 的每个区域都会设置为 0.8r,但是用 a 标记的区域将是 0.9r

    7.2 压缩刻度和标签

    当减小 ideogram 的半径是,你可能会发现刻度线及其标签挤在一起。

    在这种情况下,使用 <ticks> 块中的 tick_separationlabel_separation 参数来定义刻度线及其标签之间的最小间距

    8、标签(label)

    每个 ideogram 在核型文件中都有一个标签字段

    # A 染色体名称
    # B 染色体标签
    #     A    B
    chr - hs12 12 0 132349534 green
    

    此标签字段定义了图中显示的文本,该文本是可选的,也可以灵活定位和设置其格式

    8.1 ideogram VS 染色体

    记住染色体和 ideogram 之间的差异,染色体是定义数据位置的结构,而 ideogram 是染色体或染色体区域的视觉表示

    大多数时候,每条染色体都有一个 ideogram,但是如果使用轴断点压缩显示某条染色体的区域,则一条染色体将具有多个 ideogram

    当染色体分割成多个 ideogram 时,每个 ideogram 都由 tag 来标识(如,a b c)。你可以使用 label_with_tag 将此 tag 添加到 label

    8.2 字体

    circos 支持 True TypeOpen Type 字体,这些字体定义在 <font> 块中,在 colors_fonts_patterns.conf 文件中

    # circos.conf
    <<include colors_fonts_patterns.conf>>
    ...
    

    <font> 块用于将字体文件(.TTF 或 .OTF)关联到一个唯一的名称,如

    light          = fonts/modern/cmunbmr.otf
    normal         = fonts/modern/cmunbmr.otf
    default        = fonts/modern/cmunbmr.otf
    semibold       = fonts/modern/cmunbsr.otf
    bold           = fonts/modern/cmunbbx.otf
    italic         = fonts/modern/cmunbmo.otf
    bolditalic     = fonts/modern/cmunbxo.otf
    italicbold     = fonts/modern/cmunbxo.otf
    

    若要使用字体,直接用其定义(如 light, normal),而不是用字体文件名来指定

    如果指定的字体还未被定义,则会使用默认值

    8.3 ideogram 的标签

    ideogram 的标签可以用 <ideogram> 块中的参数控制

    <ideogram>
    show_label     = yes
    # tag 标识是否包含到 label 中
    label_with_tag = yes
    # label 的字体
    label_font     = light
    label_radius   = dims(ideogram,radius_outer) + 0.05r
    label_center   = yes
    label_size     = 48p
    label_color    = grey
    # label方向, 是否与圆外圈平行
    label_parallel = yes
    # label 的大小写:upper,lower
    label_case     = upper 
    # label 的格式,参照 perl 语言格式化字符串
    label_format   = eval(sprintf("chr%s",var(label)))
    ...
    </ideogram>
    
    8.4 标签位置

    label_radius 控制 ideogram 标签的径向位置,最好将标签放置在相对于 ideogram 的外部(内部)半径上。

    如果你希望标签以该半径为中心,可以使用 label_center = yes

    # ideogram 外部半径外部 50 像素
    label_radius = dims(ideogram,radius_outer) + 50p
    
    # ideogram 外部半径  部半径的 5%
    label_radius = dims(ideogram,radius_outer) + 0.05r
    
    # ideogram 内部
    label_radius = (dims(ideogram,radius_outer)+dims(ideogram,radius_inner))/2
    
    # ideogram 外部半径内 100 像素
    label_radius = dims(ideogram,radius_inner) - 100p
    
    # 图像半径内部 50 像素
    label_radius = dims(image,radius) - 50p
    
    8.5 label 格式

    你可以使用 sprintf 来灵活定义标签格式,例如,染色体标签以 chr 开头

    label_format = eval(sprintf("chr%s",var(label)))
    

    列举几个使用 label_format 的例子,下面的例子中,var() 都是取 ideogram 的属性,如 chrlabel

    # 只显示 1-5 号染色体,用到了正则
    label_format     = eval( var(chr) =~ /hs[1-5]$/ ? var(label) : "")
    
    # 隐藏 hs10 的标签
    label_format     = eval( var(chr) eq "hs10" ? "" : var(label))
    

    在某些情况下,你可能希望简化 ideogram 标签。例如,如果所有标签都包含字符串 ctg,你想把它替换为其他字符串,可以使用 replace(str,rx,replace_str)

    # 替换 "ctg" 为空,相当于删除
    label_format     = eval( replace(var(label),"ctg.","") )
    
    # 将 "hs" 替换为 "human "
    label_format     = eval( replace(var(chr),"hs","human ") )
    

    你还可以使用 ideogram 的其他属性

    # 在标签中添加长度 (1,000,000 转换为 1 "Mb")
    label_format     = eval( sprintf("%s %dMb",var(label),var(size)/1e6) )
    
    8.6 ver()

    可以用 var(?) 获取 var() 函数可用的参数名称的完整列表,当 circos 解析时,它将返回参数及其值的列表并退出。

    # e.g. using
    label_format     = eval( sprintf("%s %dMb",var(label),var(?)/1e6) )
    
    # will return
    You asked for help in the expression [eval( sprintf("%s %dMb",1,var(?)/1e6) )].
    In this expression the arguments marked with * are available for the var() function.
                   break   HASH
                     chr * hs1
            chr_with_tag * 1
               chrlength * 249250622
                  covers   ARRAY
             display_idx * 0
                     end * 249250621
                     idx * 0
                   label * 1
                  length   HASH
                    next   HASH
                   param   HASH
                    prev   HASH
                  radius * 1350
            radius_inner * 1275
           radius_middle * 1312.5
            radius_outer * 1350
                 reverse * 0
                   scale * 1
                     set   Set::IntSpan
                    size * 249250622
                   start * 0
                     tag * hs1
               thickness * 75
    

    从参数列表中可以看出,var() 无法轮询 HASHARRAY 或对象(Set::IntSpan)参数

    9、方向

    9.1 角度偏移

    角度偏移用于确定第一个 ideogram 的角度位置

          -90
           |
     180 --+-- 0
           |
           90
    

    默认值为 0,这会使第一个 ideogram 出现在 3 点钟的位置,一般使用 -90 使第一个 ideogram 显示在圆的顶部

    <image>
    angle_offset = -90
    ...
    </image>
    
    9.2 前进方向

    ideogram 在圆周的行进方向由 <image> 块中的 angle_orientation 参数控制,可以是顺时针 clockwise 或逆时针 counterclockwise

    <image>
    angle_orientation = counterclockwise
    ...
    </image>
    

    不要忘记,如果你是从另一个文件中包含图像参数时,要使用带 * 后缀来覆盖其中的参数

    <image>
    <<include etc/image.conf>>
    angle_orientation* = counterclockwise
    ...
    </image>
    

    默认情况下,每个 ideogram 范围的方向将其方向相同,如果 angle_orientation=counterclockwise,则表示 ideogram 比例方向将是逆时针

    9.3 ideogram 方向

    ideogram 的方向是由 控制的,要针对特定 ideogram 方向进行调整,可以

    chromosomes_reverse = hs1,hs2,...
    

    由此,可以设置与默认方向相反的方向

    <ideogram> 总览

    使用方式

    ##############################
    # circos.conf
    <<include ideogram.conf>>
    
    ##############################
    # ideogram.conf
    <ideogram>
     ...
    </ideogram>
    

    语法

    <ideogram>
    
     <spacing>
    
       <pairwise>
       </pairwise>
       ...
    
     </spacing>
    
     <break_style>
     </break_style>
    
     <break_style>
     </break_style>
    
     ...
    
     <rules>
    
       <rule>
       </rule>
       ...
    
     </rules>
    
    </ideogram>
    

    参数

    • flagsR 代表必须,* 代表允许多个实例
    • units:像素-p,相对-r,染色体单位-u,括号内表示可接受单位,如[p],[pr]
    • expressions: 所有参数都可以用 eval() 求值表达式或代码定义
    • default: 缺省必须参数时将获取默认参数,如果没有默认值可用会抛出错误
    image.png

    相关文章

      网友评论

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

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