✨ 要点🔬 技术摘要
在人体内的每一个细胞中,一套复杂的开关系统决定着哪些基因被开启,哪些基因被关闭。这些被称为调控元件的开关就像是细胞运作的控制面板,决定了何时构建特定的蛋白质,以及何时停止。为了了解细胞如何运作,科学家必须定位这些活跃的开关。寻找它们的一种强大方法是倾听细胞原始、未经处理的遗传信息。当一个基因正在被读取时,细胞会产生一种被称为新生 RNA(nascent RNA)的短寿命 RNA 副本。通过对这种新鲜的 RNA 进行测序,研究人员可以精确地看到细胞当前活跃的位置,从而揭示驱动生物过程的启动子和增强子的位置。
十多年来,一个名为 dREG 的计算机程序一直是寻找这些活跃区域的标准工具。它通过扫描整个基因组上的 RNA 产生模式,寻找开关被拨动的特定特征信号。然而,该软件的原始版本是基于已经变得难以运行和维护的旧技术构建的。它依赖于一种复杂的编程语言组合和专门的硬件支持,而这些技术现在已不再容易更新。因此,许多想要使用这种强大方法的科学家发现自己被技术障碍所阻挡,无法在自己的电脑上运行分析,也无法将其集成到现代研究工作流中。
为了解决这个问题,研究人员 Adam Y. He 和 Charles G. Danko 开发了名为 pydreg 的新版软件。他们用 Python(一种广泛使用且易于维护的语言)重写了整个程序,同时保留了使原始工具如此精确的完全相同的数学逻辑。其目标不是改变科学原理,而是让工具变得更快、更轻量,并且让任何人都能更轻松地使用。新软件保留了程序的原始“大脑”——即识别活跃基因模式的预训练模型——但将底层沉重且过时的机械结构替换成了现代、高效的工具。
当团队将新软件与旧版本进行对比测试时,结果在准确性方面几乎完全一致。新程序识别出的活跃区域具有极高的吻合度,以至于两组结果几乎无法区分。事实上,在对数百万个潜在位置进行评分对比时,新软件与旧软件的相关性之强,几乎达到了完美的程度。这证实了新代码并没有丢失原始方法的任何科学精度。区别完全在于完成工作的方式。新版本的运行速度比旧版本快了约四点五倍。它还显著减少了对计算机内存的使用,仅需原先所需资源的一小部分。
速度和效率的提升源于新软件处理繁重计算的方式。原始程序使用了一种定制的旧方法来处理图形卡上的数据,该方法是为十多年前的硬件设计的。新版本则使用现代库,充分利用当前的计算机芯片,使其能以更小的代价完成同样的复杂计算。它还简化了主计算前后所执行的步骤,减少了计算机等待数据的时间。对于研究人员而言,这意味着原本可能需要数小时的分析现在可以在极短的时间内完成,并且可以在标准设备上运行,而不再需要专门且难以寻找的配置。
除了速度之外,新软件还消除了阻碍许多科学家使用该方法的障碍。它被封装为一个简单的工具,可以通过单条命令进行安装,并能与基因研究中使用的其他现代工具无缝衔接。开发者还将底层代码和预训练模型免费公开,确保该方法保持开放性,并能由社区在未来进行改进。通过在不改变科学原理的情况下更新基础设施,研究人员延长了这一关键工具的生命周期,确保了绘制基因组活跃开关的能力对每一位需要它的人都是可及的。
pydreg:一个用于识别新生转录中活跃顺式作用元件的快速 Python 软件包技术摘要
问题陈述 活跃的启动子和增强子(顺式作用元件,即 CREs)会产生特征性的双向转录模式,这可以通过新生 RNA 测序(如 GRO-seq、PRO-seq)进行检测。dREG 算法是识别这些活跃 CRE 的领先方法,它通过使用支持向量回归(SVR)和统计峰值调用(peak calling)来分析读取密度模式。然而,dREG 的参考实现存在显著的可用性和维护障碍。它依赖于结合了 R、编译后的 C 代码、Shell 脚本和过时的外部工具的复杂工作流。至关重要的是,其主要的 GPU 加速库 Rgtsvm 依赖于针对 CUDA 和 Boost 的源码构建,目标针对早期一代 NVIDIA 硬件,并利用了稀疏负载假设,这限制了其在现代 GPU 上的性能。这些因素使得部署变得困难,阻碍了维护,并阻止了该方法利用当代硬件的进步。
方法论 为了解决这些局限性,作者开发了 pydreg ,这是 dREG 流水线的 Python 移植版本,它在保留原始算法逻辑和预训练模型的同时,实现了计算基础设施的现代化。
流水线架构: pydreg 通过一个五步流水线处理具有链特异性的新生转录覆盖度(bigWig 文件):
识别具有足够读取覆盖度的基因组位置。
将局部读取谱图汇总为多尺度特征向量(长度为 360)。
使用原始预训练的 SVR 模型对特征向量进行评分。
将高分位置组装成候选峰值,并通过一个预训练的随机森林分裂模型进行精炼。
分配统计显著性并进行 FDR 过滤。
预训练的模型参数被转换为可移植的 safetensors 文件,在首次使用时自动下载并缓存。
SVR 推理优化: 核心计算瓶颈是 SVR 推理,这涉及计算查询向量与 605,187 个支持向量之间的成对距离,使用的是径向基函数(RBF)核。
传统方法: 原始的 Rgtsvm 库使用了自定义的面向稀疏的 CUDA 内核,由于 dREG 的 360 维稠密特征,导致数据复用率低且内存流量高。
pydreg 方法: 作者使用 CuPy (针对 NVIDIA GPU)和 MLX (针对 Apple Silicon)重新实现了评分过程,并提供使用 NumPy 和 Numba 的 CPU 回退方案。他们利用恒等式 ∥ x − s ∥ 2 = ∥ x ∥ 2 + ∥ s ∥ 2 − 2 x T s \|x - s\|^2 = \|x\|^2 + \|s\|^2 - 2x^Ts ∥ x − s ∥ 2 = ∥ x ∥ 2 + ∥ s ∥ 2 − 2 x T s 重新构建了 RBF 距离计算。这使得主要的计算可以通过经过厂商优化的通用矩阵乘法(GEMM)内核来完成。预计算的行范数和融合元素级内核进一步减少了冗余算术运算和设备内存流量。
统计峰值调用优化: 用于峰值调用的 p 值计算涉及使用随机拟蒙特卡洛(QMC)方法对相关的五维拉普拉斯零分布进行积分。
优化: pydreg 跳过了零权重网格点,并在剩余尾部可能的最大贡献低于 10 − 6 10^{-6} 1 0 − 6 时提前终止积分。这些改进在不降低统计准确性的情况下,消除了不必要的 QMC 评估。
关键结果 作者在 NVIDIA Titan Xp GPU(配备 16 个 CPU 线程)上,使用 12 个先前发表的新生 RNA 测序数据集,对 pydreg 与原始 dREG 进行了评估。
准确性: pydreg 产生的结果与 dREG 几乎完全一致。
SVR 分数的 Pearson 相关系数 r > 0.999 r > 0.999 r > 0.999 ,平均绝对误差(MAE)为 0.00251。
最终的峰值调用一致性(Jaccard 指数)> 0.997 > 0.997 > 0.997 。
性能:
运行时间: preg 比 dREG 快约 4.5 倍 。
内存: pydreg 将峰值宿主内存(RSS)降低了中位数 5.4 倍 (范围在 3.8 到 6.8 倍之间)。
GPU 效率: 分析显示,与 dREG 相比,pydreg 在每次内核启动时执行的工作量增加了 12 倍,在每次主机到设备内存拷贝时执行的工作量增加了 942 倍。总评分时间快了 5.5 倍,GPU 活跃计算时间减少了 4.2 倍。
可用性: pydreg 以可通过 pip 安装的软件包形式发布(pydreg[gpu] 或 pydreg[mlx]),同时提供命令行和程序化 Python 接口,能够无缝集成到现代基于 Python 的基因组学工作流中。
意义与主张 论文声称 pydreg 通过移除对难以维护的遗留基础设施的依赖,成功地延长了 dREG 算法的使用寿命。作者断言,通过采用现代数值库和打包方式,pydreg:
提高了可重复性和互操作性: 它允许 dREG 在标准的 Python 环境中运行,促进了与当代分析流水线的集成。
降低了计算门槛: 运行时间及内存使用的显著降低,使得更广泛的用户能够更实际地在本地运行 dREG。
利用了现代硬件: 与遗留的 Rgtsvm 不同,pydreg 针对当前的 GPU 架构(NVIDIA 和 Apple Silicon)进行了优化,确保随着硬件的演进,该方法依然保持高效。
作者总结道,pydreg 在保持原始 dREG 方法高准确性的同时,为未来的开发提供了一个可维护的基础。
每周获取最佳 bioinformatics 论文。
受到斯坦福、剑桥和法国科学院研究人员的信赖。
请查收邮箱确认订阅。
出了点问题,再试一次?
无垃圾邮件,随时退订。