1、前期准备
第一步, 获取repeat注释结果,使用RepeatMasker对基因组进行repeat分析,可以得到以out结尾的文件,命令行如下:
#genome.fa:为进行repeat分析的基因组文件
#denovo.lib:从头repeat分析得到的repeat库
RepeatMasker genome.fa -lib denovo.lib -s -nolow -norna -gff -engine ncbi -parallel 8 -no_is -dir ./
# 输出文件会在-dir指定的路径下生成 genome.fa.out
第二步,获取关心TE类型在基因组的分布
#通过模式匹配获取位置分布,下面命令行以LTR/Gypsy为例进行展示,
# 后面我们还依次得到LTR/Copia、LINE、DNA的分布
sed 's/^\s*//' genome.fa.out|awk 'BEGIN{OFS="\t"}{if($11~/LTR\/Gypsy/){print $5,$6,$7,$11}}' | sort -k1,1 -k2,2n >LTR_Gypsy.bed
bedtools merge -i LTR_Gypsy.bed >LTR_Gypsy.merged.bed
第三步,生成基因组的配置文件
#计算染色体长度
samtools faidx genome.fa -o genome.fai
#删除冗余列,只保留序列名称和长度列,并且只保留染色体水平的序列
grep "^Chr" genome.fai|cut -f1,2 >genome.length.txt
#以100Kb为窗口,生成基因组的bed文件
bedtools makewindows -g genome.length.txt -w 100000 >genome.bed
#生成绘图用到的基因组信息文件
cat genome.length.txt|while read chr len;do index=$[index + 1]; echo -e "$chr\t$len\t12\t1\t1\t0\tblack\tblack\tblack\t$index";done >genome.list
第四步,计算不同类型TE在基因组以100Kb为窗口中的覆盖度
#还是以LTR/Gypsy为例(该文件来自第二步),计算窗口中的覆盖度,
#其中genome.bed来自第三步,其他类型操作类似依次得到LTR_Copia.BED、LINE.BED、DNA.BED
bedtools coverage -a genome.bed -b LTR_Gypsy.merged.bed| awk 'BEGIN{OFS="\t"}{print $(1),$(2),$(3),$(7)}' >LTR_Gypsy.BED
2、生成配置文件
首先从整体上看下配置文件(example.ini)的内容,后面我们详细说明ref_in*中color_file 、lab、lab_color 、lab_size 、min、max参数。
[canvas]
width = 1000
height = 1500
direction = horizontal
axis_ratio = 0.05
name_ratio = 0.1
margin = 10,10,5,20
inner_ratio = 0.1,0.85,0.05,0,0
[axis]
canvas_position = bottom
ticks_minor = 2Mb
ticks_major = 10Mb
ticks_minor_len = 5
ticks_major_len = 10
axis_line = 0.4
axis_color = rgb(0,0,0)
axis_label = 0.85
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 = min_ref.list
chroms = 1,2,3,4,5,6,7,8,9,10
name_position = topleft
round = 0
[ref_in1]
file = LTR_Gypsy.BED
type = heatmap
pos0 = 0
pos1 = 0.2
color_file = color.txt
lab = LTR/Gypsy
lab_color = black
lab_size = 10
min = 0
max = 1
[ref_in2]
file = LTR_Copia.BED
type = heatmap
pos0 = 0.2
pos1 = 0.4
color_file = color.txt
lab = LTR/Copia
lab_color = black
lab_size = 10
min = 0
max = 1
[ref_in3]
file = DNA.BED
type = heatmap
pos0 = 0.4
pos1 = 0.6
color_file = color.txt
lab = DNA
lab_color = black
lab_size = 10
min = 0
max = 1
[ref_in4]
file = LINE.BED
type = heatmap
pos0 = 0.6
pos1 = 0.8
color_file = color.txt
lab = LINE
lab_color = black
lab_size = 10
min = 0
max = 1
如果type为heatmap,我们可以使用内置生成颜色的方案,这就需要设置low_color和high_color ,也可以自己生成渐变色列表。如果使用自定义的颜色方案,就需要配置color_file 参数,里面是渐变色码。颜色和值的对应关系是线性的,文件开头的颜色值对应值较小的颜色,后面的颜色值对应值较大时的颜色。如果使用自己的颜色方案,可以使用下面R代码生成渐变色列表文件,只需要修改里面的颜色值即可:
#!/usr/bin/Rscript
code <- colorRampPalette(c("blue", "orange", "red"),space = "rgb")(100)
write.table(code, file="color.txt", quote=FALSE, col.names=FALSE, row.names=FALSE)
library("RColorBrewer")
display.brewer.pal(11,"PiYG")
data<-brewer.pal(11,"PiYG")
write.table(rev(data), file="color2.txt", quote=FALSE, col.names=FALSE, row.names=FALSE)
这里的lab参数用于设置标签名称,来标注每一部分的TE类型;lab_color设置标签颜色;lab_size设定标签的字体大小。
对于一个窗口,如果没有覆盖,那么其覆盖度就是0,而如果完全被覆盖,即这个窗口都是某一类型的TE,那么其覆盖度就是1,所以我们设置min=0、max=1。
3. 运行软件生成图片
recos下载安装完成后,按照上面描述生成相关配置文件,就可以运行软件了:
#其中example.ini为配置文件名称,-o后面的sample表示输出文件名称前缀,下例输出文件为sample.svg
perl recos_wrapper.pl -c example.ini -o sample