花了不到一个月的时间,断断续续的把小骆驼的90%内容过了一遍。在学习perl之前,知道了circos这个软件,可以帮助我们画一些非常高大上的圈圈图~但是这个软件是基于perl的,现在大体了解一些perl后,决定还是学习一下circos的使用。毕竟画出来的图真的很漂亮。。。比如:
图片来源于官网
(一)什么是circos?
Circos是一个可视化数据和信息的软件包。它以圆形layout可视化数据,这使得Circos非常适合探索objects或位置之间的关系。Circos是创建高质量信息图形和插图的理想选择。可以很好地控制图形中的每个元素。
Circos很灵活。虽然最初设计用于基因组数据可视化,但它可以从任何领域的数据创建图形,从基因组学到可视化迁移到数学艺术。如果你有需要描述一个或多个尺度的关系或多层注释的数据,那么Circos就非常适合进行可视化。
Circos可以自动化。它由纯文本配置文件控制,这使得它很容易集成到数据采集、分析和报告的pipeline中(数据pipeline是一个多步骤的过程,其中数据由多个独立的工具分析,每个工具将其输出作为下一个步骤的输入传递)。
(二)circos的安装
这里我只在ubuntu里进行安装,更多操作系统平台的安装方法可以看官方教程:here
下载circos:http://circos.ca/software/download/
这里我下载的是0.69版的:
$ wget http://circos.ca/distribution/circos-0.69.tgz
$ tar xvfz circos-0.69.tgz
$ ln -s circos-0.69 current
$ ll
total 30848
drwxr-xr-x 1 yanfang yanfang 4096 Nov 10 14:24 ./
drwxr-xr-x 1 yanfang yanfang 4096 Nov 10 14:20 ../
drwxr-xr-x 1 yanfang yanfang 4096 Nov 10 14:24 circos-0.69/
-rw-r--r-- 1 yanfang yanfang 31574696 Feb 24 2016 circos-0.69.tgz
lrwxrwxrwx 1 yanfang yanfang 11 Nov 10 14:24 current -> circos-0.69/
我使用的是ubuntu20.04,还需要安装:
$ sudo apt-get install libgd-dev #这个软件包的名字在不同的ubuntu版本里对应的名字不一样,安装前要看一下,不然会报错
#加入环境变量
$ export PATH=/home/yanfang/circos/circos-0.69/bin:$PATH
$ . ~/.bashrc
$ which circos
/home/yanfang/circos/circos-0.69/bin/circos
$ echo $PATH #检查PATH里是否已经成功添加了circos
/home/yanfang/circos/circos_0.69/circos-0.69/bin:.........
检查module:
$ cd current
$ pwd
/home/yanfang/circos/current
$ bin/circos -modules
ok 1.38 Carp
ok 0.42 Clone
ok 2.63 Config::General
ok 3.75 Cwd
ok 2.167 Data::Dumper
ok 2.55 Digest::MD5
ok 2.85 File::Basename
ok 3.75 File::Spec::Functions
ok 0.2304 File::Temp
ok 1.51 FindBin
ok 0.39 Font::TTF::Font
ok 2.71 GD
ok 0.2 GD::Polyline
ok 2.49 Getopt::Long
ok 1.16 IO::File
ok 0.428 List::MoreUtils
ok 1.52 List::Util
ok 0.01 Math::Bezier
ok 1.999806 Math::BigFloat
ok 0.07 Math::Round
ok 0.08 Math::VecStat
ok 1.03_01 Memoize
ok 1.76 POSIX
ok 1.29 Params::Validate
ok 1.69 Pod::Usage
ok 2.05 Readonly
ok 2017060201 Regexp::Common
ok 2.84 SVG
ok 1.19 Set::IntSpan
ok 1.6611 Statistics::Basic
ok 2.62 Storable
ok 1.20 Sys::Hostname
ok 2.03 Text::Balanced
ok 0.59 Text::Format
ok 1.976 Time::HiRes
(三)下载示例数据以及脚本
下载示例数据,还是在上面下载页面里:
解压后有这些文件:
其中data文件夹里包含了各种的示例数据,tutorials文件夹里包含了各种的脚本。(因为circos是基于perl的软件,而perl是基于脚本的编程语言,所以不同于其他软件,circos是需要脚本的,不是光有数据就可以的。)
(四)画一个最最基本的圈圈
可以先用tutorial里的1文件夹里的1子文件夹的脚本作为例子,体会一下。
首先看一下脚本里都有什么:
# 需要绘制的数据,这里是人类基因组,这个数据可以在我们前面下载好的data文件夹里查看
karyotype = data/karyotype/karyotype.human.txt
<ideogram>
# <ideogram>定义绘制数据的片段的位置、大小、标签和其他属性。这些片段通常是染色体,但可以是任意的整轴(整数的轴)。
<spacing>
#ideograms里的间距。后缀“r”表示相对值。它相对于圆周长而言的(例如间距是圆周长的0.5%)。
default = 0.005r
#你可以增加某两个片段的间距,比如用下面的代码:
#<pairwise hsY;hs1>
#spacing = 20r
#</pairwise>
</spacing>#一般block都是成对的名字,结尾用斜杠+名字代表这个block的结尾
# ideograms内的径向位置。这个值通常是相对的(“r”后缀)。
radius = 0.90r
# ideograms的厚度, 它可以是绝对的(如像素,“p”后缀)或相对的(“r”后缀)。相对而言,它是图像半径的一部分。
thickness = 20p
# Ideograms可以按 filled, outlined, 或both绘制。填充时,颜色将取自核型文件中(karyotype file)的最后一个字段,或者由chroomes_colors设置。颜色名称在http://www.circos.ca/documentation/tutorials/configuration/configuration_files里讨论
# 当stroke_thickness=0p 或参数丢失, the ideogram是没有轮廓的
fill = yes
stroke_color = dgrey
stroke_thickness = 2p
</ideogram>
################################################################
#剩余的内容是标准的和必需的。它是从Circos中的默认文件中导入的。
#下面这些应该出现在每个Circos的conf文件中,并根据需要被覆盖。最好使用相对路径来设置这些文件。这样,如果在当前目录下没有找到文件,就会从Circos distribution中提取。
<image>
# Included from Circos distribution.
<<include etc/image.conf>>
</image>
# RGB/HSV/LCH颜色定义,颜色列表,字体位置,填充模式。包含在 Circos distribution里.
#在旧版本的Circos中,颜色、字体和图案都是单独包含的。现在,这是通过一个中心文件完成的。确保没有重复导入这些值。
# *** DO NOT DO THIS ***
# <colors>
# <<include etc/colors.conf>>
# <colors>
# **********************
<<include etc/colors_fonts_patterns.conf>>
# Debugging, I/O an dother system parameters,Included from Circos distribution.
<<include etc/housekeeping.conf>>
上面的脚本是最最基本的一个circos绘制基因组的脚本(conf文件),它绘制了基因组的骨架(就是一个圈)。那么有了脚本,如何运行?
一般的格式是:
$ perl circos的PATH路径 -conf conf文件所在的位置 -outputfile 输出文件名 -outputdir 输出在哪个文件夹
比如我运行的代码,我设置的是输出图在当前文件夹,输出的文件名是practice1_1.png:
$ perl /home/yanfang/circos/circos_0.69/circos-0.69/bin/circos -conf ./circos.conf -outputfile practice1_1.png -outputdir ./
然后会弹出很多行信息,最后会告诉你图存在哪个文件夹里的:
......这里省略很多行
debuggroup output 2.30s created PNG image ./practice1_1.png (75 kb)
debuggroup output 2.31s created SVG image ./practice1_1.svg (13 kb)
打开你的当前文件夹,会发现多出两个图(两种不同格式的):
打开看一下,就可以看到我们刚才使用示例脚本画出的染色体骨架了:
circos的软件官网还有很多详细的教程,后续会继续学习并分享~
网友评论