circos
中丰富多样的参数,允许我们更加的展示数据。高度定制化的同时,也意味着学习成本的提高。从原始数据的整理,到可视化参数的调整,都必须做到了如指掌,才能得心应手的使用circos
。 为了方便使用,circos
官网提供了一系列有用的脚本,封装成了circos tools
工具包。
下载页面如下
http://circos.ca/software/download/tools
解压缩之后,目录结构如下
├── binlinks
├── bundlelinks
├── calcdatarange
├── categoryviewer
├── clustal2link
├── colorinterpolate
├── connectogram
├── convertlinks
├── filterlinks
├── maketutorialimages
├── matrix
├── orderchr
├── randomdata
├── randomlinks
├── resample
└── tableviewer
每个文件夹对应一个小工具,本篇着重介绍tableviewer
这个小工具。
tableview
提供了对表格数据的可视化功能,由以下3个脚本构成
- make-table
- make-conf
- parse-table
1. make-table
make-table
随机生成一个表格数据, 用法如下
make-table -rows 4 -col 3 -brief > table.txt
生成的表格如下
2. parse-table
parse-table
读取表格数据,然后计算相关信息
parse-table -file table.txt > parsed-table.txt
3. make-conf
make-conf
读取parse-table
的输出,生成对应的数据,用法如下
make-conf -file parsed-table.txt -dir data
在data
目录中,会生成一系列的数据和配置文件。需要注意的是,data
目录必须事先建立好。
├── all.txt
├── cap.col.txt
├── cap.row.txt
├── cells.txt
├── colors.conf
├── colors_percentile.conf
├── col.txt
├── karyotype.txt
├── row.txt
├── scaling.conf
└── segmentlabel.txt
从上面列表可以看出,并没有关键的circos.conf
文件。这个文件存放在tableviewer/etc
目录下,而且该目录下的其他配置文件也是必须的 ,所以在运行时,需要特别注意。
我的做法是将etc
目录拷贝到生成的data
的上层目录,然后在新建一个img
目录,最终的目录结构如下
├── data
├── etc
└── img
data
目录下存放make-conf
生成的文件,etc
目录下存放tableviewer/etc
目录下的内容,img
是新建目录,用于存放最终生成的图片。
目录结构建好之后,运行如下命令即可
circos -conf etc/circos.conf
生成的图片如下
每行和每列的标签都作为一条染色体,染色体的长度由每行或每列的和决定,每条染色体对应一种颜色。结合之前生成的table
再来看下,table
共有4行3列,从A到G, 对应的图中就有A到G共7条染色体。
图中提供了两圈的ticks
, 第一圈为绝对值,比如B
染色体对应的刻度有0和100;第二圈为百分比,每条染色体都标记了0到100%。
在染色体之外有两圈highlights
, 二者的内容是一样的 ,只不过为了美观,宽度稍有不同。展示的都是每行或者每列数据的组成, 对于每一行来说,都有3列,所以有3种颜色;对于每一列来说,都有4行,所以有4种颜色;每种颜色所占的区域沿着顺时针方向,从小到大。
在染色体内部,还有一圈highlights
, 对于所有的行来说,都有E, F, G 3列,所以都有3种颜色,顺序都是一样的,按照每列的和,沿顺时针方向从小到大,从染色体长度可以看出来,从小到大依次为F, G,E; 对于所有的列而言,也是类似的,都有A,B,C,D 4行,所以有4种颜色,按照每行的和,沿顺时针方向从小到大,从染色体长度可以看出来,从小到大依次为B, C, D,A。
最内圈的links
展示了单元格的数据,每个单元格可以看做对应的行和列相连的区域,示意图如下:
通过tableviewer
这个小工具,可以方便的展示表格数据,而且其中的思想也特别值得我们借鉴。
从图上,我们可以直观的看出每行或每列的构成。传统的可视化手段,为了直观看出各部分的百分比,通常采用饼状图的展现形式,对于一张表格而言,需要行数加上列数张的饼图,才能完整的展示其构成,而用circos
, 一张图就可以搞定了。