买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】序列截取方法、装置和电子设备_浙江安诺优达生物科技有限公司;安诺优达基因科技(北京)有限公司;安诺优达生命科学研究院_201910202273.7 

申请/专利权人:浙江安诺优达生物科技有限公司;安诺优达基因科技(北京)有限公司;安诺优达生命科学研究院

申请日:2019-03-18

公开(公告)日:2020-03-31

公开(公告)号:CN109949865B

主分类号:G16B30/00(20190101)

分类号:G16B30/00(20190101)

优先权:["20181229 CN 201811635216X"]

专利状态码:有效-授权

法律状态:2020.03.31#授权;2019.07.23#实质审查的生效;2019.06.28#公开

摘要:公开了一种序列截取方法、装置和电子设备。该方法包括:获取参考序列,所述参考序列以遍历方式读取且包括多个段落;获取多个待截取序列的段落信息和位点信息;按照所述参考序列的遍历顺序,基于所述段落信息和所述位点信息对所述多个待截取序列进行排序;以及,在遍历所述参考序列的同时,基于所述段落信息和所述位点信息从所述参考序列中依顺序截取所述多个待截取序列。这样,即使针对无索引的参考序列和存在重叠和嵌套的多个待截取序列,也可以通过遍历该参考序列一次性截取该多个待截取序列,从而显著地提高了截取效率。

主权项:1.一种序列截取方法,其特征在于,包括:获取参考序列,所述参考序列以遍历方式读取且包括多个段落;获取多个待截取序列的段落信息和位点信息;按照所述参考序列的遍历顺序,基于所述段落信息和所述位点信息对所述多个待截取序列进行排序;以及在遍历所述参考序列的同时,基于所述段落信息和所述位点信息从所述参考序列中依顺序截取所述多个待截取序列,其中,按照所述参考序列的遍历顺序,基于所述段落信息和所述位点信息对所述多个待截取序列进行排序包括:按照作为所述段落信息的段落编号的由小到大的顺序对所述多个待截取序列进行初次排序;以及对于具有相同段落编码的一组待截取序列按照作为位点信息的起始位点由小到大的顺序对所述一组待截取序列进行二次排序。

全文数据:序列截取方法、装置和电子设备技术领域本申请涉及数据处理领域,且更为具体地,涉及一种序列截取方法、装置和电子设备。背景技术在日常的生物信息分析过程中,经常会需要用到具体的参考碱基序列,此时就需要从参考的基因组序列文件中截取所需的碱基片段。有时可能只需要截取一小段,也有可能需要截取很多段。并且,可能片段之间并没有联系,也有可能它们之间有重叠甚至嵌套。目前,常用的序列截取软件都需要用到索引,比如bedtools的getfasta功能。此时,既需要系统安装了对应的软件,也需要建立必要的索引。但是,在没有安装对应软件或者不方便安装的条件下,比如在windows系统或者未授权的其它linux账号中,截取序列会变得很棘手,尤其是对于片段数量众多,既有交叉也有嵌套的情况。因此,期望提供改进的序列截取方法。发明内容为了解决上述技术问题,提出了本申请。本申请的实施例提供了一种序列截取方法、装置和电子设备,其能够针对无索引的参考序列通过遍历该参考序列一次性截取甚至存在重叠和嵌套的多个待截取序列,从而显著地提高了截取效率。根据本申请的一个方面,提供了一种序列截取方法,其特征在于,包括:获取参考序列,所述参考序列以遍历方式读取且包括多个段落;获取多个待截取序列的段落信息和位点信息;按照所述参考序列的遍历顺序,基于所述段落信息和所述位点信息对所述多个待截取序列进行排序;以及,在遍历所述参考序列的同时,基于所述段落信息和所述位点信息从所述参考序列中依顺序截取所述多个待截取序列。在上述序列截取方法中,所述参考序列是参考基因组序列。在上述序列截取方法中,所述参考序列具有染色体编号。在上述序列截取方法中,所述参考序列的遍历顺序为从所述参考序列的开头到结尾顺序遍历。在上述序列截取方法中,按照所述参考序列的遍历顺序,基于所述段落信息和所述位点信息对所述多个待截取序列进行排序包括:按照作为所述段落信息的段落编号的由小到大的顺序对所述多个待截取序列进行初次排序;以及,对于具有相同段落编码的一组待截取序列按照作为位点信息的起始位点的由小到大的顺序对该组待截取序列进行二次排序。在上述序列截取方法中,在遍历所述参考序列的同时,基于所述段落信息和所述位点信息从所述参考序列中依顺序截取所述多个待截取序列包括:基于所述段落信息确定所述参考序列的每个段落是否存在所述待截取序列;响应于所述段落中的预定段落不存在所述待截取序列,以所述遍历顺序略过所述预定段落;以及,响应于所述每个段落中的预定段落存在所述待截取序列,基于所述位点信息从所述预定段落截取所述待截取序列。在上述序列截取方法中,基于所述段落信息确定所述参考序列的每个段落是否存在所述待截取序列包括:基于所述段落信息对所述参考序列中没有待截取序列的段落或者具有待截取序列的段落进行标记;以及,在遍历所述参考序列的同时,基于所述标记确定所述参考序列的每个段落是否存在所述待截取序列。在上述序列截取方法中,响应于所述每个段落中的预定段落存在所述待截取序列,基于所述位点信息从所述预定段落截取所述待截取序列包括:逐行读入所述预定段落的序列行;在每一序列行依次比较所述待截取序列的起始位点以确定相关序列和相关序列行,直到所述相关序列的下一待截取序列的起始位点不包含在所述相关序列行为止;依次比较所述相关序列行与所述相关序列的结束位点;响应于所述起始位点在相关序列行的其中一行而所述结束位点不在该行,保留该行从所述起始位点往后的部分;响应于所述起始位点不在相关序列行的其中一行而所述结束位点在该行,保留该行从所述结束位点往前的部分;响应于所述起始位点和所述结束位点两者都在所述相关序列行的其中一行,保留该行在所述起始位点和所述结束位点之间的部分;以及,响应于所述起始位点和所述结束位点两者都不在所述相关序列行的其中一行,保留该行整行。在上述序列截取方法中,比较所述相关序列行与所述相关序列的结束位点包括:针对所述相关序列设置完成标记;以及,响应于所述相关序列中的预定相关序列的结束位点位于所述相关序列行的最后一行,将所述预定相关序列的完成标记设置为已完成。根据本申请的另一方面,提供了一种序列截取装置,其特征在于,包括:参考序列获取单元,用于获取参考序列,所述参考序列以遍历方式读取且包括多个段落;截取信息获取单元,用于获取多个待截取序列的段落信息和位点信息;序列排序单元,用于按照所述参考序列的遍历顺序,基于所述段落信息和所述位点信息对所述多个待截取序列进行排序;以及,序列截取单元,用于在遍历所述参考序列的同时,基于所述段落信息和所述位点信息从所述参考序列中依顺序截取所述多个待截取序列。在上述序列截取装置中,所述参考序列是参考基因组序列。在上述序列截取装置中,所述参考序列具有染色体编号。在上述序列截取装置中,所述参考序列的遍历顺序为从所述参考序列的开头到结尾顺序遍历。在上述序列截取装置中,所述序列排序单元包括:初次排序子单元,用于按照作为所述段落信息的段落编号的由小到大的顺序对所述多个待截取序列进行初次排序;以及,二次排序子单元,用于对于具有相同段落编码的一组待截取序列按照作为位点信息的起始位点的由小到大的顺序对该组待截取序列进行二次排序。在上述序列截取装置中,所述序列截取单元包括:序列判定子单元,用于基于所述段落信息确定所述参考序列的每个段落是否存在所述待截取序列;序列略过子单元,用于响应于所述每个段落中的预定段落不存在所述待截取序列,以所述遍历顺序略过所述预定段落;以及,序列截取子单元,用于响应于所述每个段落中的预定段落存在所述待截取序列,基于所述位点信息从所述预定段落截取所述待截取序列。在上述序列截取装置中,所述序列判定子单元用于:基于所述段落信息对所述参考序列中没有待截取序列的段落或者具有待截取序列的段落进行标记;以及,在遍历所述参考序列的同时,基于所述标记确定所述参考序列的每个段落是否存在所述待截取序列。在上述序列截取装置中,所述序列截取子单元用于:逐行读入所述预定段落的序列行;在每一序列行依次比较所述待截取序列的起始位点以确定相关序列和相关序列行,直到所述相关序列的下一待截取序列的起始位点不包含在所述相关序列行为止;依次比较所述相关序列行与所述相关序列的结束位点;响应于所述起始位点在相关序列行的其中一行而所述结束位点不在该行,保留该行从所述起始位点往后的部分;响应于所述起始位点不在相关序列行的其中一行而所述结束位点在该行,保留该行从所述结束位点往前的部分;响应于所述起始位点和所述结束位点两者都在所述相关序列行的其中一行,保留该行在所述起始位点和所述结束位点之间的部分;以及,响应于所述起始位点和所述结束位点两者都不在所述相关序列行的其中一行,保留该行整行。在上述序列截取装置中,所述序列截取子单元依次比较所述相关序列行与所述相关序列的结束位点包括:针对所述相关序列设置完成标记;以及,响应于所述相关序列中的预定相关序列的结束位点位于所述相关序列行的最后一行,将所述预定相关序列的完成标记设置为已完成。根据本申请的再一方面,提供了一种电子设备,包括:处理器;以及,存储器,在所述存储器中存储有计算机程序指令,所述计算机程序指令在被所述处理器运行时使得所述处理器执行如上所述的序列截取方法。根据本申请的又一方面,提供了一种计算机可读介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行如上所述的序列截取方法。与现有技术相比,本申请提供的序列截取方法、装置和电子设备可以针对无索引的参考序列通过遍历该参考序列一次性截取甚至存在重叠和嵌套的多个待截取序列,从而显著地提高了截取效率。附图说明通过结合附图对本申请实施例进行更详细的描述,本申请的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本申请实施例的进一步理解,并且构成说明书的一部分,与本申请实施例一起用于解释本申请,并不构成对本申请的限制。在附图中,相同的参考标号通常代表相同部件或步骤。图1图示了根据本申请实施例的序列截取方法的流程图。图2图示了根据本申请实施例的序列截取方法中的截取过程的流程图。图3图示了根据本申请实施例的序列截取装置的框图。图4图示了根据本申请实施例的电子设备的框图。具体实施方式下面,将参考附图详细地描述根据本申请的示例实施例。显然,所描述的实施例仅仅是本申请的一部分实施例,而不是本申请的全部实施例,应理解,本申请不受这里描述的示例实施例的限制。申请概述如上所述,期望提供能够高效地截取参考序列的不依赖任何工具,且能够有效地应对所有情况,尤其是大量片段重叠及嵌套情况的序列截取方法。Perl程序器的perl脚本通过Perl解释器解释运行,而Perl程序器可以通过遍历参考基因组序列,比如hg19.fa来截取目标片段,但是,Perl程序器截取一个目标片段的耗时是约30秒,但如果针对多个目标片段重复多次的话,时间消耗将会变得不可接受,但是Perl语言代码简洁容易修改,针对这一特点,发明人将其应用于序列截取程序中。本申请的发明人经过研究,发现这其中涉及到的具体问题包括:1.参考基因组序列比如hg19.fa中序列是以每行50个碱基的形式来存储的,因此需要将碱基的坐标转换成对应的行列值;2.Perl语言脚本在读取文件时是一行行按顺序读取的,而输入的目标片段信息包括染色体号、起始终止坐标等可能是无序的,这需要将它们按一定规则排序;3.片段之间可能会有重叠甚至一条嵌入另一条中,这需要对应的多重截取机制;4.由于参考基因组文件,比如hg19.fa的特殊存储形式,行数能接近1亿,如果冗余步骤太多势必会严重地影响截取效率,因此需要对代码尽可能地精简。基于上述技术问题,本申请的基本构思是对于待截取的多个序列,首先按照段落信息和位点信息对所述多个待截取序列进行排序以符合参考序列的遍历顺序,然后在遍历所述参考序列时以顺序一次性截取所述多个待截取序列。具体地,本申请提供的序列截取方法、装置和电子设备首先获取参考序列,所述参考序列以遍历方式读取且包括多个段落;然后获取多个待截取序列的段落信息和位点信息,并按照所述参考序列的遍历顺序,基于所述段落信息和所述位点信息对所述多个待截取序列进行排序;最后在遍历所述参考序列的同时,基于所述段落信息和所述位点信息从所述参考序列中依顺序截取所述多个待截取序列。因此,本申请提供的序列截取方法、装置和电子设备通过优化截取方式,能够一次性提取所有目标片段,例如,通过Perl解释器截取1000个片段耗时也只有30s左右,并能够同时支持片段的重叠及嵌套等。值得注意的是,在本申请提供的序列截取方法、装置和电子设备中,所述参考序列可以是参考基因组序列,例如hg19.fa,也可以是其它以遍历方式读取而无索引的序列,本申请并不意在对此进行任何限制。在介绍了本申请的基本原理之后,下面将参考附图来具体介绍本申请的各种非限制性实施例。示例性方法图1图示了根据本申请实施例的序列截取方法的流程图。如图1所示,根据本申请实施例的序列截取方法包括:S110,获取参考序列,所述参考序列以遍历方式读取且包括多个段落;S120,获取多个待截取序列的段落信息和位点信息;S130,按照所述参考序列的遍历顺序,基于所述段落信息和所述位点信息对所述多个待截取序列进行排序;以及S140,在遍历所述参考序列的同时,基于所述段落信息和所述位点信息从所述参考序列中依顺序截取所述多个待截取序列。在步骤S110中,获取参考序列,所述参考序列以遍历方式读取且包括多个段落。如上所述,所述参考序列可以是人类基因组参考序列,也可以是其它类型的序列,并且,所述参考序列需要以遍历方式读取,而不具有索引以跳到所述参考序列的任意位置。在所述参考序列是参考基因组序列的情况下,所述参考序列的每个段落可以对应于染色体,因此,所述参考序列可以具有染色体编号。值得注意的是,在根据本申请实施例的序列截取方法中,并不限定所述参考序列的遍历顺序。例如,在所述参考序列是比如hg19.fa的参考基因组序列的情况下,所述参考序列的遍历顺序为从所述参考序列的开头到结尾顺序遍历。而针对其它类型的参考序列,所述参考序列的遍历顺序也可能为从所述参考序列的结尾到开头顺序遍历,或者从所述参考序列中的特定位置开始向前或者向后顺序遍历。在步骤S120中,获取多个待截取序列的段落信息和位点信息。如上所述,所述参考序列包括多个段落,以参考基因组序列为例,包括按照染色体编号排列的多个段落。因此,为了对所述多个待截取序列进行排序,在获取所述多个待截取序列的同时,获取其段落信息和位点信息。并且,所述段落信息和位点信息可以以数组形式存储,例如以染色体编号作为一维坐标的二维数组。在步骤S130中,按照所述参考序列的遍历顺序,基于所述段落信息和所述位点信息对所述多个待截取序列进行排序。以所述段落基于染色体编号从小到大排列为例,首先按染色编号由小到大的规则对所述多个待截取序列进行初次排序,之后在具有相同染色体编号的段落内部,按照所述多个待截取序列的起始位点由小到大的顺序进行二次排序。当然,如上所述,如果所述参考序列的遍历序列为从段落编号由大到小遍历,则所述多个待截取序列也基于段落信息按照段落编码由大到小排列,在每个段落内部也是如此。因此,在根据本申请实施例的序列截取方法中,按照所述参考序列的遍历顺序,基于所述段落信息和所述位点信息对所述多个待截取序列进行排序包括:按照作为所述段落信息的段落编号的由小到大的顺序对所述多个待截取序列进行初次排序;以及,对于具有相同段落编码的一组待截取序列按照作为位点信息的起始位点的由小到大的顺序对该组待截取序列进行二次排序。在步骤S140中,在遍历所述参考序列的同时,基于所述段落信息和所述位点信息从所述参考序列中依顺序截取所述多个待截取序列。具体地,在根据本申请实施例的序列截取方法中,在遍历所述参考序列的同时,基于所述段落信息和所述位点信息从所述参考序列中依顺序截取所述多个待截取序列包括:基于所述段落信息确定所述参考序列的每个段落是否存在所述待截取序列;响应于所述段落中的预定段落不存在所述待截取序列,以所述遍历顺序略过所述预定段落;以及,响应于所述每个段落中的预定段落存在所述待截取序列,基于所述位点信息从所述预定段落截取所述待截取序列。例如,以参考基因组序列为例,基于所述多个待截取序列的染色体编号信息,可以确定当前染色体是否存在需要截取的片段。如果当前染色体没有需要截取的序列,则不进行任何操作,直接一行行略过。而如果当前染色体存在需要截取的片段,则基于所述位点信息,比如片段起始位置、片段结束位置,按照相应的规则进行重复截取合并操作。这里,在确定当前染色体是否存在需要截取的片段时,可以根据待截取序列的段落信息预先对所述参考基因组序列进行标记。例如,在所获取的多个待截取序列具有染色体编号3、5、7时,可以预先对所述参考基因组序列中编号为3、5和7的染色体进行标记。这样,当遍历所述参考基因组序列时到达编号为3、5和7的染色体时,就可以确定当前染色体存在需要截取的片段。也就是说,在根据本申请实施例的序列截取方法中,基于所述段落信息确定所述参考序列的每个段落是否存在所述待截取序列包括:基于所述段落信息对所述参考序列中没有待截取序列的段落或者具有待截取序列的段落进行标记;以及,在遍历所述参考序列的同时,基于所述标记确定所述参考序列的每个段落是否存在所述待截取序列。如上所述,对于比如hg19.fa的参考基因组序列来说,序列是以行排列存储的,例如,以每行50个碱基的形式来存储,因此在截取所述待截取序列时,以行为单位来进行截取。具体地,在确定预定段落存在需要截取的序列时,逐行读入所述预定段落的序列行,并在每一序列行比较所述待截取序列的起始位点以确定是否从所述当前序列行开始截取。并且,因为待截取序列已经按照起始位点进行排序,因此如果前一待截取序列的起始位点在当前序列行而后一待截取序列的起始位点不在当前序列行,那么后一待截取序列的后续待截取序列的起始位点必然也不在当前序列行,从而在当前序列行中待截取的序列到所述前一待截取序列为止。同样,在比较了所述起始位点之后,如果基于所述起始位点确定需要从当前序列行开始截取相关序列,则继续比较所述相关序列的结束位点,即基于当前序列行和后续序列行比较结束位点以确定所述结束位点是否存在于包括当前序列行和后续序列行中。因此,在本申请实施例中,由于需要同时进行截取的待截取序列为多个,在读入预定段落的序列行时,将正在进行截取的序列定义为相关序列,将正在截取中的序列行定义为相关序列行。例如,以参考基因组序列的每行包括50个碱基为例,如果待截取序列A的起始位点和结束位点为110,140,待截取序列B的起始位点和结束位点为120,240,则针对待截取序列A,第3行为相关序列行,而针对待截取序列B,第3行到第5行为相关序列行。另外,还可以基于所述待截取序列的起始位点和结束位点在所述预定段落内的行列值来确定相关序列行,以参考基因组序列的每行包括50个碱基为例,如果待截取序列A的起始位点和结束位点为110,140,则所述起始位点的行列值为3,110,且结束位点为3,140。另外,如果待截取序列B的起始位点和结束位点为120,240,则所述起始位点的行列值为3,120,且结束位点为5,240。那么针对待截取序列A,第3行为相关序列行,而针对待截取序列B,第3行到第5行为相关序列行。这里,本领域技术人员可以理解,相关序列行的确定可以在逐行读入序列行并进行序列截取的过程中同步进行,而不需要在序列截取之前预先确定。具体地,当读入第3行时,基于上述待截取序列A的起始位点,可以确定第3行为相关序列A的相关序列行,且基于上述待截取序列B的起始位点,也可以确定第3行为相关序列B的相关序列行。接下来,进一步比较相关序列行与结束位点,针对待截取序列A,其结束位点也在第3行,则在第3行完成了待截取序列A的截取。而针对待截取序列B,其结束位点不在第3行,则继续读入第4行,由于序列B的截取仍未结束,第4行也为待截取序列B的相关序列行,并比较第4行与序列B的结束位点。由于B的结束位点不位于第4行,则截取第4行并继续读入第5行。同样地,由于序列B的截取仍未结束,第5行也为待截取序列B的相关序列行,则比较第5行与序列B的结束位点。此时,因为序列B的结束位点位于第5行,则截取第5行中的相应部分,序列B的截取结束,后续的序列行不再是序列B的相关序列行。在截取序列时,如果起始位点在所述相关序列行的某一行而结束位点不在该行,则保留该行从起始位点往后的部分。例如,对于上述待截取序列B,针对第3行,起始位点120在该行,而结束位点240不在,则保留第3行中从位点120往后的部分,即120-150。如果起始位点不在所述相关序列行的某一行而结束位点在该行,保留该行从结束位点往前的部分。例如,对于上述待截取序列B,针对第5行,起始位点120不在该行,而结束位点240在该行,则保留第5行中从位点240往后的部分,即200-240。如果起始位点和结束位点两者都在所述相关序列行的某一行,保留该行在起始位点和结束位点之间的部分。例如,对于上述待截取序列A,针对第3行,起始位点110和结束位点140都在该行,因此保留第3行起始位点110到结束位点140之间的部分,即110-140。如果起始位点和结束位点两者都不在所述相关序列行的某一行,则保留整行。例如,对于上述待截取序列B,针对第4行,起始位点120和结束位点240均不在该行,则保证整个第4行,即150-200。然后,基于截取的各行的序列,就可以获得待截取序列A:110-140和待截取序列B:120-240。这里,本领域技术人员可以理解,可以设置另外的数组用于存储待截取序列的行列值,例如,对于上述待截取序列A,可以设置行列值存储数组为3,3,而对于上述待截取序列B,可以设置行列值存储数组为3,5,从而便于在遍历参考序列时基于行编号进行截取。进一步需要说明的是,在截取序列时,在进行所在行的序列判断时,不仅要包括有部分或全部在序列所在行的相关待截取序列,还有包括上述待截取序列其后紧邻的至少一段序列的起点信息。例如,需要从一段序列上截取以下片段,片段按起始位点依次排序为30-110,55-90,80-150,110-180,150-220等,则与该片段第二行相关的序列51-100则为30-110、55-90和80-150,在进行第二行待截取序列的判断时,不仅要判断上述序列,还要至少判断与之紧邻的110-180序列的起点信息。由此,通过该截取方法,在囊括需要截取片段的前提下尽可能地减少需要比较的次数,无需将一系列坐标从头比较到尾,显著减少了运算次数,提高了序列截取速度,减少了序列截取的时间。因此,在根据本申请实施例的序列截取方法中,响应于所述每个段落中的预定段落存在所述待截取序列,基于所述位点信息从所述预定段落截取所述待截取序列包括:逐行读入所述预定段落的序列行;在每一序列行依次比较所述待截取序列的起始位点以确定相关序列和相关序列行,直到所述相关序列的下一待截取序列的起始位点不包含在所述相关序列行为止;依次比较所述相关序列行与所述相关序列的结束位点;响应于所述起始位点在相关序列行的其中一行而所述结束位点不在该行,保留所述该行从所述起始位点往后的部分;响应于所述起始位点不在相关序列行的其中一行而所述结束位点在该行,保留所述该行从所述结束位点往前的部分;响应于所述起始位点和所述结束位点两者都在所述相关序列行的其中一行,保留该行在所述起始位点和所述结束位点之间的部分;以及,响应于所述起始位点和所述结束位点两者都不在所述相关序列行的其中一行,保留该行整行。图2图示了根据本申请实施例的序列截取方法中的截取过程的流程图。如图2所示,所述截取过程包括:S201,确定预定段落中是否存在待截取序列;S202,响应于预定段落中不存在待截取序列,略过所述预定段落;S203,响应于所述每个段落中的预定段落存在所述待截取序列,逐行读入所述预定段落的序列行;S204,在每一序列行依次比较所述待截取序列的起始位点以确定相关序列和相关序列行,直到所述相关序列的下一待截取序列的起始位点不包含在所述相关序列行为止;S205,依次比较所述相关序列行与所述相关序列的结束位点;S206,确定起始位点是否在所述相关序列行的其中一行;S207,确定结束位点是否在所述相关序列行的其中一行;S208,响应于所述起始位点在所述相关序列行的其中一行而所述结束位点不在该行,保留该行从所述起始位点往后的部分;S209,响应于所述起始位点不在相关序列行的其中一行而所述结束位点在该行,保留该行从所述结束位点往前的部分;S210,响应于所述起始位点和所述结束位点两者都在所述相关序列行的其中一行,保留该行在所述起始位点和所述结束位点之间的部分;以及S211,响应于所述起始位点和所述结束位点两者都不在所述相关序列行的其中一行,保留该行整行。另外,在上述序列截取方法中,比较所述相关序列行与所述相关序列的结束位点包括:针对所述相关序列设置完成标记;以及,响应于所述相关序列中的预定相关序列的结束位点位于所述相关序列行的最后一行,将所述预定相关序列的完成标记设置为已完成。也就是说,例如针对上述待截取序列A和B,设置所述待截取序列A和B的完成标记,针对所述参考序列的第3行,在确定所述待截取序列A的结束位点140位于该行的情况下,将所述待截取序列A的完成标记设置为已完成。这样,在第3行的后续行,不需要再针对待截取序列A进行操作。之后,针对所述参考序列的第5行,在确定所述待截取序列B的结束位点240位于该行的情况下,将所述待截取序列B的完成标记也设置为已完成,这样,在第5行的后续行就不需要再针对待截取序列B进行操作。因此,通过根据本申请实施例的序列截取方法,例如能够实现从人类基因组参考序列,比如hg19.fa中截取任意数量的碱基片段,并且支持片段的重叠及嵌套。实践证明,通过序列截取方式,当使用Perl解释器截取片段时,在多次截取的情况下显著提高了截取速度。比如,截取1个片段需耗时约0.45分钟,而截取1000个片段用时也只需要0.48分钟,因此针对片段数目多的情况效果格外明显。具体实例以下,将描述从hg19.fa中截取chr5的3个片段的具体实例。具体地,3个片段分别为:110~210,180~310,260~280。其中片段1和片段2有部分重叠,而片段3嵌套在片段2中。假定在bed文件中,三个片段的存储顺序为:chr5180310,chr5110210,chr5260280。首先读入数据并初始化,即,逐行读入bed文件,并将对应的染色体号、起始坐标、终止坐标分别存入对应的数组@temp_sec_chr,@temp_sec_start,@temp_sec_end。其中chr5存储5,chrX、chrY和chrM分别存储23,24和25。然后,对染色体号排序,具体地,将每条片段的编号作为元素存入对应的以染色体号作为一维坐标的二维数组中,因此bed文件的3个编号分别存入$chr_array[5][0],$chr_array[5][1]和$chr_array[5][2]。待所有对应的编号存储完毕后,从一维坐标的低位往高位遍历数组,也就是从1号染色体开始到25号M结束。顺序地将各自染色体对应编号的片段信息存入新的数组中@sec_chr,@sec_start,@sec_end。最终完成对染色体号的排序,得到5180300,5110210和5260280。其中,对没有待截取片段的染色体号做好标记,比如$chr_flag[1]=0表示1号染色体上没有任何待截取片段,而$chr_flag[5]=1则表示5号染色体上存在待截取片段。对于$chr_flag0的染色体还需记录对应元素的起始及终止编号,比如此时的5号染色体会记录二维数组@chr_array中的id:$chr_sec_start=0和$chr_sec_end=2。接下来,对起始坐标排序,从低位到高位遍历这三个数组,在相同染色体编号的元素内采用冒泡排序法调整起始和对应的终止坐标,最终得到5110210,5180310和5260280。然后,读入染色体号,确定需要截取的片段信息。具体地,读入染色体记录的标签行,比如“chr5”,得到当前序列的染色体号为5。根据染色体号5检查对应的片段标记$chr_flag[5],如果为非零则代表有待截取片段。此时取出对应$chr_sec_start[5]0和$chr_sec_end[5]2对应编号的坐标,转换成对应的行列值,并记录相应的片段数$sec_num=3。最后,读入碱基行,进行如下的具体操作。1逐行读入对应染色体号的碱基行,检查对应的片段数$sec_num。如果是0则代表没有需要截取的片段,直接略过继续读取下一行,直到下一条染色体或者文件结束。如果是1则代表有需要截取的片段,进行下一步的截取操作。如上所述,截取操作的核心思想是:在当前行会比较所有与该行相关的待截取片段及其后紧挨着因为已经将所有起始位点按顺序存储的一条起始位点即将被覆盖的待截取片段的位点信息。如果起始位点在当前片段而结束位点并不在,则只需要保留后半部分;如果起始位点不在而结束位点在则保留前半部分;如果两个位点都不在则应保留整个片段;而如果两个位点都在则需要保存两个位点之间的部分。2具体地,可以设置$left和$right分别用来标记当前需要判断的片段信息记录数组的起始结束编号。比如在第1行,因为没有任何待截取片段与之相关,因此只需要预判是否已经到达下一条待截取片段起始位点所在的行号chr5110210,起始坐标在第3行。3第2行,和第1行情况一样,这里略过。4第3行,已经到达$right所指片段起始位点的行号,因此需要首先往后移动$right,直到包含一条起始位点所在行还未到达的片段编号。此时$left为0,$right为1chr5180310,起始坐标在第4行。循环比较$left和$right编号之间片段的起始、结束坐标,按前面所述的规则进行相应的保存操作,此时保存1号片段chr5110210的110~150。5第4行,由于已经到达了$right所指的2号片段chr5180310因此往后移动到3号片段chr5260280。循环比较$left和$right所指片段的坐标,保存1号片段的151~200和2号片段的180~200。6第5行,由于仍未到达$right所指的片段,因此不需要移动$right。循环比较保存1号片段的200~210和2号片段的200~250。同时将1号片段的未完成标记$unfinish_flag[1]由1改为0。7第6行,由于已到达$right所指的片段chr5260280,但由于已经到了末尾,所以不需要移动。但根据$unfinish_flag判断1号片段已经保存完毕,此时将$left移动到2。循环比较保存2号片段chr5180310的250~300,3号片段chr5260280的260~280。由于3号片段已经保存结束,将对应的$unfinish_flag[3]标记为0。8第7行,和第6行一样不需要移动$right,由于$left所指的2号片段仍未结束,所以也保持原位不变。此时循环保存2号片段的300~310,同时标记$unfinish_flag[2]为0。由于3号片段的$unfinish_flag[3]为0因此直接略过。9第8行,判断此时的行号已经大于所有片段占有的最大行号,因此不需要做任何其它操作,略过直到下一条染色体或文件结束。10循环直到文件结束。示例性装置图3图示了根据本申请实施例的序列截取装置的框图。如图3所示,根据本申请实施例的序列截取装置300包括:参考序列获取单元310,用于获取参考序列,所述参考序列以遍历方式读取且包括多个段落;截取信息获取单元320,用于获取多个待截取序列的段落信息和位点信息;序列排序单元330,用于按照所述参考序列获取单元310所获取的所述参考序列的遍历顺序,基于所述截取信息获取单元320所获取的段落信息和所述位点信息对所述多个待截取序列进行排序;以及,序列截取单元340,用于在遍历所述参考序列的同时,基于所述段落信息和所述位点信息从所述参考序列中依顺序截取所述多个待截取序列。在一个示例中,在上述序列截取装置300中,所述参考序列是参考基因组序列。在一个示例中,在上述序列截取装置300中,所述参考序列具有染色体编号。在一个示例中,在上述序列截取装置300中,所述参考序列的遍历顺序为从所述参考序列的开头到结尾顺序遍历。在一个示例中,在上述序列截取装置300中,所述序列排序单元330包括:初次排序子单元,用于按照作为所述段落信息的段落编号的由小到大的顺序对所述多个待截取序列进行初次排序;以及,二次排序子单元,用于对于具有相同段落编码的一组待截取序列按照作为位点信息的起始位点的由小到大的顺序对该组待截取序列进行二次排序。在一个示例中,在上述序列截取装置300中,所述序列截取单元340包括:序列判定子单元,用于基于所述段落信息确定所述参考序列的每个段落是否存在所述待截取序列;序列截取子单元,用于响应于所述每个段落中的预定段落不存在所述待截取序列,以所述遍历顺序略过所述预定段落;以及,序列略过子单元,用于响应于所述每个段落中的预定段落存在所述待截取序列,基于所述位点信息从所述预定段落截取所述待截取序列。在一个示例中,在上述序列截取装置300中,所述序列判定子单元用于:基于所述段落信息对所述参考序列中没有待截取序列的段落或者具有待截取序列的段落进行标记;以及,在遍历所述参考序列的同时,基于所述标记确定所述参考序列的每个段落是否存在所述待截取序列。在一个示例中,在上述序列截取装置300中,所述序列截取子单元用于:逐行读入所述预定段落的序列行;在每一序列行依次比较所述待截取序列的起始位点以确定相关序列和相关序列行,直到所述相关序列的下一待截取序列的起始位点不包含在所述相关序列行为止;依次比较所述相关序列行与所述相关序列的结束位点;响应于所述起始位点在相关序列行的其中一行而所述结束位点不在该行,保留该行从所述起始位点往后的部分;响应于所述起始位点不在相关序列行的其中一行而所述结束位点在该行,保留该行从所述结束位点往前的部分;响应于所述起始位点和所述结束位点两者都在所述相关序列行的其中一行,保留该行在所述起始位点和所述结束位点之间的部分;以及,响应于所述起始位点和所述结束位点两者都不在所述相关序列行的其中一行,保留该行整行。在一个示例中,在上述序列截取装置300中,所述序列截取子单元依次比较所述相关序列行与所述相关序列的结束位点包括:针对所述相关序列设置完成标记;以及,响应于所述相关序列中的预定相关序列的结束位点位于所述相关序列行的最后一行,将所述预定相关序列的完成标记设置为已完成。这里,本领域技术人员可以理解,上述序列截取装置300中的各个单元和模块的具体功能和操作已经在上面参考图1和图2的序列截取方法的描述中得到了详细介绍,并因此,将省略其重复描述。如上所述,根据本申请实施例的序列截取装置300可以实现在各种终端设备中,例如用于参考基因组序列截取的计算机等。在一个示例中,根据本申请实施例的序列截取装置300可以作为一个软件模块和或硬件模块而集成到终端设备中。例如,该序列截取装置300可以是该终端设备的操作系统中的一个软件模块,或者可以是针对于该终端设备所开发的一个应用程序;当然,该序列截取装置300同样可以是该终端设备的众多硬件模块之一。替换地,在另一示例中,该序列截取装置300与该终端设备也可以是分立的设备,并且该序列截取装置300可以通过有线和或无线网络连接到该终端设备,并且按照约定的数据格式来传输交互信息。示例性电子设备下面,参考图4来描述根据本申请实施例的电子设备。图4图示了根据本申请实施例的电子设备的框图。如图4所示,电子设备10包括一个或多个处理器11和存储器12。处理器13可以是中央处理单元CPU或者具有数据处理能力和或指令执行能力的其他形式的处理单元,并且可以控制电子设备10中的其他组件以执行期望的功能。存储器12可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器RAM和或高速缓冲存储器cache等。所述非易失性存储器例如可以包括只读存储器ROM、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器11可以运行所述程序指令,以实现上文所述的本申请的各个实施例的序列截取方法以及或者其他期望的功能。在所述计算机可读存储介质中还可以存储诸如参考序列、待截取序列、段落信息、位点信息等各种内容。在一个示例中,电子设备10还可以包括:输入装置13和输出装置14,这些组件通过总线系统和或其他形式的连接机构未示出互连。该输入装置13可以包括例如键盘、鼠标等等。该输出装置14可以向外部输出各种信息,包括从参考序列截取出的片段等。该输出装置14可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。当然,为了简化,图4中仅示出了该电子设备10中与本申请有关的组件中的一些,省略了诸如总线、输入输出接口等等的组件。除此之外,根据具体应用情况,电子设备10还可以包括任何其他适当的组件。示例性计算机程序产品和计算机可读存储介质除了上述方法和设备以外,本申请的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请各种实施例的序列截取方法中的步骤。所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本申请实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。此外,本申请的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请各种实施例的序列截取方法中的步骤。所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子非穷举的列表包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器RAM、只读存储器ROM、可擦式可编程只读存储器EPROM或闪存、光纤、便携式紧凑盘只读存储器CD-ROM、光存储器件、磁存储器件、或者上述的任意合适的组合。以上结合具体实施例描述了本申请的基本原理,但是,需要指出的是,在本申请中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本申请的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本申请为必须采用上述具体的细节来实现。本申请中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。还需要指出的是,在本申请的装置、设备和方法中,各部件或各步骤是可以分解和或重新组合的。这些分解和或重新组合应视为本申请的等效方案。提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本申请。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本申请的范围。因此,本申请不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本申请的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。

权利要求:1.一种序列截取方法,其特征在于,包括:获取参考序列,所述参考序列以遍历方式读取且包括多个段落;获取多个待截取序列的段落信息和位点信息;按照所述参考序列的遍历顺序,基于所述段落信息和所述位点信息对所述多个待截取序列进行排序;以及在遍历所述参考序列的同时,基于所述段落信息和所述位点信息从所述参考序列中依顺序截取所述多个待截取序列。2.根据权利要求1所述的方法,其特征在于,所述参考序列是参考基因组序列,任选地,所述参考序列具有染色体编号,任选地,所述参考序列的遍历顺序为从所述参考序列的开头到结尾顺序遍历。3.根据权利要求2所述的方法,其特征在于,按照所述参考序列的遍历顺序,基于所述段落信息和所述位点信息对所述多个待截取序列进行排序包括:按照作为所述段落信息的段落编号的由小到大的顺序对所述多个待截取序列进行初次排序;以及对于具有相同段落编码的一组待截取序列按照作为位点信息的起始位点由小到大的顺序对该组待截取序列进行二次排序,任选地,在遍历所述参考序列的同时,基于所述段落信息和所述位点信息从所述参考序列中依顺序截取所述多个待截取序列包括:基于所述段落信息确定所述参考序列的每个段落是否存在所述待截取序列;响应于所述每个段落中的预定段落不存在所述待截取序列,以所述遍历顺序略过所述预定段落;以及响应于所述每个段落中的预定段落存在所述待截取序列,基于所述位点信息从所述预定段落截取所述待截取序列。4.根据权利要求3所述的方法,其特征在于,基于所述段落信息确定所述参考序列的每个段落是否存在所述待截取序列包括:基于所述段落信息对所述参考序列中没有待截取序列的段落或者具有待截取序列的段落进行标记;以及在遍历所述参考序列的同时,基于所述标记确定所述参考序列的每个段落是否存在所述待截取序列。5.根据权利要求3所述的方法,其特征在于,响应于所述段落中的预定段落存在所述待截取序列,基于所述位点信息从所述预定段落截取所述待截取序列包括:逐行读入所述预定段落的序列行;在每一序列行依次比较所述待截取序列的起始位点以确定相关序列和相关序列行,直到所述相关序列的下一待截取序列的起始位点不包含在所述相关序列行为止;依次比较所述相关序列行与所述相关序列的结束位点;响应于所述起始位点在相关序列行的其中一行而所述结束位点不在该行,保留该行从所述起始位点往后的部分;响应于所述起始位点不在相关序列行的其中一行而所述结束位点在该行,保留所述相关序列行从所述结束位点往前的部分;响应于所述起始位点和所述结束位点两者都在所述相关序列行的其中一行,保留所述相关序列行在所述起始位点和所述结束位点之间的部分;以及响应于所述起始位点和所述结束位点两者都不在所述相关序列行的其中一行,保留该行整行,任选地,依次比较所述相关序列行与所述相关序列的结束位点包括:针对所述相关序列设置完成标记;以及响应于所述相关序列中的预定相关序列的结束位点位于所述相关序列行的最后一行,将所述预定相关序列的完成标记设置为已完成。6.一种序列截取装置,其特征在于,包括:参考序列获取单元,用于获取参考序列,所述参考序列以遍历方式读取且包括多个段落;截取信息获取单元,用于获取多个待截取序列的段落信息和位点信息;序列排序单元,用于按照所述参考序列的遍历顺序,基于所述段落信息和所述位点信息对所述多个待截取序列进行排序;以及序列截取单元,用于在遍历所述参考序列的同时,基于所述段落信息和所述位点信息从所述参考序列中依顺序截取所述多个待截取序列。7.根据权利要求6所述的装置,其特征在于,所述参考序列的遍历顺序为从所述参考序列的开头到结尾顺序遍历,任选地,所述序列排序单元包括:初次排序子单元,用于按照作为所述段落信息的段落编号的由小到大的顺序对所述多个待截取序列进行初次排序;以及二次排序子单元,用于对于具有相同段落编码的一组待截取序列按照作为位点信息的起始位点的由小到大的顺序对该组待截取序列进行二次排序,任选地,所述序列截取单元包括:序列判定子单元,用于基于所述段落信息确定所述参考序列的每个段落是否存在所述待截取序列;序列略过子单元,用于响应于所述每个段落中的预定段落不存在所述待截取序列,以所述遍历顺序略过所述预定段落;以及序列截取子单元,用于响应于所述每个段落中的预定段落存在所述待截取序列,基于所述位点信息从所述预定段落截取所述待截取序列。8.根据权利要求7所述的装置,其特征在于,所述序列判定子单元用于:基于所述段落信息对所述参考序列中没有待截取序列的段落或者具有待截取序列的段落进行标记;以及在遍历所述参考序列的同时,基于所述标记确定所述参考序列的每个段落是否存在所述待截取序列。9.根据权利要求8所述的方法,其特征在于,所述序列截取子单元用于:逐行读入所述预定段落的序列行;在每一序列行依次比较所述待截取序列的起始位点以确定相关序列和相关序列行,直到所述相关序列的下一待截取序列的起始位点不包含在所述相关序列行为止;依次比较所述相关序列行与所述相关序列的结束位点;响应于所述起始位点在相关序列行的其中一行而所述结束位点不在该行,保留该行从所述起始位点往后的部分;响应于所述起始位点不在相关序列行的其中一行而所述结束位点在该行,保留该行从所述结束位点往前的部分;响应于所述起始位点和所述结束位点两者都在所述相关序列行的其中一行,保留该行在所述起始位点和所述结束位点之间的部分;以及响应于所述起始位点和所述结束位点两者都不在所述相关序列行的其中一行,保留该行整行。10.一种电子设备,包括:处理器;以及存储器,在所述存储器中存储有计算机程序指令,所述计算机程序指令在被所述处理器运行时使得所述处理器执行如权利要求1-5中任一项所述的序列截取方法。

百度查询: 浙江安诺优达生物科技有限公司;安诺优达基因科技(北京)有限公司;安诺优达生命科学研究院 序列截取方法、装置和电子设备

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。