使用 pg_gpu 的 GPU 加速群体遗传学统计

root 提交于 周一, 06/01/2026 - 02:47
群体遗传学汇总统计量——多样性、分化、连锁不平衡、选择扫描以及降维——在人类、农业与生态基因组学中都具有基础性意义。随着全基因组测序数据集的规模增长到数十万个个体,在传统 CPU 实现上计算这些统计量的成本已成为主要瓶颈:对单条染色体臂进行基于窗口的扫描可能需要数小时至数天,而对用于群体历史推断的成对连锁不平衡统计量的计算,其复杂度随样本量按 O(n^2) 增长,往往会完全超出实际墙钟时间预算。 我们提出 pg_gpu,这是一个 Python 库,通过在 NVIDIA GPU 上实现融合的 CUDA 内核,提供一套全面的群体遗传学汇总统计量。pg_gpu 涵盖十一大类别,包括多样性与中性检验、分化、基因混合、位点频率谱、连锁不平衡、基于单倍型的选择扫描、降维(PCA、随机化 PCA、局部 PCA / lostruct)、距离分布、亲缘关系、重采样,以及一个用于自定义 {theta} 估计量的广义加权 SFS 框架。在完整的 Ag1000G 第 3 阶段 3R 染色体臂数据上(2,940 条单倍型,1,090 万个变异位点),pg_gpu 与 scikit-allel 和 PLINK2 的结果在机器精度范围内一致,同时实现了 139 倍的中位加速和最高 1,096 倍的加速。对于 moments 用于群体历史推断的多群体 LD 统计量,pg_gpu 可作为即插即用的替代方案,相较原生实现可获得约 1,750 倍的加速。整条染色体臂扫描、lostruct 筛查以及 LD 统计量的计算,在单块 NVIDIA A100 上可于数秒到数分钟内完成。

群体遗传学汇总统计量——包括多样性、分化、连锁不平衡、选择扫描和降维——在人类、农业和生态基因组学中都具有基础性作用。随着全基因组测序数据集的规模增长到数十万个个体,在传统 CPU 实现上计算这些统计量的成本已成为主要瓶颈:对单条染色体臂进行基于窗口的扫描可能需要数小时到数天,而用于群体历史推断的成对连锁不平衡统计量的计算在样本量上按 O(n^2) 扩展,往往完全超出可接受的实际运行时间预算。

我们提出 pg_gpu,这是一个 Python 库,通过 NVIDIA GPU 上融合的 CUDA 内核实现了全面的群体遗传学汇总统计量目录。pg_gpu 覆盖十一类方法,涵盖多样性与中性检验、分化、混合、位点频率谱、连锁不平衡、基于单倍型的选择扫描、降维(PCA、随机化 PCA、局部 PCA / lostruct)、距离分布、亲缘关系、重采样,以及用于自定义 {theta} 估计量的广义加权 SFS 框架。

在完整的 Ag1000G 第 3 期 3R 染色体臂数据上(2,940 个单倍型,1,090 万个变异),pg_gpu 与 scikit-allel 和 PLINK2 的结果在机器精度范围内一致,同时实现了中位数 139 倍、最大 1,096 倍的加速。对于 moments 用于群体历史推断的多群体 LD 统计量,pg_gpu 可作为即插即用的替代方案,相较原生实现可实现约 1,750 倍加速。整条染色体臂的扫描、lostruct 筛查以及 LD 统计量的计算可在单张 NVIDIA A100 上于数秒至数分钟内完成。


📄 原文链接:https://www.biorxiv.org/content/10.64898/2026.05.29.728868v1?rss=1

🏷️ 群体遗传学 GPU加速 CUDA 基因组统计 连锁不平衡 降维分析