nf-core 流程部署:快速入门

nf-core 流程部署:快速入门

Written By
技能练习生
技能练习生

欢迎开始你的 nf-core 之旅!本指南将在 30 分钟内指导你完成第一次 RNA-seq 分析。

你将学到什么

本教程将带你完成:

  1. 环境检查和配置
  2. 获取测试数据
  3. 运行 nf-core RNA-seq 流程
  4. 查看和解读结果

前置准备

检查你的系统

你需要:

  • 操作系统:macOS、Linux 或 Windows (WSL)
  • 内存:至少 8 GB(推荐 16 GB)
  • 磁盘空间:至少 10 GB 可用空间
  • 互联网连接:用于下载软件和数据

检查已安装的软件

打开终端,运行以下命令:

# 检查 Docker(必需)
docker --version

# 检查 Nextflow(稍后安装)
nextflow -version

# 检查 Java(Nextflow 需要)
java -version

如果 Docker 没有安装,请访问 https://docs.docker.com/get-docker/ 下载安装。

步骤 1:安装 Nextflow

Nextflow 是运行 nf-core 流程的框架。

# 下载 Nextflow
curl -s https://get.nextflow.io | bash

# 移动到可执行路径
sudo mv nextflow /usr/local/bin/

# 验证安装
nextflow -version

你应该看到类似这样的输出:

nextflow version 23.10.1.5924

步骤 2:运行测试流程

在处理真实数据之前,我们先运行一个测试来确保环境配置正确。

# 创建工作目录
mkdir -p nfcore_tutorial
cd nfcore_tutorial

# 运行 RNA-seq 测试流程
nextflow run nf-core/rnaseq \
  -profile test,docker \
  --outdir test_results

这个命令会做什么:

  • 下载 nf-core/rnaseq 流程
  • 使用 Docker 容器运行
  • 使用小型测试数据集
  • 将结果保存到 test_results/ 目录

预期时间:5-15 分钟(取决于网络速度)

成功标志

Pipeline completed successfully

验证测试结果

# 检查输出
ls test_results/multiqc/multiqc_report.html

如果文件存在,说明测试成功!

步骤 3:准备你的数据

现在我们准备分析真实数据。你有两个选择:

选项 A:使用你自己的数据

如果你有 FASTQ 格式的测序数据:

# 确保你的数据组织如下:
data/
├── sample1_R1.fastq.gz
├── sample1_R2.fastq.gz
├── sample2_R1.fastq.gz
└── sample2_R2.fastq.gz

选项 B:下载公共数据(推荐新手)

我们将从 GEO 数据库下载一个小的 RNA-seq 数据集:

# 创建数据目录
mkdir -p data

# 使用 SRA 工具下载数据
# 注意:这是一个示例,你需要先安装 SRA toolkit
# 或使用工具提供的辅助脚本

python scripts/sra_geo_fetch.py download GSE110004 \
  -o ./data \
  --max-samples 2

步骤 4:创建样本信息表

nf-core 需要一个 CSV 文件来描述你的样本。

创建 samplesheet.csv

cat > samplesheet.csv << EOF
sample,fastq_1,fastq_2,strandedness
control_1,$PWD/data/control_1_R1.fastq.gz,$PWD/data/control_1_R2.fastq.gz,auto
treatment_1,$PWD/data/treatment_1_R1.fastq.gz,$PWD/data/treatment_1_R2.fastq.gz,auto
EOF

字段说明

  • sample:样本名称
  • fastq_1:R1(read 1)文件的绝对路径
  • fastq_2:R2(read 2)文件的绝对路径
  • strandedness:链特异性(auto = 自动检测)

验证样本信息表

# 检查格式
head samplesheet.csv

# 检查文件是否存在
cut -d',' -f2 samplesheet.csv | xargs ls -lh
cut -d',' -f3 samplesheet.csv | xargs ls -lh

步骤 5:选择参考基因组

RNA-seq 分析需要参考基因组。

常用基因组

物种基因组 ID描述
人类GRCh38最新人类参考基因组
人类GRCh37旧版(hg19)
小鼠GRCm39小鼠参考基因组

查看可用基因组

python scripts/manage_genomes.py list

下载基因组(首次使用)

# 下载人类 GRCh38 基因组
python scripts/manage_genomes.py download GRCh38

注意:基因组文件较大(~3 GB),下载可能需要时间。

步骤 6:运行完整分析

现在一切准备就绪,运行完整的 RNA-seq 分析!

nextflow run nf-core/rnaseq \
  -r 3.22.2 \
  -profile docker \
  --input samplesheet.csv \
  --genome GRCh38 \
  --outdir results \
  -resume

参数说明

  • -r 3.22.2:固定流程版本
  • -profile docker:使用 Docker 容器
  • --input:样本信息表
  • --genome:参考基因组
  • --outdir:输出目录
  • -resume:如果中断,可以从断点继续

预期时间:1-4 小时(取决于样本数量和大小)

监控进度

# 在另一个终端查看日志
tail -f .nextflow.log

# 或查看 MultiQC 报告(实时更新)
# 在浏览器中打开:results/multiqc/multiqc_report.html

步骤 7:查看和解读结果

分析完成后,查看结果目录:

ls -lh results/

关键输出文件

1. MultiQC 报告

results/multiqc/multiqc_report.html

用途:整合所有样本的质量控制和分析结果 打开方式:在浏览器中打开

2. 基因计数矩阵

results/star_salmon/salmon.merged.gene_counts.tsv

用途:每个基因在每个样本中的表达量(原始计数) 格式:TSV 文件,可在 Excel 中打开

3. TPM 表达矩阵

results/star_salmon/salmon.merged.gene_tpm.tsv

用途:归一化的表达值(TPM) 用途:用于样本间比较和可视化

查看 MultiQC 报告

MultiQC 是一个交互式的 HTML 报告,包含:

质量控制

  • 测序质量分布
  • GC 含量
  • 序列长度分布
  • 过滤和剪接统计

比对统计

  • 比对率
  • 基因覆盖度
  • 插入片段大小

表达分析

  • 样本间相关性
  • 主成分分析(PCA)
  • 样本聚类

步骤 8:下一步分析

nf-core RNA-seq 流程提供了定量的基因表达数据。下一步分析可能包括:

差异表达分析

虽然 nf-core 不包含差异表达分析,但你可以使用其他工具:

# 使用 DESeq2(R 包)
library(DESeq2)

# 读取基因计数
counts <- read.table("results/star_salmon/salmon.merged.gene_counts.tsv",
                     header=TRUE, row.names=1)

# 创建样本信息
coldata <- data.frame(
  condition = c("control", "control", "treatment", "treatment")
)

# 运行 DESeq2
dds <- DESeqDataSetFromMatrix(countData=counts,
                              colData=coldata,
                              design=~condition)
dds <- DESeq(dds)
results <- results(dds)

可视化

# 使用 Python
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 读取 TPM 数据
tpm = pd.read_csv("results/star_salmon/salmon.merged.gene_tpm.tsv",
                  sep='\t', index_col=0)

# 绘制热图
sns.clustermap(tpm.corr())
plt.savefig('sample_correlation.png')

常见问题

Q1: 测试流程失败

症状:测试流程报错

检查

# 检查 Docker 是否运行
docker ps

# 查看详细错误
cat .nextflow.log

Q2: 内存不足

症状:流程被系统杀死

解决

# 限制内存使用
nextflow run nf-core/rnaseq \
  -profile docker \
  --input samplesheet.csv \
  --genome GRCh38 \
  --max_memory '8.GB'

Q3: 分析时间太长

解决

  • 使用更少的样本
  • 使用 -resume 从断点继续
  • 考虑使用 HPC 或云服务

恭喜你!

你已经完成了第一次 RNA-seq 分析!

现在你可以:

  1. 查看 MultiQC 报告了解数据质量
  2. 使用基因计数矩阵进行差异表达分析
  3. 尝试不同的参数和选项

下一步学习

  • 阅读工作流程清单,了解完整的步骤
  • 查看应用场景,学习真实案例
  • 了解工作原理,理解 Nextflow 的机制

继续探索吧!