circos 主要用于展示染色体上的相关数据,根据在染色上的位置进行不同方式的可视化。
首先我们需要一个染色体的位置文件。在circos
中,染色体的位置保存在一个文件当中,通过karyotype
参数进行设置,比如
染色体的位置保存在文件karyotype.human.txt
中,部分内容如下:
采用\t
分隔,共7列内容。前两列内容是规定的,都是chr\t-
,表示这部分内容是定义染色体相关信息的,第3列是染色体的ID, ID必须是唯一的,用于区分不同的染色体,第四列代表染色体的名字,这个名字会显示在最终生成的图片中;第五列和第六列分别代表起始位置和终止位置,这里的长度都是染色体的总长度,最后一列代表的是染色体的颜色,只不过采用了chr
前缀来表示颜色,注意不要和染色体的ID和name 搞混淆了。
在circos
中,内置了许多的颜色,相关的配置保存在软件安装目录的etc/colors.conf
文件中,其中etc/colors.ucsc.conf
文件中采用RGB标准,定义了chr的各种颜色值。
从这里也能够看出,上面的`karyotype.human.txt``文件中,颜色是如何通过最后一列的内容定义的。
染色体的基本参数在ideogram
中进行定义。所有的参数可以分成以下3大类别
染色体的位置
染色体的颜色
染色体的标签
染色体的位置
circos
提供了一个圆形的整体布局,用于展示染色体的数据,每条染色体可以看做圆上的一段弧。通过染色体到圆心的距离来定义染色体的位置。具体的就是通过radius
参数进行定义。
在circos
中,关于这个参数的值,提供了两种定义的方式;
绝对值定义
绝对值的是通过像素定义,对应的后缀为p,代表pixels。比如radius = 1000p
相对值定义
相对值对应的后缀为r
,代表relative的意思。在etc/image.generic.conf
文件中,定义了参照的radius
radius of inscribed circle in image
radius = 1500p
所以我们在配置文件中定义的radius = 0.80r
, 实际等于0.8 * 1500 = 1200 像素。
染色体之间的间距通过spacing
这个block 进行定义,default
参数设置所有染色体之间的默认距离
如果你希望改变某两条染色体之间的距离,可以通过pairwise
这个block, 用法如下
通过染色体的ID 指定具体的两条染色体,之间用;
分隔,然后通过spacing
参数进行定义它们之间的距离。
需要注意的是,这里采用的相对值的定义方法,上面例子中的 20r
代表的是相对default是20倍的距离,所以使用相对值时,一定要理解相对的参照是哪一个。
染色体的颜色
通过thickness
定义染色体的宽度,单位和radius
类似,有r
和p
两种,通常情况下我们使用p
,更加方便。比如thickness = 20p
。
对于染色体的显示,有以下两种方式
线段模式
这个模式是默认模式。在该模式下,染色体就当做一条线段,颜色采用karyotype
中的最后一列。矩形模式
在该模式下,每条染色体被当做一个可以填充的矩形,所以会有边框和填充两部分构成。
stroke_thickness
和 stroke_color
定义边框宽度和颜色。如果希望有填充色,需要设置fill=yes
, 此时会用karyotype
中的最后一列定义的颜色填充这个矩形。
染色体的标签
在karyotype
中,我们定义了染色体的名字,也叫做label
, 关于label 有对应的一系列参数,调整它的显示。
默认情况下,这个名字并不会显示在图上;可以通过show_label
进行显示,比如show_label = yes
。
label 通过文字的形式展现在图上,label_font
设置字体,label_radius
设置位置,label_size
设置大小, label_parallel
设置label的方向,yes
代表和染色体方向平行,no
代表和染色体方向垂直。
一个完整的ideogram
例子如下: