circos

circos 学习手册(九)

2020-12-15  本文已影响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>

参数

image.png
上一篇下一篇

猜你喜欢

热点阅读