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: 缺省必须参数时将获取默认参数,如果没有默认值可用会抛出错误
网友评论