zh多样性分析

多样性分析

MICOS-2024 微生物群落多样性分析完整指南。


目录


概述

多样性分析测量微生物群落的丰富度(类群数量)和均匀度(丰度分布)。这些指标提供以下洞察:

  • 群落健康: 较高多样性通常与稳定性相关
  • 处理效应: 不同条件下多样性的变化
  • 生态模式: 空间和时间变异
  • 比较研究: 生态系统间差异

多样性类型

Alpha 多样性 (样本内)

测量单个样本内的多样性:

指标测量内容最佳用途
丰富度类群数量群落复杂性
Shannon丰富度 + 均匀度通用多样性
Simpson优势度检测优势类群
Faith’s PD系统发育多样性进化广度

Beta 多样性 (样本间)

测量样本间差异:

指标加权方式最佳用途
Bray-Curtis丰度群落组成
Jaccard存在/缺失物种重叠
UniFrac系统发育进化周转
Aitchison组分零膨胀数据

输入要求

数据格式

格式描述来源
BIOM微生物组数据标准格式Kraken-biom, QIIME2
TSV制表符分隔特征表自定义表格
QZAQIIME2 制品QIIME2 导出

元数据要求

描述所需分析
sample-id唯一标识符所有分析
group实验分组组间比较
subject-id受试者标识符配对/纵向
time-point采集时间纵向

运行分析

方式 1: MICOS CLI

# 从 BIOM 文件进行多样性分析
python -m micos.cli run diversity-analysis \
  --input-biom results/taxonomic_profiling/feature-table.biom \
  --output-dir results/diversity_analysis \
  --metadata metadata.tsv
 
# 作为完整流程一部分
python -m micos.cli full-run \
  --input-dir data/raw_input \
  --results-dir results \
  --threads 16

方式 2: 直接 QIIME2

# 导入 BIOM 到 QIIME2
qiime tools import \
  --input-path feature-table.biom \
  --type 'FeatureTable[Frequency]' \
  --output-path table.qza
 
# 稀释表格
qiime feature-table rarefy \
  --i-table table.qza \
  --p-sampling-depth 10000 \
  --o-rarefied-table table-rarefied.qza

Alpha 多样性

指标概述

1. 丰富度估计器

指标描述解读
观察特征数原始类群计数简单丰富度
Chao1估计总丰富度考虑未观察类群
ACE基于丰度的覆盖替代丰富度估计

2. 多样性指数

指标公式范围说明
Shannon-Σ(pᵢ × ln(pᵢ))0 到 ~7考虑丰富度和均匀度
Simpson1 - Σ(pᵢ²)0 到 1两个随机 reads 不同的概率
逆 Simpson1 / Σ(pᵢ²)1 到 N越高越多样

实现

# 计算 alpha 多样性
qiime diversity alpha \
  --i-table table.qza \
  --p-metric shannon \
  --o-alpha-diversity shannon.qza
 
# 多指标一次计算
qiime diversity alpha-rarefaction \
  --i-table table.qza \
  --p-metrics shannon \
  --p-metrics chao1 \
  --p-metrics observed_features \
  --p-min-depth 1000 \
  --p-max-depth 50000 \
  --m-metadata-file metadata.tsv \
  --o-visualization alpha-rarefaction.qzv

统计检验

# 组间比较
qiime diversity alpha-group-significance \
  --i-alpha-diversity shannon.qza \
  --m-metadata-file metadata.tsv \
  --m-metadata-column group \
  --o-visualization shannon-significance.qzv

常用检验:

  • Kruskal-Wallis: 非参数组间比较
  • 成对 Wilcoxon: 事后比较
  • 线性混合效应: 纵向数据

Beta 多样性

距离指标

1. 组分指标

指标类型公式特征
Bray-Curtis基于丰度D = Σ|Aᵢ - Bᵢ| / Σ(Aᵢ + Bᵢ)
Jaccard二元D = 1 - (|A ∩ B| / |A ∪ B|)

2. 系统发育指标

指标加权方式敏感于
未加权 UniFrac存在/缺失系统发育新颖性
加权 UniFrac丰度系统发育周转

实现

# 计算 beta 多样性
qiime diversity beta \
  --i-table table.qza \
  --p-metric braycurtis \
  --o-distance-matrix braycurtis.qza
 
# 系统发育多样性(需要树)
qiime diversity beta-phylogenetic \
  --i-table table.qza \
  --i-phylogeny tree.qza \
  --p-metric unweighted_unifrac \
  --o-distance-matrix unweighted-unifrac.qza

降维

# PCoA
qiime diversity pcoa \
  --i-distance-matrix braycurtis.qza \
  --o-pcoa braycurtis-pcoa.qza
 
# Emperor 可视化
qiime emperor plot \
  --i-pcoa braycurtis-pcoa.qza \
  --m-metadata-file metadata.tsv \
  --o-visualization braycurtis-emperor.qzv

统计检验

PERMANOVA

检验组间是否在多维空间存在差异:

qiime diversity beta-group-significance \
  --i-distance-matrix braycurtis.qza \
  --m-metadata-file metadata.tsv \
  --m-metadata-column group \
  --p-method permanova \
  --o-visualization braycurtis-permanova.qzv

解读:

  • p < 0.05: 组间显著差异
  • : 分组解释的方差比例

可视化

Alpha 多样性图

import seaborn as sns
import matplotlib.pyplot as plt
 
# 箱线图
data = pd.read_csv('alpha_diversity.tsv', sep='\t')
sns.boxplot(data=data, x='group', y='shannon')
plt.title('各组 Shannon 多样性')
plt.savefig('shannon_boxplot.pdf')

Beta 多样性图

from skbio.stats.ordination import pcoa
from skbio import DistanceMatrix
import matplotlib.pyplot as plt
 
# 加载距离矩阵
dm = DistanceMatrix.read('braycurtis.tsv')
 
# PCoA
pcoa_results = pcoa(dm)
 
# 绘图
fig, ax = plt.subplots(figsize=(8, 6))
for group in metadata['group'].unique():
    mask = metadata['group'] == group
    ax.scatter(pcoa_results.samples.loc[mask, 'PC1'],
               pcoa_results.samples.loc[mask, 'PC2'],
               label=group)
ax.set_xlabel(f'PC1 ({pcoa_results.proportion_explained[0]:.1%})')
ax.set_ylabel(f'PC2 ({pcoa_results.proportion_explained[1]:.1%})')
ax.legend()
plt.savefig('pcoa_plot.pdf')

解读指南

Alpha 多样性

典型值(人类肠道)

指标范围说明
观察特征数50-200随测序深度变化
Shannon2.5-4.5>4 表示高多样性
Chao1100-400总丰富度估计
Pielou’s J0.6-0.9>0.8 表示均匀分布

生态解读

情景解读
低丰富度,高均匀度少数优势种,平衡良好
高丰富度,低均匀度多数稀有物种,少数优势
处理组低 alpha潜在菌群失调或应激
健康组高 alpha多样、有韧性的群落

Beta 多样性

PCoA 解读

模式解读
按组紧密聚类强组效应
聚类重叠相似群落
梯度模式连续环境驱动因子
离群点独特群落组成

高级主题

稀释与测序深度

# 稀释配置
diversity_analysis:
  qiime2:
    sampling_depth: "auto"    # 自动检测
    # 或手动指定
    # sampling_depth: 10000

选择测序深度:

  1. 检查稀释曲线
  2. 选择曲线平台期的深度
  3. 尽可能包含最多样本
  4. 排除低于最小深度的样本

纵向分析

# 纵向数据混合效应模型
from statsmodels.regression.mixed_linear_model import MixedLM
 
# 模型: alpha ~ time * treatment + (1|subject)
model = MixedLM.from_formula(
    'shannon ~ time_point * treatment',
    groups='subject_id',
    data=metadata
)
result = model.fit()
print(result.summary())

核心微生物组分析

# 识别核心特征
# 定义核心(在 >50% 样本中存在,>0.1% 丰度)
core_features = table.view(pd.DataFrame)
core_features = core_features[
    (core_features > 0).sum(axis=1) / len(core_features.columns) > 0.5
]
core_features = core_features[core_features.sum(axis=1) > 0.001]

相关文档