1. Linux环境下RNA-seq上游分析全流程指南
刚接触生物信息学的同学可能会被RNA-seq分析流程吓到,其实只要掌握正确的方法,在Linux系统上完成从原始数据到表达矩阵的全流程并不复杂。我自己第一次做RNA-seq分析时,花了整整两周时间才跑通整个流程,现在回想起来,很多时间都浪费在不必要的试错上。这篇文章就是把我这些年积累的实战经验整理出来,帮你避开那些常见的坑。
RNA-seq上游分析主要包括数据下载、质量评估、序列修剪、比对和表达量计算五个关键步骤。整个过程就像做菜一样,从采购食材(下载数据)到预处理(质量控制和修剪),再到烹饪(序列比对),最后装盘上桌(表达量计算)。我们使用的工具都是经过社区验证的成熟软件,比如FastQC做质控、Hisat2做比对、featureCounts做计数,保证分析结果的可靠性。
2. 环境配置与软件安装
2.1 Miniconda的安装与配置
在Linux系统上管理生物信息学软件,Miniconda是我的首选工具。它比完整的Anaconda更轻量,特别适合服务器环境。记得我第一次安装时直接用了Anaconda,结果发现80%的预装软件都用不上,还占用了大量磁盘空间。
安装Miniconda只需要几条命令:
wget -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh chmod +x Miniconda3-latest-Linux-x86_64.sh ./Miniconda3-latest-Linux-x86_64.sh安装过程中有个小细节要注意:当询问"Do you wish the installer to initialize Miniconda3 by running conda init?"时,建议选择no,这样可以避免conda自动激活base环境,影响终端打开速度。安装完成后,记得执行conda config --set auto_activate_base false关闭自动激活。
2.2 配置国内镜像源
在国内直接使用conda默认源下载软件可能会慢到让你怀疑人生。我强烈建议立即配置清华镜像源,速度能提升10倍不止:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge conda config --set show_channel_urls yes2.3 创建专用分析环境
为RNA-seq分析创建独立的环境是个好习惯,既能避免软件版本冲突,又能保持系统整洁。我习惯命名为"rna":
conda create -n rna python=3.8 conda activate rna在这个环境中,我们可以一次性安装所有需要的软件:
conda install -y sra-tools fastqc multiqc trim-galore hisat2 subread如果遇到网络问题导致安装失败,可以尝试添加bioconda通道:
conda config --add channels bioconda conda config --add channels conda-forge3. 数据获取与质量控制
3.1 下载原始测序数据
NCBI的SRA数据库是获取公开RNA-seq数据的主要来源。假设我们已经有一个包含SRR编号列表的文件SRR_Acc_List.txt,下载命令如下:
cat SRR_Acc_List.txt | while read id; do prefetch $id & done这里有个实用技巧:在服务器上运行时,可以在命令末尾加上&让下载在后台进行,这样即使断开SSH连接也不会中断下载。下载完成后,需要用fastq-dump将SRA格式转换为fastq:
for id in $(cat SRR_Acc_List.txt); do fastq-dump --split-files $id; done3.2 质量评估与报告解读
FastQC是质量控制的标配工具,使用非常简单:
fastqc *.fastq -t 8 # 使用8个线程加速处理 multiqc . # 整合所有样本的质量报告拿到FastQC报告后,要特别关注以下几个部分:
- Per base sequence quality:测序质量值应大部分在30以上(绿色区域)
- Per sequence quality scores:高质量reads应呈现单峰分布
- Sequence duplication levels:重复序列比例过高可能提示PCR偏差
- Overrepresented sequences:可能需要去除接头污染
我曾经遇到过测序质量突然下降的情况,后来发现是测序仪流动池污染导致的。这种情况就需要更严格的质控过滤。
4. 序列修剪与比对
4.1 原始数据修剪
Trim Galore是我最常用的修剪工具,它集成了Cutadapt和FastQC的功能,能自动识别并去除接头:
trim_galore --paired --quality 20 --length 25 -o ./clean SRR123_1.fastq SRR123_2.fastq参数说明:
--quality 20:去除质量值低于20的碱基--length 25:丢弃修剪后长度小于25bp的reads--paired:用于双端数据,保证两个文件同步处理
4.2 基因组比对
Hisat2是目前最常用的RNA-seq比对工具,在速度和准确性之间取得了很好的平衡。使用前需要先下载并构建索引:
wget ftp://ftp.ensembl.org/pub/current_fasta/homo_sapiens/dna/Homo_sapiens.GRCh38.dna.primary_assembly.fa.gz hisat2-build -p 8 Homo_sapiens.GRCh38.dna.primary_assembly.fa genome_index比对命令示例:
hisat2 -x genome_index -1 SRR123_1_val_1.fq -2 SRR123_2_val_2.fq -S SRR123.sam -p 8对于大型项目,建议将SAM转换为BAM格式以节省空间:
samtools view -@ 8 -bS SRR123.sam > SRR123.bam samtools sort -@ 8 SRR123.bam -o SRR123.sorted.bam5. 表达量计算与矩阵生成
5.1 使用featureCounts计数
featureCounts是Subread软件包的一部分,计数效率非常高。首先需要下载注释文件:
wget ftp://ftp.ensembl.org/pub/current_gtf/homo_sapiens/Homo_sapiens.GRCh38.99.gtf.gz gunzip Homo_sapiens.GRCh38.99.gtf.gz计数命令示例:
featureCounts -T 8 -a Homo_sapiens.GRCh38.99.gtf -o counts.txt -t exon -g gene_id *.sorted.bam5.2 表达矩阵整理
featureCounts的输出需要简单处理才能用于下游分析。在R中可以这样处理:
counts <- read.table("counts.txt", header=T, row.names=1, comment.char="#") counts <- counts[,6:ncol(counts)] # 提取计数列 colnames(counts) <- gsub(".sorted.bam", "", colnames(counts)) write.csv(counts, "expression_matrix.csv")对于大型项目,可以考虑使用tximport包直接处理多个featureCounts输出文件。我曾经处理过一个包含200个样本的项目,合理组织文件结构和批处理脚本可以节省大量时间。