跳转至

665 单细胞微生物组学

一句话概述:单细胞微生物组学在单个细菌水平进行基因组或转录组测序,揭示传统宏基因组看不到的菌株异质性和稀有群体。

核心知识点速查表

知识点关键内容
核心挑战细菌细胞壁坚硬、mRNA含量低(比哺乳动物少100-1000倍)、无polyA尾
scMetaG单细胞宏基因组——单个细菌的全基因组测序
细菌scRNA-seq单细胞转录组——M3-seq、smRandom-seq2、ProBac-seq
SPC技术半透膜微胶囊,分离单个细菌进行扩增
SAG单扩增基因组,MDA扩增单细胞DNA
2025前沿Bascet/Zorn、Nature Reviews Genetics综述

一、为什么需要单细胞微生物组学?(白话解释)

打个比方:传统宏基因组就像把一锅菜搅碎后分析营养成分——你知道总共有多少蛋白质、多少维生素,但不知道每道菜贡献了多少。单细胞微生物组学是逐个菜品检测——可以知道每个细菌个体的基因组、转录组状态。

能解决什么问题: - 发现"少数派"稀有细菌(宏基因组检测不到的) - 揭示同一物种内不同菌株的功能差异 - 检测菌株水平的噬菌体感染状态 - 研究"不可培养"微生物的基因组

二、单细胞宏基因组(scMetaG)

2.1 基于微流控+SPC的方法

# 单细胞宏基因组分析流程

# 1. 样本处理和单细胞分离
# 使用微流控设备(如Atrandi SPC系统)
# 将样本中的细菌逐个包裹在半透膜微胶囊(SPC)中
# SPC允许试剂进出但DNA留在胶囊内

# 2. 胶囊内MDA扩增
# MDA (Multiple Displacement Amplification) 扩增单个细菌的基因组
# phi29 DNA聚合酶在等温条件下扩增全基因组

# 3. 条形码标记和测序
# Split-and-pool组合条形码策略
# 每个胶囊获得唯一条形码组合
# 短读长测序(Illumina)

# 4. 生信分析流程
# 按条形码拆分reads → 每个细菌的reads
# 组装 → 单扩增基因组(SAG)
# 质量评估 → CheckM
# 分类注释 → GTDB-Tk

2.2 数据分析

# 单细胞宏基因组数据分析
import pandas as pd  # 数据处理
import numpy as np  # 数值计算
from collections import Counter  # 计数器

def analyze_sag_quality(checkm_results):
    """评估单扩增基因组(SAG)质量"""
    df = pd.read_csv(checkm_results, sep='\t')

    # 质量分级(MIMAG标准)
    high_quality = df[(df['Completeness'] > 90) &
                      (df['Contamination'] < 5)]  # 高质量:>90%完整,<5%污染
    medium_quality = df[(df['Completeness'] > 50) &
                        (df['Contamination'] < 10)]  # 中质量

    print(f"总SAG数: {len(df)}")
    print(f"高质量SAG: {len(high_quality)} ({len(high_quality)/len(df)*100:.1f}%)")
    print(f"中质量SAG: {len(medium_quality)} ({len(medium_quality)/len(df)*100:.1f}%)")

    # 物种组成
    taxa = Counter(df['Taxonomy'].apply(lambda x: x.split(';')[-1]))  # 最低分类级别
    print("\nTop10物种:")
    for species, count in taxa.most_common(10):
        print(f"  {species}: {count} cells")

    return high_quality, medium_quality

# 菌株异质性分析
def strain_heterogeneity(sag_snps_file):
    """分析同一物种不同单细胞之间的SNP差异"""
    snps = pd.read_csv(sag_snps_file, sep='\t')

    # 计算成对SNP距离
    from scipy.spatial.distance import pdist, squareform
    snp_matrix = snps.pivot(index='cell_id', columns='position', values='alt_allele')
    snp_matrix = snp_matrix.fillna(0)

    distances = pdist(snp_matrix.values, metric='hamming')  # Hamming距离
    dist_matrix = squareform(distances)

    print(f"同种内平均SNP距离: {np.mean(distances):.4f}")
    print(f"最大SNP距离: {np.max(distances):.4f}")

    return dist_matrix

三、细菌单细胞RNA-seq

3.1 主要方法对比

方法mRNA捕获平台通量特点
M3-seq随机引物组合索引稀有群体检测+噬菌体感染
smRandom-seq2随机引物微流控高(8478细胞)检测噬菌体-宿主关系
ProBac-seq靶向探针10X Chromium兼容商业平台,但需预设探针
BacDrop混合液滴+组合索引混合策略

3.2 分析示例

# 细菌单细胞RNA-seq分析概念流程
import scanpy as sc  # 单细胞分析工具包
import anndata as ad  # 注释数据格式

# 1. 读取数据(假设已处理为count矩阵)
adata = sc.read_h5ad("bacterial_scrna.h5ad")  # 读取数据
print(f"细胞数: {adata.n_obs}, 基因数: {adata.n_vars}")

# 2. 质量控制(细菌特殊考虑)
# 细菌mRNA含量远低于哺乳动物,阈值要低很多
sc.pp.filter_cells(adata, min_genes=20)  # 至少检测到20个基因
sc.pp.filter_genes(adata, min_cells=3)   # 至少在3个细胞中检测到
print(f"过滤后: {adata.n_obs} 细胞, {adata.n_vars} 基因")

# 3. 归一化(注意:不能用常规scRNA-seq的方法)
# 细菌没有polyA尾,reads分布与哺乳动物不同
sc.pp.normalize_total(adata, target_sum=1e4)  # 总量归一化
sc.pp.log1p(adata)  # log转换

# 4. 降维和聚类
sc.pp.highly_variable_genes(adata, n_top_genes=200)  # 高变异基因
sc.pp.pca(adata, n_comps=20)  # PCA降维
sc.pp.neighbors(adata, n_pcs=15)  # 构建KNN图
sc.tl.umap(adata)  # UMAP降维
sc.tl.leiden(adata, resolution=0.5)  # Leiden聚类

# 5. 物种鉴定(每个cluster)
# 使用16S/23S rRNA reads鉴定物种
sc.tl.rank_genes_groups(adata, 'leiden', method='wilcoxon')  # 差异基因

# 6. 可视化
sc.pl.umap(adata, color=['leiden', 'species'], save='_bacterial_scrna.pdf')

四、噬菌体-宿主关系检测

# 从单细胞数据检测噬菌体感染
def detect_phage_infection(adata, phage_gene_list):
    """
    在单细胞数据中检测噬菌体感染
    phage_gene_list: 已知噬菌体基因列表
    """
    # 检查每个细胞中噬菌体基因的表达
    phage_genes_present = [g for g in phage_gene_list if g in adata.var_names]
    print(f"检测到 {len(phage_genes_present)} 个噬菌体基因")

    if phage_genes_present:
        # 计算噬菌体基因表达得分
        sc.tl.score_genes(adata, phage_genes_present, score_name='phage_score')

        # 标记感染细胞
        threshold = adata.obs['phage_score'].quantile(0.9)  # Top 10%为感染
        adata.obs['phage_infected'] = adata.obs['phage_score'] > threshold

        n_infected = adata.obs['phage_infected'].sum()
        print(f"疑似噬菌体感染细胞: {n_infected}/{adata.n_obs} "
              f"({n_infected/adata.n_obs*100:.1f}%)")

        # 分析感染 vs 非感染细胞的差异
        sc.tl.rank_genes_groups(adata, 'phage_infected', method='wilcoxon')

    return adata

五、2025年前沿工具

Bascet和Zorn(2025,高通量scMetaG)

Bascet: 高通量scMetaG实验+计算框架
- 新型微流控实现高强度裂解+基因组扩增
- 支持数千个单细胞并行处理
- Zorn是配套的计算分析工具

Nature Reviews Genetics (2025) 综述要点:
- 单细胞微生物组学被列为2025年7大新兴技术之一
- 结合meta-omics和单细胞基因组学提供新机会
- 主要瓶颈:技术挑战和高成本

常见报错与解决

报错原因解决方案
MDA扩增偏好性导致基因组不完整phi29扩增的固有偏好增加replicate或用改良MDA
大量空胶囊(无细胞)细胞密度太低优化细胞浓度到~1细胞/胶囊
交叉污染(多细胞同胶囊)细胞密度太高降低input细胞数,用Poisson分布校准
细菌scRNA-seq reads太少细菌mRNA含量天然低增加测序深度或用靶向方法(ProBac-seq)
无法区分rRNA和mRNA细菌95%+的RNA是rRNA实验端:rRNA去除;计算端:过滤rRNA比对reads

速查表

# 单细胞微生物组技术选择
想要基因组信息 → scMetaG (SPC/微流控+MDA)
想要转录组信息 → M3-seq / smRandom-seq2
只关注少数目标种 → ProBac-seq (10X兼容)
需要高通量 → Bascet/Zorn (2025)

# SAG质量标准(MIMAG)
高质量: 完整度>90%, 污染<5%, 含16S/23S/5S, ≥18 tRNA
中质量: 完整度>50%, 污染<10%
低质量: 完整度<50%

# 关键统计
每个细菌mRNA分子数: ~1000-5000(哺乳动物: 10万-50万)
细菌mRNA半衰期: 几分钟(哺乳动物: 几小时)
典型scMetaG基因组完整度: 10-60%(需大量细胞合并)

面试高频问题

Q1:细菌单细胞测序相比哺乳动物有什么特殊挑战? A:三大挑战:(1) 细胞壁坚硬,常规裂解方法不够→需要机械+酶解;(2) 没有polyA尾,不能用oligo-dT捕获mRNA→用随机引物或靶向探针;(3) mRNA含量极低(比哺乳动物少100-1000倍),半衰期短→需要更高灵敏度的检测方法。

Q2:scMetaG和传统MAG有什么区别? A:MAG是从宏基因组混合物中"拼装"出来的基因组(可能混合多菌株),SAG是从单个细菌细胞获得的基因组(真正的单菌株)。SAG的优势是菌株纯度高、能检测稀有物种,缺点是基因组完整度低(MDA扩增偏好)。

Q3:单细胞微生物组学能解决什么传统方法不能解决的问题? A:(1) 菌株水平的功能异质性——同一物种的不同细胞可能有不同的基因表达状态;(2) 稀有物种检测——丰度<0.01%的物种在宏基因组中被"淹没";(3) 噬菌体感染状态——哪些细胞正在被噬菌体感染。2025年被Nature列为7大新兴技术之一。