(上)画个圈圈祝福你

今天是生信星球陪你的第146天

你想找辆共享单车,发现满街都是别家车,没有一辆你能骑。

你想学点生信,搜了“初学者教程”,满眼尽是高大上,没有一句能看懂。

终于你跨越茫茫宇宙,来到生信星球,发现了初学者的新大陆!

刘小泽写于18.10.3

学习障碍的规律往往是:不是因为它多难,而是因为你不知道它难不难!

之前就见过各种文章中的复杂美观的圆圈图,被震撼到,这么多的信息是如何放到一个图中的?后来遇到一个网站Circos专门做圆圈图,很专业的样子,于是有心学一下。虽然看似很难,但是美好的东西,不都是奋斗出来的吗?

.前言

背景知识

Circos并不直接用R做,而是一个Perl语言开发的可视化软件,由加拿大生信科学家Martin Krzywinski开发,可以用于描述关系型数据和多维度的数据可视化

其次,什么样的可视化软件会受欢迎?一是输入简单,不需要太多的数据处理技巧就能调整到要求的输入格式;二是输出美观、快捷。这两点,Circos都做到了

Circos的设计初衷:展示线性位置关系(如染色体上的信息)、展示一个几何中两个对象的关系(如比对信息)。将线性折成封闭曲线可以减少数据分散性

circos的变换

重造了个轮子?

程序设计者最大的忌讳就是“重复造轮子”,目前有许多基因组浏览器:UCSC(http://genome-asia.ucsc.edu/cgi-bin/hgGateway?redirect=manual&source=genome.ucsc.edu)、Ensembl(https://asia.ensembl.org/index.html)、Vista(http://pipeline.lbl.gov/cgi-bin/gateway2?bg=cin1&selector=vista)、VEGA(http://vega.archive.ensembl.org/index.html)、

ARGO。

当然,这些基因组浏览器含有的数据量都非常大,但如何从隐晦的庞大数据中抽出具体的数据再展示出来是个问题。比如染色体包含的数据很多,我们要是想展示染色体上的位置特征如某些基因,用circos的圆圈图就可以兼顾大数据与小信息

数据的关系

先说下数据类型,无非就是标量数据(scalor,有大小,没方向)、向量数据(vector,有大小和方向),将数据可视化也就是标量化、向量化。基因组就是一个一维的数据结构,上面的位置就是标量

标量向量

最常见的就是标量数据进行标量可视化,比如输入数据是基因组位置,输出是实值(如GC含量、保守度),就可以用直方图(histogram)、折线图、散点图(scatter)画出。当数据集比较小、关系比较简单时还是可以看出变化趋势的,但是当数据之间存在交叉、数据量比较大时,一致性就体现不出来啦

或者有的图很好看,但是信息杂乱无章

又或者想表达相关性,一般使用曲线,但是在标量数据上展示曲线,数量一多就乱了

可能会想,把部分曲线抬高不就能区分开啦?但是抬高了显示的信息量势必会减少

为什么用圆圈?

图形可视化这么多形状,矩形、三角形、圆形…,其中圆形比矩形更对称,视觉压力不会那么大,看圆形会更圆润;

圆形有效载荷(data payload)会更大:文章中在尺寸、位置等对图片的限制还是蛮多的,如何体现数据有效载荷,这里有一个公式~轴的长度/图片面积。

对于矩形来说,2a/4a^2^ = 1/2a (2a是x、y轴长度之和); 对于圆形来说,2πa/πa^2^ = 2/a。圆形是矩形体现的数据的4倍

轴长度多长会分散注意力,圆形更容易聚焦

看下面图是不是更好点?

圆圈图的一些元素

可以设置环形的数据轨道:如线形、散点、直方图,可以设置点(线)颜色、粗细、线形状。并且各个区域可以直接缩放,而不用截掉数据

环形坐标轴

需要带有距离刻度的对象,比如:染色体、序列、基因图谱、片段重叠群(contig)

配置文件,在内置的基础上进行修改,比如thickness、size、label、labelsize、grid等

使用高亮highlight创建不同的颜色片段,置于所有图层底部

4.png

基因组间的mapping

设置links seqdup,也就是不同染色体中出现的同一个序列片段,在圆圈图中进行展示,例如

设置格式规则

6.png

组合不同的图片类型

左:散点+箱线+折线;右:瓦片+热图+直方图

7.png

实际应用

输入:GFF;输出:PNG、SVG

8.png

.安装

基于Unix(推荐linux)和perl,需要熟悉命令行

先检查Perl

Unix是默认安装了perl,perl 5.8之前的都需要升级;windows用户可以用dos或者git bash,先调出来命令行,然后安装perl,安装 Strawberry Perl 或者 ActiveState Perl

perl在linux下的存在目录是/bin/env,在mac下的存在目录是/bin/usr/env

下载

初步配置

(服务器可能需要root权限,用mac或者windows的命令行也是可以的)

perl模块缺失怎么办?

例如缺少Clone模块:

先在metacran网站查找:https://metacpan.org/pod/Clone

下载解压

安装的目录

bin:包含circos的可执行程序(已加入环境变量)

data:一个文件夹karyotype,包含几个物种的染色体信息,绘图必须

10.png

前两列:chr定义染色体,表示父区域,染色体没有父区域,因此用,下面的band就有父区域了,比如这四行的band的父区域就是hs1,1号染色体;

ID是命令,同时绘制多个物种,可在ID中包含物种的代号;

LABEL:当前区域显示的名字;

START END:整个的区域范围,要显示部分区域,可以后来修改;

COLOR:当前区域的颜色,定义好的颜色,存储于

etc:配置文件,如

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181004G0017P00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励