1. 生信数据处理的核心框架:从原始数据到可分析数据
1.1 一个容易被低估的环节
很多人一提到生信,第一反应就是跑差异基因、画火山图、做富集分析,觉得那些才是“正事”。但真正干过几个项目的人都知道,生信基础数据处理才是决定整个分析成败的地基。数据没洗干净,后面所有花哨的分析都是在垃圾上盖楼——这个道理我见过太多人付出了惨痛代价才明白。
我自己刚入门那会儿,拿到测序公司的FASTQ文件就直接往比对工具里塞,结果比对率只有百分之六十几,跑出来的差异基因乱七八糟,导师问起来我一脸懵。后来才意识到,问题根本不在比对软件上,而是我从一开始就跳过了质控、过滤这个最关键的前置步骤。这件事给我留下的教训是:生信分析中80%的“结果不对”,根源都在数据处理环节。
这篇文章想做的事情很直接:把生信基础数据处理这一整套流程拆开揉碎,讲清楚每一步为什么要做、怎么做、常见坑在哪里。不管你是刚接触生信的学生,还是转行做数据分析想往生信方向靠的工程师,只要能看懂命令行基本操作,这篇文章就能帮你少走很多弯路。
1.2 数据处理到底处理什么
测序仪下机后,你拿到的原始数据通常是一个或者一组FASTQ文件。FASTQ格式每四条记录对应一条测序读段(read),包含序列标识、碱基序列、分隔符和碱基质量值。这个质量值就是Phred分数,它直接反映了测序仪对这个碱基判定的可信程度。
数据处理最核心的目标可以归纳为三点:把靠谱的序列留下来、把不靠谱的序列清出去、把留下的序列变成能比对的干净序列。听起来简单,但实操中涉及的工具链、参数选择、判断标准,每一样都有讲究。
现代高通量测序单次实验动辄产出几千万到几亿条read,这和海量日志处理、王者荣耀这类游戏里每秒上千万次的实时数据处理在思路上有共通之处——都是流水线式的逐级加工,每一级做特定的事情,最终产出一份“干净”的结果交给下游。但生信数据处理和实时流处理有一个关键区别:生信是offline批处理,对实时性要求不高,但对准确性、可重复性要求极高。同一个数据换台机器跑、换个参数跑,结果必须稳定可复现,否则后面的统计分析全都不成立。
理解了这些背景,下面就可以进入正题,我们把整条数据处理的流水线拆开来看。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 原始数据质控:一切分析的起点
2.1 为什么必须先做质量控制
很多初学者会有一个疑问:测序公司不是已经给过QC报告了吗?为什么我还要自己做一遍质控?
这个想法很天真。测序公司给的QC报告,是拿所有样本混在一起跑的、批量的质量统计,反映的是测序仪和建库环节的整体状况。但你拿到的每个样本个体情况差异可能很大:建库质量差的样本、降解严重的样本、测序中某个cycle出问题的样本,单独拿出来分析时问题会被大大放大。
我自己就碰到过这样的情况:某个项目的RNA-seq数据,公司给的QC报告一切正常,但我拿FastQC逐样本跑了一遍,发现其中一个样本的duplication level高达50%以上,GC含量分布也是畸形的双峰。后来排查发现是这个样本建库时扩增循环数多了几轮,产生了大量重复reads。如果这个样本混在差异分析里不管它,下游结果大概率会出问题。
所以,数据到手的第一件事永远是:逐样本跑FastQC看报告。这一步花不了多少时间,但能帮你省掉后面无数个熬夜排查的夜晚。
2.2 FastQC与MultiQC:质控工具的标准组合
FastQC是几乎所有生信流程里跑不掉的第一个工具,它会对每个FASTQ文件进行十项左右的检查,包括每个位置的碱基质量分布、GC含量分布、序列重复水平、接头污染、k-mer富集等。输出是一个HTML报告,鼠标点开就能看。
需要注意的是,FastQC的十个模块里,有些是“红绿灯”式的判定机制,绿色代表正常、黄色代表警告、红色代表不合格。但红灯不一定意味着数据是不可用的,要结合具体的实验类型来判断。比如RNA-seq数据在“Sequence Duplication Levels”这个模块经常显示异常,因为转录组本身就有大量高丰度转录本的reads天然是重复的;但同样的情况出现在WGS数据里,就说明文库复杂度有问题。
MultiQC则是FastQC的绝佳搭档,它能一键聚合几十个样本的FastQC报告,生成一个总的对比页面条状图,快速定位异常样本。处理多个样本时,我习惯的第一步永远是multiqc .把所有FastQC报告聚合起来,先扫一遍全貌,再决定哪些样本需要重点关注。
bash复制# 常用操作流程
fastqc sample_R1.fastq.gz sample_R2.fastq.gz -t 8 -o fastqc_results/
multiqc fastqc_results/ -o mu
