跳转至

微生物数据库(Microbial Databases)

1. 一句话概述

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


2. 核心知识点

2.1 常用数据库总览

数据库全称数据类型主要用途URL检索技巧
GenBankGenBank (NCBI)核酸序列提交/检索已发表的核酸序列https://www.ncbi.nlm.nih.gov/genbank/用Accession号精确检索,如MN908947
RefSeqNCBI Reference Sequence参考序列(基因组、转录本、蛋白质)获取非冗余、有注释的参考序列https://www.ncbi.nlm.nih.gov/refseq/前缀区分类型:NC_(染色体)、NM_(mRNA)、NP_(蛋白质)
SRASequence Read Archive原始测序数据(FASTQ)下载已发表项目的原始测序readshttps://www.ncbi.nlm.nih.gov/sra用BioProject号(PRJNA...)批量检索
GEOGene Expression Omnibus表达谱、芯片、高通量数据下载基因表达数据和实验设计信息https://www.ncbi.nlm.nih.gov/geo/GSE=系列,GSM=样本,GPL=平台
PubMedPubMed文献摘要检索生物医学文献https://pubmed.ncbi.nlm.nih.gov/用MeSH主题词提高检索精度
TaxonomyNCBI Taxonomy物种分类信息查询物种分类地位和TaxIDhttps://www.ncbi.nlm.nih.gov/taxonomyTaxID是唯一标识,如9606=人类
SILVASILVA rRNA Database16S/18S/23S rRNA参考序列16S/18S扩增子分析的参考比对数据库https://www.arb-silva.de/版本号如138.1,SSU=小亚基,LSU=大亚基
GTDBGenome Taxonomy Database基因组分类学基于基因组的细菌/古菌分类注释https://gtdb.ecogenomic.org/与NCBI分类有大量差异,注意版本对应
IMG/MIntegrated Microbial Genomes & Microbiomes微生物基因组和宏基因组比较基因组学、功能注释https://img.jgi.doe.gov/JGI维护,可按生态环境检索
HMPHuman Microbiome Project人体微生物组数据人体不同部位微生物组参考数据https://hmpdacc.org/分HMP1(健康人)和iHMP(疾病关联)
MGnifyMGnify (EBI)宏基因组分析结果在线宏基因组分析,下载注释结果https://www.ebi.ac.uk/metagenomics/可直接提交原始数据进行自动分析
UniProtUniversal Protein Resource蛋白质序列和功能注释蛋白质功能查询、序列下载https://www.uniprot.org/Swiss-Prot=人工审核,TrEMBL=自动注释
ENAEuropean Nucleotide Archive核酸序列和测序数据欧洲的序列数据存储(与SRA同步)https://www.ebi.ac.uk/ena/与SRA互为镜像,有时下载更快
DDBJDNA 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...)    # 运行层级,一次上机(你要下载的)

编号前缀含义:

前缀含义示例
SRRSequence Read Run(测序运行)SRR12345678
SRXSequence Read Experiment(实验)SRX1234567
SRSSequence Read Sample(样本)SRS1234567
SRPSequence Read Project(项目)SRP123456
PRJNABioProject(NCBI项目号)PRJNA12345
SAMNBioSample(NCBI样本号)SAMN12345

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

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

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

编号体系:

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

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


2.3 SILVA数据库详解

版本号含义: - 主版本号(如138):大规模更新,分类树重建 - 子版本号(如138.1):小修,修Bug - 当前常用版本:SILVA 138.2(2024年7月发布,当前最新稳定版)

数据库分类:

缩写全称用途
SSURefSmall Subunit Reference16S/18S 参考序列(全长,高质量)
SSURef_NR99SSU Reference Non-Redundant 99%去冗余99%的参考序列(常用)
SSUParcSSU Parc所有SSU序列(包括低质量)
LSURefLarge Subunit Reference23S/28S 参考序列

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


2.4 GTDB数据库详解

与NCBI分类学的核心差异:

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

GTDB重命名示例:

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

2.5 UniProt详解

子库全称特点序列数量级
Swiss-ProtSwiss-Prot人工审核(reviewed),高质量注释~57万条
TrEMBLTranslated 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基因组AssemblyGCA_(GenBank的Assembly)

5.5 UniProt Swiss-Prot vs TrEMBL

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

6. 数据库选择速查表

分析类型推荐数据库工具
16S扩增子物种注释SILVA R138.2(2024.07,当前最新稳定版;R144 开发中)QIIME2 2026.4, mothur
宏基因组物种组成NCBI RefSeq + Kraken2 PrackenDBKraken2 v2.17.0, MetaPhlAn
MAGs分类注释GTDB R11-RS232(2026.04,~901k 个基因组)GTDB-Tk v2.6.1+
功能注释(基因级)eggNOG, KEGG, COGeggNOG-mapper, KofamScan
功能注释(蛋白级)UniProt (Swiss-Prot + TrEMBL)DIAMOND, BLAST
碳水化合物酶注释CAZydbCAN
耐药基因注释CARD, ResFinderRGI, ABRicate
毒力因子注释VFDBBLAST, ABRicate
文献检索PubMedEntrez, PubMed界面
原始数据下载SRA / ENAsra-tools, wget
参考基因组下载NCBI RefSeqdatasets CLI

7. 学习路径建议

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

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

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

工具/数据库最新版本发布时间关键变化
SILVAR138.2(当前最新稳定版;R144 开发中)2024.07整合至DSMZ数字多样性平台,新增TaxMap可视化工具,提供QIIME2/DADA2/Kraken2分类器
GTDBR11-RS2322026.04R10-RS226(2025.04): ~732k 个基因组;R11-RS232(2026.04): ~901k 个基因组。>95%的细菌和古菌物种仍待基因组学阐明
GTDB-Tkv2.6.1+ (v2.7.0含skani预构建数据库)2025.12v2.7.0将数据库从198GB压缩至98GB,大幅降低存储需求
QIIME22026.42026.04框架重命名为 rachis(命令行工具名 qiime 不变,现有脚本无需修改),升级至Python 3.12,定位为"AI-ready微生物多组学平台"
Kraken2v2.17.02026新增 PrackenDB(2026.01),修复多数据库分类支持,FASTA/Q解析器换用kseq大幅加速

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