首页> 中国专利> 一种使用短读长序列纠错长读长组装结果的方法和装置

一种使用短读长序列纠错长读长组装结果的方法和装置

摘要

本申请公开了一种使用短读长序列纠错长读长组装结果的方法和装置。本申请的方法包括,切割步骤,以固定阈值对长读长组装结果进行切分,获得切分后的长读长组装结果;以及后续的基于切分后的长读长组装结果进行的长读长组装结果建库步骤、比对步骤、比对结果匹配步骤、比对结果转换和排序步骤、比对结果建库步骤、长读长组装结果纠错步骤,最终合并纠错结果,获得纠错后的长读长组装结果。本申请的方法,可使用小内存节点进行纠错,大幅降低了内存峰值,解决没有大内存节点无法进行纠错的问题,降低了长度长组装结果的纠错成本;并且,在资源充足情况下,本申请的纠错方法和装置还可以并行执行,降低执行时间,提供纠错效率。

著录项

  • 公开/公告号CN113012758A

    专利类型发明专利

  • 公开/公告日2021-06-22

    原文格式PDF

  • 申请/专利权人 武汉华大基因技术服务有限公司;

    申请/专利号CN202110452532.9

  • 发明设计人 邓天全;杨林峰;

    申请日2021-04-26

  • 分类号G16B30/00(20190101);G16B50/00(20190101);

  • 代理机构44281 深圳鼎合诚知识产权代理有限公司;

  • 代理人李小焦;彭家恩

  • 地址 430075 湖北省武汉市武汉东湖新技术开发区高新大道666号武汉国家生物产业基地项目B、C、D区研发楼B2栋

  • 入库时间 2023-06-19 11:32:36

说明书

技术领域

本申请涉及基因测序技术领域,特别是涉及一种使用短读长序列纠错长读长组装结果的方法和装置。

背景技术

长读长PacBio和Nanopore测序技术由于具有超长读长的特点,平均读长一般在10k-30k,能对高重复序列、转座子区域与高度变异区域等基因组复杂区域进行高水平组装,一般动植物组装结果Contig(重叠群)N50都能达到1MB以上。目前长读长组装软件主要有PBCR、Falcon、MECAT、CANU、HGAP等,这些软件都包含自纠错和组装功能。由于长读长序列平均的错误率一般在10~20%,故这些软件都是先进行序列自纠错,再利用纠错后序列进行组装,得到组装结果。由于组装结果可能存在一定的单碱基错误或结构变异,所以后续需要用长读长的原始序列对组装结果进行纠错,并采用平均错误率低于1%的高准确性的短读长序列通过Pilon软件进行纠错,得到最终的长读长组装结果。长读长组装的主要过程如图1所示。

在短读长序列对组装结果Pilon纠错时,Pilon软件是对整个组装结果进行纠错,存在内存峰值很高及耗时较长的问题。因为100G以上的大内存节点成本较高,同时很多院校和公司不经常用到,没有配置大内存节点,或者大内存节点有任务正在运行,已占用部分内存,需要等任务运行完毕才可执行,都会对项目执行造成影响。目前阿里云、华为云能提供大内存(100Gb)计算机的租赁服务,但其价格是小内存(64Gb以下)节点的数倍到几十倍,非常昂贵。

短读长序列NGS_1.fq和NGS_2.fq对长读长组装结果racon.fasta进行纠错的程序执行脚本如下:

(1)bwa index racon.fasta,即Bwa index*.fasta对组装结果建库

(2)bwa mem-t 64-M racon.fasta NGS_1.fq NGS_2.fq>ONTmin_ref.sam

(3)samtools view-bs ONTmin_ref.sam>ONTmin_ref.bam,即将*.sam格式转换为*.bam格式

(4)samtools sort ONTmin_ref.bam ONTmin_ref,即对*.bam文件进行排序命令,其中ONTmin_ref.bam是输入文件,ONTmin_ref是输出文件的前缀,输出文件最终会加后缀”.bam”,即如果ONTmin_ref改为A,则输出结果为A.bam

(5)samtools index ONTmin_ref.bam,即建库命令samtools index*.bam

(6)java-Xmx300G-jar pilon-1.22.jar--genome racon.fasta--ouput Pilon–outdir./--tracks–diploid–fix snps,indels--threads 64--flank 0--frags ONTmin_ref.bam

程序执行脚本中的步骤(1)、(2)、(3)、(4)、(5)、(6)分别对应图2中的长度长组装结果建库101、短读长序列比对到长度长组装结果102、对比结果格式转换103、比对结果排序104、比对结果建库105、长度长组装结果纠错106。对于大基因组,组装结果大于2G时,程序执行脚本中的步骤(6),即图2中的长度长组装结果纠错106步骤,需要设置内存300G并使用64线程进行整个组装结果纠错,其内存峰值会很高,耗时也较长。

因此,现有的使用短读长序列纠错长读长组装结果的方法,不仅对设备要求较高,而且耗时长,效率低。

发明内容

本申请的目的是提供一种改进的使用短读长序列纠错长读长组装结果的方法和装置。

为了实现上述目的,本申请采用了以下技术方案:

本申请的一方面公开了一种使用短读长序列纠错长读长组装结果的方法,包括以下步骤:

切割步骤,包括以固定阈值对长读长组装结果进行切分,获得切分后的长读长组装结果;其中,固定阈值一般设为100Mb,采用该固定阈值进行切分,按照本申请的方法,只需要机器内存50G就能完成纠错,比如本申请实施例中的试验2,内存峰值仅仅为26G,而不用本申请的方法要200多G内存峰值;原则上固定阈值越大,切割越大份,内存峰值会更高,反之亦然;视乎运行本申请方法任务的机器内存大小而定;

长读长组装结果建库步骤,包括对切分后的长读长组装结果进行建库,获得切分后的长读长组装结果库;

比对步骤,包括将短读长序列比对到切分后的长读长组装结果库中,获得比对结果;

比对结果匹配步骤,包括将比对步骤获得的比对结果匹配到切分后的长读长组装结果库中,获得含有匹配信息的比对结果;

比对结果转换和排序步骤,包括将含有匹配信息的比对结果转换成bam格式并排序;本申请的一种实现方式中,具体是针对racon软件做的,其中的步骤是用了bwa比对和samtools view-bs*sam转换成*bam格式,排序用samtools sort命令即可;可以理解,如果是针对其它软件也可以是转换成相应的格式,不一定是bam格式,在此不作具体限定;

比对结果建库步骤,包括对排序后的转换成bam格式的比对结果进行建库,获得比对结果库;

长读长组装结果纠错步骤,包括采用比对结果库对切分后的长读长组装结果库进行纠错,获得纠错结果;

合并纠错结果步骤,包括合并纠错结果,获得纠错后的长读长组装结果。

需要说明的是,本申请使用短读长序列纠错长读长组装结果的方法,先将长读长组装结果切分成更小的模块,再进行短读长Pilon纠错,不仅可以大幅降低内存峰值,而且,在资源充足情况可并行执行,降低执行时间。本申请的纠错方法,对设备内存要求较低,无需采用昂贵的大内存节点,也无需租赁昂贵的大内存云服务器,不仅提高了短读长序列纠错长读长组装结果的效率,还减低了纠错成本;为长读长测序的进一步推广和应用奠定了基础。

可以理解,本申请的关键之一在于预先对长读长组装结果进行切分,至于具体的切分阈值,即固定阈值,可以根据处理的长读长组装结果或使用需求而定。其他步骤,例如建库、比对、纠错等都可以参考现有技术,只是本申请建库的具体对象有所不同;例如本申请的长读长组装结果建库步骤,其建库对象是切分后的长读长组装结果,而现有的长度长组装结果建库101,如图2所示,是直接采用长度长组装结果进行建库。

本申请的一种实现方式中,固定阈值为100Mb-1000Mb。

优选的,固定阈值为100Mb。

需要说明的是,基因组的大小一般是大于1Gb,小于100Gb,都可以按照100Mb-1000Mb这个范围进行切分,并且能实现用较小的内存峰值机器完成基因组纠错。可以理解,固定阈值也可以大于1000Mb,当然阈值越大,相应的所需要的内存峰值也越大。可以理解,固定阈值的取值实际上取决于具体需要将长度长组装结果切分为多少份,固定阈值就是每份的大小;原则上,只要将每份的大小限定在能够满足现有计算机内存能够处理的程度即可;又或者为了进一步的减少内存占用,可以将固定阈值设计为更小,在此不作具体限定。

本申请的一种实现方式中,以固定阈值对长读长组装结果进行切分,具体包括,设定固定阈值对长读长组装结果进行切分,当一条contig的长度达到或超过固定阈值时,将其视为一份;当一条contig的长度小于固定阈值时,将其与前面或后面相邻的contig组合在一起,组合contig累计长度达到或超过该阈值时,将组合contig视为一份;以此类推,最后一条contig或者组合contig累计长度如果小于固定阈值,也视为一份。

需要说明的是,本申请的切分是指,按照固定阈值,以一条contig为基础进行切分;即是将刚好大于或等于固定阈值的一条contig或者或多条相邻的contig视为一份,最后剩余的contig即便不够固定阈值大小,也视为一份。例如,如果一条contig大于固定阈值,则该条contig直接视为一份;如果一条contig小于固定阈值,则需要与其相邻的contig组合在一起,组合的contig条数,以组合后累计长度刚好能够大于或等于固定阈值为准,这个组合的contig视为一份;按照这个原则对所有contig进行切分;直至最后一条contig,如果最后一条contig大于或等于固定阈值,则直接将其视为一份,如果最后一条contig小于固定阈值,也将其视为一份。因此,本申请的切分后的长读长组装结果库中,除最后一份可能小于固定阈值以外,其余各份都是大于或等于固定阈值的。例如本申请的一种实现方式中,对2.18Gb的长读长组装结果进行100Mb的固定阈值切分,切分获得20份,每份的大小依序为:108Mb、114Mb、114Mb、110Mb、120Mb、109Mb、109Mb、109Mb、108Mb、108Mb、109Mb、108Mb、111Mb、109Mb、119Mb、108Mb、110Mb、108Mb、108Mb、46Mb。

还需要说明的是,本申请以固定阈值进行切分,是不截断contig的,以contig长度或contig组合的累计长度达到或超过固定阈值进行切分。如果截断contig会对结果的准确性造成影响。

本申请的另一方面公开了一种使用短读长序列纠错长读长组装结果的装置,该装置包括切割模块、长读长组装结果建库模块、比对模块、比对结果匹配模块、比对结果转换和排序模块、比对结果建库模块、长读长组装结果纠错模块和合并纠错结果模块;

切割模块,包括用于以固定阈值对长读长组装结果进行切分,获得切分后的长读长组装结果;

长读长组装结果建库模块,包括用于对切分后的长读长组装结果进行建库,获得切分后的长读长组装结果库;

比对模块,包括用于将短读长序列比对到切分后的长读长组装结果库中,获得比对结果;

比对结果匹配模块,包括用于将比对模块获得的比对结果匹配到切分后的长读长组装结果库中,获得含有匹配信息的比对结果;

比对结果转换和排序模块,包括用于将含有匹配信息的比对结果转换成bam格式,并排序;

比对结果建库模块,包括用于对排序后的转换成bam格式的比对结果进行建库,获得比对结果库;

长读长组装结果纠错模块,包括用于采用比对结果库对切分后的长读长组装结果库进行纠错,获得纠错结果;

合并纠错结果模块,包括用于合并纠错结果,获得纠错后的长读长组装结果。

需要说明的是,本申请使用短读长序列纠错长读长组装结果的装置,实际上就是通过各模块分别实现本申请使用短读长序列纠错长读长组装结果的方法中的各步骤;因此,各模块的具体限定可以参考本申请使用短读长序列纠错长读长组装结果的方法。例如,固定阈值为100Mb,具体如何切分等。

本申请的再一面公开了一种使用短读长序列纠错长读长组装结果的装置,该装置包括存储器和处理器;其中,存储器,包括用于存储程序;处理器,包括用于通过执行该存储器存储的程序以实现本申请使用短读长序列纠错长读长组装结果的方法。

本申请的再一面公开了一种计算机可读存储介质,该存储介质中存储有程序,该程序能够被处理器执行以实现本申请使用短读长序列纠错长读长组装结果的方法。

由于采用以上技术方案,本申请的有益效果在于:

本申请使用短读长序列纠错长读长组装结果的方法和装置,可使用小内存节点进行短读长序列对长读长组装结果的纠错,大幅降低了内存峰值,解决没有大内存节点无法进行短读长序列对长读长组装结果纠错的问题,降低了长度长组装结果的纠错成本;并且,在资源充足情况下,本申请的纠错方法和装置还可以并行执行,降低执行时间,提供纠错效率。

附图说明

图1是现有的长读长组装的主要流程框图;

图2是现有的使用短读长序列纠错长读长组装结果的流程框图;

图3是本申请实施例中使用短读长序列纠错长读长组装结果的流程框图;

图4是本申请实施例中短读长序列比对到切分后的长读长组装结果库的部分比对结果截图;

图5是本申请实施例中采用现有方法进行短读长序列纠错长读长组装结果时,因内存不够导致任务中断的报错截图。

具体实施方式

下面通过具体实施方式结合附图对本申请作进一步详细说明。在以下的实施方式中,很多细节描述是为了使得本申请能被更好的理解。然而,本领域技术人员可以毫不费力的认识到,其中部分特征在不同情况下是可以省略的,或者可以由其他元件、材料、方法所替代。在某些情况下,本申请相关的一些操作并没有在说明书中显示或者描述,是为了避免本申请的核心部分被过多的描述所淹没,而对于本领域技术人员而言,详细描述这些相关操作并不是必要的,他们根据说明书中的描述以及本领域的一般技术知识即可完整了解相关操作。

现有的使用短读长序列纠错长读长组装结果的方法,通常需要采用大内存节点,租赁大内存(100Gb)计算机,这极大的提高了长读长组装结果的纠错成本,不利于长度长测序的推广和应用。

本申请创造性的提出,将长读长组装结果切分成更小的模块,在进行比对和纠错时,短读长序列是依序对每个模块进行比对和纠错,这样就不需要采用大内存节点,也能够实现短读长序列对长读长组装结果进行纠错。

根据以上发明构思,本申请使用短读长序列纠错长读长组装结果的方法,如图3所示,包括切割步骤201、长读长组装结果建库步骤202、比对步骤203、比对结果匹配步骤204、比对结果转换和排序步骤205、比对结果建库步骤206、长读长组装结果纠错步骤207和合并纠错结果步骤208。

其中,切割步骤201,包括以固定阈值对长读长组装结果进行切分,获得切分后的长读长组装结果。

本申请的一种实现方式中,以固定阈值对长读长组装结果A进行切分,获得多份切分后长读长组装结果(A1、A2…An)。设定固定阈值对长读长组装结果A切分,当最后一条contig(重叠群)长度与前面的contig累计长度达到或超过该阈值时为一份。剩余的contig累计长度从0开始算起,当最后一条累计长度达到或超过该阈值时为另一份,以此类推。最后一份累计长度如小于阈值的,也定义为一份An。

长读长组装结果建库步骤202,包括对切分后的长读长组装结果进行建库,获得切分后的长读长组装结果库。

本申请的一种实现方式中,使用命令“bwaindexA”对切割步骤201的长读长组装结果A建库。

比对步骤203,包括将短读长序列比对到切分后的长读长组装结果库中,获得比对结果。

本申请的一种实现方式中,短读长序列比对到长读长组装结果A,获得比对结果B,具体的,使用命令“bwa mem-MANGS_1.fq NGS_2.fq>B”将短读长序列NGS_1.fq和NGS_2.fq比对到长读长组装结果A,获得比对结果B。

比对结果匹配步骤204,包括将比对步骤获得的比对结果匹配到切分后的长读长组装结果库中,获得含有匹配信息的比对结果。

本申请的一种实现方式中,比对结果B根据切分后的长读长组装结果(A1、A2…An)匹配ContigID获得子比对结果(B1、B2…Bn)。方法如下:(1)以关键字“bwa”作为表头和内容的切分标志。其中不同组装结果“bwa”切分标志所在的行数不一样。如图4是比对结果B的用命令“less-SN B”显示的部分截图,第1~1317行是比对结果B表头,从第1318行开始是比对结果内容,第一列的行数(1309~1323)是“less-SN”命令显示出来的,并非真实存在,是为了方便说明本步骤特意用命令显示出来。(2)比对结果内容第三列ContigID与长读长组装结果(A1、A2…An)中的ContigID匹配,获得子比对结果(B1、B2…Bn),其中子比对结果(B1、B2…Bn)中均保留B的表头。比如图4中的第1318行中的第三列ContigID“000044F|arrow”在长读长组装结果A1的Contig ID也存在“000044F|arrow”,则第1318行的结果即为B1的比对结果内容,以此类推。

比对结果转换和排序步骤205,包括将含有匹配信息的比对结果转换成bam格式并排序。

本申请的一种实现方式中,子比对结果转换成bam格式并排序,获得排序后的结果(C1.bam、C2.bam…Cn.bam)。方法如下:(1)将比对结果匹配步骤204获得的子比对结果(B1、B2…Bn)分别用命令“samtools view-bSBi>Bi.bam”获得转换格式后的结果(B1.bam、B2.bam…Bn.bam),其中命令Bi中的i代表(1、2…n)。(2)使用命令“samtools sortBi.bamCi”分别对(B1.bam、B2.bam…Bn.bam)进行排序,获得排序后的结果(C1.bam、C2.bam…Cn.bam),其中命令Bi和Ci中的i代表(1、2…n)。

比对结果建库步骤206,包括对排序后的转换成bam格式的比对结果进行建库,获得比对结果库。

本申请的一种实现方式中,排序后的子比对结果(C1.bam、C2.bam…Cn.bam)建库,获得建库结果(C1.bam.bai、C2.bam.bai….Cn.bam.bai)。使用命令“samtoolsindexCi.bam”分别对(C1.bam、C2.bam…Cn.bam)进行建库,其中命令Ci.bam中的i代表(1、2…n)。

长读长组装结果纠错步骤207,包括采用比对结果库对切分后的长读长组装结果库进行纠错,获得纠错结果。

本申请的一种实现方式中,对子长读长组装结果(A1、A2…An)纠错,获得纠错结果(D1.fasta、D2.fasta…Dn.fasta)。使用命令“java-Xmx50G-jar pilon-1.22.jar--genomeAi--output Di--outdir./--diploid--fix snps,indels--threads num--flank 0--frags Ci.bam”,其中-Xmx50G中的50G是预设使用的内存参数,实际执行可根据情况调整;num为线程数,一般设置越大运行的时间越短,但所需的内存会更大;pilon-1.22.jar为该版本程序,版本如有更新的可换。其中命令中的Ai、Di和Ci.bam中的i代表(1、2…n),Di为输出的文件名前缀,“--outdir./”为结果输出到当前目录,如有需要可更改。“--diploid、--fix snps,indels、--flank 0”及更多的参数功能可查看Pilon软件的帮助说明。

合并纠错结果步骤208,包括合并纠错结果,获得纠错后的长读长组装结果。

本申请的一种实现方式中,合并纠错结果(D1.fasta、D2.fasta…Dn.fasta),获得最终纠错结果A.pilon.fasta。使用命令“catD1.fastaD2.fasta…Dn.fasta>A.pilon.fasta”,其中D1.fastaD2.fasta…Dn.fasta文件名之间用空格“”隔开,A.pilon.fasta是最终纠错结果文件名,如有需要可改名,不影响最终结果。

本领域技术人员可以理解,上述方法的全部或部分功能可以通过硬件的方式实现,也可以通过计算机程序的方式实现。当上述方法中全部或部分功能通过计算机程序的方式实现时,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器、随机存储器、磁盘、光盘、硬盘等,通过计算机执行该程序以实现上述功能。例如,将程序存储在设备的存储器中,当通过处理器执行存储器中程序,即可实现上述全部或部分功能。另外,当上述实施方式中全部或部分功能通过计算机程序的方式实现时,该程序也可以存储在服务器、另一计算机、磁盘、光盘、闪存盘或移动硬盘等存储介质中,通过下载或复制保存到本地设备的存储器中,或对本地设备的系统进行版本更新,当通过处理器执行存储器中的程序时,即可实现上述方法中全部或部分功能。

因此,基于本申请的方法,本申请提出了一种使用短读长序列纠错长读长组装结果的装置,该装置包括切割模块、长读长组装结果建库模块、比对模块、比对结果匹配模块、比对结果转换和排序模块、比对结果建库模块、长读长组装结果纠错模块和合并纠错结果模块。

切割模块,包括用于以固定阈值对长读长组装结果进行切分,获得切分后的长读长组装结果。

长读长组装结果建库模块,包括用于对切分后的长读长组装结果进行建库,获得切分后的长读长组装结果库。

比对模块,包括用于将短读长序列比对到切分后的长读长组装结果库中,获得比对结果。

比对结果匹配模块,包括用于将比对模块获得的比对结果匹配到切分后的长读长组装结果库中,获得含有匹配信息的比对结果。

比对结果转换和排序模块,包括用于将含有匹配信息的比对结果转换成bam格式,并排序。

比对结果建库模块,包括用于对排序后的转换成bam格式的比对结果进行建库,获得比对结果库。

长读长组装结果纠错模块,包括用于采用比对结果库对切分后的长读长组装结果库进行纠错,获得纠错结果。

合并纠错结果模块,包括用于合并纠错结果,获得纠错后的长读长组装结果。

本申请的装置,利用各模块相互协调作用,能够实现本申请的使用短读长序列纠错长读长组装结果的方法,特别是通过本申请装置的各模块能够实现本申请方法中相应的各个步骤,从而实现自动化的短读长序列纠错长读长组装结果。

本申请的另一实现方式中还提供了一种使用短读长序列纠错长读长组装结果的装置,该装置包括存储器和处理器;存储器,包括用于存储程序;处理器,包括用于通过执行存储器存储的程序以实现以下方法:切割步骤,包括以固定阈值对长读长组装结果进行切分,获得切分后的长读长组装结果;长读长组装结果建库步骤,包括对切分后的长读长组装结果进行建库,获得切分后的长读长组装结果库;比对步骤,包括将短读长序列比对到切分后的长读长组装结果库中,获得比对结果;比对结果匹配步骤,包括将比对步骤获得的比对结果匹配到切分后的长读长组装结果库中,获得含有匹配信息的比对结果;比对结果转换和排序步骤,包括将含有匹配信息的比对结果转换成bam格式并排序;比对结果建库步骤,包括对排序后的转换成bam格式的比对结果进行建库,获得比对结果库;长读长组装结果纠错步骤,包括采用比对结果库对切分后的长读长组装结果库进行纠错,获得纠错结果;合并纠错结果步骤,包括合并纠错结果,获得纠错后的长读长组装结果。

本申请另一种实现方式中还提供一种计算机可读存储介质,该存储介质中存储有程序,该程序能够被处理器执行以实现如下方法:切割步骤,包括以固定阈值对长读长组装结果进行切分,获得切分后的长读长组装结果;长读长组装结果建库步骤,包括对切分后的长读长组装结果进行建库,获得切分后的长读长组装结果库;比对步骤,包括将短读长序列比对到切分后的长读长组装结果库中,获得比对结果;比对结果匹配步骤,包括将比对步骤获得的比对结果匹配到切分后的长读长组装结果库中,获得含有匹配信息的比对结果;比对结果转换和排序步骤,包括将含有匹配信息的比对结果转换成bam格式并排序;比对结果建库步骤,包括对排序后的转换成bam格式的比对结果进行建库,获得比对结果库;长读长组装结果纠错步骤,包括采用比对结果库对切分后的长读长组装结果库进行纠错,获得纠错结果;合并纠错结果步骤,包括合并纠错结果,获得纠错后的长读长组装结果。

下面通过具体实施例和附图对本申请作进一步详细说明。以下实施例仅对本申请进行进一步说明,不应理解为对本申请的限制。

实施例

本例分别采用现有常规方法和本例改进方法对相同的长读长组装结果进行纠错,对比本例改进方法相对于常规方法的优点和效果。

其中,现有常规方法,即现有常规的短读长序列纠错长读长组装结果的方法,即不进行长读长组装结果切分直接用于后续纠错。本例改进方法,即对长读长组装结果进行切分后再用于后续纠错。

本例采用文章《Genome assembly of a tropical maize inbred line providesinsights into structural variation and crop improvement》中Methods部分的199Gb的PacBio数据用Falcon软件组装并做了polish后获得组装结果A.fasta,其大小约2.18Gb,以该组装结果作为长读长组装结果用于后续的纠错处理。

文章详细链接为:www.nature.com/articles/s41588-019-0427-6。

同时,本例下载以下短读长数据:

sra-pub-src-2.s3.amazonaws.com/SRR8873351/Clean_450_1.fq.gz

和sra-pub-src-2.s3.amazonaws.com/SRR8873351/Clean_450_2.fq.gz

并各截取其前面的59Gb数据得到1.fq和2.fq,即总共118Gb短读长数据,用于长读长组装结果A.fasta的纠错。下面分别用试验1和试验2来说明常规方法和本例改进方法实施的对比效果。

试验1

如图2所示,本试验用常规的方法对前述组装结果A.fasta进行pilon纠错,获得纠错结果Pilon.fasta。具体步骤如下:

步骤(1),长度长组装结果建库101,使用命令“bwa index A.fasta”对长读长组装结果建库,获得建库结果。

步骤(2),短读长序列比对到长度长组装结果102,使用命令“bwa mem-t80-MA.fasta 1.fq 2.fq>B.sam”将短读长序列1.fq和2.fq比对到组装结果A.fasta,获得比对结果B.sam。

步骤(3),对比结果格式转换103,使用命令“samtools view-bSB.sam>B.bam”将B.sam格式转换为B.bam,获得结果B.bam。

步骤(4),比对结果排序104,使用命令“samtools sort B.bamB”对B.bam文件进行排序并获得同名文件B.bam。

步骤(5),比对结果建库105,使用命令“samtools index B.bam”建库,获得建库结果B.bam.bai。

步骤(6),长度长组装结果纠错106,使用命令“java-Xmx300G-jar pilon-1.22.jar--genome A.fasta--output Pilon--outdir./--diploid--fix snps,indels--threads 100--flank 0--frags B.bam”对A.fasta纠错,获得最终的纠错结果Pilon.fasta。此步骤任务,本试验尝试用了100G,即设置参数-Xmx100G,但报如图5的错误,任务中断,原因是内存不够,即“java.lang.OutOfMemoryError”。另外本试验也尝试了200G,即设置参数-Xmx200G,但任务运行2天多未输出结果,亦未报错。后来本试验改为300G后,74分钟快速获得结果。

试验1的步骤(1)至(6)资源与时间消耗如表1所示。

表1试验1各步骤的资源与时间消耗表

试验1的结果显示,采用现有常规的短读长序列纠错长读长组装结果的方法,需要使用大内存节点,如300G,才能有效的进行纠错。

试验2

本试验使用本例改进的方法对试验1相同的组装结果A.fasta进行pilon纠错,获得纠错结果Pilon.fasta,步骤如下:

步骤(1),切割步骤201,设定固定阈值100MB对长读长组装结果A.fasta切分,当最后一条contig长度与前面的contig累计长度达到或超过该阈值100MB时为一份。剩余的contig累计长度从0开始算起,当最后一条累计长度达到或超过阈值100MB时为另一份,以此类推。最后一份累计长度如小于阈值100MB的,也定义为一份。最终本试验将A.fasta切分为20份,即(A1.fasta、A2.fasta…A20.fasta),大小分别约为(108Mb、114Mb、114Mb、110Mb、120Mb、109Mb、109Mb、109Mb、108Mb、108Mb、109Mb、108Mb、111Mb、109Mb、119Mb、108Mb、110Mb、108Mb、108Mb、46Mb)。

步骤(2),长读长组装结果建库步骤202,使用命令“bwa index A.fasta”对长读长组装结果建库。本步骤与试验1的步骤(1)相同,所不同的本试验的对象是切分后的长读长组装结果。

步骤(3),比对步骤203,使用命令“bwa mem-t 80-M A.fasta 1.fq2.fq>B.sam”将短读长序列1.fq和2.fq比对到组装结果A.fasta,获得比对结果B.sam。本步骤与试验1步骤(2)相同。

步骤(4),比对结果匹配步骤204,步骤(3)的比对结果B.sam根据步骤(1)切分后的长读长组装结果(A1.fasta、A2.fasta…A20.fasta)匹配ContigID获得子比对结果(B1.sam、B2.sam…B20.sam)。方法如下:(一)以关键字“bwa”作为表头和内容的切分标志。如图4是比对结果B的部分截图,第1~1317行是比对结果B.sam表头,从第1318行开始是比对结果内容。(二)比对结果内容第三列ContigID与步骤(1)切分获得的长读长组装结果(A1.fasta、A2.fasta…A20.fasta)中的ContigID匹配一致的,获得子比对结果(B1.sam、B2.sam…B20.sam),其中子比对结果(B1.sam、B2.sam…B20.sam)中均保留B.sam的表头。比如图4中的第1318行中的第三列ContigID“000044F|arrow”在长读长组装结果A8.fasta的Contig ID也存在“000044F|arrow”,则第1318行的结果即为B8.sam的比对结果内容,以此类推。最终获得子比对结果(B1.sam、B2.sam…B20.sam)。

步骤(5),比对结果转换和排序步骤205,子比对结果(B1.sam、B2.sam…B20.sam)转换成bam格式并排序,获得排序后的结果(C1.bam、C2.bam…C20.bam)。方法如下:(1)将步骤子比对结果(B1.sam、B2.sam…B20.sam)分别用命令“samtools view-bSBi>Bi.bam”获得转换格式后的结果(B1.bam、B2.bam…B20.bam),其中命令Bi中的i代表(1、2…20)。(2)使用命令“samtools sort Bi.bamCi”分别对(B1.bam、B2.bam…B20.bam)进行排序,获得排序后的结果(C1.bam、C2.bam…C20.bam),其中命令Bi和Ci中的i代表(1、2…20)。

步骤(6),比对结果建库步骤206,使用命令“samtools indexCi.bam”分别对排序后的子比对结果(C1.bam、C2.bam…C20.bam)建库,获得建库结果(C1.bam.bai、C2.bam.bai….C20.bam.bai)。其中命令Ci.bam中的i代表(1、2…20)。

步骤(7),长读长组装结果纠错步骤207,使用命令“java-Xmx30G-jar pilon-1.22.jar--genome Ai.fasta--output Di--outdir./--diploid--fix snps,indels--threads 5--flank 0--frags Ci.bam”对子长读长组装结果(A1.fasta、A2.fasta…A20.fasta)纠错,获得纠错结果(D1.fasta、D2.fasta…D20.fasta),其中命令中的Ai、Di和Ci.bam中的i代表(1、2…20),获得子纠错结果(D1.fasta、D2.fasta…D20.fasta)。

步骤(8),合并纠错结果步骤208,使用命令“cat D1.fasta D2.fasta…D20.fasta>A.pilon.fasta”合并纠错结果(D1.fasta、D2.fasta…D20.fasta),获得最终纠错结果A.pilon.fasta。

表2试验2各步骤的资源与时间消耗表

对比分析试验2最终纠错结果A.pilon.fasta和试验1最终纠错结果Pilon.fasta的ContigID顺序排序后得到的结果与Pilon.fasta一致,证明本例改进的方法获得的结果是可靠的。另外根据表1和表2总结得出试验1和试验2资源消耗对比,如表3所示,试验2总耗时为1407分钟,为试验1总耗时2033分钟的69.2%,大幅缩短了纠错时间;试验2最大内存峰值26Gb,为试验1最大内存峰值268Gb的9.7%,极大的降低了内存峰值,使得本例改进的方法可以在一般的小内存节点运行,比如32Gb和64Gb内存的计算机上执行纠错任务,可以满足绝大部分公司和院校的计算机配置现状。

表3试验1和试验2的资源消耗对比

综上所述,本例改进的方法可使用小内存节点进行短读长序列对长读长组装结果Pilon纠错,大幅降低内存峰值,解决很多院校或公司没有大内存节点无法进行短读长序列对长读长组装结果Pilon纠错的问题,也无需花费很高费用租赁云服务器。并且,本例改进的方法,在资源充足情况可以并行执行,降低执行时间,提高纠错效率。

以上内容是结合具体的实施方式对本申请所作的进一步详细说明,不能认定本申请的具体实施只局限于这些说明。对于本申请所属技术领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干简单推演或替换。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号