PsyBit 心理学统计 · 生信拓展 · 跑通为准
总览 / 代码验证

代码验证报告

这个站点收录的每一个脚本,都在真实环境里跑过一遍才放上来。目标是:你复制命令就能出结果,而不是先花两天调环境、最后发现模板本身是错的。

为什么要单独做这一页

教程类内容最容易出的问题不是「写得不好」,而是「根本没跑过」——路径写错、依赖版本冲突、参数早就变了,读者照着做只会卡住,还以为是自己的问题。所以这里把验证过程完整摊开:环境怎么建的、命令是什么、输出长什么样、哪里出过问题。

验证环境

  • 运行环境:Ubuntu 云主机,8 核 / 15 GB 内存,无 Docker
  • 环境管理:micromamba 2.9.0(每个模块一个独立环境,不污染 base)
  • 软件来源:conda-forge + bioconda,少数包走 pip
  • 验证方式:端到端真跑:公开真实数据、完整命令、真实输出,跑不通的部分如实标注

逐脚本验证结果

vs_batch.py已实测跑通分子对接与虚拟筛选

1IEP(c-Abl 激酶 + 伊马替尼)体系上批量对接 5 个配体,全部跑通,产出 poses/ 与 results.csv。阳性对照伊马替尼重对接得 −13.27 kcal/mol,top pose 与共晶结构 RMSD 0.270 Å(Vina 官方示例 0.283 Å),重对接成功。

  • 实测环境:Python 3.11.16 + vina 1.2.7 + meeko 0.8.0 + rdkit 2026.03.1 + openbabel 3.2.1,全部版本号见日志
  • 实测耗时:单配体冒烟测试 24 s;5 配体批量(exhaustiveness=16)2 min 27 s
  • 跑出 2 个真实缺陷并已修复:一是不同目录下的同名配体会互相覆盖输出(并发写同名文件),二是输入文件或 vina 路径不存在时不报错、静默失败
  • 修复前的原文件另存为 verify/docking/vs_batch.orig.py,逐行改动见 diff
  • 脚本本体只依赖 Python 标准库 + vina 可执行文件;准备 PDBQT 输入才需要 meeko / rdkit / molscrub

查看完整运行日志 →

requirements.txt已按实测环境核对分子对接与虚拟筛选

依赖清单在真实环境里逐条装过。已补上 molscrub 漏声明的 joblib——照原清单安装,跑 scrub.py 会直接 ModuleNotFoundError。

  • conda 装:numpy / scipy / rdkit / vina / meeko / gemmi / openbabel / prody
  • pip 装:molscrub、joblib
  • 实测版本号见 verify/docking/env_versions.txt

查看完整运行日志 →

README.md安装步骤已实测分子对接与虚拟筛选

文档里的建环境、装依赖、准备受体配体、跑批量的命令逐条执行过;其中 pip 安装清单按实测补了 joblib。

  • 按 README 走一遍能装出可用环境(踩坑与修正见日志第 5 节)

查看完整运行日志 →

run_rnaseq.sh已实测跑通生信组学分析

6 个真实双端样本走完 fastp 修剪 → HISAT2 比对 → samtools 排序 → featureCounts 计数 → MultiQC 汇总,EXIT=0,比对率 99.94–99.95%,耗时 3 分 21 秒。

  • 实测环境:hisat2 2.2.3 / samtools 1.24 / featureCounts(subread) 2.1.1 / fastp 1.3.7 / MultiQC 1.35,8 核 15 GB 单机
  • 数据:Biostar 官方练习集 griffith(HBR vs UHR),人 chr22 + ERCC92 子集,6 个样本共 95.1 万对 reads;来源与 md5 见 input_manifest.txt
  • 索引构建 50 秒(63 MB);主流程 3 分 21 秒
  • 修掉 3 处真实缺陷:samtools 排序 -m 4G × 8 线程在 16 GB 机器上直接爆内存;featureCounts --countReadPairs 多线程有竞态,同一份数据连跑 8 次得到 8 个不同结果还偶发段错误(改单线程后确定且更快);路径含全角括号 + C locale 时 grep 把文本判成二进制,导致计数矩阵为空
  • 原始文件备份在 verify/rnaseq/backup/,逐条 diff 见 diff_scripts.md

查看完整运行日志 →

deseq2_de.R已实测跑通生信组学分析

读入计数矩阵做差异表达,1463 个基因过滤后 415 个进入检验,得到 188 个显著差异基因(89 上调 / 99 下调),11 秒跑完,并输出火山图、PCA 与样本距离热图。

  • 实测环境:R 4.4.1 + Bioconductor 3.20,DESeq2 1.46.0 + apeglm 1.28.0
  • 修掉 3 处真实缺陷:计数矩阵列名是绝对路径,与样本表的 sample_id 对不上,DESeq2 直接归零;R 的 comment.char="#" 把 `# sample_id` 表头整行吃掉,报错完全指不到原因;vst() 默认 nsub=1000 在千级基因的小数据上必报错,改成自适应
  • 结果方向合理:免疫相关上调、神经突触相关下调

查看完整运行日志 →

enrichment_plot.R已跑通 GO/GSEA · KEGG 需联网生信组学分析

GO 富集与 GSEA 在真实差异表上跑通并出图(GO 四类共 40 条、GSEA 13 条),耗时 3 分 45 秒;KEGG 因本机访问 rest.kegg.jp 超时未验证成功。

  • 实测环境:clusterProfiler 4.14.0 + enrichplot 1.26.1 + org.Hs.eg.db 3.20.0 + fgsea 1.32.2
  • KEGG 未跑通:本机能建连但 60 秒无数据返回,属本机网络限制,不是脚本问题。脚本已加 tryCatch + 超时,跳过时打印原因,不影响 GO/GSEA 出结果
  • 修掉 1 处真实缺陷:脚本筛了一个不存在的列 all_res$entrez,原样跑 GSEA 段必然失败
  • 小数据下差异基因偏少,GO_BP_down / GO_MF_down 这类空结果属正常,脚本会静默跳过,不是坏了

查看完整运行日志 →

environment.yaml版本未按实测回填生信组学分析

清单里的版本号是撰写时写的,本次实测解析到的普遍更新(fastp 0.23.4→1.3.7、hisat2 2.2.1→2.2.3、samtools 1.20→1.24、subread 2.0.6→2.1.1、multiqc 1.21→1.35、r-base 4.3→4.4.1)。

  • 清单里相当一部分包(trim-galore、bwa、star、salmon、macs3 等)三步脚本用不到,本次未安装、未验证,因此没有回填 pin——回填会变成没验证过的断言
  • 用它建环境没问题,但实际解析到的版本以本机为准;完整差异对照见 verify/rnaseq/env_versions.txt

查看完整运行日志 →

README.md安装步骤已实测生信组学分析

文档里的装环境、取数据、跑三步流程的命令逐条执行过;并按实测踩到的坑补了 3 条常见问题与大陆网络的镜像配置。

  • 补入的实际踩坑:samtools 排序内存估算、featureCounts 多线程结果不可复现、grep 把文本判成二进制
  • Bioconductor 直连约 5 KB/s,换西湖镜像后 10–24 MB/s(清华镜像 403,不可用),配置方法已写进正文

查看完整运行日志 →

怎么理解这些结论

  • 已实测跑通:脚本在真实输入上完整跑过,产出可核查的结果文件。
  • 部分验证:主流程跑通,但某个可选分支(例如需要联网或额外数据的部分)没跑到,页面里会写明。
  • 未标注:尚未复跑,不代表有问题,但请以自己环境为准。

即使标了「已实测跑通」,也请注意:脚本用的是示例数据,换到你的体系时路径、分组名、参考文件版本都要按 README 改。跑不通先看日志末尾的报错,再对照模块页里的「常见坑」。

外部链接复检

页面里指向站外资源的链接,都用 build/check_links.py 逐条真实请求核对过一遍,不是凭印象写上去的。复检时间 2026-09-23,共 171 条,正常响应 158 条。

下面这些站点会拒绝脚本发起的自动请求(403 / 405 / 429),用浏览器正常打开没问题,属于「存在但挡爬虫」:

  • 403 http://www.clustal.org/omega/
  • 403 https://gatk.broadinstitute.org/hc/en-us
  • 403 https://go.drugbank.com/
  • 403 https://sourceforge.net/projects/smina/
  • 403 https://www.biostars.org/
  • 405 https://www.encodeproject.org/

这几条脚本连不上,但已逐条用浏览器复核过:站点本身都能打开,只是对脚本请求响应超时或限流。链接保留,点开正常。(确有失效的——原「生信技能树」旧博客域名当时已解析不了——已从正文换成可用的同类资源。)

  • 000 https://biit.cs.ut.ee/gprofiler/gost
  • 000 https://mafft.cbrc.jp/alignment/software/
  • 000 https://www.10xgenomics.com/datasets
  • 000 https://www.10xgenomics.com/support/software/cell-ranger/downloads
  • 000 https://www.blopig.com/blog/2022/05/mmpb-gbsa-a-quick-start-guide/
  • 000 https://www.kegg.jp/
  • 000 https://www.mdtutorials.com/gmx/

查看全部链接的逐条检出结果 →