基础算法可复现练习 - SpiralKernel/bioinfo-wiki GitHub Wiki

基础算法可复现练习

更新:2026-10-13;状态:可用;验证范围:六类人工算法已运行;查找/图/比对边界、聚类目标和梯度求解另有自动检查。

用小型人工输入核对查找、计数、图、比对、聚类和优化的计算逻辑。

怎样运行

需要Python、NumPy和Matplotlib,在项目根目录执行:

python3 -m pip install numpy matplotlib
python3 examples/basic_algorithms_demo.py

固定种子20261013,输出 examples/output/basic-algorithms/;重复运行覆盖同名文件。本次NumPy 2.5.4、Matplotlib 3.11.2。源代码中保留小函数,便于逐步阅读。

已核对的输出

例子 输入或目标 实际结果
二分左边界 [1,3,3,8]查3 0起始索引1
重叠k-mer ATATAT、k=2 AT=3,TA=2
BFS reads到differential任务图 最少4条边,孤立节点不可达
全局比对 ACGT与AGT,匹配2、错配−1、缺口−2 ACGT/A-GT,分数4
K-means 100个人工二维点,K=2 50/50划分,SSE=45.5002
梯度下降 120观测、3个设计列 与最小二乘系数最大差约4.90×10⁻¹⁰

其中K-means的SSE从365.1583下降,梯度下降285次记录迭代后得到相应收敛结果。标签编号和浮点尾数不是生物学结论。

基础算法实测

左图是人工点和质心,中图是K-means目标,右图是梯度目标相对最终值的差,对数轴下限1e−16。

怎样进一步核查

用空串核对比对边界,检查回溯字符串去掉缺口后还原原输入,并按同一打分重新求和。搜索检查重复值与不存在目标;图检查循环不会无限访问;优化与独立数值求解器比较,并检查目标不增加。

这些检查验证的是代码逻辑。教学比对没有仿射缺口,计数没有生产规模索引,BFS没有加权最短路径,聚类没有真实组学注释验证,梯度下降没有通用非凸收敛保证。

原理链接由生信基础算法学习路线串联。公开算法汇总与程序对应,不包含真实个体数据。