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大新兴技术之一。