宏基因组:一日一工具之-kneaddata -完成质控加去宿主

一日一条命令-kneaddata

写在前面

kneaddata是一分结合质控和去除宿主的过程,集合了两个软件Trimmomatic和 Bowtie2,Trimmomatic作为质控软件应用的非常多,但是去除宿主的还有BMTagger软件。。这部分的核心是对序列和宿主的序列进行比对,并去除匹配上的序列,所以需要宿主基因组序列,不同的软件可能要构建不同的所以索引。值得注意的是这是Huttenhower lab开发专门质控宏基因组的工具。

KneadData需要FASTQ文件。它支持单端和双端序列。

安装要求

Trimmomatic (版本== 0.33)(自动安装)
Bowtie2 (版本> = 2.2)(自动安装)
Python (版本> = 2.7)
Java运行时环境
TRF (可选)
Fastqc (可选)
SAMTools (仅当输入文件为BAM格式时才需要)
内存(如果使用Bowtie2,> = 4 Gb,如果使用BMTagger,> = 8 Gb)
操作系统(Linux或Mac)

今日份—kneaddata

这是一个综合软件,用于指控的去除宿主污染,所以这个软件封装了 两个子软件。

第一个就是:Trimmomatic

Trimmomatic软件,2014年首次发表在Bioinformatics期刊上,是一款专门对Illumina平台测序产生的reads进行修剪和过滤的软件。自发表以来,Trimmomatic软件凭借其简单的安装方法、较快的运行速度(支持多线程)、强大的去接头能力(simple和palindrome两种模式)、多元化的低质量数据处理方式、人性化的输出格式(clean reads为一一对应的pair-end形式,无需再次处理)等特点,深受数据处理者喜爱!

安装过程

直接使用conda即可安装成功

# 测试 Ubuntu 20
conda install kneaddata

Bowtie2

Bowtie2 只能索引基因组文件。是将测序reads与长参考序列比对工具,注意着个工具虽然类似我们RNAseq所使用的hisat2,并且用法也类似,但是Bowtie2 只能索引基因组文件。

这个软件已经在安装kneaddata的时候作为依赖安装进去了。

但是却需要基因组索引文件,这里我们需要手动下载,或者使用命令

软件提供的这个地方只有人类和小鼠的基因组索引文件,和几个测试文件,基本上是不够我们做生态的使用的。

下载索引到当前文件夹中

kneaddata_database --download human_genome bowtie2 ./

可选的数据框有以下几个:可以通过kneaddata_database  —available  命令查看。

human_genome : bmtagger = http://huttenhower.sph.harvard.edu/kneadData_databases/Homo_sapiens_BMTagger_v0.1.tar.gz
human_genome : bowtie2 = http://huttenhower.sph.harvard.edu/kneadData_databases/Homo_sapiens_Bowtie2_v0.1.tar.gz
mouse_C57BL : bowtie2 = http://huttenhower.sph.harvard.edu/kneadData_databases/mouse_C57BL_6NJ_Bowtie2_v0.1.tar.gz
human_transcriptome : bowtie2 = http://huttenhower.sph.harvard.edu/kneadData_databases/Homo_sapiens_hg38_transcriptome_Bowtie2_v0.1.tar.gz
ribosomal_RNA : bowtie2 = http://huttenhower.sph.harvard.edu/kneadData_databases/SILVA_128_LSUParc_SSUParc_ribosomal_RNA_v0.1.tar.gz

但是如果有其他物种,这里可以单独使用bowtie2构建索引,就可以用使用在kneaddata 中了。kneaddata也没有自己构建很多的基因组供大家下载,还是成本太高啦。

使用Bowtie2构建索引

这里我构建了玉米的索引,同样的方式适用于植物或者动物:

  • Ensembl数据库下载参考基因组(植物的基因组):

    http://plants.ensembl.org/index.html

  • 动物的基因组:

    http://asia.ensembl.org/index.html?redirect=no

注意下载toplevel的全基因组。

bowtie2-build ./Zea_mays.B73_RefGen_v4.dna.toplevel.fa index

参考学习:http://www.chenlianfu.com/?p=178

Trimmomatic

illumina的几个接头和trimmomatic

一般illumina就那么几个接头,如果你想知道接头的序列可以去illumina下载,或者再trimmomatic的安装文件里都有的。

点击下载

应该选择什么接头呢?

我们一般选择这个接头:trimmomatic-0.39-1//adapters/TruSeq3-PE.fa

为什么选择这个呢?因为这和TruSeq protocol 协议有关系,一般来讲V2 使用在一些比较老的测序机器上,例如:GAII,比较新的及其,例如:HiSeq 。

SE 或者 PE分别代表是单端测序还是双端。

所以 TruSeq-3-PE.fa 就是最近几年的及其测的双端序列。

为什么我们还需要了解其他格式的接头呢?因为在NABI等数据库中的宏基因组数据可能会用到。

reference

  • https://www.biostars.org/p/323087/

  • https://www.genepattern.org/modules/docs/Trimmomatic/

kneaddata命令

是否去除重复序列

注意参数 —run-trim-repetitive ,为去除重复序列,这对于大量的重复序列非常重要,所以我们在运行的过程中添加上,例如:扩增子序列中就有大量的重复序列,添加该参数有助于减少运行时间。

如果不知道是否添加这个参数,可以使用fastqc来检测,添加参数:—fastqc FastQC;

kneaddata --input demo.fastq -db demo_db -o kneaddata_output --run-trim-repetitive --fastqc FastQC

如何指定bowtie2和Trimmomatic工具自己的参数

使用—bowtie2-options=后面用双引号接参数;Trimmomatic工具也是一样的道理;—trimmomatic-options=后面用双引号接参数;如果同一个工具添加多个参数,那就多用几个这种格式: 例如:

kneaddata --input demo.fastq --output kneaddata_output --reference-db database_folder --bowtie2-options="--very-fast" --bowtie2-options="-p 2"

kneaddata --input demo.fastq --output kneaddata_output --reference-db database_folder --trimmomatic-options="LEADING:3" --trimmomatic-options="TRAILING:3"

取宿主可可以去除多个宿主

这个软件专门设计用于宏基因组,对于处理宿主数据就显得很得心应手,这里可以添加多个宿主,用于复杂环境去除宿主数据,例如:

kneaddata --input demo.fastq --output kneaddata_output --reference-db database_folder --reference-db database_folder2/demo

根据示例文件运行数据

time kneaddata -i seq/p144C_1.fq.gz -i seq/p144C_2.fq.gz -o temp/qc -v -t 3 --remove-intermediate-output --trimmomatic /home/wentao/sra/Trimmomatic-0.38/ --trimmomatic-options 'SLIDINGWINDOW:4:20 MINLEN:50' --bowtie2-options '--very-sensitive --dovetail' -db ~/db/kneaddata/human_genome/Homo_sapiens

进行完成后的序列统计

kneaddata_read_count_table --input temp/qc --output result/01kneaddata_sum.txt
cat result/01kneaddata_sum.txt

结果文件

  • $OUTPUT_DIR/$INPUTNAME_kneaddata.fastq :质控后并过滤完成的最终文件

  • $OUTPUT_DIR/$INPUTNAME_kneaddata_$DATABASE_$SOFTWARE_contam.fastq 宿主比对上的序列

  • $OUTPUT_DIR/$INPUTNAME_kneaddata.log 运行的日志文件,如果报错可以查看这里。

  • $OUTPUT_DIR/$INPUTNAME_kneaddata.trimmed.fastq 这仅仅是Trimmomatic过滤后的文件

reference : https://huttenhower.sph.harvard.edu/kneaddata/

reference

  • https://www.sohu.com/a/252244330_100269283

  • https://github.com/biobakery/kneaddata

常见问题- 可以不做阅读

pip安装

此安装方式会同时安装Trimmomatic和Bowtie2,以为好多人都已经安装过这两个依赖了,所以可以在安装过程中添加参数

pip install kneaddata

pip install kneaddata –install-option=’–bypass-dependencies-install

手动安装过程 Trimmomatic

wget http://www.usadellab.org/cms/uploads/supplementary/Trimmomatic/Trimmomatic-0.38.zip
unzip Trimmomatic-0.38.zip
java -jar ~/sra/Trimmomatic-0.38/trimmomatic-0.38.jar –h

创建BMTagger数据库

默认情况下,这将生成参考数据库,其名称以开头reference.fasta。

kneaddata_build_database reference.fasta
# bowtie2 数据库或者索引构建
bowtie2-build Homo_sapiens.fasta -o Homo_sapiens_db

Homo_sapiens_db让多个索引文件具有统一的扩展名。

关于adapters的问题

按照刘老师说的,目前公司都去除了接头了,那么如果没有去除接头,我们该如何选择adapters序列文件呢?

进入trimmomatic路径我们发现有很多的adapters。

cd ./metagenome_env/share/trimmomatic-0.39-1/adapters/

这里有六个,那么如何决定选择哪个adapters来做trimmomatic,去除接头呢呢?

NexteraPE-PE.fa TruSeq2-SE.fa TruSeq3-PE.fa
TruSeq2-PE.fa TruSeq3-PE-2.fa TruSeq3-SE.fa

java错误: -d64

报错信息:

Error message returned from Trimmomatic :
Unrecognized option: -d64
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

我不知道这是什么问题:首先开始修改java的版本 查找ubuntu下面到底安装了多少个java的版本:

sudo update-alternatives --config java

发现我安装了好几个java。

0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 auto mode
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode
* 2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode
3 /usr/local/java/jdk1.7.0_80/bin/java

这种方法选择数字没有更改了默认版本,所以我在这个文件中修改:

sudo gedit /etc/profile

在文件中修改JAVA_HOME即可(输入sudo update-alternatives —config java即可看到这些路径)

export JAVA_HOME=/usr/local/java/jdk1.7.0_80
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

完成之后source一下

source /etc/profile

(0)

相关推荐