首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >宏基因组reads筛选:去除宿主序列

宏基因组reads筛选:去除宿主序列

作者头像
SYSU星空
发布2022-05-05 13:32:13
发布2022-05-05 13:32:13
4.1K0
举报

基于环境的复杂性与研究对象的不同,宏基因组数据在组装之前常需要过滤掉一些序列以防干扰研究。例如要研究动植物组织或肠道的微生物组,往往需要去除宿主的DNA序列。假如研究的是人类肠道微生物的宏基因组,需要去除属于人基因组的序列。具体方法为将质控后的序列和人类基因组序列进行比对,将比对上的序列去除。

宏基因组分析Pipeline

测序数据的解析:Fastq与FastQC

测序数据的质控:Trimmomatic!

宏基因组reads筛选:去除宿主序列

测序数据的组装:常用软件工具

更新中……

短序列有参比对常用的软件有BWA、Bowtie、BBMap等。下面以Bowtie 2为例。Bowtie 2(http://bowtie-bio.sourceforge.net/bowtie2/index.shtml)是一个快速的、节约内存的序列比对工具,用于将测序的reads比对到长的参考序列。首先需要下载参考基因组,这里以人类为例,可以去NCBI下载最新版本的人类基因组序列(https://www.ncbi.nlm.nih.gov/projects/genome/guide/human/index.shtml),其下载的为fasta格式(压缩文件),如下所示:

染色体两端为端粒重复序列所以用N标记,接下来解压文件然后使用bowtie2-build来构建新的index,如下所示:

代码语言:javascript
复制
gzip -d GRCh38_latest_genomic.fna.gz
bowtie2-build --threads 20 GRCh38_latest_genomic.fna human_genome

运行结束后,生成6个文件,如下所示:

Bowtie已经为很多常见物种预先构建了index(见官网主页Pre-built indexes栏),不想自己构建可以在其FTP中下载。bowtie2进行比对的用法如下所示:

代码语言:javascript
复制
bowtie2 [options] -x <bt2-idx> { -1 <m1> -2 <m2> | -U <r>} [-S <hit>]
<文件>:
-x <bt2-idx>
参考基因组(reference genome)通过bowtie2-build指令构建的Index文件
-1 <m1>
双末端测序中第一个fastq文件,可以写多个文库但是必须用逗号隔开,但文件m1与文件m2必须一一对应,测序文件中的Reads的长度可以不同。
-2 <m2>
双末端测序对应的第二个fastq文件,与文件m1对应
-U <r>
与前面的文件1,文件2为或的关系,此处的文件是非双末端比对文件。例如lane1.fq,lane2.fq,lane3.fq,lane4.fq。可以是多个文件,但是必须用逗号隔开。
-S <hit>
指定输出文件,后缀是sam的格式的文件,默认标准输出
[options]:
-q
Reads(用<m1>,<m2>,<s>指定)是FASTQ格式的文件,默认即FASTQ。
--qseq
Reads(用<m1>,<m2>,<s>指定)是QSEQ格式的文件。
-f
Reads(用<m1>,<m2>,<s>指定)是FASTA文件。
-r
Reads(用<m1>,<m2>,<s>指定),每行代表一个输入序列,没有任何其他信息(无read名称,无qualities)。
-c
后面直接是比对的reads序列(而不是文件),即reads序列在命令行上给出。
-s/--skip <int>
<int>中是数字,input的reads跳过前<int>个reads或read pairs
-u/--qupto <int>
比对前<int>个reads或read pairs,然后停止。
-5/--trim5 <int>
剪掉5'(左)端<int>长度的碱基,再用于比对(默认值0)
-3/--trim3 <int>
剪掉3'(右)端<int>长度的碱基,再用于比对(默认值0)
--phred33
输入的序列质量数据为Phred33体系(默认为phred33)
--phred64
输入的序列质量数据为Phred64体系
-p
程序运行所用核数

接下来进行比对,如下所示:

代码语言:javascript
复制
bowtie2 -p 20 -x human_genome -1 clean_1.fq -2 clean_2.fq -S meta.sam

运行结束后生成sam格式的结果文件,用来存储reads到参考序列的比对信息(即告诉你这个reads在染色体上的位置等)。接下来使用samtools工具将sam文件转化为bam文件,其中-b指定输出文件为bam,-S指定输入文件为sam:

代码语言:javascript
复制
samtools view -bS --threads 20 meta.sam > meta.bam

bam文件为sam文件的压缩版本,是二进制文件,占用空间更小,可以用samtools工具实现sam和bam文件之间的转化。接下来对bam文件按照比对的位置坐标对reads进行排序:

代码语言:javascript
复制
samtools sort meta.bam -o meta.reads.sorted.bam --threads 20

继续将bam文件转换为bed文件:

代码语言:javascript
复制
bamToBed -i meta.reads.sorted.bam > meta.reads.sorted.bed

bed文件中包含了全部比对到宿主基因组的序列信息,根据序列信息,将原始数据中包含有宿主基因组的序列去除:

其中第一列为参考基因组染色体或scaffold名称,第二列与第三列为read在该染色体或scafflold比对的起始与终止位置,第四列为比对上的read名称(末尾/1表示第一端/2为第二端,一般只要有一端比对上,双端的序列均要去除),第五列为得分score,第六列为比对到参考序列链的方向。

最后,需要大家自行写脚本将这些reads从测序数据中去除。

END

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微生态与微进化 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档