一种基于聚类算法的高性能k-mer频次计数方法及系统技术方案

技术编号:34373826 阅读:16 留言:0更新日期:2022-07-31 12:28
本发明专利技术公开了一种基于聚类算法的高性能k

A high performance k-mer frequency counting method and system based on clustering algorithm

【技术实现步骤摘要】
一种基于聚类算法的高性能k

mer频次计数方法及系统


[0001]本专利技术属于生物信息学领域,涉及一种基因组K

mer频次计数方法,尤其涉及一种基于聚类算法的k

mer频次计数方法。

技术介绍

[0002]自2005年罗氏推出第一款二代测序仪罗氏454后,生命科学正式开始进入高通量测序时代。Illumina系列测序平台的推出,极大地降低了二代测序的价格,使得高通量测序在生命科学各个研究领域得到了广泛的普及。至今,第二代短读长测序技术在全球测序市场上仍然占有绝对的优势地位。
[0003]在生物信息学领域,计算每个k

mer(长度为k的子串)在一个长串中的出现次数是一个核心的子问题,包括基因组组装、测序读取的纠错、快速多序列比对和重复检测,以及评估基因组的大小、杂合程度和物种样品污染程度等。第二代测序技术虽然大大提高了测序的通量,但其获得的单条序列长度很短,往往只在50~300bp,并且因为测序的覆盖范围更深,导致基因组项目中需要处理的序列数量迅速增加,为后续基因组分析提供了巨大挑战。
[0004]目前关于k

mer计数提出了多种算法,但均有着无法避免的缺陷。如获取k

mer的过程(即分裂基因序列的过程)几乎都采用了遍历的方式,包括前向遍历与逆向遍历,其时间复杂度高;如对k

mer频次进行统计时,为了在查找时间上更高效,几乎全部采用了Hash表算法。即使是流行的k<br/>‑
mer计数软件jellyfish,也依然存在两个致命问题:首先,基于Hash表的计数算法中的Hash表均存在哈希冲突,使其算法效率降低,极端情况下可能出现直到耗尽最大探测次数仍然找不到合适位置的情况;其次,Hash表需要驻留在内存中以进行随机访问,jellyfish虽然实现了并行,提高了效率,但是对内存的占用也极为显著。

技术实现思路

[0005]本专利技术的目的在于克服现有技术的不足,提供一种基于聚类算法的高性能k

mer频次计数方法及系统,方法基于坐标偏移算法、无监督机器学习的聚类算法,使用唯一质心代替hash值表达k

mer序列,解决了Hash算法的低效率问题;采用CUDA数据流,配合异步操作,解决了GPU浪费及内存开销大的技术问题,提高计算速度;采用CPU+CUDA异构编程,保证CPU、GPU间高速通讯和协同计算,实现高准确度、高效率的k

mer计数。
[0006]本专利技术的目的是通过以下技术方案来实现的:
[0007]一种基于聚类算法的高性能k

mer频次计数方法,包括以下步骤:
[0008]CPU读取基因组格式文件,得到长度为L的基因序列reads;
[0009]CPU创建CUDA流,所述CUDA流包括以下GPU核函数及其执行的操作:
[0010]S1:按照预设子序列长度K将reads拆分为L

K+1段k

mer序列;
[0011]S2:以k

mer序列中每个碱基位置为坐标点,将拆分获得的多段k

mer序列分别转换为对应的坐标数组并添加坐标偏移;
[0012]S3:利用聚类算法计算出每个坐标数组的质心特征值,并将所有k

mer序列与k

mer序列对应的质心特征值返回至CPU;
[0013]CPU根据k

mer序列及对应的质心特征值,对所有k

mer出现的频次进行计数;
[0014]CPU输出k

mer频次分布结果。
[0015]具体的,所述基因组格式文件包括fasta或fastq格式文件。
[0016]具体的,所述步骤S2具体包括以下子步骤:
[0017]S201,对拆分后得到的k

mer序列,在ATCG笛卡尔坐标系中,以A、T为垂直坐标的正负轴,G、C为水平坐标的正负轴,以k

mer序列中每个碱基位置为坐标点,将k

mer序列中的每一个碱基都表达为坐标系中的坐标点,从而将每段k

mer序列转换为ATCG笛卡尔坐标系中对应的坐标数组;
[0018]S202,基于火星坐标系的坐标偏移算法,在每个坐标数组各个碱基的坐标值中添加坐标偏移,将坐标点转换为浮点型。
[0019]具体的,所述步骤S3具体包括以下子步骤:
[0020]S301,以碱基坐标点之间欧几里得距离的均方差作为准则函数,对每个坐标数组进行Kmeans聚类计算分析,获得每个坐标数组的质心特征值,并将其作为每个坐标数组对应的k

mer序列质心表达;
[0021]S302,将基因组格式文件中reads序列的所有k

mer序列都转换为质心表达后,将所有k

mer序列与k

mer序列对应的质心特征值异步返回至CPU。
[0022]具体的,所述聚类算法包括K均值聚类、均值漂移聚类和基于高斯混合模型的最大期望聚类算法。其中,K均值聚类(Kmeans)是优选算法。
[0023]具体的,所述CUDA流还包括内存复制指令,内存复制指令用于CPU与GPU之间的数据传输,并降低GPU内存或cache。
[0024]具体的,所述内存复制指令包括同步内存复制指令和异步内存复制指令。其中,同步内存复制指令用于从CPU内存中同步向GPU传输基因组格式文件,提高计算速度;异步内存复制指令用于将GPU处理的k

mer序列及对应的质心特征值异步返回至CPU,减少GPU浪费和内存开销。
[0025]一种基于聚类算法的高性能k

mer频次计数系统,采用上述的基于Kmeans的基于聚类算法的高性能k

mer频次计数方法实现,系统包括k

mer预处理模块、坐标转换模块、Kmeans计算模块和k

mer频次统计模块。其中,
[0026]K

mer预处理模块用于通过CPU从磁盘读取测序文件,通过CUDA流将其传输至GPU,并利用GPU按照预设子序列长度K将测序文件拆分为多段k

mer序列;
[0027]坐标转换模块用于以k

mer序列中每个碱基位置为坐标点,将拆分获得的多段k

mer序列分别转换为对应的坐标数组并添加坐标偏移;
[0028]Kmeans计算模块用于利用Kmeans聚类计算出每个坐标数组的质心特征值,并将所有k

mer序列与k

mer序列对应的质心特征值返回至CPU;本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于聚类算法的高性能k

mer频次计数方法,其特征在于,包括以下步骤:CPU创建CUDA流,所述CUDA流包括以下GPU核函数及其执行的操作:S1:按照预设子序列长度K将基因序列reads拆分为L

K+1段k

mer序列;S2:以k

mer序列中每个碱基位置为坐标点,将拆分获得的多段k

mer序列分别转换为对应的坐标数组并添加坐标偏移;S3:利用聚类算法计算出每个坐标数组的质心特征值,并将所有k

mer序列与k

mer序列对应的质心特征值返回至CPU;CPU根据k

mer序列及对应的质心特征值,对所有k

mer出现的频次进行计数;CPU输出k

mer频次分布结果。2.根据权利要求1所述的一种基于聚类算法的高性能k

mer频次计数方法,其特征在于,所述基因组格式文件包括fasta或fastq格式文件。3.根据权利要求1所述的一种基于聚类算法的高性能k

mer频次计数方法,其特征在于,所述CPU创建CUDA流之前还包括:CPU读取基因组格式文件,得到长度为L的基因序列reads。4.根据权利要求1所述的一种基于聚类算法的高性能k

mer频次计数方法,其特征在于,所述步骤S2具体包括以下子步骤:S201,对拆分后得到的k

mer序列,在ATCG笛卡尔坐标系中,以A、T为垂直坐标的正负轴,G、C为水平坐标的正负轴,以k

mer序列中每个碱基位置为坐标点,将k

mer序列中的每一个碱基都表达为坐标系中的坐标点,从而将每段k

mer序列转换为ATCG笛卡尔坐标系中对应的坐标数组;S202,基于火星坐标系的坐标偏移算法,在每个坐标数组各个碱基的坐标值中添加坐标偏移,将坐标点转换为浮点型。5.根据权利要求1所述的一种基于聚类算法的高性能k

mer频次计数方法,其特征在于,所述步骤S3具体包括以下子步骤S301,以碱基坐标点之间欧几里得距离的均方差作为准则函数,对每个坐标数组进行Kmeans聚类计算分析,获得每个坐标数组的质心特征值,并将其作为每个坐标数组对应的k

mer序列质心表达;S302,将基因组格式文件中reads序列的所有k

mer序列都转换为质心表达后,将所有k

mer序列与k

mer序列对应的质心特征值异步返回至CPU。6.根据权利要求1所述的一种基于聚类算法的高性能k

mer频次计数方法,其特征在于,所述聚类算法包括K均值聚类、均值漂移聚类和基于高斯混合模型的最大期望聚类。7.根据权利要求1所述的一种基于聚类算法的高性能k

mer...

【专利技术属性】
技术研发人员:李国良张也吉祥宇刘宇驰杨诗宇武晟祥陈松林谢宇涛杨月刘子祯
申请(专利权)人:天津大学四川创新研究院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1