宏基因组数据二+三代混合组装并计算Read对Contig的深度

二+三代混合组装:OPERA-MS

对于我这一批样品,分别使用了Illumina NovaSeq PE250、插入文库约400bp的双端测序,另外对于每一组平行样进行了Oxford Nanopore的单分子测序。

metaSPAdes组装短读长

由于混合组装软件OPERA-MS的运行中首先要做的步骤就是利用Megahit或者metaSPAdes进行短读长的组装,我正好直接先自己组装好,该软件可以接受短读长的组装contig文件作为输入跳过该软件内置的短读长拼接步骤。metaSPAdes这一步我用的是默认参数。

OPERA-MS混合组装

上一步得到的metaSPAdes组装结果为contig_spades.fasta
OPERA-MS混合组装command:

perl ../OPERA-MS/OPERA-MS.pl \
	--short-read1 Illumina_R1.fq \
	--short-read2 Illumina_R2.fq \
	--contig-file contig_spades.fasta \
	--long-read nanopore_seq.fastq \
	--out-dir sample_name_dir \
	--no-ref-clustering \
	--num-processors 64 \
	--no-polishing

即使提供了预组装好的contig文件,参数中仍需提供质控后用于预组装的短读序列文件。另外,如果不写--no-polishing参数的话,组装结束后会花费巨额的时间使用Pilon软件对序列进行polish,不是很需要的可以使用该参数跳过该步骤,节约时间。

相比于metaSPAdes的耗时,OPERA-MS的速度并不算慢。

计算Contig丰度以及Read对Contig的深度

我们想将所有二代reads给map到拼接好的contig上,每一条contig中能map上的全部read数目作为该contig的丰度。在一篇公众号上看到说全部read的总Nt数除以该contig长度的值作为该contig的覆盖度。但是覆盖度这个概念我总觉得应该以百分比的形式展示,这个定义我觉得更偏向于是:该contig上每个Nt平均被read所测到的次数,这个定义我觉得更像是“测序深度”的定义?

同样,这一部分的计算我也是从上述的公众号上学来的,可能是bowtie2和samtools版本问题,我使用的参数形式可能和该公众号里的不太一样,简单记录一下。

我使用的版本:
Bowtie 2 version 2.4.1
samtools: 0.1.19-44428cd
CheckM v1.1.3

第一步:bowtie-build

bowtie2-build --thread 64 1A/contigs.fasta ~/hotspring/NGS/read_mapping/1A/1A_contig_build

会生成这些文件:
bowtie-build生成的结果文件
第二步:bowtie2

bowtie2 -p 64 \
	-x ~/hotspring/NGS/read_mapping/1A/1A_contig_build \
	-1 ~/hotspring/NGS/dedupe/1A_dedupe_R1.fq \
	-2 ~/hotspring/NGS/dedupe/1A_dedupe_R2.fq \
	-S ~/hotspring/NGS/read_mapping/1A/1A_contig.sam

生成的就是sam文件

第三步:samtools view将sam文件转化为bam文件 然后用samtools sort排序

#sam to bam
samtools view -bS -@ 64 ~/hotspring/NGS/read_mapping/1A/1A_contig.sam > ~/hotspring/NGS/read_mapping/1A/1A_contig.bam
#sort
samtools sort ~/hotspring/NGS/read_mapping/1A/1A_contig.bam \
~/hotspring/NGS/read_mapping/1A/1A_contig_sorted -@ 64 -m 1024M

这一步sam文件就变成了bam文件之后排序!

注意 我自己按照samtools的说明文档操作的时候使用了-n这个参数,运行下一步的时候就会报错!我去官方manual上查看了,这么写的:

Note that if the sorted output file is to be indexed with samtools index, the default coordinate sort must be used. Thus the -n and -t options are incompatible with samtools index.

所以这一步就不要使用-n啦!
这一步会生成sorted的bam文件

第四步:samtools index

samtools index ~/hotspring/NGS/read_mapping/1A/1A_contig_sorted

这一步生成了一个sorted.bam.bai文件

第五步:使用CheckM软件计算coverage

这一步之前先建一个folder,把sorted的bam文件,bam.bai文件和contig文件扔到一个文件夹里~

mkdir checkm_bins
cp 1A/contigs.fasta checkm_bins
cp 1A_contig_sorted.bam checkm_bins
cp 1A_contig_sorted.bam.bai checkm_bins 

然后就可以使用checkm了:

checkm coverage -x fasta -m 20 -t 64 checkm_bins contigs_coverage.out checkm_bins/1A_contig_sorted.bam

结果输出在contigs_coverage.out文件里。

查看结果文件

结果文件大概是这样的:

Sequence Id	Bin Id	Sequence length (bp)	Bam Id	Coverage	Mapped reads
opera_contig_1	contigs	359737	1A_contig_sorted	31.891943	47476
opera_contig_2	contigs	301539	1A_contig_sorted	86.816714	108701
opera_contig_3	contigs	266462	1A_contig_sorted	35.674667	39262
opera_contig_4	contigs	167722	1A_contig_sorted	87.231794	60715
opera_contig_5	contigs	156833	1A_contig_sorted	36.943685	23955
opera_contig_6	contigs	149703	1A_contig_sorted	29.145709	18003
opera_contig_7	contigs	142800	1A_contig_sorted	56.074216	33284
opera_contig_8	contigs	137842	1A_contig_sorted	77.849074	44505
opera_contig_9	contigs	132689	1A_contig_sorted	42.780042	23506

由于该软件实际上是查看分箱结果的,所以他的header是这样的。在这里,sequence id实际上就是我们所有的contig,后面显示了该contig的长度,map到该contig的read数目以及计算的“coverage”。我大概验算了一下,比如按照第一行,用这里的“coverage”乘以contig长度除以map到的read数:
31.891943*359737/47476 ≈ 241.65
我基本上推测他这个coverage真就这么算出来的~

至此,这一部分的计算就完成了。

待解决的问题

其实我对于sam,bam文件的内容和操作还不是很熟悉。之后进行基因预测等操作的时候也会用到(还会用到很多别的格式),这几天学习一下,可能的话再写一篇学习笔记。

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EmmettPeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值