美文网首页小教程收藏
徒手画圈?我用circos

徒手画圈?我用circos

作者: TOP生物信息 | 来源:发表于2019-03-29 01:20 被阅读300次

  距离上次画circos图,已经4个月了,至今仍然记得当时在Linux下装Perl模块时的惨烈。最后果断选择用Windows版的,至于如何在Windows下配置circos运行环境,有时间再写一篇吧。

菜鸟的吐槽:Linux系统下不是root用户就是麻烦,不过后来听说了一种无痛安装Perl模块的方法,就是非root用户自己下载安装一个perl,添加到环境变量中,CPAN什么的都依赖这个自己专属的perl。我还没试过。

  circos图其实本质跟其他描述基因组特征的软件包差不多,只需要知道一个区间/位置加上该区间/位置对应的属性就可以了,展现方式有多种多样,比如:线图、柱形图、热图、弦图等等。之前看到一些评论说circos图“装13大于实用”,我不太赞成这种说法,因为很多时候circos图确实可以很好地展现值的大小和交互关系。
  最开始接触这种图的时候也觉得挺复杂的,后来理解了其配置文件之后,发现也没那么难。

1. 需要准备哪些数据

1.1 karyotype.txt

这个文件用来描述染色体,一般放在circos图的外圈

chr -   NC_027757.2 A1  0   35822559    chr1
chr -   NC_027758.2 A2  0   35332830    chr2
chr -   NC_027759.2 A3  0   49139117    chr3
chr -   NC_027760.2 A4  0   23556786    chr4
chr -   NC_027761.2 A5  0   31473442    chr5

第1、2列一般不变,第3列是其它画图数据文件中的染色体名称,第4列表示换个名字,5、6列染色体起止位置,7列描述颜色(目前我可以确定的是chr1-chr22各表示一种颜色)。

1.2 每一圈需要什么样的数据

以snp密度的圈图为例,我需要知道在特定大小的窗口内,有多少个snp。就像这样,

NC_027757.2 1   10000   51
NC_027757.2 10001   20000   90
NC_027757.2 20001   30000   48
NC_027757.2 30001   40000   2
NC_027757.2 40001   50000   21

再比如,gene密度的圈图,需要知道gene的区间,再将区间highlight出来。因为区间不大,一个gene看上去就像一条细线

NC_027757.2 6637    9236
NC_027757.2 15630   16233
NC_027757.2 22106   23935
NC_027757.2 24221   25607
NC_027757.2 31070   40586

......

2. 基本的配置文件

先来看看软件安装成功后有哪些子文件夹,如下:

我的习惯是把所有配置写到一个文件中去。

#以下几列和<ideogram>部分是画染色体的
karyotype = my_data/my_karyotype/karyotype.txt #karyotype.txt的路径
chromosomes_order_by_karyotype = yes #是否按照karyotype.txt文件中的顺序来画染色体
chromosomes_units              = 1000000 #将1000000碱基看作一个染色体单元
chromosomes_display_default    = yes #是否展示全部染色体
                                     #如果是no,则需要重新设置染色体,比如: chromosomes = 染色体1名称;染色体2名称
#设置染色体颜色chromosomes_color = 染色体1名称=red;染色体2名称=vvdred;染色体3名称=vvlred
#其实只要将karyotype.txt最后一列定义为chr1-chrN即可;当然上面这种方法是可以的,不过很麻烦,且一时也想不到那么多颜色
######################################################
<ideogram>
show = yes
radius=0.90r
thickness = 25p #染色体的宽度
fill = yes #是否填充

#设定ideograms轮廓,就是在染色体外边框加线
#stroke_thickness = 1
#stroke_color = black

#染色体外圈的标签,比如chr1A、chr2A......
show_label = yes
label_font = default
label_radius=1r+90p
label_size=40
label_parallel = yes

#染色体之间的间隔
<spacing>
default = 0.005r
#<pairwise "/chr1A/ /chr2A/"> #在特定的两条染色体之间加上自定义的距离
#spacing = 3r
#</pairwise>
</spacing>
</ideogram>
######################################################
#以下部分是画染色体刻度的
show_ticks = yes
show_tick_labels = yes
<ticks>
tick_label_font  = light
radius=1r
color = black
thickness = 2p
multiplier = 1e-6 #物理位置乘以这个数来表示刻度位置,比如物理位置是10000000位碱基,则在刻度上为10
format=%d #刻度位置显示为十进制整数

#设置标尺上的大刻度
<tick>
spacing = 10u #10个染色体单元,即10000000碱基长度
size = 12p
show_label=yes
#设置ticks'label离ticks的距离
label_offset = 10p
#设置ticks'label的字体大小
label_size = 20p
</tick>
#设置标尺上的小刻度
<tick>
spacing = 1u
size = 6p
</tick>
</ticks>
######################################################
#下面就是plot部分了,比如我要画一个snp密度图,和gene密度图
<plots>
<plot>
type = line
thickness = 2
max_gap = 1u
file = my_data/wes_snpden.cir.txt
color = vvlpblue
min    = 0
max    = 1000 #设置y轴的范围,超过的部分显示不了
r0     = 0.75r
r1     = 0.85r
</plot>
<plot>
type = highlight
file = my_data/gene.cir.txt
r1 = 0.95r
r0 = 0.9r
stroke_color = green
stroke_thickness = 0.05
fill_color = green
</plot>
</plots>
######################################################
#以下部分可以不用更改
<image>
<<include etc/image.conf>>
</image>
<<include etc/colors_fonts_patterns.conf>>
<<include etc/housekeeping.conf>>

3. cmd命令行下运行

当然先要cd到指定目录下,再运行程序,比如:

E:\E盘备份\circos\circos-0.69-6\circos-0.69-6\my_circos>..\bin\circos -conf ..\my_conf\circos_test.conf -outputfile test
# E:\E盘备份\circos\circos-0.69-6\circos-0.69-6\my_circos——是我的当前目录
# ..\bin\circos——用相对路径调用circos程序
# -conf ..\my_conf\circos_test.conf——添加配置文件
# -outputfile test——在当前目录下生成名为test的结果文件

之后在当前目录下就能看到两个结果文件了

4. 结果展示

祝各位画图愉快!

相关文章

  • 徒手画圈?我用circos

      距离上次画circos图,已经4个月了,至今仍然记得当时在Linux下装Perl模块时的惨烈。最后果断选择用W...

  • 用R进行基因表达芯片分析(一)

    今天开始会写一系列关于用R进行基因芯片分析的文章,算是对该流程的总结。之前学习了通过circos来画圈图,以及通过...

  • circos画圈图该学起来了

    http://circos.ca/documentation/tutorials/[http://circos.c...

  • 如何徒手拉断钢筋?

    4种说法中有3个都是错的,画几个圈圈教你徒手拉断钢筋 徒手拉断钢筋和画圈圈都是很无聊的事,4种说法3个错你不一定搞...

  • 用R画圈圈

    缘由: 看到潜哥,发了一张图,于是想画一下~ 参考: 杜雨大佬画圈圈卡片 思路: 用极坐标公式,计算出每个圆形每个...

  • circos 安装

    绘制circos图,非root权限安装步骤: 1.下载circos包 wget http://circos.ca/...

  • Circos

    Circos是绘制圈图的神器,在http://circos.ca/images/页面有很多CIRCOS可视化的示例...

  • Circos圈图(安装与使用windows和Linux)

    安装 使用 CIRCOS增加热图、点图、线图和区块属性 CIRCOS圈图绘制 – 最简单绘图和解释 Circos的...

  • Gigascience | Galaxy cirocs

    文献信息:标题:Galactic Circos: User-friendly Circos plots withi...

  • Circos-Windows实战笔记(安装篇)

    既然从头开始学习Circos,就得了解Circos到底是啥,首先可以去Circos的官网看看http://circ...

网友评论

    本文标题:徒手画圈?我用circos

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