如何构建参考基因组数据库 (--database_dir)
此流程使用单个参考数据库根目录 (--database_dir) 来定位 RNA + 甲基化分析所需的所有基因组资源(STAR 索引、基因组 FASTA、GTF、Bismark 参考基因组和染色体大小 BED 文件)。
本文档将该过程概括为一个可重复使用的教程。
预期的目录结构
流程根据以下约定从 --database_dir 派生路径:
star/:STAR 基因组索引fasta/genome.fa:基因组 FASTA(及其索引fasta/genome.fa.fai)genes/genes.gtf:基因注释fasta/:也用作 Bismark 基因组文件夹(在运行bismark_genome_preparation之后)bed/chr_len.bed和bed/chr_nochrM.bed:染色体大小
完成构建后,您的 database_dir 应如下所示:
<database_dir>/
├── bed/
│ ├── chr_len.bed
│ └── chr_nochrM.bed (可选但推荐)
├── fasta/
│ ├── genome.fa
│ ├── genome.fa.fai (由 samtools faidx 创建)
│ └── Bisulfite_Genome/ (由 bismark_genome_preparation 创建)
├── genes/
│ └── genes.gtf
└── star/ (由 STAR genomeGenerate 创建)准备工作
请确保您的环境中(在 PATH 中或在 Nextflow 使用的容器内)可以使用以下工具:
STARsamtoolsbismark_genome_preparation(Bismark)bowtie2(Bismark 需要)awk和标准的 Unix 实用程序
输入文件
为您的目标物种/版本准备以下两个文件:
- 基因组 FASTA:
genome.fa - 基因注释 GTF:
genes.gtf
如果您的 FASTA 已经有一个索引文件 (genome.fa.fai),它将被重用;否则它将被生成。
逐步构建
设置以下变量并运行命令。
set -euo pipefail
# 1) 选择一个输出目录 (这将成为 --database_dir)
outdir="/path/to/database_dir"
# 2) 提供源 FASTA 和 GTF 文件
fasta="/path/to/source/genome.fa"
gtf="/path/to/source/genes.gtf"
# 3) 线程数 (根据您的机器进行调整)
star_threads=15
bismark_threads=16
mkdir -p "${outdir}/fasta" "${outdir}/genes" "${outdir}/bed" "${outdir}/star"
# 将 FASTA 和 GTF 复制到预期的位置
cp "${fasta}" "${outdir}/fasta/genome.fa"
cp "${gtf}" "${outdir}/genes/genes.gtf"
# 如果源 FASTA 旁边存在 FASTA 索引,则重用它
if [[ -f "${fasta}.fai" ]]; then
cp "${fasta}.fai" "${outdir}/fasta/genome.fa.fai"
fi第 1 步:构建 STAR 基因组索引
STAR --runThreadN "${star_threads}" \
--runMode genomeGenerate \
--genomeDir "${outdir}/star" \
--genomeFastaFiles "${outdir}/fasta/genome.fa" \
--sjdbGTFfile "${outdir}/genes/genes.gtf"第 2 步:确保存在 FASTA 索引 (genome.fa.fai)
if [[ ! -f "${outdir}/fasta/genome.fa.fai" ]]; then
samtools faidx "${outdir}/fasta/genome.fa"
fi第 3 步:在 fasta/ 中构建 Bismark 参考基因组
使用 fasta/ 文件夹作为基因组目录运行 Bismark 基因组准备:
cd "${outdir}"
bismark_genome_preparation --parallel "${bismark_threads}" ./fasta这将在 ${outdir}/fasta/ 下创建 Bismark 基因组文件(例如 Bisulfite_Genome/)。
第 4 步:创建染色体大小 BED 文件
流程使用:
bed/chr_len.bed作为完整的染色体大小列表bed/chr_nochrM.bed(如果存在)作为首选列表,该列表排除了线粒体和其他不需要的序列
从 FASTA 索引创建 chr_len.bed:
awk -F '\t' '{print $1"\t"$2}' "${outdir}/fasta/genome.fa.fai" > "${outdir}/bed/chr_len.bed"然后通过选择您要保留的染色体来创建 chr_nochrM.bed。
NOTE
对于人类,通常的选择是 chr1–chr22 加上 chrX/chrY;对于其他物种,请选择等效的主要染色体。
示例(简单,但取决于物种):保留 chr_len.bed 的前 N 行:
# 仅作为示例:根据您的基因组版本选择 N
head -n 22 "${outdir}/bed/chr_len.bed" > "${outdir}/bed/chr_nochrM.bed"对于更明确的人类 GRCh38 示例(如果您的染色体名称为 chr1..chr22、chrX、chrY):
awk '$1 ~ /^chr([1-9]$|1[0-9]$|2[0-2]$|X$|Y$)/ {print $0}' \
"${outdir}/bed/chr_len.bed" > "${outdir}/bed/chr_nochrM.bed"验证清单
确认关键文件存在:
test -d "${outdir}/star"
test -f "${outdir}/fasta/genome.fa"
test -f "${outdir}/fasta/genome.fa.fai"
test -d "${outdir}/fasta/Bisulfite_Genome" || true
test -f "${outdir}/genes/genes.gtf"
test -f "${outdir}/bed/chr_len.bed"如果您创建了 chr_nochrM.bed,还请检查:
test -f "${outdir}/bed/chr_nochrM.bed"在流程中使用
将该目录作为 --database_dir 参数传递:
nextflow run nf/main.nf \
-c nf/nextflow.new.config \
--workflow rna_met \
--database_dir "${outdir}" \
--samplesheet /path/to/samplesheet.csv \
--outdir /path/to/resultsNOTE
当在 Docker/Kubernetes 上运行时,--database_dir 必须是容器/pod 内存在的路径(例如挂载卷路径)。
