recos软件使用手册

1. 开发背景

随着测序技术的不断发展,尤其是三代测序技术的出现,例如PacBio和Nanopore,它们可以产出更长、更准确的测序数据,这使得原本有基因组的物种使用新技术可以得到更完整的基因组。同时相近或者相同物种基因组的比较,也是生物基因组序研究的重点内容,比如SV、PAV等结构变异。
已有的工具例如Circos虽然可以比较漂亮的展示基因组的特性和两个基因组间的差异,但是由于图形使用圆形展示,这会造成一些明显的结构变异在图中没有那么明显。所以我们开发了recos,它使用矩形的方式展示两个基因组的共线性关系,并可以将每个基因组的特性,例如GC、TE、SV、PAV定制到图中展示。

2. 软件下载和安装

第一步:在自己的系统上安装Singularity,可以参考 https://docs.sylabs.io/guides/latest/user-guide/quick_start.html
第二步:从github下载相关软件,如果安装git,可以之间输入,git clone https://github.com/zhk2017/recos.git 进行下载,或者可以通过进入链接 https://github.com/zhk2017/recos 进行下载,完成后为exe目录下recos添加可执行权限cd exe && chmod 755 recos;
第三步:下载基础镜像,用于提供软件运行环境, https://pan.baidu.com/s/1e54jrCk62SSvFcr8o7tMoA ,提取码:q2e5;
第四步:下载的基础镜像名称为recos.sif,将其保存到img目录下面,img目录位于第二步下载的软件下面;

3. 快速开始

运行Recos只需要配置两个参数一个是-c参数,一个是-o参数。其中-c用于指定配置文件,-o设置输出文件的名称。所有软件对绘图元素布局设置,共线性文件和基因组特性文件的输入只能在配置文件中设置。

$ perl recos_wrapper.pl

Program: recos (plot genomic characteristics and collinearity)
Version: 1.0.6
Contact: Haikuan Zhang <zhk_@hotmail.com>

Usage: perl recos_wrapper.pl -c <ini format config file> -o [output file name]

    -c  [required] Config file for all settings. Input variant file or plot parameters.
    -o  [optional] Output file name. [default:genome.comparison].

NOTE:
    For non-commercial use only, all rights reserved!

软件下载安装完成后,在tutorials目录下有example1-example7共7个实例数据,方便用户快速开始,用户只需进入对应目录运行sh run.sh即可完成绘图,下面简单介绍这五个例子。

$ ls tutorials/
     doc  example1  example2  example3  example4  example5  example6 example7

example1:绘制最基本的染色体条带图,不添加任何其他任何图形元素。

#查看示例1中包含那些文件
tutorials/example1 $  ls
     example.ini  ref_query.list  run.sh

example.ini配置文件中各参数含义:

[canvas]      #用于定义整个画布的大小、图形方向、图形元素所在的位置和大小等                                                                                                                                 
width  = 1100   #画布宽度,像素
height = 300      #画布高度,像素
direction = horizontal         #图形元素的方向,水平或垂直
axis_ratio = 0.1     #坐标轴占画布的大小,0.05表示占总大小的5%,举例:如果direction为水平,表示占高度的5%
name_ratio = 0.05    #染色体名称占画布的大小
margin = 10,10,5,20   #画布四周留白的大小,像素
inner_ratio = 0.15,0.2,0.3,0.2,0.15  #每个染色体对占一个区域,里面分为5部分,详见后面对参数的说

[axis]
canvas_position = top #坐标轴在画布中的位置,举例:如果direction为水平,则只能是上或下
ticks_minor = 1Mb  #坐标轴中较短刻度的步长
ticks_major = 5Mb   #坐标轴较长刻度的步长
ticks_minor_len = -5  #较短刻度的长度,像素,正负值可以调整方向
ticks_major_len = -10   #较长刻度的长度,像素,正负值可以调整方向
axis_line = 0.7    #以坐标轴区域为参考,坐标轴主线在里面的位置,举例:0.5表示居中
axis_color = rgb(0,0,0)   #坐标轴颜色
axis_label = 0.2  #以坐标轴区域为参考,刻度标签名称所在位置
axis_label_size = 12  #刻度标签名称的大小,像素
axis_label_color = rgb(0,255,255)  #刻度标签名称的颜色
axis_width = 1  #坐标轴线条宽度
axis_opacity = 1  #坐标轴线条透明度
label_unit = Mb  #刻度标签名称的单位

[chromosome]
canvas_position = left  #展示染色体比较的绘图元素在画布中的位置
chromosome_list = ref_query.list   #定义染色体比较关系、条带颜色、染色体长度、透明度、比较ID等
chroms = 2,1,3  #比较ID的列表在chromosome_list定义,设置染色体在图中展示的顺序
name_position = center  #染色体名称标签的位置
round = 0  #设置染色体条带两端为圆形,越大弧度越大,默认为0,表示直角

本例中只需要设置配置文件中的chromosome_list参数,该参数指定的文件中记录了染色体的基本信息,该文件只能是10列或者19列,具体每一列的含义,以及是否选填参见下表。当只需要展示一个基因组的特性信息时,填写10列内容即可,对应表格种的1-9列和最后一列;当需要展示两个基因组的比较信息时,该文件需要是19列,文件示例:

Chr01   56831624        12      1       1       0.5     rgb(210,105,30) rgb(210,105,30) rgb(210,105,30) Chr01   59644097        12      1       1       0.5 rgb(95,158,160)  rgb(95,158,160) rgb(95,158,160) 1
Chr02   48577505        12      1       1       0.5     rgb(210,105,30) rgb(210,105,30) rgb(210,105,30) Chr02   51554906        12      1       1       0.5 rgb(95,158,160)  rgb(95,158,160) rgb(95,158,160) 2
Chr03   45779781        12      1       1       0.5     rgb(210,105,30) rgb(210,105,30) rgb(210,105,30) Chr03   47131600        12      1       1       0.5 rgb(95,158,160)  rgb(95,158,160) rgb(95,158,160) 3

其中需要注意的是标签[chromosome]下面的chroms参数,它用来设置每一个共线性对在图中的前后顺序,后面跟着共线性对的ID列表,使用逗号分隔,不能有空白符,这里的ID与chromosome_list指定文件中的最后一列对应。chromosome_list文件中每一列的含义:

列号 含义 是否必选 示例
1 参考基因组中的染色体名称 Chr01
2 参考基因组中的该染色体的长度 56831624
3 参考染色体名称在图中的大小,字号 12
4 设置参考染色体条带外围线条的宽度 1
5 设置参考染色体条带外围线条的透明度,0-1的小数,0:透明;1:不透明 1
6 设置参考染色体条带内部填充颜色的透明度,0-1的小数,0:透明;1:不透明 1
7 设置图中染色体名称的颜色,可以是RGB颜色/16进制颜色代码 rgb(255,255,255)
8 设置图中染色体条带外围线条的颜色,可以是RGB颜色/16进制颜色代码 rgb(255,48,48)
9 设置图中染色体条带内部填充色,可以是RGB颜色/16进制颜色代码 rgb(0,0,0)
10 查询基因组中的染色体名称 Chr01
11 查询基因组中的该染色体的长度 56831624
12 查询染色体名称在图中的大小,字号 12
13 设置查询染色体条带外围线条的宽度 1
14 设置查询染色体条带外围线条的透明度,0-1的小数,0:透明;1:不透明 1
15 设置查询染色体条带内部填充颜色的透明度,0-1的小数,0:透明;1:不透明 1
16 设置图中染色体名称的颜色,可以是RGB颜色/16进制颜色代码 rgb(255,255,255)
17 设置图中染色体条带外围线条的颜色,可以是RGB颜色/16进制颜色代码 rgb(255,48,48)
18 设置图中染色体条带内部填充色,可以是RGB颜色/16进制颜色代码 rgb(0,0,0)
19 共线性对的唯一ID,通过设置参数chroms后的ID顺序,修改共线性对在图中的顺序 2,1,3

执行example1中的示例,绘制完成后的图形如下:

cd tutorials/example1 && sh run.sh   #软件配置完成后,注意修改exe/recos有可执行权限
example1.png

example2:在实例1的基础上添加了染色体共线性的连接线,这一信息是通过coord参数指定的。如果我们想将染色体间的结构变异(SV)展示出来,我们可以通过修改该文件中每个共线性块的颜色(倒数第二列),或者添加新的[link*]标签并配置包含SV的coord文件,例如这个实例中,是通过修改连接block的颜色将一个“移位”的SV标记为蓝色,一个“反转”的SV标记为红色的;

#查看示例2中包含的文件列表
ls tutorials/example2
    coords.txt   example.ini  ref_query.list  run.sh

相比example1中的配置文件,example2中的示例配置文件中多了link*参数,用于指定共线性结果,该文件可以使用MUMmer软件分析得到:

[link1]  #该属性可以指定多次,例如[link2]、[link3] . . .[link10]
coord = coords.txt   #定义染色体对的共线性关系,文件内部可以设置共线性块的颜色,来区分是否时SV,以及其类型

coords.txt文件格式

Chr01   1       575     Chr01   3457    4053    lightgrey       0.5
Chr01   556     817     Chr01   1732    1993    lightgrey       0.5
Chr01   686     4254    Chr01   6709    10270   lightgrey       0.5
Chr01   4249    5168    Chr01   16920   17838   lightgrey       0.5
Chr01   5168    10587   Chr01   19884   25301   lightgrey       0.5
Chr01   9704    11404   Chr01   25536   27231   lightgrey       0.5
Chr01   10727   13092   Chr01   62428   64764   lightgrey       0.5
Chr01   21959   67560   Chr01   64761   110364  lightgrey       0.5
Chr01   67661   69395   Chr01   110439  112171  lightgrey       0.5
Chr01   69593   71222   Chr01   112369  113982  lightgrey       0.5

通过标签[link*]中的coords参数指定的文件中,每一行表示一个共线性块,而每一列表示块的位置和颜色配置信息,具体如下:

列号 含义 是否必选 示例
1 参考染色体名称 Chr01
2 共线性块起始位置,数值 1
3 共线性块终止位置,数值 575
4 查询染色体名称 Chr01
5 共线性块起始位置,数值 3457
6 共线性块终止位置,数值 4053
7 区块连接的颜色,默认为灰色,可以是颜色名、RGB颜色、16进制颜色代码 grey
8 区块连接的透明度,填写0-1之间的数,0透明;1不透明 1

添加link信息后,执行example2中的示例,绘制完成后的图形如下:

cd tutorials/example2 && sh run.sh   #软件现在配置完成后,注意修改exe/recos有可执行权限
example2.png

example3:该示例与example2相比差异如下:

  1. 将染色体条带设置为透明,即修改chromosome_list参数文件中的第6、15列设置为0;
  2. 添加ref_in1参数,将PAV变异用蓝色“tile”添加到染色体条带内部;
  3. 添加qry_in1参数,将qry每个gap的大小使用红色的“hist”添加到染色体条带内部。
[ref_in1]
file = ref.bed  #指定绘制几何图形时的信息文件,四列,第四列为占位符
type = tile   #指定几何图形类型为tile(瓦片)
pos0 = 0  #设置该几何图形在参考染色体条带内部的起始位置,为相对位置
pos1 = 1  #设置该几何图形在参考染色体条带内部的终止位置,为相对位置
color = rgb(0, 0, 255)  #设置tile的颜色,如果不设置,默认为蓝色
fill_opacity = 1  #设置tile的透明度,默认为1,表示不透明

[qry_in1]
file = query.bed  #指定绘制几何图形时的信息文件
type = hist   #指定几何图形类型为hist(直方图)
pos0 = 0  #设置该几何图形在查询染色体条带内部的起始位置,为相对位置
pos1 = 1 #设置该几何图形在查询染色体条带内部的终止位置,为相对位置
color = rgb(255, 69, 0)  #设置直方图内部的填充色
min = 100 #设置最小值
max = 5000  #设置最大值

当要体现的染色体特性信息较多时,可以添加多个ref_in*qry_in*标签(其中*表示数字)来绘制多种几何元素,并且数字小的几何图形会先画。当然ref_in*和qry_in*用于指定几何图形在条带内部绘制,如果几何图形在条带外部绘制,需要使用标签ref_out*和qry_out*。这种类型标签通过下划线分隔,末尾跟着数字,分为三部分,每一部分说明如下表:

序号 含义 可选项 示例
第一部分 指定几何图形在参考,还是查询中绘制 ref(参考)、qry(查询) ref_in1、qry_in1
第二部分 指定在条带内部还是外部。ref的外部指的是条带上方,qry的外部指的是条带下方 in(条带内部)、out(条带外部) ref_in1、ref_out1
第三部分 末尾的数字可以定义几何图形的绘制顺序,并且可以生成唯一标签ID 整数即可 ref_in1、ref_in2

在ref_in*和qry_in*标签下面,包含两个指定几何图形位置的参数,分布是pos0和pos1,分别制定图形的起始和终止位置。下面将要讲到ref_out*和qry_out*也包含这两个参数,其中in表示条带内部的位置,而out表示条带外部的位置。in的示例如下图:

染色体条带内部关于位置(pos)的示意图
#查看示例中包含的文件列表
ls tutorials/example3
    coords.txt   example.ini  query.bed  ref.bed  ref_query.list  run.sh

绘制几何图形时,是通过file参数将数值信息告诉绘图程序,以此决定使用较大或较小的图形、较深或者较浅的颜色绘制图形。file参数后面的文件是一个标准的bed格式文件,包含四列,分别是序列名称、起始位置、终止位置和值的大小,如下示例:

$ head ref.bed
Chr01   144831  145014  184
Chr01   278803  279133  331
Chr01   290429  290552  124
Chr01   352638  352778  141
Chr01   353903  354054  152
Chr01   841416  841594  179
Chr01   846698  846810  113
Chr01   928495  928784  290
Chr01   929042  929482  441
Chr01   933960  934197  238

$ head query.bed
Chr01   396     655     260
Chr01   969     1732    764
Chr01   1993    2342    350
Chr01   2613    2882    270
Chr01   3184    3457    274
Chr01   4053    4822    770
Chr01   5459    5976    518
Chr01   27231   28333   1103
Chr01   28469   29523   1055
Chr01   29634   30538   905

了解相关参数含义和输入文件格式后,执行example3中的示例,得到的图形如下:

cd tutorials/example3 && sh run.sh   #软件现在配置完成后,注意修改exe/recos有可执行权限
example3.png

example4:相比实例3,我们将ref_in1修改为了heatmap类型,并添加了ref_out1将PAV的特性以hist展示在染色体条带外侧。ref_out1ref_in1类似,可以添加更多的ref_out*(*表示数字),也可以通过pos0和pos1修改几何元素在图形中的位置。

标签为ref/qry_in/out*示意图

其中ref_in*、ref_out*、qry_in*、qry_out*都可以通过type设置几何体图形的类型,也都可以通过pos0和pos1指定几何图形在图中的位置。当然type指定的几何图形类型不同时,各自支持的参数也有不同,各几何图形和其可以支持的参数见下表:

序号 参数名称 支持的几何图形及含义 说明
1 stroke_color line(线条颜色)、hist(边框颜色)、 默认红色
2 stroke_width line(线条宽度)、hist(边框宽度) 默认1像素
3 stroke_opacity line(线条透明度)、hist(边框透明度) 0-1内的小数,0:透明,1:不透明(默认)
4 low_color heatmap(热图低位色) 值较小时,使用的rgb颜色值,如果没有设置color_file,必须设置
5 high_color heatmap(热图低位色) 值较小时,使用的rgb颜色值,如果没有设置color_file,必须设置
6 fill_opacity hist(填充色的透明度) 0-1内的小数,0:透明,1:不透明(默认)
7 pos0 所有类型 指定几何图形范围,起始位置,必须设置
8 pos1 所有类型 指定几何图形范围,终止位置,必须设置
9 min 除tile外的类型 图形范围展示的最小值,默认文件第四列最小值
10 max 除tile外的类型 图形范围展示的最大值,默认文件第四列最大值
11 lab 几何元素的label 非必要,不要设置
12 lab_size 几何元素的label的字体大小 非必要,不要设置
13 lab_color 几何元素的label的颜色 非必要,不要设置
14 color_file heatmap(颜色代码的文件) 文件包含一例,为颜色代码列表,从头到尾生成渐变色列表
ls tutorials/example4
    coords.txt  example.ini  query.bed  ref.bed  ref.gc.bed  ref_query.list  run.sh

了解不同几何图形支持的参数后,执行example4中的示例,得到的图形如下:

cd tutorials/example4 && sh run.sh   #软件现在配置完成后,注意修改exe/recos有可执行权限
example4.png

example5:基于实例3展示了pos0和pos1的效果,将ref的两个特性都放在了染色体条带内部,分别用ref_in1和ref_in2指定,其中ref_in1表示绘制hist几何图形到染色体条带内的0.1-0.6处,ref_in2表示绘制heatmap几何图形到染色体条带内的0.6-0.9处。如果ref_in1和ref_in2都是pos0=0,pos1=1,那么这两种图形会在相同的位置,当图形元素出现遮挡时,可以调整后面的数字修改绘制顺序。

 ls tutorials/example5
     coords.txt   example.ini  query.bed  ref.bed  ref.gc.bed  ref_query.list  run.sh

灵活设置pos0、pos1可以绘制出更丰富的形,执行example5中的示例,得到的图形如下:

cd tutorials/example5 && sh run.sh   #软件现在配置完成后,注意修改exe/recos有可执行权限
example5.png

3. 设计思路

软件会根据用户设置的长度和宽度,对应canvas标签中的width、height参数,单位为像素,生成画布。然后根据margin参数设置的大小预留四周的边缘区域,该参数包括四个值分别是上、下、左、右四个方向预留的像素数目,示意图如下:


direction = horizontal 时整体布局示意图

每一对进行共线性比较的染色体都有一个唯一ID,每个ID对应到图中一个区域,该区域使用inner_ratio参数分为5个部分,这个参数后面是用逗号分隔的5个小数,用于指定这5部分占该区域的比例,如下图示例:


每个染色体对所在区域5部分的划分
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容