Circos入门教程

Circos入门教程1Circos 简介 Circos 是一个非常酷炫的基因组数据可视化软件 能够将基因组数据映射到环形的基因组坐标上 用相互嵌套的环道来展示基因组数据 还可以通过连接线来呈现基因组区块之间的关系 Circos 的开发者是一位加拿大的生物信息学家 MartinKrzywi 值得一提的是 他还是一位专业的摄影师 于是 科学和艺术的交融 催生了 Circos 这款强大的可视化软件 果真不懂艺术的码农不是好的生物学家 自从 Circos 诞生以后 圈图就成了生物信息可视化的明星图形 不时见诸顶尖杂志的文章 尽管有意见

1 Circos简介

2.1 准备工作

由于Circos是基于perl语言开发的,所以perl语言编译器的安装是必须的(建议Perl 5.8.x及以上版本),除此之外还需要很多perl依赖模块,可以通过测试查看缺少哪些模块并安装。详细的准备要求可以见http://circos.ca/software/requirements/。

2.2 下载及解压

在Circos官网的下载页面(http://circos.ca/software/download/),可以找到Circos最新版的下载链接,其中circos-0.69-6.tgz是目前最新版的安装包,而circos-course-2017.tgz则是配套的教程数据。

wget http://circos.ca/distribution/circos-0.69-6.tgz tar xvfz circos-0.69-6.tgz cd circos-0.69-6 

2.3 测试依赖模块

首先可以列出来Circos需要哪些依赖模块:

cd $PATH/circos-0.69-6/bin #$PATH是解压后circos文件夹的上级全路径 ./list.modules 

当然,这些依赖模块有些可能已经安装过了,重复安装比较浪费时间,所以可以直接运行一下Circos,看它的报错信息说缺少哪些模块,再一个个安装:

./circos -v 

2.4 安装依赖模块

Perl模块的安装方法不再细讲。

./circos -v 

如果不出现报错信息,一般就没有问题了。

3 认识Circos

3.1 Circos的运行

Circos的运行命令非常简单,在准备好输入数据和配置文件后,只需要一行简单的代码,就可以产生结果图,在软件目录$PATH/circos-0.69-4/example下有测试样例,任务执行脚本run中的核心命令是:

$PATH/bin/circos -conf circos.conf 

运行一下之后,大约半分钟就会产生结果:

cd $PATH/circos-0.69-4/example ./run 

产生的结果图有两个,其中circos.png是用来预览的位图文件,circos.svg是用来出版或者进一步加工的矢量图文件。

是不是看起来很简单?

这么酷炫的效果,当然不是这么容易就能实现的。所以,真正的工作量,都在输入数据的准备和配置文件的设计上。

3.2 Circos的配置结构

圈图中各个环道,是依赖一系列依赖调用的配置文件描述出来的,从底层的颜色等,到更高层的抽象,以及最终的元配置,构成了一个堆叠起来的配置文件金字塔。

Circos的配置文件后缀为.conf,内容是标记性文本格式的,类似于HTML或者XML,每个标签对代表一个配置块,起始标记为,终止标记为。配置块中的基本语法就是:

variable = value 

一个简单的配置块:

<plots> type = line #缩进不是必须的,只是方便查看而已 thickness = 2 …… <plot> 

每个标签对可以使用多次,或者相互嵌套。因此就像编程中的函数或者循环结构一样,有全局变量和局部变量的区分,高级的或者外层的变量对于层内的所有实例都是有效的,而层内的定义则是优先级最高的。例如,下面配置中的fill_color = blue对于对中所有实例都有效,除非实例内部自己用局部变量进行定义,如内部嵌套的第一个对中的fill_color = red:

<plots> fill_color = blue …… <plot> fill_color = red …… </plot> <plot> …… </plot> </plots> 

一些围绕同一个主题的重要配置块,可以另外单独写到一个配置文件中,再由其他的模块导入调用,所以理论上我们可以把所有的配置写在同一个文件中,也可以把每个配置块都分开到不同的文件中写,最后统一调用。

其中最基本的配置文件都放在$PATH/circos-0.69-4/etc下面,主要是:

Housekeeping.conf #基本框架配置,circos必不可少的配置文件,一般直接导入即可。 fonts.conf #字体配置文件,其中,代表字体的标签与circos/fonts文件夹下的otf或ttf文件一一对应。 patterns.conf #模式配置文件,其中,标签与circos/tites文件夹下的png文件一一对应,然后根据patterns.svg.conf生成相应的svg文件。 colors.conf #颜色配置文件,导入了colors.brewer.conf、colors.hsv.conf和colors.ucsc.conf。在circos中,颜色除了绝对路径,还有很多表达方式,如hs1,red,reds-9-seq-1等,是因为这些字符在colors配置文件中已经赋予了特定的绝对路径。 

以上的基本配置大多数情况下无需调整,直接调用导入即可。导入配置的基本格式是:

<<include etc/*.conf>> #etc/*.conf就是要导入的配置文件的相对或者绝对路径 

还有一些经常用到的其他配置,可以根据自己喜好定制:

ideogram.conf #染色体展示的配置文件,包括是否展示bands,染色体展示位置、染色体间距离、染色体标签位置等。 ticks.conf #刻度标签配置文件,可以导入到ideogram.conf中,也可以直接导入到主配置文件中。 image.conf #对image大小、背景颜色、输出目录、输出文件形式以及染色体在圆周上的起始位置等进行设置。 

最后,这些配置文件都会导入到circos.conf,基本内容是:

karyotype = data/karyotype/karyotype.mouse.mm9.txt #核型文件 chromosomes_units =  #就是其他的配置文件中距离单位u的大小,以bp来衡量,一般大的基因组倾向于把一个单位的长度设置得大一些 chromosomes_display_default = yes <<include mydata/ideogram.conf>> <<include mydata/ticks.conf>> …… <image> <<include etc/image.conf>> </image> <<include etc/colors_fonts_patterns.conf>> <<include etc/housekeeping.conf>> 

配置完所有的配置文件后,最后将这个元配置文件输入Circos就可以产生结果:

$PATH/bin/circos -conf circos.conf 

4 核型图绘制

核型数据是Circos中最基本的,也是必需的数据,核型数据的格式一般为

#染色体 - 染色体编号(ID) 图显示名称(Label) 起始 结束 颜色 chr - Gmax01 1 0  chr1 chr - Gmax02 2 0  chr2 chr - Gmax03 3 0  chr3 …… #band DOMAIN ID LABEL START END COLOR band hs1 p36.33 p36.33 0  gneg band hs1 p36.32 p36.32   gpos25 band hs1 p36.31 p36.31   gneg band hs1 p36.23 p36.23   gpos25 band hs1 p36.22 p36.22   gneg ... 

染色体和条带描述放在同一个数据文件中,各列的含义是:

在Circos软件目录中,已经内置了人类和小鼠的核型文件,以供调用。

由于圈图的应用范围拓展到了生物学以外的领域,所以这个核型数据也可以抽象为一种单纯的坐标体系来自由定义。

4.2 核型配置文件

核型配置文件就是ideogram.conf,其中基本的配置变量如下:

<ideogram> show = yes <spacing> default = 0.005r #染色体间的空隙 </spacing> thickness = 25p #ideograms的厚度,可以使用r(比例关系)或p(像素)作为单位 fill = yes #设定ideograms是否填充颜色。填充的颜色取决于 karyotype 指定的文件的最后一列。 radius = 0.8r #设定ideograms的位置 show_label = yes #设定是否显示label  label_font = default#设定label的字体 label_radius = dims(ideogram,radius_outer) + 80p #设定label的位置 label_size = 40p #设定label的字体大小 label_parallel = yes #设定label的字体方向,yes是易于浏览的方向。 </ideogram> 

其中,Circos的配置中有四种单位,p, r, u, b

除此之外,还要配置一下刻度文件ticks.conf,基本内容是:

show_ticks = yes #是否显示 ticks show_tick_labels = yes #是否显示 ticks 的 lables <ticks> tick_label_font = light radius = dims(ideogram,radius_outer) + 10p #设定 ticks 的位置 label_offset = 5p #设置 ticks' label 离 ticks 的距离 label_size = 20p #设置 ticks' label 的字体大小 multiplier = 0.001 #设定 ticks' label 的值的计算。将该刻度对应位置的值 * multiplier 得到能展示到圈图上的 label 值。 color = black #设定 ticks 的颜色 thickness = 1p # 设定 ticks 的厚度 <tick> spacing = 50u #设置每个刻度代表的长度。 size = 12p #设置 tick 的长度 show_label = yes #是否显示tick labels </tick> <tick> label_separation = 1p spacing = 5u size = 7p show_label = no </tick> </ticks> 

ideogram.conf和ticks.conf这两个配置文件都已经导入circos.conf文件中

<<include etc/colors_fonts_patterns.conf>> <<include ideogram.conf>> <<include ticks.conf>> karyotype=/ldfssz1/HT/wangdaoming/test/circos/test_2/data/hp.karyotype.txt chromosomes_reverse = /hp_26695/ <image> <<include etc/image.conf>> </image> chromosomes_units = 1000 chromosomes_display_default = yes <<include etc/housekeeping.conf>> 

然后在circos.conf中导入该配置,直接运行Circos:

$PATH/bin/circos -conf circos.conf 

5.1 数据文件格式

#染色体编号 起始位置 终止位置 value 设置 hp_26695 1 200 0.5926 hp_26695 201 400 0.1928 fill_color=red,z=68 hp_26695 401 600 -0.0822 hp_26695 601 800 -0.5149 hp_26695 801 1000 -0.1505 hp_26695 1001 1200 -0.04 hp_26695 1201 1400 -0.22 

内容很容易理解,其中设置这一列可有可无,多个设置就用逗号隔开。

Connectors的数据格式:

chr firstLocal secondLocal 

在这里插入图片描述
Highlights的数据格式:

chr start end fill_color=color,…,… 

在这里插入图片描述
5.2 数据图配置

以折线图(line)为例,line.conf的基本内容如下:

<plots> type = line #设定显示类型 thickness = 2p #折线图的粗细 <plot> max_gap = 1u file = data/hp.GCskew.txt #输入数据 color = vdgrey #折线颜色 min = -0.5 #环道内圈代表的数值下限,超出下限的数值不会显示,下同 max = 0.5 #环道外圈代表的数值上限 r0 = 0.85r #环道内圈位置 r1 = 0.95r #环道外圈位置 fill_color = vdgrey_a3 <rules> <rule> #设置折线图大于0部分显示为蓝色 condition = var(value) > 0 color = blue fill_color = blue_a1 </rule> <rule> #设置折线图小于0部分显示为红色 condition = var(value) < 0 color = red fill_color = red_a1 </rule> </rules> </plot> </plots> 

在circos.conf中导入该配置,然后运行后结果如下:

在这里插入图片描述
发现一个隐藏的注意事项,2D环道绘图的输入数据文件的最大容许行数为25000,如果超过的话会报错,

Circos::Error::fatal_error(“track”, “max_number”, 32366, “line”, “input.data.txt”, 25000) called at $CIRCOS_PATH/circos-0.69-4/bin/../lib/Circos.pm line 1557 

所以,如果输入文件行数超过了限额,就需要拆分为多个文件,每个文件的行数都要小于25000。

其他的细节配置和其他数据图的绘制都大同小异,可以详见circos的官网的文档介绍。

6 连线图绘制(Links)
连线图是圈图中特殊的一类图形,不同于纯粹依赖染色体坐标定位,和数值属性定义的环道图形,连线图还反映了圈图中染色体区段之间的关系信息,例如物种基因组间共线性区段等。

6.1 连线图的数据格式

chr-a start-a end-a chr-b start-b end-b options hp_26695 205 236 hp_52 39 70 hp_26695 238 297 hp_52 72 131 hp_26695 299 318 hp_52 133 152 color=red hp_26695 338 411 hp_52 172 245 hp_26695 413 438 hp_52 247 272 hp_26695 449 495 hp_52 283 329 
<links> <link> file = data/hp.synteny.link.txt #输入数据 ribbon = yes #用带状连接 flat = yes #设置条带不扭转(twist) radius = 0.84r #设置 link 曲线的半径  bezier_radius = 0r #设置贝塞尔曲线半径,该值设大后曲线扁平,使图像不太好看。 color = blackweak #设置 link 曲线的颜色 thickness = 1 #设置 link 曲线的厚度 </link> </links> 

导入配置,运行后结果如下:

在这里插入图片描述
7 结语
每绘制一个圈图时,先要构思好要呈现哪些信息,包括需要多少环道,每个环道要使用什么可视化效果,连接关系也要考虑好呈现逻辑,是否需要添加特殊规则等。打好框架草稿后,新建一个工程目录,把配置文件放在一个文件夹里,数据放在另一个文件夹里。首先把底层的染色体文件配置好,将基础的核型图框架调试到最佳,再开始一圈圈添加环道,逐个调试,最后再添加连接。配色以及个别细节,可以在成稿的基础上一步步润色修改。




在这里插入图片描述
本文大致介绍了Circos的入门方法,旨在帮助初学者了解Circos的使用逻辑,更详细的变量配置和图形绘制,可以在circos官网中找到丰富的图文教程,并下载教程资料进行学习。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/224276.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午12:18
下一篇 2026年3月17日 下午12:18


相关推荐

  • php 解决大流量网站访问量问题

    php 解决大流量网站访问量问题当一个网站发展为知名网站的时候 如新浪 腾讯 网易 雅虎 网站的访问量通常都会非常大 如果使用虚拟主机的话 网站就会因为访问量过大而引起服务器性能问题 这是很多人的烦恼 有人使用取消 RSS 等错误的方法来解决问题 显然是下错药 那么对于大流量的网站 需要采用什么样的方法来解决访问量问题 解决方法参考如下 nbsp 首先 确认服务器硬件是否足够支持当前的流量 nbsp 普通的 P

    2026年1月21日
    3
  • python判断一个数是否为整数

    python判断一个数是否为整数原文:https://www.cnblogs.com/cepaAllium/p/11025877.html

    2022年7月5日
    28
  • 回归分析(stata实例详细解答过程)[通俗易懂]

    回归分析(stata实例详细解答过程)[通俗易懂]现有某电商平台846条关于婴幼儿奶粉的销售信息,每条信息由11个指标组成。其中,评价量可以从一个侧面反映顾客对产品的关注度。请对所给数据进行以下方面的分析,要求最终的分析将不仅仅有益于商家,更有益于宝妈们为宝贝选择适合自己的奶粉。(1)以评价量为因变量,分析其它变量和评价量之间的关系。(2)以评价量为因变量,研究影响评价量的重要因素。我们运用stata软件解决此问题。第一问在第一问中要求我们,以评价量为因变量,分析其它变量和评价量之间的关系。我们在这里用回归分析,…

    2022年8月30日
    5
  • Proxifier用法「建议收藏」

    Proxifier用法「建议收藏」Proxifier

    2025年7月18日
    6
  • DeepSeek微信使用教程:从入门到精通

    DeepSeek微信使用教程:从入门到精通

    2026年3月16日
    3
  • 构建私有云,主要面临哪些挑战?

    构建私有云,主要面临哪些挑战?构建私有云可能会面临一些挑战性的问题 包括如下一些 预算 私有云的构建成本可能比较高昂 所以你必须考虑清楚投资回报率的上限和下限 与公有云相集成 构建了私有云之后 如果你还需要公有云服务的话 也可以转向一种混合模式 这会牵涉到如何保障系统的安全 以及如何在公有云和私有云中核实你能够运行的工作负载 规模 私有云通常是不具备大规模公有云提供商所提供的规模经济效益的 即时重配置

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号