首页> 中国专利> FASTQ格式读段开头的寻找和判断方法以及系统

FASTQ格式读段开头的寻找和判断方法以及系统

摘要

本发明公开了一种FASTQ格式读段开头的寻找和判断方法,包括以下步骤:根据用户输入参数定位文件,确定查找的起始位置;从起始位置开始逐字读取字符,寻找到以‘’字符开头的行,并记录‘’字符在文件中的位置;从‘’字符开始连续读取,并将读取的字符依次存储至字符数组title、sequence、plus、quality、end中;判断记录的位置是否为一个读段的开头,如果判断为是,则将记录的位置作为读段开头的位置返回,如果判断为否,将原起始位置所在行的行尾确定为新的起始位置,重复上述寻找和判断步骤。本发明能从FASTQ格式文件的任意位置开始,向后准确的寻找到邻近的读段开头,并返回这一位置,满足各种对FASTQ读段读取的需求,从而大幅提高处理数据的速度和效率。

著录项

  • 公开/公告号CN104657627A

    专利类型发明专利

  • 公开/公告日2015-05-27

    原文格式PDF

  • 申请/专利号CN201310574685.6

  • 发明设计人 李家辉;何娜;王婷;罗海飙;

    申请日2013-11-18

  • 分类号

  • 代理机构广州新诺专利商标事务所有限公司;

  • 代理人肖云

  • 地址 511458 广东省广州市南沙区海滨路1121号A栋801室

  • 入库时间 2023-12-18 08:59:18

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-12-05

    授权

    授权

  • 2015-06-24

    实质审查的生效 IPC(主分类):G06F19/20 申请日:20131118

    实质审查的生效

  • 2015-05-27

    公开

    公开

说明书

技术领域

本发明涉及一种并行处理测序数据的方法及系统,具体地说,涉及一种寻找和判断以 FASTQ格式存储的读段的开头的技术。

背景技术

随着高通量、低成本的二代测序平台的出现,生物医药领域越来越多的应用这一平台进 行生物大分子测序。为了方便测序数据的发布和共享,高通量测序平台所测的碱基及其质量 分数数据大多以FASTQ格式存储。FASTQ格式是常见的基因测序数据,以读段为单位存储, 携带有碱基测序的质量信息,是下游分析软件最常见的格式。NCBI(美国国立生物技术信息 中心)等生物信息中心建立了SRA(Sociological Research in America)数据库来存放共享的 高通量测序数据,近几年这一数据规模呈现指数增长。为了快速有效的处理这些海量数据, 通常需要使用并行的处理方法。同时,由于测序数据的处理一般以读段为单位,因此在FASTQ 文件内部准确判断一个读段的开头,是并行处理测序数据的一个关键。

由于测序平台的不同,FASTQ的格式会有一定不同,但是一般而言它的一个读段由四行 组成,首行是以‘@’字符开头的title行,第二行是sequence行,第三行是以‘+’字符开头的plus 行,第四行是quality行。其中quality行采用ASCII码值表示,‘@’字符可能发生在quality行 开头或中间的任何地方,因此任何分析器不能仅以此作为读段开头的判断标准。另一方面一 些工具在输出FASTQ文件时自动给sequence和quality行换行,这一情况影响了FASTQ格式 数据读段开头准确寻找。

现有一些程序(如fastq_groomer_parallel、GNU parallel等)常利用FASTQ读段一般由 四行组成这一特性,根据文件的行数判断读段开头的位置。如文件的第i行是4的倍数,那 么i+1至i+4行组成一个完整的读段,读段的开头为i+1行的开头。这种判断方法对文件格式 有严格要求,若一个读段不是四行就会产生错误判断,例如sequence行或者quality行被输出 工具换行后一个读段将超过4行。而且当文件行数不能确定时,通过这种方法也不能快速有 效的寻找到读段开头。另外仅利用读段开头为‘@’字符开头的title行这一特性,以文件行首是 否为‘@’字符来判断读段开头,这一方法也会产生错误判断,因为有可能quality行以‘@’开头 或quality行发生换行之后的行首也为‘@’字符。对读段开头的错判,会影响数据的后续处理, 而且这些判断方法不能从FASTQ文件任意位置开始寻找到一个读段的开头,具有局限性。

发明内容

本发明所要解决的技术问题是克服现有技术中所存在的上述不足,而提供一种FASTQ格 式读段开头的寻找和判断方法,能从FASTQ文件任意位置开始,准确寻找到一个读段的开头, 并返回读段的开头位置。

本发明所要解决的技术问题是克服现有技术中所存在的上述不足,而提供一种FASTQ格 式读段开头的寻找和判断系统,能从FASTQ文件任意位置开始,准确寻找到一个读段的开头, 并返回读段的开头位置。

为了实现上述目的,本发明所采用的技术方案如下:

一种FASTQ格式读段开头的寻找和判断方法,包括以下步骤:根据用户输入参数定位文 件,确定查找的起始位置;从起始位置开始逐字读取字符,寻找到以‘@’字符开头的行,并 记录‘@’字符在文件中的位置;从‘@’字符开始连续读取,并将读取的字符依次存储至字 符数组title、sequence、plus、quality、end中,其中,将从‘@’字符开始到第一个换行 符前读取的字符存储至字符数组title中,将第一个换行符至‘+’字符前读取的字符存储至 字符数组sequence中,并把字符数组sequence的长度记为length,将‘+’字符到下一个 换行符前读取的的字符存储至字符数组plus中,将字符数组plus之后读取的length个字符 存储至字符数组quality中,最后读取紧邻的两个字符并将其存储至字符数组end中;判断 记录的位置是否为一个读段的开头,即根据字符数组title、sequence、plus、quality中存 储的内容,判断获取的title、sequence、plus、quality四个字符串是否能组成一个完整的 读段,如果判断为是,则将记录的位置作为读段开头的位置返回,如果判断为否,将原起始 位置所在行的行尾确定为新的起始位置,重复上述寻找和判断步骤。

进一步,获取的title、sequence、plus、quality四个字符串能组成一个完整读段,必 须满足以下条件:一是字符数组title与字符数组plus的内容相同,或者字符数组plus长 度为1;二是end字符数组中第一个字符是换行符,第二个字符为‘@’字符。

进一步,字符数组sequence、quality中存储的内容去除读取时遇到的换行符。

进一步,用户输入参数包括FASTQ格式的文件、指定的文件起始查找位置。

一种FASTQ格式读段开头的寻找和判断系统,包括依次连接的寻找单元、读取信息单元 和判断单元,寻找单元根据FASTQ格式读段的title行均为‘@’字符开头的特性,寻找以‘@’ 字符开头的行,并记录‘@’字符在文件中的位置;读取信息单元从‘@’字符开始连续读取, 并将读取的字符依次存储至字符数组title、sequence、plus、quality、end中;其中,读 取信息单元将从‘@’字符开始到第一个换行符前读取的字符存储至字符数组title中,将第 一个换行符至‘+’字符前读取的字符存储至字符数组sequence中,并把字符数组sequence 的长度记为length,将‘+’字符到下一个换行符前读取的的字符存储至字符数组plus中, 将字符数组plus之后读取的length个字符存储至字符数组quality中,最后读取紧邻的两 个字符并将其存储至字符数组end中;判断单元根据读取信息单元字符数组title、sequence、 plus、quality中存储的内容,判断寻找单元记录的‘@’字符在文件中的位置是否为一个读 段的开头位置。

进一步,读取信息单元根据FASTQ格式读段的sequence行后紧跟‘+’字符开头的plus 行、sequence行与quality行长度一致以及读段后紧跟‘@’字符开头的下一读段的特性, 对读取的内容进行分类存储。

进一步,判断单元根据字符数组title、sequence、plus、quality中存储的内容,判断 获取的title、sequence、plus、quality四个字符串是否能组成一个完整的读段。

进一步,获取的title、sequence、plus、quality四个字符串组成一个完整读段,必须 满足以下条件:一是字符数组title与字符数组plus的内容相同,或者字符数组plus长度 为1;二是end字符数组中第一个字符是换行符,第二个字符为‘@’字符。

与现有技术相比,本发明可以从FASTQ格式文件的任意位置开始,向后准确的寻找到邻 近的读段开头,并返回这一位置,为后续的读取工作奠定基础,满足各种对FASTQ读段读取 的需求,同时,所返回的读段开头位置,还可用于多个进程的读取,每个进程可以通过返回 的读段开头位置调整读取范围,以保证读取内容包含完整的读段,最终大幅提高处理数据的 速度和效率。

附图说明

图1为本发明寻找和判断FASTQ格式读段开头的示意图;

图2为本发明分类读取存储信息的示意图;

图3为本发明判断FASTQ格式读段开头的示意图;

图4为本发明寻找和判断FASTQ格式读段开头的系统框架示意图。

具体实施方式

下面结合附图和具体实施例对本发明FASTQ格式读段开头的寻找和判断方法以及系统 作进一步说明。

本发明根据用户输入参数,确定FASTQ文件查找的起始位置,从起始位置开始读取数据, 并逐字进行判断,在找到‘@’字符开头的行后,记录这一行首的位置,向后读取若干行, 并根据FASTQ读段的特征存储所读取的内容,通过判断读取的内容和长度,确定所获取的内 容是否为一个读段,在找到一个读段后,返回这一读段开头的位置。

请参阅图1、图2和图3,本发明公开了一种FASTQ格式读段开头的寻找和判断方法, 根据用户输入参数,从FASTQ文件的指定位置开始,逐字读取,正确寻找到读段的开头,且 返回这一位置,具体包括以下步骤:

首先,根据用户输入参数定位文件,确定查找的起始位置。

用户输入参数包括FASTQ格式的文件、指定的文件起始查找位置。通过分析用户输入的 FASTQ格式文件,确定文件的大小s,通过用户的输入,确定文件的起始查找位置。如指定 的位置为文件的m/n处,则将文件指针移至s*m/n处,并从此处开始读取文件。

然后,从起始位置开始逐字读取字符,寻找到以‘@’字符开头的行,并记录‘@’字 符在文件中的位置。

从起始位置开始向后逐字读取并判断字符,通过判断找到换行符后,读取后一个字符判 断是否为‘@’字符,如果判断为是,则记录这一‘@’字符在文件中所处的位置。

接着,从‘@’字符开始连续读取,并将读取的字符依次存储至字符数组title、sequence、 plus、quality、end中。

其中,将从‘@’字符开始到第一个换行符前读取的字符存储至字符数组title中,将第 一个换行符至‘+’字符前读取的字符存储至字符数组sequence中,并把字符数组sequence 的长度记为length,将‘+’字符到下一个换行符前读取的的字符存储至字符数组plus中,将 字符数组plus之后读取的length个字符存储至字符数组quality中,最后读取紧邻的两个字符 并将其存储至字符数组end中。字符数组sequence和字符数组quality中存储的内容不包括读 取时遇到的换行符。

最后,判断记录的位置是否为一个读段的开头,即根据字符数组title、sequence、plus、 quality中存储的内容,判断获取的title、sequence、plus、quality四个字符串是否能组成一个 完整的读段,如果判断为是,则将记录的位置作为读段开头的位置返回,如果判断为否,将 原起始位置所在行的行尾确定为新的起始位置,重复上述寻找和判断步骤。

判断FASTQ格式读段开头的方法是:根据字符数组title、sequence、plus、quality中存 储的内容,判断所获取的title、sequence、plus、quality四个字符串是否能组成一个完整读段, 若为一个完整读段,那么所记录的位置就是一个读段的开头的位置。

其中,获取的title、sequence、plus、quality四个字符串能组成一个完整读段,必须满足 以下条件:一是字符数组title与字符数组plus的内容相同(读段信息完整情况下,title与plus 长度和内容均一致),或者字符数组plus长度为1(读段中plus行‘+’后面信息省略的情况 下,plus只有‘+’一个字符);二是end字符数组中第一个字符是换行符,第二个字符为‘@’ 字符。

在FASTQ格式读段开头的寻找和判断过程中如果碰到文件尾,则退出读取过程。

请参阅图1、图2和图3,本实施例的FASTQ格式读段开头的寻找和判断方法,包括以 下步骤:

S1:根据用户输入参数确定文件的起始读取位置,用户输入参数包括FASTQ格式的文件 名、指定的文件起始查找位置。

S2:从起始查找位置开始向后逐字符读取并判断读取的字符,若为‘@’字符开头的行, 则记录这一行的行首(即‘@’字符)在文件中的位置。

S3:从记录的位置(即‘@’字符)开始,读取第一行的所有字符存储在字符数组title 中;往后读取,至‘+’字符,将第一个换行符至‘+’字符之前读取的所有字符存储至字符 数组sequence中,并把字符数组sequence的长度记为length(忽略数组中的所有换行符);继 续读取,至下一个换行符,将‘+’字符至这一换行符之前的所有字符存储在字符数组plus 中;读取接下来的length个字符(忽略换行符),并将读取的字符存储到字符数组quality中; 最后读取两个字符,存储至字符数组end中。读取过程请参阅图2所示,字符数组sequence 和字符数组quality中存储的内容不包括读取时遇到的换行符。

S4:对所读取的字符数组title、sequence、plus、quality中存储的内容进行判断,判断title 与plus的内容是否一致,如不一致,判断plus长度是否为1;判断end数组中第一个字符是 否为换行符和第二个字符是否为‘@’字符,判断过程请参阅图3所示。

若以上两个条件均满足,则所读取的title、sequence、plus、quality组成一个完整的读段, 记录的位置为一个读段的开头,并返回这一读段的开头位置。如果不满足上述两个条件,则 清空所有数组,同时将原起始位置所在行的行尾设置为新的起始位置,重复S2至S4的步骤, 直至寻找到一个读段,并返回这一读段的开头位置。

标准四行的FASTQ读段开头的寻找和判断

利用上述寻找和判断FASTQ读段开头的方法,找到标准四行的FASTQ读段开头,标准 四行的FASTQ读段,如表1所示,是最常见的FASTQ读段类型之一,四行信息完整,且不 存在换行现象。

在找到‘@’字符开头的行后,根据FASTQ读段的特征对读取的内容分类存储,第一行存 储至title数组,第二行存储至sequence数组,第三行存储至plus数组,第四行存储至quality 数组,第五行开头的两个字符存储至end数组。由于是标准四行的读段,一个读段将满足title 与plus的长度和内容均一致,以及读段后第一个字符为换行符第二个字符为‘@’字符这两个 条件。满足这两个条件的读取内容中,title、sequence、plus、quality组成一个读段,读段开 头的位置为‘@’字符开头的行首。

表1 标准四行的FASTQ读段

plus行信息省略的FASTQ读段开头的寻找和判断

利用上述寻找和判断FASTQ读段开头的方法,找到plus行信息省略的FASTQ读段开头, plus行信息省略的FASTQ读段,如表2所示,是常见的FASTQ读段类型之一,其中plus行 信息被省略,仅余一个‘+’字符,以区分sequence行和quality行,读段不存在换行现象。

在找到‘@’字符开头的行后,根据FASTQ读段的特征对读取的内容分类存储,第一行 存储至title数组,第二行存储至sequence数组,第三行仅一个字符存储至plus数组,第四行 存储至quality数组,第五行开头的两个字符存储至end数组。由于是plus信息省略的读段, 一个读段不满足title与plus的长度和内容均一致的条件,但是满足plus长度为一,以及读段 后第一个字符为换行符第二个字符为‘@’字符这两个条件。满足这两个条件的读取内容中, title、sequence、plus、quality组成一个读段,读段开头的位置为‘@’字符开头的行首。

表2 plus行信息省略的FASTQ读段

sequence行或quality行存在换行的FASTQ读段开头的寻找和判断

利用上述寻找和判断FASTQ读段开头的方法,找到sequence行或quality行存在换行的 FASTQ读段开头,sequence行或quality行存在换行的FASTQ读段,如表3所示,在一定情 况下可能存在,如输出工具自动将他们换行。

在找到‘@’字符开头的行后,根据FASTQ读段的特征对读取的内容分类存储,第一行 存至title数组,第二行至‘+’字符前的内容存储至sequence数组,‘+’字符至换行符存储 至plus数组,后续与sequence一样长的内容存储至quality数组(忽略两者中的换行符),最 后读取两个字符存储至end数组至。考虑到plus行信息可能省略,一个读段满足title与plus 的长度和内容均一致或者plus长度为一,以及读段后两个字符中第一个字符为换行符第二个 字符为‘@’字符这两个条件。满足这两个条件的读取内容中,title、sequence、plus、quality 组成一个读段,读段开头的位置为‘@’字符开头的行首。

表3 sequence行或quality行换行的FASTQ读段

sequence行以‘+’字符结尾的FASTQ读段开头的寻找和判断

利用上述寻找和判断FASTQ读段开头的方法,找到sequence行以‘+’字符结尾的FASTQ 读段开头,sequence行以‘+’字符结束的FASTQ格式读段,如表4所示,这一读段中plus 行信息被省略,同时plus的‘+’字符被放置到sequence行的末尾。

前面的读取与存储步骤和sequence行或quality行存在换行的FASTQ读段开头类似,仅 在判断时,考虑到plus行信息被省略,因此这种读段满足plus长度为一,以及读段后第一个 字符为换行符第二个字符为‘@’字符这两个条件。满足这两个条件的读取内容中,title、 sequence、plus、quality组成一个读段,读段开头的位置为‘@’字符开头的行首。

表4 sequence行以‘+’字符结束的FASTQ读段

经过两次判断后找到FASTQ读段开头的寻找和判断

利用上述寻找和判断FASTQ读段开头的方法,从文件的起始读取位置开始,经过两次判 断后找到FASTQ读段开头,起始读取位置为表5所示的加粗‘T’字符位置。

如表5所示,找到‘@’字符开头的行,第一行字符存至title数组,第二行至‘+’字符 前的内容存储至sequence数组,‘+’字符至换行符存储至plus数组,后续与sequence一样长 的内容存储至quality数组(忽略两者中的换行符),最后读取两个字符存储至end数组。对 读取的内容进行判断,title与plus的长度与内容不一致,但plus长为1,满足第一个条件; end数组中第一个字符为换行符,但是第二个字符为‘A’字符,不满足第二个条件。因此判 断所读取的内容不是一个读段,将新的起始位置设置为原起始位置所在行的行尾,如表5所 示的加粗‘A’字符位置,重复plus行信息省略的FASTQ读段开头的寻找和判断步骤,找到 一个完整的读段,并返回这一读段的开头位置,如表5所示加粗下划线位置。

表5 经两次判断找到的FASTQ读段开头

请参阅图4,本发明还公开了一种FASTQ格式读段开头的寻找和判断系统,系统内所有 的单元根据FASTQ格式读段的特征进行寻找和判断。本实施例的FASTQ格式读段开头的寻 找和判断系统100,包括依次连接的寻找单元10、读取信息单元20和判断单元30。

寻找单元10根据FASTQ格式读段的title行均为‘@’字符开头的特性,寻找以‘@’ 字符开头的行,并记录‘@’字符在文件中的位置。

读取信息单元20从‘@’字符开始连续读取,并将读取的字符依次存储至字符数组title、 sequence、plus、quality、end中。

读取信息单元20根据FASTQ格式读段的sequence行后紧跟‘+’字符开头的plus行、 sequence行与quality行长度一致以及读段后紧跟‘@’字符开头的下一读段的特性,对读取 的内容进行分类存储。

读取信息单元20将从‘@’字符开始到第一个换行符前读取的字符存储至字符数组title 中,将第一个换行符至‘+’字符前读取的字符存储至字符数组sequence中,并把字符数组 sequence的长度记为length,将‘+’字符到下一个换行符前读取的的字符存储至字符数组plus 中,将字符数组plus之后读取的length个字符存储至字符数组quality中,最后读取紧邻的两 个字符并将其存储至字符数组end中。字符数组sequence和字符数组quality中存储的内容不 包括读取时遇到的换行符。

判断单元30根据读取信息单元20字符数组title、sequence、plus、quality中存储的内容, 判断寻找单元10记录的‘@’字符在文件中的位置是否为一个读段的开头位置。

判断单元30判断寻找单元10记录的‘@’字符在文件中的位置是否为一个读段的开头 位置的方法是:判断单元30根据读取信息单元20字符数组title、sequence、plus、quality中 存储的内容,判断获取的title、sequence、plus、quality四个字符串是否能组成一个完整的读 段。若为一个完整读段,那么所记录的位置就是一个读段的开头的位置。

获取的title、sequence、plus、quality四个字符串组成一个完整读段,必须满足以下条件: 一是字符数组title与字符数组plus的内容相同,或者字符数组plus长度为1;二是end字符 数组中第一个字符是换行符,第二个字符为‘@’字符。

判断单元30判断获取的title、sequence、plus、quality四个字符串能组成一个完整的读 段,则记录的位置是一个读段的开头,并将记录的位置作为读段开头的位置返回;判断单元 30判断获取的title、sequence、plus、quality四个字符串不能组成一个完整的读段,则记录的 位置不是一个读段的开头,并将原起始位置所在行的行尾确定为新的起始位置,重复上述寻 找和判断步骤。

本发明寻找和判断FASTQ格式读段开头的方法更加严谨,可以从FASTQ格式文件指定 的任意位置开始,向后准确的寻找到邻近的读段开头,并返回这一位置,为后续的读取工作 奠定基础,从而大幅提高处理数据的速度和效率。

本发明可以准确寻找到FASTQ格式四种读段的开头:第一种是标准四行的FASTQ读段; 第二种是plus行信息省略的FASTQ读段;第三种是sequence行或者quality行存在换行的 FASTQ读段;第四种是sequence行以‘+’字符结束的FASTQ读段,本发明的寻找和判断方法 能适应各种对FASTQ读段读取的需求。

本发明寻找和判断FASTQ格式读段的开头的方法所返回的读段开头位置,还可用于多个 进程的读取,每个进程可以通过返回的读段开头位置调整读取范围,以保证读取内容包含完 整的读段。

上述说明是针对本发明较佳可行实施例的详细说明,但实施例并非用以限定本发明的专 利申请范围,凡本发明所揭示的技术精神下所完成的同等变化或修饰变更,均应属于本发明 所涵盖专利范围。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号