跳转至

微生物数据库(Microbial Databases)

1. 一句话概述

常用公共数据库是生信分析的基础设施,掌握其用途和检索方法是分析工程师的基本功。


2. 核心知识点

2.1 常用数据库总览

数据库 全称 数据类型 主要用途 URL 检索技巧
GenBank GenBank (NCBI) 核酸序列 提交/检索已发表的核酸序列 https://www.ncbi.nlm.nih.gov/genbank/ 用Accession号精确检索,如MN908947
RefSeq NCBI Reference Sequence 参考序列(基因组、转录本、蛋白质) 获取非冗余、有注释的参考序列 https://www.ncbi.nlm.nih.gov/refseq/ 前缀区分类型:NC_(染色体)、NM_(mRNA)、NP_(蛋白质)
SRA Sequence Read Archive 原始测序数据(FASTQ) 下载已发表项目的原始测序reads https://www.ncbi.nlm.nih.gov/sra 用BioProject号(PRJNA...)批量检索
GEO Gene Expression Omnibus 表达谱、芯片、高通量数据 下载基因表达数据和实验设计信息 https://www.ncbi.nlm.nih.gov/geo/ GSE=系列,GSM=样本,GPL=平台
PubMed PubMed 文献摘要 检索生物医学文献 https://pubmed.ncbi.nlm.nih.gov/ 用MeSH主题词提高检索精度
Taxonomy NCBI Taxonomy 物种分类信息 查询物种分类地位和TaxID https://www.ncbi.nlm.nih.gov/taxonomy TaxID是唯一标识,如9606=人类
SILVA SILVA rRNA Database 16S/18S/23S rRNA参考序列 16S/18S扩增子分析的参考比对数据库 https://www.arb-silva.de/ 版本号如138.1,SSU=小亚基,LSU=大亚基
GTDB Genome Taxonomy Database 基因组分类学 基于基因组的细菌/古菌分类注释 https://gtdb.ecogenomic.org/ 与NCBI分类有大量差异,注意版本对应
IMG/M Integrated Microbial Genomes & Microbiomes 微生物基因组和宏基因组 比较基因组学、功能注释 https://img.jgi.doe.gov/ JGI维护,可按生态环境检索
HMP Human Microbiome Project 人体微生物组数据 人体不同部位微生物组参考数据 https://hmpdacc.org/ 分HMP1(健康人)和iHMP(疾病关联)
MGnify MGnify (EBI) 宏基因组分析结果 在线宏基因组分析,下载注释结果 https://www.ebi.ac.uk/metagenomics/ 可直接提交原始数据进行自动分析
UniProt Universal Protein Resource 蛋白质序列和功能注释 蛋白质功能查询、序列下载 https://www.uniprot.org/ Swiss-Prot=人工审核,TrEMBL=自动注释
ENA European Nucleotide Archive 核酸序列和测序数据 欧洲的序列数据存储(与SRA同步) https://www.ebi.ac.uk/ena/ 与SRA互为镜像,有时下载更快
DDBJ DNA Data Bank of Japan 核酸序列和测序数据 日本的序列数据存储(与SRA同步) https://www.ddbj.nig.ac.jp/ 三大数据库(NCBI/ENA/DDBJ)数据互通

2.2 NCBI子数据库详解

SRA(Sequence Read Archive)—— 重点掌握

SRA是全球最大的高通量测序原始数据仓库。

核心概念层级关系:

BioProject (PRJNA...)        # 项目层级,一个课题
  └── BioSample (SAMN...)    # 样本层级,一个生物样本
       └── Experiment (SRX...)  # 实验层级,一次建库
            └── Run (SRR...)    # 运行层级,一次上机(你要下载的)

编号前缀含义:

前缀 含义 示例
SRR Sequence Read Run(测序运行) SRR12345678
SRX Sequence Read Experiment(实验) SRX1234567
SRS Sequence Read Sample(样本) SRS1234567
SRP Sequence Read Project(项目) SRP123456
PRJNA BioProject(NCBI项目号) PRJNA12345
SAMN BioSample(NCBI样本号) SAMN12345

检索技巧: - 从文献的Data Availability部分找到BioProject号 - 在SRA Run Selector中筛选需要的样本 - 使用Entrez Direct命令行批量获取Run信息

GEO(Gene Expression Omnibus)—— 重点掌握

GEO存储基因表达和表观基因组学数据。

编号体系:

编号 含义 示例
GSE GEO Series(系列,一个完整研究) GSE12345
GSM GEO Sample(单个样本) GSM123456
GPL GEO Platform(平台/芯片型号) GPL570
GDS GEO Dataset(经过标准化的数据集) GDS1234

与SRA的关系: - GEO侧重处理后的表达矩阵和实验设计 - SRA侧重原始测序数据(FASTQ) - 一个GEO Series往往关联一个SRA BioProject - GEO的补充文件(Supplementary Files)常包含处理好的count矩阵


2.3 SILVA数据库详解

版本号含义: - 主版本号(如138):大规模更新,分类树重建 - 子版本号(如138.1):小修,修Bug - 当前常用版本:SILVA 138.1(2020年发布,仍广泛使用)

数据库分类:

缩写 全称 用途
SSURef Small Subunit Reference 16S/18S 参考序列(全长,高质量)
SSURef_NR99 SSU Reference Non-Redundant 99% 去冗余99%的参考序列(常用)
SSUParc SSU Parc 所有SSU序列(包括低质量)
LSURef Large Subunit Reference 23S/28S 参考序列

与QIIME2配合: - QIIME2有预格式化的SILVA数据库 - 需要做引物区域提取(primer region extraction)匹配你的测序区域(如V3-V4)


2.4 GTDB数据库详解

与NCBI分类学的核心差异:

对比项 NCBI Taxonomy GTDB
分类依据 表型+系统发育(混合) 基因组系统发育(纯基因组)
更新频率 持续更新 每年1-2次大版本
分类一致性 部分类群多系(polyphyletic) 强制单系(monophyletic)
命名 遵循传统命名 大量重新命名
覆盖范围 所有已知物种 仅有基因组的细菌和古菌
工具 Entrez, taxonkit GTDB-Tk

GTDB重命名示例:

NCBI分类 GTDB分类 说明
Clostridium difficile Clostridioides difficile 拆分Clostridium属
Firmicutes门 拆分为多个门 如Bacillota, Firmicutes_A等
Lactobacillus 拆分为25个属 Lactiplantibacillus

2.5 UniProt详解

子库 全称 特点 序列数量级
Swiss-Prot Swiss-Prot 人工审核(reviewed),高质量注释 ~57万条
TrEMBL Translated EMBL 自动注释(unreviewed),数量大 ~2.5亿条

选择建议: - 功能注释优先用Swiss-Prot(准确) - 序列比对/搜索可用UniRef90/UniRef50(聚类去冗余) - 宏基因组功能注释常用UniRef90


3. 实战命令

3.1 SRA数据下载

# ============================================================
# SRA数据下载流程
# 工具:sra-tools(通过conda安装)
# ============================================================

# 安装sra-tools
conda install -c bioconda sra-tools  # 安装SRA工具包

# ---------- 方法一:prefetch + fasterq-dump(推荐) ----------

# 第一步:prefetch 预下载SRA文件到本地缓存
prefetch SRR12345678                  # 下载单个Run(会缓存到~/ncbi/sra/)
prefetch --max-size 50G SRR12345678   # 设置最大文件大小为50G
prefetch --option-file srr_list.txt   # 从文件批量下载(一行一个SRR号)

# 第二步:fasterq-dump 将SRA转换为FASTQ
fasterq-dump SRR12345678 \            # 将SRA转为FASTQ
  --split-3 \                         # 双端分成两个文件 + 未配对的单独文件
  --threads 8 \                       # 使用8个线程加速
  --outdir ./fastq/                   # 输出目录

# 第三步:压缩FASTQ节省空间
gzip ./fastq/SRR12345678_1.fastq      # 压缩正向reads
gzip ./fastq/SRR12345678_2.fastq      # 压缩反向reads

# ---------- 方法二:批量下载脚本 ----------

#!/bin/bash
# 批量下载SRA数据
# 用法: bash download_sra.sh srr_list.txt

set -euo pipefail                     # 严格模式:出错即停

SRR_LIST=$1                           # 第一个参数:SRR编号列表文件
OUTDIR="./fastq"                      # 输出目录
THREADS=8                             # 线程数

mkdir -p ${OUTDIR}                    # 创建输出目录

while read SRR; do                    # 逐行读取SRR编号
    echo "[$(date)] 开始下载: ${SRR}"

    # 检查是否已下载(断点续跑)
    if [[ -f ${OUTDIR}/${SRR}_1.fastq.gz ]]; then
        echo "  ${SRR} 已存在,跳过"
        continue                      # 跳过已下载的
    fi

    prefetch ${SRR} --max-size 50G    # 下载SRA文件
    fasterq-dump ${SRR} \
        --split-3 \
        --threads ${THREADS} \
        --outdir ${OUTDIR}            # 转换为FASTQ

    gzip ${OUTDIR}/${SRR}_1.fastq     # 压缩
    gzip ${OUTDIR}/${SRR}_2.fastq

    echo "[$(date)] 完成: ${SRR}"
done < ${SRR_LIST}                    # 从列表文件读取

echo "全部下载完成!"

3.2 GEO数据检索与下载

# ============================================================
# GEO数据下载
# ============================================================

# ---------- 方法一:直接从GEO FTP下载处理好的数据 ----------

# 下载GSE系列的补充文件(通常包含表达矩阵)
wget -r -np -nd \
  "https://ftp.ncbi.nlm.nih.gov/geo/series/GSE123nnn/GSE123456/suppl/" \
  -P ./geo_data/                      # 下载到指定目录
# -r: 递归下载
# -np: 不上溯父目录
# -nd: 不创建子目录

# ---------- 方法二:使用GEOquery(R语言) ----------
# 如果面试问到,可以提一下R语言的方法:
# library(GEOquery)
# gse <- getGEO("GSE123456")

# ---------- 方法三:从SRA下载关联的原始数据 ----------

# 步骤1:在GEO页面找到关联的SRA BioProject号
# 步骤2:到SRA Run Selector选择需要的样本
# 步骤3:下载SRR_Acc_List.txt
# 步骤4:用前面的批量下载脚本处理

3.3 NCBI Datasets工具使用

# ============================================================
# NCBI Datasets —— 新一代命令行工具(推荐)
# 替代传统的Entrez Direct (esearch/efetch)
# ============================================================

# 安装
conda install -c conda-forge ncbi-datasets-cli  # 安装NCBI datasets CLI

# ---------- 下载参考基因组 ----------

# 按物种名下载基因组
datasets download genome taxon "Escherichia coli" \
  --reference \                        # 只下载参考基因组
  --include genome,gff3,protein \      # 包含基因组序列、注释、蛋白质
  --filename ecoli_genome.zip          # 输出文件名

unzip ecoli_genome.zip -d ecoli_data/  # 解压

# 按Accession号下载
datasets download genome accession GCF_000005845.2 \
  --include genome,gff3               # 下载大肠杆菌K-12参考基因组

# ---------- 查看数据集信息 ----------

datasets summary genome taxon "Staphylococcus aureus" \
  --reference \                        # 查看金黄色葡萄球菌参考基因组摘要信息
  --as-json-lines | \                  # JSON格式输出
  dataformat tsv genome \              # 转为表格
  --fields organism-name,accession,assminfo-level  # 选择显示的字段

# ---------- 下载基因信息 ----------

datasets download gene gene-id 947  \  # 按Gene ID下载
  --include gene,protein               # 包含基因和蛋白质序列

3.4 SILVA数据库下载与格式转换

# ============================================================
# SILVA数据库下载与使用
# ============================================================

# ---------- 直接下载SILVA ----------

# 下载SILVA 138.1 SSU NR99(16S分析最常用)
wget https://www.arb-silva.de/fileadmin/silva_databases/release_138.1/Exports/SILVA_138.1_SSURef_NR99_tax_silva.fasta.gz

# 解压
gunzip SILVA_138.1_SSURef_NR99_tax_silva.fasta.gz

# ---------- 为QIIME2准备SILVA数据库 ----------

# 方法一:使用QIIME2官方预构建的数据库(推荐)
# 从 https://docs.qiime2.org/2024.5/data-resources/ 下载
wget https://data.qiime2.org/2024.5/common/silva-138-99-seqs.qza      # 序列
wget https://data.qiime2.org/2024.5/common/silva-138-99-tax.qza       # 分类

# 方法二:提取特定引物区域(如V3-V4: 341F/806R)
qiime feature-classifier extract-reads \
  --i-sequences silva-138-99-seqs.qza \       # 输入:SILVA全长序列
  --p-f-primer CCTACGGGNGGCWGCAG \            # 正向引物 341F
  --p-r-primer GACTACHVGGGTATCTAATCC \        # 反向引物 806R
  --p-min-length 200 \                        # 最短片段长度
  --p-max-length 500 \                        # 最长片段长度
  --o-reads silva-138-99-v34-seqs.qza         # 输出:V3-V4区域序列

# 训练分类器(用于后续的物种注释)
qiime feature-classifier fit-classifier-naive-bayes \
  --i-reference-reads silva-138-99-v34-seqs.qza \   # 参考序列
  --i-reference-taxonomy silva-138-99-tax.qza \      # 参考分类
  --o-classifier silva-138-99-v34-classifier.qza     # 输出:训练好的分类器

3.5 GTDB-Tk分类注释

# ============================================================
# GTDB-Tk:基于GTDB的基因组分类注释
# 用于MAGs(宏基因组组装基因组)的物种注释
# ============================================================

# 安装GTDB-Tk
conda create -n gtdbtk -c conda-forge -c bioconda gtdbtk  # 创建独立环境
conda activate gtdbtk                                       # 激活环境

# 下载GTDB参考数据(约85GB,很大!)
download-db.sh                         # GTDB-Tk自带的下载脚本

# 或手动下载:
wget https://data.gtdb.ecogenomic.org/releases/latest/auxillary_files/gtdbtk_data.tar.gz
tar xzf gtdbtk_data.tar.gz            # 解压
export GTDBTK_DATA_PATH=/path/to/gtdbtk_data  # 设置数据库路径

# ---------- 运行GTDB-Tk ----------

# 对MAGs进行分类注释
gtdbtk classify_wf \
  --genome_dir ./mags/ \               # 输入:MAG基因组文件目录(.fasta)
  --out_dir ./gtdbtk_output/ \         # 输出目录
  --cpus 16 \                          # CPU核数
  --extension fasta                    # 基因组文件后缀名

# 输出文件说明:
# gtdbtk.bac120.summary.tsv  —— 细菌分类结果
# gtdbtk.ar53.summary.tsv    —— 古菌分类结果
# 关键列:classification(完整分类路径)、fastani_reference(最近参考基因组)

# 查看分类结果
head -n 5 gtdbtk_output/gtdbtk.bac120.summary.tsv | cut -f1,2
# 输出示例:
# genome_id    classification
# bin.1        d__Bacteria;p__Firmicutes_A;c__Clostridia;o__...

4. 面试常问点

★ SRA和GEO的区别?

参考答案:

SRA(Sequence Read Archive)存储的是原始测序数据,也就是FASTQ格式的reads,属于底层数据。GEO(Gene Expression Omnibus)存储的是处理后的数据,比如基因表达矩阵、实验设计信息和分析结果。

它们的关系是:一个GEO Series(GSE编号)通常关联一个SRA BioProject(PRJNA编号)。如果你需要从头分析(比如做宏基因组分析),就去SRA下载原始FASTQ;如果只需要看别人处理好的表达矩阵,直接从GEO下载补充文件就行。

在我的实习中,做宏基因组分析时需要下载原始数据进行质控和组装,所以主要用SRA;做16S多样性分析时,有时也会从GEO下载已经处理好的OTU表进行验证。


★ 如何从SRA下载数据?

参考答案:

推荐用 sra-toolsprefetch + fasterq-dump 两步法。

第一步,用 prefetch 先把 SRA 文件下载到本地缓存,好处是支持断点续传,网络不稳定也不怕。第二步,用 fasterq-dump 将 SRA 文件转换为 FASTQ 格式,加上 --split-3 参数自动分成双端文件。最后别忘了 gzip 压缩节省磁盘空间。

如果要批量下载,我会写一个 shell 脚本,读取 SRR 编号列表,加上断点续跑的判断逻辑(检查输出文件是否已存在),这样即使中断了也能继续。

另外,现在 NCBI 也推荐用 datasets 命令行工具,不过那个主要用于下载参考基因组,下载原始测序数据还是 sra-tools 更好用。


★ SILVA和GTDB的区别?什么时候用哪个?

参考答案:

SILVA 是一个 rRNA 参考序列数据库,主要用于 16S/18S 扩增子分析的物种注释。它提供的是 rRNA 基因序列和对应的分类信息。

GTDB 是一个基因组分类学数据库,基于全基因组系统发育树来定义物种分类,主要用于 MAGs(宏基因组组装基因组)的分类注释。

使用场景: - 做 16S 扩增子分析(如 QIIME2 流程)时用 SILVA - 做 宏基因组 binning 后给 MAGs 注释分类时用 GTDB(通过 GTDB-Tk 工具)

需要注意的是,GTDB 对很多传统分类做了大幅调整(比如把 Firmicutes 门拆成了好几个门),所以同一个菌在两个数据库中分类名可能不同。写论文时需要说明用的是哪个分类体系。


★ RefSeq和GenBank的区别?

参考答案:

GenBank 是一个提交型数据库,任何人都可以提交序列,所以里面有大量冗余和质量参差不齐的序列。

RefSeq 是 NCBI 维护的参考序列数据库,是从 GenBank 中精选出来的,经过人工审核或自动筛选,每个基因/基因组只保留一条代表性序列,是非冗余的(non-redundant)。

简单类比:GenBank 像百度百科(谁都能编辑),RefSeq 像大百科全书(有编辑审核)。

在实际工作中,做序列比对或构建参考数据库时,优先选 RefSeq,因为质量更可靠。但如果要查找某个特定菌株的序列,可能只在 GenBank 里有。


★ 你做项目时从哪里获取参考数据库?

参考答案:

这取决于具体的分析类型:

  • 16S 多样性分析:用 SILVA 138.1 数据库作为参考。在 QIIME2 流程中,会先提取对应引物区域(如 V3-V4),再训练 Naive Bayes 分类器进行物种注释。

  • 宏基因组功能注释:用 NCBI NR 数据库(做蛋白比对)、KEGG 数据库(代谢通路注释)、CAZy 数据库(碳水化合物酶注释)、eggNOG 数据库(COG/KO 注释)。

  • 细菌基因组注释:用 Prokka 内置的数据库(基于 UniProt/Rfam/ISfinder),或者直接指定 RefSeq 的近缘物种基因组作为参考。

  • MAGs 分类注释:用 GTDB 数据库通过 GTDB-Tk 进行分类。

数据库版本很重要,每次分析我都会在方法部分记录用的数据库名称和版本号,保证结果可重复。


5. 易错/易混淆点

5.1 SRA vs ENA vs DDBJ(三大数据库镜像)

         INSDC (国际核酸序列数据库合作组)
         ┌──────────┼──────────┐
        NCBI       EBI        DDBJ
       (美国)     (欧洲)     (日本)
    ┌────┴────┐    │          │
  GenBank   SRA   ENA       DDBJ
  • 三者互为镜像,数据互通,提交到一个就同步到另外两个
  • 下载时选就近的,国内有时 ENA 比 SRA 快
  • ENA 可以直接下载 FASTQ(不需要先下 SRA 再转换):
    # 从ENA直接下载FASTQ(有时比SRA快)
    wget ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR123/045/SRR12345678/SRR12345678_1.fastq.gz
    

5.2 SILVA版本更新后ID变化

  • SILVA 的序列 ID 在大版本更新时可能变化
  • 不同版本训练的分类器不能混用
  • 用 QIIME2 时,序列文件和分类文件必须是同一版本
  • 建议:一个项目内统一用同一个 SILVA 版本

5.3 GTDB vs NCBI 分类学差异

常见混淆场景: - 用 GTDB-Tk 注释的 MAGs 分类和 16S(SILVA/NCBI分类)结果名称对不上 - 例如:GTDB 把传统的 Bacteroides 属拆分了,你可能看到 Bacteroides_A - 解决方法:在报告中明确说明分类体系,必要时提供 NCBI 和 GTDB 的对照表

5.4 RefSeq前缀容易混

前缀 含义 容易混的
NC_ Complete genomic molecule(完整基因组) NZ_(不完整基因组)
NM_ mRNA(转录本) NR_(非编码RNA)
NP_ Protein(蛋白质) XP_(预测蛋白质)
GCF_ RefSeq基因组Assembly GCA_(GenBank的Assembly)

5.5 UniProt Swiss-Prot vs TrEMBL

  • Swiss-Prot 条目编号格式:P12345 或 Q8NER1(字母+数字)
  • TrEMBL 条目编号格式:A0A0K9R1G8(较长的编号)
  • 面试中如果说到"用 UniProt 做功能注释",追问时要能说清用的是哪个子库
  • 注意:Swiss-Prot 数量少但准确;TrEMBL 数量大但可能有误注释

6. 数据库选择速查表

分析类型 推荐数据库 工具
16S扩增子物种注释 SILVA (R144即将发布) QIIME2 2026.4, mothur
宏基因组物种组成 NCBI RefSeq + Kraken2 PrackenDB Kraken2 v2.17.0, MetaPhlAn
MAGs分类注释 GTDB R11-RS232 (2026.4, 90万+基因组) GTDB-Tk v2.6.1+
功能注释(基因级) eggNOG, KEGG, COG eggNOG-mapper, KofamScan
功能注释(蛋白级) UniProt (Swiss-Prot + TrEMBL) DIAMOND, BLAST
碳水化合物酶注释 CAZy dbCAN
耐药基因注释 CARD, ResFinder RGI, ABRicate
毒力因子注释 VFDB BLAST, ABRicate
文献检索 PubMed Entrez, PubMed界面
原始数据下载 SRA / ENA sra-tools, wget
参考基因组下载 NCBI RefSeq datasets CLI

7. 学习路径建议

  1. 先掌握:SRA下载 + SILVA使用 + NCBI检索(日常工作最常用)
  2. 再学习:GTDB分类 + UniProt检索(项目深入时需要)
  3. 了解即可:IMG/M + HMP + MGnify(面试知道有这些数据库即可)
  4. 持续关注:数据库版本更新(SILVA、GTDB 每年都有新版本)

🔄 最新版本动态(2026年4月更新)

面试时提到最新版本号是加分项,说明你关注领域前沿。

工具/数据库 最新版本 发布时间 关键变化
SILVA R138.1(R144即将发布) 2025.11论文 整合至DSMZ数字多样性平台,新增TaxMap可视化工具,提供QIIME2/DADA2/Kraken2分类器
GTDB R11-RS232 2026.04 涵盖 901,341 个基因组(比R10增长23%),>95%的细菌和古菌物种仍待基因组学阐明
GTDB-Tk v2.6.1+ (v2.7.0含skani预构建数据库) 2025.12 v2.7.0将数据库从198GB压缩至98GB,大幅降低存储需求
QIIME2 2026.4 2026.04 框架重命名为 rachis,升级至Python 3.12,定位为"AI-ready微生物多组学平台"
Kraken2 v2.17.0 2026 新增 PrackenDB(2026.01),修复多数据库分类支持,FASTA/Q解析器换用kseq大幅加速

💡 面试加分话术: - "GTDB最新的R11版本已经覆盖了超过90万个基因组,但据估计95%以上的微生物物种还没有基因组代表" - "SILVA今年和DSMZ整合了,未来会和BRENDA酶数据库联动,可以从rRNA分类直接关联到代谢功能" - "QIIME2最新版已经重命名为rachis框架,定位是AI-ready的微生物多组学平台"