生信方法入门:把 RNA-seq 学习项目整理成可以复查的目录

生信方法入门:把 RNA-seq 学习项目整理成可以复查的目录
Perry生信分析中的困扰不总是“软件不会用”。几周后重新打开项目,可能已经记不清哪张表是输入、哪次运行修改了参数、某个样本为什么被排除。目录结构不能替代方法学,但能为查清这些问题提供基础。
这篇只搭建一个教学项目骨架,用六个虚构样本和三行人工计数练习元数据检查与日志记录。不下载真实 FASTQ,不调用比对或差异分析软件,不生成任何可用于解释真实生物学问题的结论。
1. 将来源、决定和结果分开
建议把原始输入、样本信息、配置、脚本、结果与日志分别保存。目录名字本身没有统一标准,关键是每一层职责清楚,其他人可以看懂。
1 | project/ |
不要把未处理文件和经过过滤的文件都叫作 final.csv。也不要一边改输入,一边重跑同一个结果目录,却没有记录输入何时发生变化。
元数据是输入的一部分,不是可有可无的备注。至少需要稳定的样本 ID、实验条件、个体或生物学重复关系;视实验设计还需要批次、组织、采样时间、建库协议及其他协变量。真实患者信息不应直接写进公开仓库,匿名化标识也需要按适用的数据管理要求维护映射。
2. 完整示例:创建全新的教学项目
代码只使用 Python 标准库。保存为 create_learning_project.py,执行 python create_learning_project.py。程序使用 tempfile 创建新目录,所有写入都位于该目录;结束后保留文件供检查,不自动删除或访问现有项目。
1 | import csv |
assert 在这里用于小练习的内部检查。运行时不要使用 Python 的 -O 优化选项,否则这些检查会被移除;正式流水线可以改成显式条件与异常,让校验成为不可跳过的执行步骤。
3. 核对几个真正有意义的结果
程序应给出六个样本、三个教学基因,列和依次为 C1=16、C2=19、C3=19、T1=28、T2=31、T3=31。它们只是人工整数的算术结果,不是测序深度质量判断,也不是差异表达证据。
打开 metadata/samples.tsv 与 inputs/toy_counts.tsv,确认样本顺序一致。真实工作中,一张表按照字母排序,另一张保持原始顺序,如果直接按位置拼接,可能悄悄把标签分配给错误样本。应按样本 ID 对齐并检查,不要只比较列数。
还要打开 logs/check.json,检查状态是否为 PASS;打开 config/project.json,确认它明确说明“教学计数、只求列和”。这能避免后来的人将演示产物误认为完成了真实分析。
SHA-256 用于检查记录的文件内容是否发生变化。它不证明数据来源可信,也不证明分析正确;如果文件变化,就需要说明为什么变化,并更新对应运行记录,而不是悄悄重写旧清单。算法接口见 Python 的 hashlib 官方文档。
4. 目录准备好了,还缺哪些真实分析信息
正式 RNA-seq 流程通常还需要数据来源与授权、读长与单端/双端信息、链特异性、质控规则、参考基因组及注释的精确版本、软件版本、线程和参数,以及计数或定量的具体方法。把这些记录在配置和环境文件中,比把软件名字写进 README 更具体。
原始整数计数与 TPM 不是可以任意互换的输入。本篇没有进行差异检验;如继续学习 DESeq2,需要按它要求的计数输入和实验设计构造对象,而不是把 TPM、VST 或 rlog 值当作原始计数交进去。基于转录本定量结果的导入也有专门流程,不能靠四舍五入 TPM 代替。详见 DESeq2 官方教程。
本例的六个 subject_id 都是不同的虚构个体。如果真实数据来自配对设计、重复时间点或复杂批次,样本表与统计设计都必须体现这些关系。复制一个模板不会自动得到正确的设计矩阵。
5. 环境文件和日志应该怎样补全
示例只记录了 Python 与操作系统,不包含真实生信软件清单。以后引入依赖时,可以在独立环境中安装并记录实际版本;Python 的环境隔离可参考 venv 官方文档。虚拟环境目录本身通常不是需要直接复制给其他人的交付物,版本、安装说明和复建方法更重要。
如果使用 R,应保留实际会话的 sessionInfo();如果使用命令行工具,要记录完整命令、工作目录、起止时间、退出码,以及标准输出和错误日志。容器或锁定依赖有助于减少环境差异,但它们不能代替参考数据版本和分析参数。
将本次运行的脚本副本保存进 workflow/,并在自己的说明中记录执行入口。上面的校验清单只包含三个教学输入文件,没有自动跟踪后来添加的脚本;添加脚本或参考文件后,应扩展清单,而不是误以为它已经覆盖整个项目。
6. 常见误区与下一步练习
常见误区包括:结果表只有截图没有原始表;同一个样本在不同文件里采用不同名字;把技术重复当成独立生物学重复;只记“用了最新参考基因组”;把实际失败的运行与成功结果混进同一个日志目录。
可复查还需要解释性记录:排除某个样本的原因是什么?为什么改参数?新的运行相较旧运行改变了哪些输入?应写出判断依据,不只写“重新运行后正常”。
先做一个低风险练习:只在新教学目录里,把计数表的 T1 与 T2 两列交换,再执行下面的只读校验,确认样本顺序检查能够发现变化。再把一个样本 ID 改成重复值,观察唯一性检查是否触发。不要在真实输入上做这样的破坏性测试。
将检查保存为 check_saved_project.py,以创建脚本打印的完整目录为唯一参数运行。不要为了检查改过的文件而重跑创建脚本:它会生成另一个新目录,而不是读取你编辑的那一个。
1 | import csv |
最后给项目写一份很短的 README:这是教学数据还是正式数据、如何重新生成结果、成功时应检查哪些文件、哪些步骤尚未运行。这四句话能够阻止很多误解,也为之后接入真实 RNA-seq 工作流保留清晰边界。


