LAI是一种新的评估基因组组装质量的评价标准。
LTR讲解
部分转载自https://www.jianshu.com/p/f962d5c40fdf
LTR_retriever github
LTR_retreiver
是一个整合工具,整合其他的LTR鉴定工具的结果,并且给出LAI值。
LTR-RTs 长末端重复反转录转座子的鉴定 目前推荐的是LTR_Finder
和LTR_harvest
组合鉴定,之后使用LTR_retreiver
整合两者的结果。
安装软件LTR_Finder
Install LTR_Finder
git clone https://github.com/xzhub/LTR_Finder.git
cd LTR_Finder/source/
make
2021/09/19更新不要再使用LTR_finder了,oushujun最新优化出了支持多进程版的LTR_FINDER_parallel.用来替代LTR_finder。
直接从github下载即可使用
wget -c https://github.com/oushujun/LTR_FINDER_parallel/archive/refs/tags/v1.1.tar.gz
tar -zxvf v1.1.tar.gz
cd LTR_FINDER_parallel-1.1
perl LTR_FINDER_parallel
LTR_FINDER_parallel使用方法:
perl LTR_FINDER_parallel -seq ${genome} -threads 36 -harvest_out
#输出是${genome}.finder.combine.scn
genomefile="`basename ${genome}`"
mv ${genomefile}.finder.combine.scn ${species}.finder.scn
当使用conda时候,可能conda里和外面的perl版本不一致,所以调用的时候尽量使用绝对路径调用perl执行这个脚本。
可能会报错ListUtil.c: loadable library and perl binaries are mismatched (got handshake key 0xdb00080, needed 0xdb80080,解决办法是使用你的perl的完整路径和LTR_FINDER_parallel脚本所在的绝对路径!
LTR_FINDER_parallel参数:
- -seq genome.fa 基因组文件
- -threads 10 cpu数量
- -harvest_out 输出格式为LTR_finder的格式
- -size 5000000 指定分割的大小,默认是:5000000bp,即5M
- -time 1500 指定子进程运行的时间,默认是:1500s
如果你的基因组非常大,比如超过5G,或者更大,可以使用此处的-size
和-time
参数,一般的小基因组直接使用默认值即可。这2个参数设定依据是,增大size,同时增长time,1M对应300s,缩小也是同样的比值关系。
LTR_FINDER_parallel内设定使用的LTR_FINDER的参数是-w 2 -C -D 15000 -d 1000 -L 7000 -l 100 -p 20 -M 0.85
,如果想修改内置的参数,需要手动修改LTR_FINDER_parallel文件第4行的设置。
Install LTR_harvest
axel -n 16 http://genometools.org/pub/genometools-1.6.1.tar.gz
tar -zxvf genometools-1.6.1.tar.gz
cd genometools-1.6.1
make -j8 install prefix=/share/home/software/genometools/ cairo=no
pathadd /share/home/software/genometools/
source ~/.bashrc
Install LTR_retriever
git clone https://github.com/oushujun/LTR_retriever.git
或者使用conda安装LTR_retriever
conda create -n LTR_retriever
conda activate LTR_retriever
conda install -c conda-forge perl perl-text-soundex
conda install -c bioconda cd-hit repeatmasker
git clone https://github.com/oushujun/LTR_retriever.git
./LTR_retriever/LTR_retriever -h
开始分析
输入文件
基因组文件 genome.fa
输出文件
species.finder.scn 和species.harvest.scn
运行脚本
LTR.find.sh
内容如下
#species="Pco"
#genome="/share/home/database/Pco/Pco.genome.fa"
if [ $# -eq 0 ] || [ $# -eq 1 ];then
echo "Usage:
bash LTR.find.sh Pco /share/home/database/Pco/Pco.genome.fa "
exit 1
fi
species=$1
genome=$2
#LTRharvest
gt suffixerator \
-db ${genome} \
-indexname ${species} \
-tis -suf -lcp -des -ssp -sds -dna
gt ltrharvest \
-index ${species} \
-similar 85 -vic 10 -seed 20 -seqids yes \
-minlenltr 100 -maxlenltr 7000 -mintsd 4 -maxtsd 6 \
-motif TGCA -motifmis 1 > ${species}.harvest.scn
# LTR_FINDER_parallel代替LTR_FINDER
perl LTR_FINDER_parallel -seq ${genome} -threads 36 -harvest_out -size 1000000 -time 300
#输出是${genome}.finder.combine.scn
genomefile="`basename ${genome}`"
mv ${genomefile}.finder.combine.scn ${species}.finder.scn
# LTR_FINDER鉴定LTR, 已经被LTR_FINDER_parallel代替
#ltr_finder -D 15000 -L 7000 -C -M 0.85 ${genome} > ${species}.finder.scn
# LTR_retriever 合并前两次的分析
LTR_retriever -genome $genome -inharvest ${species}.harvest.scn -infinder ${species}.finder.scn -threads 16 -u 7e-9
运行方法:bash LTR.find.sh 物种名 物种的参考基因组文件
例如:bash LTR.find.sh TAIR /home/genome/TAIR10.fa
物种名可以是缩写,主要用于输出文件的前缀。
程序运行比较慢,主要是ltr_finder
非常慢,没有找到多线程的方法。
LTR_retriever
最后一行的进程数,可以根据服务器性能自行修改。-u
参数是指定你的物种的进化速率,默认的是水稻的进化速率1.3e-8
,此处改为拟南芥的7e-9
.
如果你运行的时候没有加参数-u
,可以根据计算公式T = (1 - identity) / 2µ
,此处的μ
就是输入的参数u
的值,来反推正确的插入时间。或者是使用结果文件*.pass.list.gff3
里的ltr_identity
根据公式计算,identify实际是百分比,公式里的1
代表100%。
手动计算LTR插入时间,使用下面的代码,只用修改genome.fa.pass.list.gff3
为你实际输出的文件名即可
cat genome.fa.pass.list.gff3|awk '$3=="repeat_region"{split($9,a,";");print $1","a[3]","a[5]}'|sed 's/Classification\=LTR\///g;s/ltr_identity\=//g'|awk -F ',' '{print $1","$2","(1-$3)/((7e-9)*2)}' >LTRtime.csv
注意:
LTR_retriever
要求输入的基因组文件的chr
的字符串长度不超过15,如果包含scaffold,请修改为15字以内,或者是可以舍去scffold,只留下chr。
输出结果讲解
最终会输出一个genome.fa.out.LAI
依据你输入的genome决定,例如:TaIR10.fa 输出结果就是TaIR10.fa.out.LAI .
cat TaIR10.fa.out.LAI |head
Chr From To Intact Total raw_LAI LAI
whole_genome 1 523245110 0.0967 0.4732 20.43 18.32
Chr01 1 3000000 0.1917 0.7771 24.67 21.56
Chr01 300001 3300000 0.1973 0.7971 24.76 21.65
Chr01 600001 3600000 0.1976 0.8249 23.96 20.85
Chr01 900001 3900000 0.2032 0.8621 23.57 20.46
Chr01 1200001 4200000 0.1981 0.8769 22.59 19.48
第7列是每个位置的LAI的值,第2行最后一个就是整个基因组的LAI值。这个基因组是18.32可以看出质量不错。0.0967代表完整LTR-RT在基因组中占比9.67% , 0.4732代表LTR在基因组中比例为47.32%.
LAI的作者也给出评价标准:
LAI | category |
---|---|
0draft |
|
10=reference |
|
LAI>=20 | Gold |
LTR_retriever
最后过滤后的LTR_RTs文件是genome.fa.pass.list
。这里面是过滤重复后通过的LTR_RTs.可以看出里面分为Copia和Gypsy,还有unknown。
多倍体数据,需要把亚组分开计算LAI,目前已经实现流程LTRfind
。
LTRfind地址 https://github.com/chaimol/bio_code/tree/master/pipline/LTRfind
植物是这种情况,动物也可以使用LTR_reviewer分析,只不过动物中LTR_RTs其他的类型不能被具体注释出来,需要自行从unknown类型中鉴定。
head genome.fa.pass.list
#LTR_loc Category Motif TSD 5_TSD 3_TSD Internal Identity Strand SuperFamily TE_type Insertion_Time
Chr01:109718..119470 pass motif:TGCA TSD:AAAAC 109713..109717 119471..119475 IN:111581..117607 0.9973 - Copia LTR 103354
Chr01:151156..160815 pass motif:TGCA TSD:ACCTT 151151..151155 160816..160820 IN:152959..159011 0.9945 ? unknown NA 214113
Chr01:259702..269481 pass motif:TGCA TSD:CGTTG 259697..259701 269482..269486 IN:261573..267609 0.9963 + Copia LTR 144256
Chr01:282588..292147 pass motif:TGCA TSD:CAATG 282583..282587 292148..292152 IN:284331..290404 0.9966 ? unknown NA 132702
Chr01:406690..416424 pass motif:TGCA TSD:AAGGG 406685..406689 416425..416429 IN:408590..414524 0.9979 + Copia LTR 81086
Chr01:434887..439473 pass motif:TGCA TSD:GGCAA 434882..434886 439474..439478 IN:435372..438989 0.9959 - Gypsy LTR 159372
第1列是这个LTR-RTS的区间,包括5’LTR+INT+3'LTR.
第3列是motif:主要是TGCA,都是四个碱基,在5‘LTR和3’LTR左右各分布两个碱基。TG ...CA
图3中红色三角。
第4列TSD:重复序列,分布在5‘LTR左侧和3’LTR右侧。见图3中灰色块。
第5列5‘TSD和3’TSD的区间,这是在LTR-RTS区间的外
第6列Internal,是中间的区间。
第9列SuperFamily,植物中只有Gypsy和Copia两种类型,和unknown。unknown类型的可以自行提取序列,使用hmmer比对pfarm对应两个家族的蛋白,然后使用mafft比对,构建进化树。
第10列TE_type LTR或NA
第11列Insertion_Time,使用ggplot画出密度图,图2所示。
上面是默认的参数,如果鉴定结果不理想,可以对LTR-RTs的鉴定参数进行调整
gt ltrharvest \
-index ${species} \
-similar 85 -vic 10 -seed 20 -seqids yes \
-minlenltr 100 -maxlenltr 7000 -mintsd 4 -maxtsd 6 \
-motif TGCA -motifmis 1 > ${species}.harvest.scn
# LTR_FINDER
ltr_finder -w 2 -C -D 15000 -d 1000 -L 7000 -l 100 -p 20 -M 0.85 ${genome} > ${species}.finder.scn
LTR 长度设置为 100-7000 bp,5' 和 3' LTR 之间的距离设置为 1000-15,000 bp,5' 和 3' LTR 之间的最小相似性设置为 85%,LTR-FINDER 参数 -l 100 -L 6000 -d 1000 -D 15000 -M 0.85 -w 2。
可视化
cat Spohua.chr.fa.out.LAI|sed 's/Chr0/Chr/' |sed 's/Chr//' |sed '2d'|tr "\t" , >species.ltr.csv
手动给左边第一行第一个添加CHR。注意:染色体如果是Chr01要替换为Chr1,species.ltr.csv里是1.
物种的LTR的年代的密度图
species.LTR.Insertion_Time.csv是genome.fa.pass.list最后一列
library("ggplot2")
#读入文件
dat<-read.csv("species.LTR.Insertion_Time.csv",header=FALSE)
#除以100万
VAF<-dat$V1 / 1000000
#画图(出图结果中x轴是以mya(百万年)为单位的。)
ggplot(dat,aes(x=VAF))+geom_density(color = "red")+xlab('Mya')+ylab('Density')+
scale_x_continuous(expand = c(0, 0)) +
#scale_y_continuous(expand = c(0, 0))+ #设置横纵坐标从0开始
theme_classic()
ggsave('Speies.LTR.density.pdf',dpi = 300)
#求峰值
y_peak <- which.max(density(VAF)$y)#找y值最大的
x_peak <- density(VAF)$x[y_peak]#找出最大的y所对应的x
#分类可视化,LTR-RTs的密度图
#LTR.typetime.csv是genome.fa.pass.list最后一列和倒数第三列。
#读入文件
dat1<-read.csv("LTR.typetime.csv",header=FALSE)
#预处理
names(dat1) <- c("VAF1","Type")
dat1$VAF1<-dat1$VAF1 / 1000000
#画图
ggplot(dat1,aes(x=VAF1))+geom_density(aes(color = Type))+xlab('Mya')+ylab('Density')+
scale_x_continuous(expand = c(0, 0)) +
#scale_y_continuous(expand = c(0, 0))+ #设置横纵坐标从0开始
theme_classic()
ggsave('SpO_LTR_type.density.pdf',dpi = 300)
#species.ltr.csv来源于genome.fa.pass.list,其中列BP再csv文件里不存在
#可视化各个染色体上的LAI得分
install.packages("qqman")
library("qqman")
library("ggplot2")
install.packages("ggsci")
library("ggsci")
library("scales")
manhattan(gwasResults)
head(gwasResults,50)
data2 <- read.csv('species.ltr.csv')
data2$BP <- (data2$From + data2$To)/2
show_col(pal_d3("category20")(20)) #使用ggsci来选择颜色
show_col(pal_igv("default")(51)) #51种颜色绝对够用。
show_col(pal_ucscgb("default", alpha = 0.6)(26))
show_col(pal_gsea("default", n = 30, alpha = 0.6, reverse = TRUE)(30))
##根据你的染色体的数量,灵活修改col的配色的颜色数量。
manhattan(data2,chr="CHR",bp="BP",p="LAI",logp=F,ylab="LAI",genomewideline = F,SNP= F ,suggestiveline = F,col = pal_d3("category20")(17))
ggsave('LTR.manhattan.pdf',dpi=300)
ggsave('LTR.manhattan.png')
head(data2)
# CHR From To Intact Total raw_LAI LAI BP
# 1 1 1 3000000 0.1917 0.7771 24.67 21.56 1500001
# 2 1 300001 3300000 0.1973 0.7971 24.76 21.65 1800001
# 3 1 600001 3600000 0.1976 0.8249 23.96 20.85 2100001
# 4 1 900001 3900000 0.2032 0.8621 23.57 20.46 2400001
# 5 1 1200001 4200000 0.1981 0.8769 22.59 19.48 2700001
# 6 1 1500001 4500000 0.1759 0.8843 19.89 16.78 3000001
By default the mutation rate is 1.3e-8 per
bp per year (rice), so the unit is calendar year. You may specify a
different rate by providing -u/-miu.默认的变异速率是1.3E-8.
最后注意:LTR_retriever默认已经完成了LAI的分析。在前者完成后,不要再用LAI再分析,LAI的输出会覆盖之前的输出,而且算出的LAI的值还比之前低。多倍体的数据需要把亚组分开计算,可以使用LAI单独计算。
不同基因组的相同亚组可以放到一起比较LAI.
LTR-RTs分类的讲解
图中是LTR-retriever可以鉴定的LTR-RTs的种类。其中A类是主要的。植物中在5’LTR和3‘LTR的两端都有TG和CA结构。motif一般是TGCA,其他类型也能被鉴定出来。
大多数自主LTR元件的内部区域应包含引物结合位点,多嘌呤束,gag基因(即编码用于逆转录的结构蛋白)和pol基因(即起蛋白酶,逆转录酶和整合酶的作用
LTR-retriver输出文件
1.具有坐标和结构信息的完整LTR-RT
摘要表(.pass.list)
GFF3格式输出(.pass.list.gff3)
包含有pass的是过滤整合后的最终的结果
2.LTR-RT库
所有非冗余LTR-RT(.LTRlib.fa) #已经删除重复的序列
所有非TGCA LTR-RT(.nmtf.LTRlib.fa) #此文件可能没有
所有(.LTRlib.redundant.fa)的LTR-RT(有冗余) #所有的LTR-TR序列
3.非冗余文库的全基因组LTR-RT注释
GFF格式输出(.out.gff)
LTR系列摘要(.out.fam.size.list)
LTR超家族摘要(.out.superfam.size.list)
每个染色体上的LTR分布(.out.LTR.distribution.txt)
4.LTR组装索引(.out.LAI)