circos软件使用初探

花了不到一个月的时间,断断续续的把小骆驼的90%内容过了一遍。在学习perl之前,知道了circos这个软件,可以帮助我们画一些非常高大上的圈圈图~但是这个软件是基于perl的,现在大体了解一些perl后,决定还是学习一下circos的使用。毕竟画出来的图真的很漂亮。。。比如:


circos软件使用初探_第1张图片
图片来源于官网

(一)什么是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

(三)下载示例数据以及脚本

下载示例数据,还是在上面下载页面里:

解压后有这些文件:

circos软件使用初探_第2张图片

其中data文件夹里包含了各种的示例数据,tutorials文件夹里包含了各种的脚本。(因为circos是基于perl的软件,而perl是基于脚本的编程语言,所以不同于其他软件,circos是需要脚本的,不是光有数据就可以的。)

(四)画一个最最基本的圈圈

可以先用tutorial里的1文件夹里的1子文件夹的脚本作为例子,体会一下。

首先看一下脚本里都有什么:

# 需要绘制的数据,这里是人类基因组,这个数据可以在我们前面下载好的data文件夹里查看
karyotype = data/karyotype/karyotype.human.txt


# 定义绘制数据的片段的位置、大小、标签和其他属性。这些片段通常是染色体,但可以是任意的整轴(整数的轴)。


#ideograms里的间距。后缀“r”表示相对值。它相对于圆周长而言的(例如间距是圆周长的0.5%)。
default = 0.005r
#你可以增加某两个片段的间距,比如用下面的代码:
#
#spacing = 20r
#
#一般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   



################################################################
#剩余的内容是标准的和必需的。它是从Circos中的默认文件中导入的。
#下面这些应该出现在每个Circos的conf文件中,并根据需要被覆盖。最好使用相对路径来设置这些文件。这样,如果在当前目录下没有找到文件,就会从Circos distribution中提取。


# Included from Circos distribution.
<>                


# RGB/HSV/LCH颜色定义,颜色列表,字体位置,填充模式。包含在 Circos distribution里.
#在旧版本的Circos中,颜色、字体和图案都是单独包含的。现在,这是通过一个中心文件完成的。确保没有重复导入这些值。

# *** DO NOT DO THIS ***
# 
# <>
# 
# **********************
<> 

# Debugging, I/O an dother system parameters,Included from Circos distribution.
<> 

上面的脚本是最最基本的一个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软件使用初探_第3张图片

打开看一下,就可以看到我们刚才使用示例脚本画出的染色体骨架了:

circos软件使用初探_第4张图片

circos的软件官网还有很多详细的教程,后续会继续学习并分享~

你可能感兴趣的:(circos软件使用初探)