zoukankan      html  css  js  c++  java
  • 学习笔记18—circos应用集

    一、在线画图(行列分别最大为75)

    相信大家都听说过circos图,但是亲自画过的人可能就很少,这主要因为软件的安装和使用稍微有一点麻烦。其实,circos图也是可以在线绘制的,这样就简单多了!一起来了解一下吧!

    在circos官网(http://circos.ca/)的最右方有个“CIRCOS ONLINE”选项,这里可以实现在线绘制部分circos图。

    attachments-2018-08-bt6kdbbt5b6c06734dd9e.jpg

    打开后界面如下:

    attachments-2018-08-u2wdtEdA5b6c068bb7513.jpg

    以微生物多样性分析中样品与物种丰度circos图绘制为例,给大家讲解circos图的绘制功能。该图能够很直观的反映各样品中不同物种所占的比例,以及物种在不同分组或者样品中的分布关系。

    绘制circos图

    1.数据准备

    首先我们要做的就是准备画图所用到的数据,所用数据为物种在各样品中的相对丰度,这里只选用丰度大于0.01的物种用于绘图,数据如下(列名A、B、C为样品,行名Acetobacteraceae等是科一水平的物种分类):

    OTU    A       B       C
    Acetobacteraceae        0.506365321669611       0.596887241236994       0.457528142134733
    Arcobacteraceae 0.000329490484604467    0.017913387252098       0.000426249200782749
    Bacteroidaceae  0.0175209280769342      0.0455871811395347      0.352221339584988
    Dysgonomonadaceae       0.00184297424905136     0.0256500300487296      0.0330226880824598
    Lachnospiraceae 0.00569185760217826     0.0139020628633905      0.0173870923992018
    Lactobacillaceae        0.17495220577586        0.237946115025089       0.0588340146862225
    Pseudomonadaceae        0.0021326362135388      0.0286295607092948      0.0127991010016856
    Ruminococcaceae 0.00312472844190829     0.00506121976120311     0.0274388235522058
    Sphingomonadaceae       0.257860701561278       0.00711394623087561     0.00898610815104722

    由于网站要求的数据格式为非负整数,故将所有的数据乘1000(系统会自动截掉小数点后的数据),输入数据则变为:

    OTU    A   B   C
    Acetobacteraceae    506.365321669611    596.887241236994    457.528142134733
    Arcobacteraceae    0.329490484604467   17.913387252098 0.426249200782749
    Bacteroidaceae    17.5209280769342    45.5871811395347    352.221339584988
    Dysgonomonadaceae    1.84297424905136    25.6500300487296    33.0226880824598
    Lachnospiraceae    5.69185760217826    13.9020628633905    17.3870923992018
    Lactobacillaceae    174.95220577586 237.946115025089    58.8340146862225
    Pseudomonadaceae    2.1326362135388 28.6295607092948    12.7991010016856
    Ruminococcaceae    3.12472844190829    5.06121976120311    27.4388235522058
    Sphingomonadaceae    257.860701561278    7.11394623087561    8.98610815104722

    2.绘图

    数据准备好就可以来绘制circos图了,只需要导入数据就可以。

    attachments-2018-08-EV7g82jx5b6c06a11890c.jpg

    生成的图片如下:

    attachments-2018-08-wyEy8Lir5b6c06b786c69.jpg

    可以看到,图中的物种和样品完全是按照字母顺序排列的,我们希望物种和样品分别位列两边,这里可以人为的对其指定顺序。方法也很简单,就是在数据的第一行和第一列用数字来指定顺序。如下:

    OTU    OTU 1   2   3
    OTU    OTU A   B   C
    12    Acetobacteraceae    506.365321669611    596.887241236994    457.528142134733
    10    Bacteroidaceae  17.5209280769342    45.5871811395347    352.221339584988
    8    Dysgonomonadaceae   1.84297424905136    25.6500300487296    33.0226880824598
    6    Lachnospiraceae 5.69185760217826    13.9020628633905    17.3870923992018
    11    Lactobacillaceae    174.95220577586 237.946115025089    58.8340146862225
    7    Pseudomonadaceae    2.1326362135388 28.6295607092948    12.7991010016856
    5    Ruminococcaceae 3.12472844190829    5.06121976120311    27.4388235522058
    9    Sphingomonadaceae   257.860701561278    7.11394623087561    8.98610815104722
    4    Arcobacteraceae 0.329490484604467   17.913387252098 0.426249200782749

    第一行指定了样品的顺序,而第一列按丰度指定物种的顺序。生成图片时要勾选下图红框中的选项(排序所用),不然会报错哦!

    attachments-2018-08-F3oPchgK5b6c06cb47475.jpg

    新图如下:

    attachments-2018-08-ZEeardtd5b6c06df9479a.jpg

    图中由于部分物种丰度较低,导致物种名重叠,解决这个问题可以改变文字的布局。这时就需要进行设置了。

    3.图片设置

    点击"settings"进入设置界面,会有很多的设置选项,可以对图片进行细调。

    attachments-2018-08-kZznLXk55b6c06f14c273.jpg

    这里只需要修改两个地方即可,将下图第一个红框改为“no”,可以调整文字为垂直布局,避免重叠;但是如果物种名太长,又可能会超出图片范围,所以要缩小圆圈的半径,即将第二个红框改为small。

    attachments-2018-08-yZtEuDtv5b6c070180879.jpg

    修改并保存设置后,重新生成图片:

    attachments-2018-08-hFGAvcBQ5b6c070f3cccc.jpg

    注意:文章摘录自:http://www.omicsclass.com/article/354

    二、线下软件画图

    (1)染色体组型(karyotypes)是一类特殊的数据。一般的,它保存在名为xx.karyotype.txt文件当中。它将定义染色体的大小,ID,名称和颜色。每一行一条染色体,格式如下

    数据格式:

    #chr - ID label start end color
    chr - hs1 1 0 17000000 chr1
    chr - hs2 2 0 217000000 chr2
    chr - hs3 3 0 451000000 chr3

    ...

    chr - hs20 3 0 451000000 chr20
    最开始的chr表示,这一行将定义一个染色体。然后是一个短线占位符。这个占位符通常用来定义所属关系,对于染色体来说,没有所属。
    ID是染色体唯一且不能重复的标识。之后的LABEL是将来用于显示在图上的文本。如果一个染色体组型文件里面包含多个不同来源的染色体组,设置ID最好的办法就是使用前缀。比如hs=homo sapiens, mm=mus musculus等等。有时候你可以使用hs19做为前缀来明示数据来源版本。其实,即使是只有一个来源的染色体组,也最好使用前缀,以规范文件格式。
    START和END值定义了染色体的大小。对于染色体组型文件,需要指明的是,这里的START和END应该是染色体本身的大小,而不是你想绘制部分的起止位置。指定绘制部分将由其它文件来定义。
    COLOR是于定义显示的颜色。如果染色体组不以条纹(cytogenetic bands)图谱覆盖的话,那么就会以这里设置的颜色显示。对于人类基因组而言,circos预设了与染色体相同的名字做为颜色名,比如chr1, chr2, … chrX, chrY, chrUn.

    效果图:


    #Band Domin ID Label Start end color (可要可不要,如果要就和chr-...放入同一个text文件中)
    band hs1 p36.33 p36.33 0 10 gneg
    band hs1 p36.32 p36.32 10 15 gpos25
    band hs1 p36.31 p36.31 15 17 gneg
    band hs2 p25.3 p25.3 0 43 gneg
    band hs2 p25.2 p25.2 43 70 gpos50
    band hs2 p25.1 p25.1 70 217 gneg
    band hs3 p25.3 p25.3 0 100 gneg
    band hs3 p25.2 p25.2 100 250 gpos50
    band hs3 p25.1 p25.1 250 451 gneg

    cytogenetic bands的名称例子:1p36.33 其命名规则是之前的数字、字母为染色体代号,一般是数字或者X,Y。而之后会有字母p或者q。p代表短臂,q代表长臂。而每个band都会有颜色深浅的不同,这里主要以gpos和gneg来区别。

    效果图:

    (2)设置文件
    circos的设置文件可以分为多个文件,也可以只写在一个文件里。一般地,为了人们阅读方便,都会写在多个文件,每个文件描述不同的部分,最后由一个主文件来调用就可以了。
    这一节,需要设置三个方面,一,数据源,二如何画染色体,三如何画坐标,所以我们也将它分为三个文件,分别名为circos.conf, ideogram.conf,和ticks.conf。由circos.conf来定义数据源,并调用ideogram.conf和ticks.conf。

    circos.conf的内容

    <colors> white =255,255,255 black =0,0,0 blue =0,0,255<<include etc/colors.ucsc.conf>></colors> <fonts><<include etc/fonts.conf>></fonts> <<include ideogram.conf>><<include ticks.conf>> <image><<include etc/image.conf>></image> # specify the karyotype file here karyotype = karyotype.human.hg19.txt chromosomes_units =1000000 chromosomes_display_default = yes <<include etc/housekeeping.conf>>

    这里可以注意到它引入其它文件时使用的是<>的方式。注意,这里include会从circos所在的目录开始寻找,而不是当前目录。我们可以在circos的安装目录当中找到一个名为etc的目录,可以点击查看其中的colors.ucsc.conf,image.conf,以及housekeeping.conf的内容。

    在circos当中使用karyotype=xxx语句来定义了karyotype的数据来源。chromosomes_units=1000000定义了基准单位。可以试着把这个值扩大10倍。

    接下来我们看ideogram.conf。在ideogram.conf文件中,定义了如何显示染色体组型。

    <ideogram> <spacing> default = 0.005r break = 5u </spacing> #position configuration radius = 0.90r thickness = 100p fill = yes fill_color = black stroke_thickness =2 stroke_color = black #label configuration show_label = yes label_font = bold label_radius = dims(ideogram,radius)+ 0.07r label_with_tag = yes label_size =36 label_parallel =no #band configuration show_bands = yes fill_bands = yes band_stroke_thickness =2 band_stroke_color = white band_transparency =0 </ideogram>

    在ticks.conf当中定义了如何来绘制刻度。

    show_ticks = yes show_tick_labels = yes <ticks> skip_first_label =no skip_last_label =no radius = dims(ideogram,radius_outer) tick_separation = 3p label_separation = 1p multiplier = 1e-6 color = black thickness = 4p size = 20p <tick> spacing = 1u show_label =no thickness = 2p color = dgrey </tick> <tick> spacing = 5u show_label =no thickness = 3p color = vdgrey </tick> <tick> spacing = 10u show_label = yes label_size = 20p label_offset = 10p format=%d grid = yes grid_color = dgrey grid_thickness = 1p grid_start = 0.5r grid_end = 0.999r </tick></ticks>

    好了,有了这些文件,我们就可以让程序跑起来了。

    (3)线条参数设置

     数据格式:

    #hs1 1000000 1700000 hs2 25000000 30000000 (线头就在(1000000+1700000)/2处)
    hs17 1000000 1700000 hs1 0 100000000
    hs17 1000000 1700000 hs2 0 100000000
    hs17 1000000 1700000 hs3 0 100000000
    hs17 1000000 1700000 hs4 0 100000000
    hs17 1000000 1700000 hs5 0 100000000
    hs17 1000000 1700000 hs6 0 100000000

    在circos.conf文件中的设置(不同颜色的线条,应该并行的增加下面的句柄):

    <links>

    <link>
    file          = F:/BrainAging/result/Picture/circos/segdup.20regions.txt
    color         = black_a5
    radius        = 0.98r #线头与环柱之间相对的位置
    bezier_radius = 0.01r
    thickness     = 10
    </link>

    </links>

    /path/to/circos/bin/circos -conf ./circos.conf

    参考链接:https://wenku.baidu.com/view/66bca61d8e9951e79a89273f.html;http://blog.sciencenet.cn/blog-442719-758826.html;http://blog.sina.com.cn/s/blog_5b8f74400102w8vy.html

    官方链接:http://circos.ca/documentation/tutorials/ideograms/karyotypes/

  • 相关阅读:
    线程池的扩展 beforeExecute() afterExecute() terminaerd()
    信号量semaphore 读写锁ReadWriteLock 倒计时器CountDownLatch 循环栅栏 CyclicBarrier 线程阻塞工具类LockSupport
    ReenTrantLock可重入锁 和synchronized 内部所锁的
    integer.valueof和integer.parseint
    守护线程
    notify wait sleep join yield yield
    Thread.stop()不要随意调用
    iterate使用了parallel() 反而消耗了更多的时间
    Stream 分支/合并 框架的实际例子
    区分Collection、Collector和collect Collectors类的静态工厂方法
  • 原文地址:https://www.cnblogs.com/hechangchun/p/9703881.html
Copyright © 2011-2022 走看看