2026-09-16
pydreg把dREG迁到Python并保留原SVR;12库Jaccard>0.997,约快4.5倍,内存中位降5.4倍。
dREG用多尺度新生转录信号和SVR找活性启动子、增强子,准确率在GRO/PRO/ChRO-seq上仍然靠前。参考实现却是R、C、shell和若干基因组学外部工具的拼盘,GPU加速靠Rgtsvm对着CUDA和Boost源码编译。Rgtsvm面向早期NVIDIA卡和稀疏数据,核心依赖超过五年没更新,本地部署已经很难。
目标不是新算法,是把同一套预训练模型和同一套peak calling搬到现在能装、能维护的栈上,并吃到稠密GEMM该有的速度。
流水线与dREG最新版对齐:先筛覆盖足够的基因组位点,再把周围多尺度读段密度打成360维特征,用原预训练RBF-SVR打分(605,187个支持向量),高分位点拼成候选峰,再用原随机森林切峰,最后按相关五维Laplace零假设做FDR过滤(Benjamini-Hochberg,p≤0.05)。
权重从原RData转成safetensors,首次运行自动下载缓存。GPU打分在NVIDIA上走CuPy、在Apple silicon上走MLX,CPU回退是NumPy加Numba。SVR推理把查询批次与支持向量分块做矩阵乘,用‖x−s‖²=‖x‖²+‖s‖²−2xᵀs把RBF核变成GEMM加融合逐元素核,再按对偶系数加权。I/O和特征提取做预取,避免和GPU打分串行卡住。
Peak calling一侧,对每个候选峰顶取五个平滑分数,在相关Laplace零假设下做准蒙特卡洛积分。pydreg跳过零权重网格点,并在剩余尾部贡献低于10⁻⁶时停积分,QMC评估大约减半,统计结果按作者的经验检查没有可察觉退化。
代码主体由Claude Code(Opus 4.6/5、Sonnet 5)和Codex(GPT-5.5)写出,作者负责实现取舍和基准。
12个已发表GRO/PRO/ChRO-seq库、约1.26亿候选位点,在Titan Xp加16线程CPU上对打。SVR分数Pearson r>0.999,MAE=0.00251,最大绝对差0.0256。最终peak的Jaccard>0.997。墙钟时间大约快4.5倍;主机峰值RSS降3.8到6.8倍,中位5.4倍。
Nsight剖面:默认设置下pydreg每次kernel launch完成的工作量约12倍,每次H2D拷贝约942倍。打分阶段总时间约5.5倍(例如G1库dREG 7567秒对pydreg 1354秒)。GPU利用率从约67%升到约95%,因为特征提取不再和GPU批次串行。纯GPU计算时间仍短4.2倍,说明快不全是调度,GEMM路径本身更省。
没有新测序数据,也没有和新的调控元件检测器比准确率。对照就是原版dREG。
这是工具寿命问题,不是方法论文。实验室若还在用dREG网关或自己编译Rgtsvm,现在可以pip install pydreg[gpu],输出BED/bigWig,并能嵌进Python流程。分数几乎逐位点重合,迁移风险低。对做GPU推理的人,它是一个干净例子:把为稀疏数据写的自定义CUDA核换成稠密GEMM,利用率会从2/3拉到满载附近。
Astera Hidden Science资助,按开放科学政策不投期刊,bioRxiv即版本记录。
算法没有改,十年前SVR的上限还在:特征仍是360维手工多尺度,模型仍是60万支持向量的RBF。论文没有在CPU-only或消费级显卡上给端到端墙钟,也没有和新方法(如基于深度学习的新生转录peak caller)比灵敏度。QMC提前终止声称无统计损伤,但没有单独的校准表。编码代理写了代码库,可复现性绑在公开仓库和预训练权重上,文中没有提供逐模块人工审计记录。