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

宏基因组数据二+三代混合组装并计算Read对Contig的深度OPERA MS 二三代混装与 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-build

bowtie2-build --thread 64 1A/contigs.fasta ~/hotspring/NGS/read_mapping/1A/1A_contig_build 
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  1A_contig_sorted 31. 47476 opera_contig_2 contigs  1A_contig_sorted 86.  opera_contig_3 contigs  1A_contig_sorted 35. 39262 opera_contig_4 contigs  1A_contig_sorted 87. 60715 opera_contig_5 contigs  1A_contig_sorted 36. 23955 opera_contig_6 contigs  1A_contig_sorted 29. 18003 opera_contig_7 contigs  1A_contig_sorted 56.074216 33284 opera_contig_8 contigs  1A_contig_sorted 77. 44505 opera_contig_9 contigs  1A_contig_sorted 42. 23506 

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

待解决的问题

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/224417.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午11:59
下一篇 2026年3月17日 上午11:59


相关推荐

  • struts2拦截器详解_struts拦截器配置

    struts2拦截器详解_struts拦截器配置当我们在intercepter内使用“returninvocation.invoke();”进行拦截器释放,线程会继续走下一个拦截器或请求方法。当我们直接返回return”success”,这类字符串时,拦截器会匹配所请求action的result结果,并直接返回。…

    2022年10月7日
    3
  • 位运算符有哪些_或运算和异或运算

    位运算符有哪些_或运算和异或运算位运算符的计算主要用在二进制中。实际开发中也经常会遇到需要用到这些运算符的时候,同时这些运算符也被作为基础的面试笔试题。所以了解这些运算符对程序员来说是十分必要的。于此,记录下我所理解的运算符:如果以开关开灯论:有这样两个开关,0为开关关闭,1为开关打开。与(&)运算与运算进行的是这样的算法:0&0=0,0&1=0,1&0=0,1&1=1在与运算中两个开关是

    2022年10月10日
    8
  • Java 网络编程 之 socket 的用法与实现

    Java 网络编程 之 socket 的用法与实现一 概念 TCPTCP Transmission 传输控制协议 是一种面向连接的 可靠的 基于字节流的传输层通信协议 由 IETF 的 RFC793 定义 在简化的计算机网络 OSI 模型中 它完成第四层传输层所指定的功能 用户数据报协议 UDP 下一篇博客会实现 是同一层内另一个重要的传输协议 在因特网协议族 Internetprot 中 TCP 层是

    2026年3月16日
    2
  • 设置IP地址、子网掩码、网关和DNS(手动获得IP地址默认网关)

    IP地址,子网掩码、默认网关,DNS的设置和工作原理(总结)转载:https://blog.csdn.net/kingshown_WZ/article/details/46423771概念:1.概述IP地址:人们在Internet上为了区分数以亿计的主机而给每台主机分配的一个专门的地址,通过IP地址就可以访问到每台主机。…

    2022年4月15日
    78
  • PCB(进程控制块)讲解

    PCB(进程控制块)讲解PCB 进程控制块 实际是一个结构体 放在 sched h 文件中 Linux 下可以通过 whereissched h 命令查看具体路径该结构体主要包含 1 进程 id2 进程的状态 就绪 运行 挂起 停止 3 进程切换时需要保存和恢复的一些 CPU 寄存器寄存器放在 CUP 中 A 程序和 B 程序分时执行的时候 A 占用 CPU 执行一定时间 CPU 便被 B 占用了 然后又轮到 A 执行 A 的资源如寄存器如何恢复到挂起

    2026年3月18日
    2
  • 【NLP学习计划】万字吃透NER

    【NLP学习计划】万字吃透NERNLP 系列学习计划 今天研究的是顶会 ACL2018 的一篇文章 并尝试在相同数据集上自己实现模型 领会 STOA 的魅力

    2026年3月17日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号