使用EDTA进行TE注释
一句话评价:重复序列注释用EDTA就完事了。
简介
EDTA, 全称是 Extensive de-novo TE Annotator, 一个综合性的流程工具,它整合了目前LTR预测工具结果,TIR预测工具结果,MITE预测工具结果,Helitrons预测工具结果, 从而构建出一高可信,非冗余的TE数据库,用做基因组的注释。流程图如下
安装
如果没有管理员权限,可以用conda进行安装。如果有管理员权限,可以尝试用docker或者singularity进行安装。
conda
使用conda的安装方法如下
conda create -n EDTA
conda activate EDTA
python2 -m pip install --user numpy==1.14.3 biopython==1.74 pp
conda config --env --add channels anaconda --add channels conda-forge --add channels biocore --add channels bioconda --add channels cyclus
conda install -n EDTA -y cd-hit repeatmodeler muscle mdust repeatmasker=4.0.9_p2 blast-legacy java-jdk perl perl-text-soundex multiprocess regex tensorflow=1.14.0 keras=2.2.4 scikit-learn=0.19.0 biopython pandas glob2 python=3.6 trf
git clone https://github.com/oushujun/EDTA
./EDTA/EDTA.pl
需要注意的一点是,bioconda建议添加国内镜像站点, 否则可能会下载失败。
singularity
方法1: 使用EDTA上提供的docker镜像,以singularity进行安装
singularity build edta.sif docker://kapeel/edta
在使用时,有一点需要注意,需要用-B
将外部的RepeatMasker的Libraries绑定的Libraries,否则可能会在检查依赖这一步失败。
这里,我参考的是LoReAN的方法
cd ~ # 切换到家目录
mkdir -p LoReAn && cd LoReAn
wget https://github.com/lfaino/LoReAn/raw/noIPRS/third_party/software/RepeatMasker.Libraries.tar.gz && tar -zxvf RepeatMasker.Libraries.tar.gz
singularity exec \-B /home/xzg/LoReAn/Libraries/:/opt/conda/share/RepeatMasker/Libraries/ \/home/xzg/edta.sif /EDTA/EDTA.pl -h
上面的/home/xzg/
是我的家目录,需要根据实际情况进行选择
方法2: 使用 @wangshun1121 构建的docker镜像, 他解决了需要-B
进行挂载的问题。
singularity build edta.sif docker://registry.cn-hangzhou.aliyuncs.com/wangshun1121/edta
实战
我们以拟南芥的第一条染色体为例,进行介绍
# singularity
singularity exec ~/LoReAn/edta.sif /EDTA/EDTA.pl \-genome chr1.fa -species others -step all -t 20
# conda
# 我的EDTA在我的家目录下
~/EDTA/EDTA.pl -genome chr1.fa -species others -step all -t 20
这里的参数比较简单,
-genome
: 输入的基因组序列-species
: 物种名,Rice, Maize和others三个可选-step
: 运行步骤,all|filter|final|anno
, 根据具体情况选择-t
: 线程数,默认是4
此外还有几个参数可以关注下
-cds
: 提供已有的CDS序列(不能包括内含子和UTR),用于过滤-sensitive
: 是否用RepeatModeler
分析剩下的TE,默认是0,也就是不要。RepeatModeler
运行时间比较久,量力而信。-anno
: 是否在构建TE文库后进行全基因组预测,默认是0.
运行结束之后,会在当前目录下留下运行时的中间文件,保证你程序中断之后,能够断点续跑
- xxx.EDTA.raw
- xxx.EDTA.combine
- xxx.EDTA.final
以及你关注的xxx.EDTA.TElib.fa
, 这就是最终的TE文库。
可能问题
我在使用EDTA时,就遇到了两个问题。一个是singularity的EDTA直接使用时无法通过依赖检测,解决方法已经在安装部分提过,这里不在赘述。
另一个问题我在"Identify TIR candidates from scratch"这一步出现下面的报错
what(): terminate called after throwing an instance of 'Resource temporarily unavailable std::system_error'
what(): Resource temporarily unavailable
terminate called after throwing an instance of 'std::system_error'
我对这个报错进行了相近的分析,找到了对应代码,即sh $TIR_Learner -g $genome -s $species -t $threads -l $maxint
. 用实际内容替换变量后,即下面这行代码
sh /EDTA/bin/TIR-Learner2.4/TIR-Learner2.4.sh -g chr.fa -s others -t 20 -l 5000
更具体一点,可以将问题定位到脚本的Module 3, Step 3: Get dataset
genomeFile=/data/xzg_data/1800_assembly/annotation/repeatAnnotation/chr.fa #基因组文件的实际路径
genomeName=TIR-Learner
tir_path=/EDTA/bin/TIR-Learner2.4 # TIR-Learner2.4的路径
t=1
dir=`pwd`
export OMP_NUM_THREADS=1
python3 $tir_path/Module3_New/getDataset.py -g $genomeFile -name $genomeName -p $tir_path -t $t -d $dir"/Module3_New"
将线程数设置为1后,该代码顺利跑通。进一步,我定位getDataset.py
的出问题的地方实际是predict
函数。当然接着执行后续的代码,发现改动这一参数并不影响下面代码的运行。
echo "Module 3, Step 4: Check TIR/TSD"
python3 $path/Module3_New/CheckTIRTSD_M3.py -name $genomeName -p $path -t $t -d $dir"/Module3_New"
echo "Module 3, Step 5: Write to Gff"
python3 $path/Module3/WriteToGff_M3.py -name $genomeName -p $path -t $t -d $dir"/Module3_New"
我发现predict
函数涉及到了Python的多进程调用,最终在偶然间找到问题真正所在,即Linux系统对用户的资源限制,可以通过ulimit -a
查看。
最终我通过设置ulimit -u 9000
,提高允许运行的总程序数,将问题解决。
参考资料
- EDTA官方文档
- RMblast的问题
- 一个关于fork资源不够的解决过程
- Ou, S., Su, W., Liao, Y., Chougule, K., Agda, J.R.A., Hellinga, A.J., Lugo, C.S.B., Elliott, T.A., Ware, D., Peterson, T., et al. (2019). Benchmarking transposable element annotation methods for creation of a streamlined, comprehensive pipeline. Genome Biology 20, 275.
使用EDTA进行TE注释相关推荐
- 超文本传输协议HTTP/1.1
文章来源: http://www.blogjava.net/sunchaojin/archive/2007/08/09/http.html 说明 本文档规定了互联网社区的标准组协议,并需要讨论和建议以 ...
- 安卓系统开发-HIDL
HIDL helloWorld hidl目录文件总结 HIDL 添加启动service VNDK相关 device部分 添加selinux权限(补全) 调试问题记录 权限报错 解决方法 解决方法 该部 ...
- 简述java中的注释以及用法_怎样理解 Java 注解和运用注解编程?
正好最近在公众号(BetterAndroid)发了一篇关于注解的文章,贴在这里吧,希望对题主有帮助. 一.什么是注解 我们都知道在Java代码中使用注释是为了提升代码的可读性,也就是说,注释是给人看的 ...
- Spring @Autowired 注释
转载自 Spring @Autowired 注释 Spring @Autowired 注释 @Autowired 注释对在哪里和如何完成自动连接提供了更多的细微的控制. @Autowired 注释可 ...
- linux下Makefile学习--注释很好
什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都 为你做了这个工作,但我觉得要作一个好的和 professional的程序员,makefile还 ...
- 修炼系列(八),你真的会写注释吗
本节主要介绍下我们常用的 javadoc tag ,虽然内容比较简单,但若正确使用,真的能使我们的代码高大上不少.不仅如此,只要我们按照Javadoc 注释规则,在编码完成后,Javadoc 也能够帮 ...
- SVM学习总结(三)SMO算法流程图及注释源码
一.SMO算法流程图 算法中的流程图绘制是根据第二节中的源码绘制的. 二.SMO算法C++源码 下面的源码是在csdn上下的,非常适合初学者的,而且smo算法实现的主体架构和实现都与SMO算法原论文基 ...
- Prim算法简易教程(~简单易懂,附最详细注释代码)
文章目录 1 最小生成树(Minimum Spanning Tree,MST) 2 Prim算法 2.1 简介 2.2 具体步骤 2.3 算法示例图 2.4 算法实现 2.5 算法分析 2.6 测试 ...
- 《四书五经》之大学全文、注释及读解 好东西啊
http://www.douban.com/group/topic/2058726/[原文] 大学之道(1),在明明德(2),在亲民(3),在止于至善. 知止(4)而后有定:定而后能静:静而后能 ...
最新文章
- 无法获取签名信息,请上传有效包(110506)
- csv转为utf8编码_读取UTF8编码的CSV并转换为UTF-16
- QT 012 [深入] Qt setupUi函数的原理和实现
- (总结)Linux下多行合并成一行,中间加分隔符
- xlsx文件和csv文件的相互转化
- Pentium的指令系统(5)——调用/转移/循环控制/中断指令
- Python新手学习基础之运算符——位运算
- Java继承(extends)的实现和 instanceof 运算符的使用
- Egret中的三种单例写法
- WiFi精灵:开启手机免费上网时代
- 基于VisMockup装配公差分析技术(VisVSA)的介绍
- 超详细教程:YOLO_V3(yolov3)训练自己的数据
- ZeroNet搭建个人网站,一些搞笑图片
- 2017年武昌工学院计算机基础,武昌理工学院2017.doc
- VA软屏和IPS硬屏的区别
- c语言解除指针引用什么意思,“解引用”指针是什么意思?
- 泽塔云CEO查乾:2019年超融合进入成熟市场,GPU云带来千亿级市场
- 计算机网络概念基础——分组交换
- Python3: fp-growth频繁项集求解算法代码(提供py文件,可直接调用)
- 【软考:网工】华为配置篇——补充实验(次要)