circos 学习手册(九)
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_separation 和 label_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 Type 和 Open 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 的属性,如 chr,label
# 只显示 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() 无法轮询 HASH,ARRAY 或对象(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>
参数
-
flags:
R代表必须,*代表允许多个实例 -
units:像素-
p,相对-r,染色体单位-u,括号内表示可接受单位,如[p],[pr] -
expressions: 所有参数都可以用
eval()求值表达式或代码定义 - default: 缺省必须参数时将获取默认参数,如果没有默认值可用会抛出错误
image.png