circos软件使用初探

作者: 生信start_site | 来源:发表于2020-11-11 09:45 被阅读0次

    花了不到一个月的时间,断断续续的把小骆驼的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的软件官网还有很多详细的教程,后续会继续学习并分享~

    相关文章

      网友评论

        本文标题:circos软件使用初探

        本文链接:https://www.haomeiwen.com/subject/tdgmpktx.html