配置文件语法
配置文件是通过 Config::General
模块进行解析的。
看过上一篇的朋友应该记得,完成 circos
环境配置是需要安装这一 Perl
模块的。
所有相关功能都会在下面描述,但是对于有需求的朋友,可以浏览 Config::General
模块的的主页来了解这些文件的语法和解析细节。
Config::General
模块的主页:
https://metacpan.org/pod/release/TLINDEN/Config-General-2.50/General.pm
配置语法
1 简单语法
配置通过如下设置方式,变量 => 值
variable = value
虽然 Config::General
支持以空白符作为定界符,但是在 circos
中所有的定义都需要用 =
在一些情况下,参数支持列表(通常以逗号分隔)
param = value,value,...
在少数情况下,参数可以接受多个实例
radius = 0.9r
radius = 0.8r
如果你尝试为不支持的参数进行多重定义,则会引发错误
一些设置可以用 块 的方式包裹起来,形成一种层次结构
了解 xml
或者 html
文件的朋友应该很熟悉这种以 <label> </label>
来划定块区域的方式
<ideogram>
thickness = 30p
fill = yes
...
</ideogram>
一些块又可以包含其他块,例如数据配置<link>
,包含在 <links>
块中
<links>
<link>
file = data/set1.txt
color = black
...
</link>
<link>
file = data/set2.txt
color = red
...
</link>
</links>
注意:块标签必须配对,要有结束标签
<ideogram>
...
<ideogram> # <-- 缺少闭合标签,会报错
2 块标签
块 flag
值:
-
R
,代表必须 -
M
,代表允许多个块,块内容会合并 -
+
,代表允许多个块
2 指定配置参数的方式
可以在 4
个地方指定配置方式,重要性根据顺序增加:
- 在所有图形轨迹中配置全局数据点( 在
<plots>
或<links>
块标签内设置) - 在给点图形轨迹中配置局部数据点(在
<plot>
或<link>
块标签内设置) - 为单个数据点配置(在数据文件中配置)
- 使用规则块(在
<rule>
块标签内设置)
根据上面的顺序,在 rule 内设置的参数值会覆盖 数据文件 中的值;
数据文件中的值会覆盖任何 <plot>
或 <link>
块标签内设置的值;
又会覆盖上一层 <plots>
或 <links>
块标签内设置的值。
<plots>
# 全局参数
fill_color = white
<plot>
... # 省略其他参数, 如 file, type, position, etc
# 在这个局部图形轨迹中,覆盖参数 fill_color 的值
fill_color = grey
# 在数据文件 data.txt 中:
#
# ...
# hs1 10 20 0.50 fill_color=dblue
# ...
# 这个数据点会覆盖上面的颜色
<rules>
<rule>
condition = var(value) < 0.33
# 匹配条件筛选数据点,如,值小于 0.33 的
# fill_color 设置为 orange
fill_color = orange
</rule>
</rules>
</plot>
</plots>
如果你要画大量相似的图形,像直方图组,热图等,通过设置全局参数将非常方便
<plots>
# 图形类型参数 type,指定为 heatmap,热图
type = heatmap
min = 0
max = 1
# spectral-4-div 代表一个颜色列表,下面会介绍
color = spectral-4-div
<plot>
file = data.1.txt
r1 = 0.6r
r0 = 0.5r
...
</plot>
<plot>
file = data.2.txt
r1 = 0.7r
r0 = 0.6r
...
</plot>
<plot>
file = data.3.txt
r1 = 0.8r
r0 = 0.7r
...
</plot>
<plot>
file = data.4.txt
r1 = 0.9r
r0 = 0.8r
...
</plot>
…
</plots>
上面的例子中,每张图具有相同的最大值、最小值以及同样的配色
而每个 <plot>
块内部的参数,指定了只属于该模块的参数配置
3 外部导入
像一些参数配置是很少需要修改的,例如颜色和字体
为了保持主配置文件的模块化,可以使用 <<include ...>>
来导入这些静态的值
在 circos
中,应该始终从 etc/
目录下导入两个文件
# 颜色、字体和填充模式
<<include etc/colors_fonts_patterns.conf>>
# 系统和 debug 参数
<<include etc/housekeeping.conf>>
etc/colors_fonts_patterns.conf
文件又导入一些其他文件
# etc/colors_fonts_patterns.conf
<colors>
import(etc/colors.conf)
</colors>
<fonts>
import(etc/fonts.conf)
</fonts>
<patterns>
import(etc/patterns.conf)
</patterns>
circos
要求这些块必须存在和设置值
通常,会将 ideograms
块单独存为 ideogram.conf
将刻度线格式存为 ticks.conf
因为这两个配置通常比较长,但是又和数据没有关系,可以通过外部文件导入方式,导入主配置中
<<include ideogram.conf>>
<<include ticks.conf>>
因为,通常这两个文件会和 circos.conf
放在同一个文件夹下面,所以前面不需要加路径
如果你有一些参数很少改变,应该考虑把它存储在外部文件中
你可以在配置文件的任意位置用 <<include >>
导入,如块内部
<plot>
file = data.4.txt
r0 = 0.8r
r1 = 0.9r
<<include plotsettings.conf>>
</plot>
包含可以任意嵌套,疯狂套娃?哈哈
当你用 <<include CONFIG_FILE_PATH/CONFIG_FILE>>
导入时,circos 将会搜索下面的路径
-
CONFIG_FILE
的相对路径 -
CONFIG_FILE_PATH/etc
的相对路径 CIRCOS_PATH/etc
CIRCOS_PATH/../etc
CIRCOS_PATH/..
CIRCOS_PATH
(未完待续……)