Skip to content

如何构建参考基因组数据库 (--database_dir)

作者: SeekGene
时长: 5 分钟
字数: 1.0k 字
更新: 2026-07-20
阅读: 0 次

此流程使用单个参考数据库根目录 (--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.bedbed/chr_nochrM.bed:染色体大小

完成构建后,您的 database_dir 应如下所示:

text
<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 使用的容器内)可以使用以下工具:

  • STAR
  • samtools
  • bismark_genome_preparation (Bismark)
  • bowtie2 (Bismark 需要)
  • awk 和标准的 Unix 实用程序

输入文件

为您的目标物种/版本准备以下两个文件:

  • 基因组 FASTA:genome.fa
  • 基因注释 GTF:genes.gtf

如果您的 FASTA 已经有一个索引文件 (genome.fa.fai),它将被重用;否则它将被生成。

逐步构建

设置以下变量并运行命令。

bash
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 基因组索引

bash
STAR --runThreadN "${star_threads}" \
  --runMode genomeGenerate \
  --genomeDir "${outdir}/star" \
  --genomeFastaFiles "${outdir}/fasta/genome.fa" \
  --sjdbGTFfile "${outdir}/genes/genes.gtf"

第 2 步:确保存在 FASTA 索引 (genome.fa.fai)

bash
if [[ ! -f "${outdir}/fasta/genome.fa.fai" ]]; then
  samtools faidx "${outdir}/fasta/genome.fa"
fi

第 3 步:在 fasta/ 中构建 Bismark 参考基因组

使用 fasta/ 文件夹作为基因组目录运行 Bismark 基因组准备:

bash
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

bash
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 行:

bash
# 仅作为示例:根据您的基因组版本选择 N
head -n 22 "${outdir}/bed/chr_len.bed" > "${outdir}/bed/chr_nochrM.bed"

对于更明确的人类 GRCh38 示例(如果您的染色体名称为 chr1..chr22、chrX、chrY):

bash
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"

验证清单

确认关键文件存在:

bash
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,还请检查:

bash
test -f "${outdir}/bed/chr_nochrM.bed"

在流程中使用

将该目录作为 --database_dir 参数传递:

bash
nextflow run nf/main.nf \
  -c nf/nextflow.new.config \
  --workflow rna_met \
  --database_dir "${outdir}" \
  --samplesheet /path/to/samplesheet.csv \
  --outdir /path/to/results

NOTE

当在 Docker/Kubernetes 上运行时,--database_dir 必须是容器/pod 内存在的路径(例如挂载卷路径)。

0 条评论·0 条回复