circos 是一款perl 语言开发的画图软件,提供了染色体相关数据的一种可视化方式。其制作的图表精美,被科研工作者广泛使用。Circos可以对染色体相关数据进行可视化,以每条染色体为一个扇区,组成一个圆形,如图1所示。也可以对其他表格形式的数据进行可视化,以每个样本作为扇区,以其上的特征作为图形层次。如图2所示,可以以物种作为扇区,展示物种间的关系。Circos图最初以Perl语言开发,后来又有一些R包被开发用来绘制Circos图。今天的学习主要学习Perl开发的Circos软件。没错,下边这两个美图都是Circos的结果了。

图1

图2

1.Circos软件安装

  Circos软件由Perl语言开发,所以使用circos之前需要安装Perl语言才能执行circos。在Windows环境下推荐使用草莓Perl即Strawberry Perl,它的优势是本身自带了CPAN,方便后续安装Perl的模块。

  从Strawberry Perl网站http://strawberryperl.com/下载64位msi执行文件,并安装。安装完毕,添加环境标量。在DOS窗口下,使用CPAN –i module 命令就可以进行模块安装。

  从Circos网站http://circos.ca/下载软件的压缩文件,Circos在Windows下不需要安装,直接解压即可。把bin路径添加环境变量,使用circos –module命令可以查看Circos所需要的Perl模块,然后使用上述方法进行安装即可。

  测试:circos提供了example,在example/etc路径下有circos.conf文件,运行命令为circos –conf circus.conf,运行此命令则会在该文件夹下生产circos.png和circos.svg,图片如图3所示。如果正确出图,则说明软件安装正确。

图3

2.软件说明

  Circos采用circos  –conf circos.conf的方式运行,其中circos.conf为配置文件。Circos.conf文件中可以分为染色体配置和内圈图形配置两部分。染色体部分为图形中最外圈的部分,为图形的基本部分,该部分指定所需要绘制的染色体,扇区比例,每个扇区半径大小等。内圈图形部分指除了染色体外的其他图形区域,在这部分需要使用<plots> </plots>进行限定。<plots> </plots>限定了所有的内圈图形,每一层图形需要再使用<plot></plot>进行限定。

2.1circos.conf

  染色体配置部分如图4所示。Karyotype指定染色体数据文件;chromosomes_units指定染色体长度单位,需要注意的是,染色体长度需要大于chromosomes_units,否则染色体扇区之间会产生空缺;chromosomes_display_default指定是否显示默认,默认状态下展示文件内所有染色体,颜色为黑色,每个扇区面积相等,且下边对染色体的具体配置信息不起作用;chromosomes指定要显示的染色体;chromosomes_scale指每个扇区占圆周的比例,例如chr1=0.5r,指染色体1占圆周的一半。chromosomes_radius指每个扇区的半径,指定不同的半径,可以使图形展示出发射或内陷的状态,起到内容强调的作用;文件中使用<<>>来指定需要调用的其他配置文件,如<<include ideogram.conf>>指定染色体条带的配置信息。在circos.conf文件中,默认会出现<<include ideogram.conf>>、<<include ticks.conf>>、<image><<include etc/image.conf>></image>、<<include etc/colors_fonts_patterns.conf>> 、<<include etc/housekeeping.conf>>等,可以通过修改ideogram.conf和ticks.conf获得想要的效果,其余几个文件基本不用修改。

图4

  内圈图形配置内容使用<plots></plots>限定,每个<plot></plot>限定每一层的图形,如图5所示。其中type指定该层图形所展示的图形类型,如histogram展示了柱状图;file指定要画图的数据文件,r1和r0分别指定图形在圆圈内所占的半径范围,如r1=0.97r,r0=0.88r,即该层柱状图会出现在0.88半径到0.97半径之间的位置;thickness指定柱状图边框的宽度,0p指定不显示边框;orientation指定柱状图方向向内/向外;

图5

2.2 ideogram.conf

  该配置文件对最外圈染色体进行配置,内容如图6所示。设置内容由<ideogram></ideogram>进行限定。<spacing></spacing>设置了每个染色体条带之间的间隔,设置的值为圆周的比例;radius设置染色体半径占整个图形的比例,可以通过设置不同的radius对图形进行缩放;thickness指定染色体图形边框的宽度;fill指定是否填充颜色;stroke_color设置刻度颜色;stroke_thickness设置刻度宽度;show_ticks设置是否显示刻度;show_label是否显示标签,即每个染色体的名字;label_font、label_radius、label_size分布显示染色体名称的字体,位置,大小等;label_parallel指定染色体名称是否与染色体条带平行。

图6

2.3 数据文件

  数据文件同样分为外圈染色体数据和内圈图形数据。外圈染色体数据基本格式如图7所示。其中第三列、第四列、第七列为染色体名称,第五列和第六列为该染色体长度,该长度在展示的时候会根据设置的单位长度进行刻度标注。

图7

  内圈图形数据会根据不同的图形类型有不同的格式,在此以柱状图和标注文字,即type= histogram和type=text为例。柱状图的数据文件如图8所示。第一列为染色体名称;第二列和第三列为柱子展示区间;第四列为柱子高度;第五列为柱子颜色。该数据展示的是在每个染色体对应三个柱子,每个柱子区间分别为0-300000,300001-600000,600001-100000。

图8

  标注文字的数据文件格式如图9所示。第一列为染色体名称,第二列和第四列为文字位置,第四列为文字内容。

图9

2.4 软件配色

  软件有一套自己的颜色系统,颜色及对应的名称在解压后的文件夹内,文件名字为gddiag.png,内容如图10所示。该文件给出了可以使用的颜色,没以后有一个名字,对应一个系列,每行又有多个子系列。可以用指定行名和子系列的方式使用颜色,例如rdylbu-3-div-3,指rdylbu- div所对应的行的第三个子系列的第三个颜色。知道了颜色及使用方式就可以在配置文件或数据文件中对图形设置不同的颜色了。

图10

3.结果

  在本次学习中使用一个SNP相关的数据进行展示,分别对不同的文件进行配置,并进行绘图,绘图结果如图11所示。

图11

Circos软件学习的更多相关文章

  1. lotus domino 软件学习网站(自己收藏的)

    lotus domino 软件学习网站(自己收藏的) 我学习lotus domino时间也不是很长,相比较学习lotus,学习java的时间还是比较长的,刚开始看网上的说法都是不看好lotus的, 但 ...

  2. 【平差软件学习---科傻】四、科傻二等水准平差(参数设置和in1文件讲解)

    [平差软件学习---科傻]四.科傻二等水准平差(参数设置和in1文件讲解) 这个算是最后一集了,也可能不是如果我想到不足的地方我会在补上一集视频,或者是文章页.总感觉自己操作的很熟练,到自己真正讲的时 ...

  3. 【软件学习】怎么在Word里面设置MathType分隔符,使公式按照章节自动编号

    前提 确保已安装好了MathType,且在设置为Word加载项 若没有安装或设置为加载项,请转至博客另一篇文章: [软件学习]如何下载安装Mathtype,并将其加载至Word 第一步 点击MathT ...

  4. 【分享】LateX排版软件学习教程合集

    来源于:http://www.hejizhan.com/html/xueke/416/x416_13.html  LATEX2e科技排版指南.pdf 8.3 MB  An Example LaTeX ...

  5. 优秀开源软件学习系列(一)——从零学习Spring4以及学习方法分享

    一.目的1.掌握Spring4怎样使用,以便将这个框架作为自己的一项技能.2.掌握Spring官网是怎样介绍其产品的,在心中对Spring有最官方的.最直观的了解.在Spring的相关领域,能够知道怎 ...

  6. beyond compare 软件学习

    beyond compare 软件可以实现基本的文件对比,这点和 NotePad++ 的功能一样.但是在实现文件夹与文件夹之间的对比的话,就要使用 beyond compare 进行对比,效率是成倍提 ...

  7. 烂泥:gpg加解密软件学习

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb. 为什么要学习gpg呢?因为要在Linux下把一个邮箱的密码加密,不让其他人看到该邮箱真 ...

  8. [XMPP]iOS聊天软件学习笔记[一]

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  9. 安装软件 学习linux命令

    nm -D /usr/lib64/libstdc++.so.6 | grep GLIBCnm dumps named symbols, -D for dynamic libs, and grep fo ...

  10. UI_UE在线就业班(2)(Adobe Illustrator软件学习)

    Adobe Illustrator软件的使用     认识AIUI_UE在线就业班(2) .   ▼ AI是Adobe Illustrator的英文缩写,是Adobe公司旗下推出的一款基于矢量图形制作 ...

随机推荐

  1. Python实现微博舆情分析的设计与实现

    引言 随着互联网的发展,社交媒体平台如微博已经成为公众表达意见.分享信息的重要渠道.微博舆情分析旨在通过大数据技术和自然语言处理技术,对微博上的海量信息进行情感分析.热点挖掘和趋势预测,为政府.企业和 ...

  2. Power BI新卡片更改显示单位

    Power BI 不知道什么时候发布了新卡片,照现在官方来说,该视觉对象目前还属于预览版,但已经可以正常使用了,对比旧的卡片,显示效果个人觉得会友好一些,详见官方说明:创建"新"卡 ...

  3. Linux Shell_read

    介绍 从控制台输入 基本语法 read [选项] 参数 常用选项 |选项|功能| |-|-| |-p|指定读取值时的提示符| |-t|指定取值时等待的时间(秒),如果没有在指定时间输入,就不再等待了| ...

  4. P3920 WC2014 紫荆花之恋

    P3920 WC2014 紫荆花之恋 毒瘤题目,动态点分树. 前置科技点 替罪羊树 高速平衡树(除去 fhq_treap 和 splay 之外的所有平衡树) 约定 \(dis(u,v)\) 为原树上 ...

  5. 重新使用Java的七个理由

    译者注:此文系作者于2011年7月11发表于OnJava O'Reily正在庆祝Java7的发布,以及7月25日到27日即将在波兰开展的 OSCON Java 大会. Java宣告回归了,同胞们.当然 ...

  6. golang之常用方法/函数

    1. io.Reader转化为字符串, byte切片 import "bytes" func StreamToByte(stream io.Reader) []byte { buf ...

  7. Javascript遍历目录时使用for..in循环无法获取Files对象和SubFolders对象问题的解决方法

    1 Javascript遍历目录时使用for..in循环无法获取Files对象和SubFolders对象 1.1 问题场景   在JavaScript中遍历目录,使用for.. in循环时,无法获取到 ...

  8. FileSaver 文件导出

    1.前言 本节主要讲述如何将后台返回的JSON以文件的形式保存到本地 官方文档 兼容性(转载) Browser Constructs as Filenames Max Blob Size Depend ...

  9. redmine部署,踩坑而过

    背景:部门想用个工具来做项目执行进度的管理,为了保证数据私有并且不想花钱,选了redmine. 环境:阿里云服务器,windows server R2企业版 软件版本构成: 官方版本说明http:// ...

  10. Spring框架IoC核心详解

    介绍 IoC(Inversion of Control:控制反转) 是一种设计思想,而不是一个具体的技术实现.IoC 的思想就是将原本在程序中手动创建对象的控制权,交由 Spring 框架来管理,由S ...