[发明专利]一种快速将fastq文件均匀分片的方法有效
申请号: | 202010443814.8 | 申请日: | 2020-05-22 |
公开(公告)号: | CN111782609B | 公开(公告)日: | 2023-10-13 |
发明(设计)人: | 黄俊松;文晋;邵艳军 | 申请(专利权)人: | 北京和瑞精湛医学检验实验室有限公司 |
主分类号: | G06F16/17 | 分类号: | G06F16/17;G06F3/06;G06F9/50 |
代理公司: | 北京华专卓海知识产权代理事务所(普通合伙) 11664 | 代理人: | 李巨智 |
地址: | 102206 北京市昌平区生命科*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 快速 fastq 文件 均匀 分片 方法 | ||
1.一种快速将fastq文件均匀分片的方法,其特征在于,包括:
通过两个线程并发加载fastq文件,构造read数据并输出;
设置若干个分片,根据均匀分片算法将所述read数据分配到对应分片的分片缓存;
通过异步分片线程池中的异步分片线程,将所述分片缓存中的read数据写入对应分片的输出fastq文件中。
2.根据权利要求1所述的方法,其特征在于,所述通过两个线程并发加载fastq文件,构造read数据并输出,包括:
分配第一线程、第二线程和一个数据块队列,设置该数据块队列的最大数据项个数限制以及数据块的大小;
在所述第一线程中,向对象内存复用池发出分配内存请求,等待分配一个所述数据块大小的数据块;
在所述第一线程中,按照所述数据块的大小读取所述fastq文件,将读取到的数据放到所述分配的数据块中,判断所述数据块队列是否达到所述最大数据项个数限制,如果是,则进入等待状态,直至所述数据块队列的数据项个数小于所述最大数据项个数限制,将所述数据块插入所述数据块队列的队尾;否则,将所述数据块插入所述数据块队列的队尾;
继续判断所述fastq文件是否读取完毕,如果已读取完毕,则设置数据块队列结束标记,并结束第一线程;如果未读取完毕,则返回等待分配数据块,继续加载fastq文件;
在所述第二线程中,判断所述数据块队列是否为空且设置结束标记,如果所述数据块队列为空且设置结束标记,则结束第二线程;如果所述数据块队列为空且没有设置结束标记,则进入等待状态,直到所述数据块队列不为空或者被设置结束标记为止;如果所述数据块队列不为空,则从所述数据块队列的头部取出数据块,得到fastq块数据;
顺序地将所述fastq块数据进行换行解析,得到若干个read数据,并按次序逐个输出;
在所述数据块被消费后,向对象内存复用池发出释放内存请求。
3.根据权利要求2所述的方法,其特征在于,所述read数据存储于一块连续内存内,包括一个起始位置、一个结束位置和三个索引值,三个索引值设置于所述起始位置与所述结束位置之间,用于分别指向三个换行符的位置;所述三个换行符将所述起始位置与所述结束位置之间的数据分割成四行数据,其中第一行数据为信息行、第二行数据为序列行、第三行数据为注释行、第四行数据为质量行;所述换行符用于触发数据换行操作。
4.根据权利要求1所述的方法,其特征在于,所述根据均匀分片算法将所述read数据分配到对应分片的分片缓存,包括:
为每个分片分配一个分片缓存,定义计数索引;所述计数索引用于在分片缓存获取到read数据时,为该read数据分配索引值,且每获取到一个read数据,其对应的索引值加1;
获取所述read数据,计算所述获取到的read数据对应的分片序号,将所述read数据分配到所述分片序号对应分片,将所述对应分片的read数据插入对应的分片缓存中。
5.根据权利要求4所述的方法,其特征在于,所述计算所述获取到的read数据对应的分片序号,包括:
Qn=Pn%N
其中,Qn为第n个read数据对应的分片序号;Pn为第n个read数据的索引值;N为分片个数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京和瑞精湛医学检验实验室有限公司,未经北京和瑞精湛医学检验实验室有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010443814.8/1.html,转载请声明来源钻瓜专利网。