HUMAnN3 宏基因组双端数据分析:质量控制、功能注释与定量完整步骤
宏基因组双端测序数据 HUMAnN3 分析流程
这是一套使用 HUMAnN3 分析双端宏基因组测序数据的完整流程。HUMAnN3 通常与 MetaPhlAn3 (用于物种分类) 和 KneadData (用于质量控制和宿主DNA去除) 联用,构成 bioBakery 分析流程的一部分。
重要前置条件:
- Linux 环境: HUMAnN3 及其依赖项主要在 Linux 环境下运行。
- Conda 环境: 推荐使用 Miniconda 或 Anaconda 来安装和管理软件依赖,这能最大程度地避免版本冲突问题。
- 计算资源: 宏基因组数据分析需要大量的计算资源(CPU、内存、存储空间),请确保你的计算环境满足需求。
- 数据库: 运行 HUMAnN3 需要下载大型参考数据库(ChocoPhlAn 和 UniRef)。这需要充足的存储空间和网络带宽。
整体流程概览:
- 软件安装: 安装 HUMAnN3、MetaPhlAn3、KneadData 及其依赖。
- 数据库下载: 下载 HUMAnN3 和 MetaPhlAn3 所需的参考数据库。
- 质量控制和宿主DNA去除 (KneadData): 使用 KneadData 对原始双端测序数据进行质控并去除宿主序列。
- 功能分析 (HUMAnN3): 使用处理后的 reads 作为输入,运行 HUMAnN3 进行基因家族和代谢通路的定量。
- 结果合并和标准化: 对多个样本的 HUMAnN3 输出结果进行合并和标准化,以便后续比较分析。
- 下游分析: 对合并和标准化的结果进行统计分析和可视化。
详细步骤
步骤 1: 软件安装和环境配置
推荐使用 Conda 安装 bioBakery 工具套件,这包括 HUMAnN3, MetaPhlAn3, KneadData 以及其他一些有用的脚本。
# 创建一个新的conda环境 (建议使用python 3.8或更高版本)
conda create -n biobakery3 python=3.8
# 激活环境
conda activate biobakery3
# 配置conda channels (重要,确保能找到 bioBakery 的包)
conda config --add channels defaults
conda config --add channels bioconda
conda config --add channels conda-forge
conda config --add channels biobakery
# 安装 HUMAnN3 (会自动安装 MetaPhlAn3 和 KneadData 作为依赖)
conda install humann -c biobakery
步骤 2: 数据库下载
HUMAnN3 需要 ChocoPhlAn 数据库 (用于核酸比对) 和 UniRef 数据库 (用于蛋白质比对)。MetaPhlAn3 需要其自身的标记基因数据库。请选择一个合适的目录存放数据库。
# 进入你希望存放数据库的目录
cd /path/to/your/database/folder
# 下载 HUMAnN3 的 ChocoPhlAn 数据库
humann_databases --download chocophlan full /path/to/your/database/folder/humann_db --update-config yes
# 下载 HUMAnN3 的 UniRef 数据库 (推荐使用 uniref90 的 diamond 版本)
humann_databases --download uniref uniref90_diamond /path/to/your/database/folder/humann_db --update-config yes
# MetaPhlAn3 的数据库通常会在第一次运行时自动下载,但你也可以手动下载:
# 进入你希望存放MetaPhlAn数据库的目录
mkdir -p /path/to/your/metaphlan_database
cd /path/to/your/metaphlan_database
# 运行metaphlan随便一个命令触发下载,或者查找metaphlan官方文档获取具体下载命令
# 配置 HUMAnN3 使用下载好的数据库路径
# 编辑 HUMAnN3 的配置文件,通常位于 ~/.humann3/config.txt
# 将 database_folders 参数指向你的数据库存放目录,例如:
# database_folders: /path/to/your/database/folder/humann_db
步骤 3: 质量控制和宿主DNA去除 (KneadData)
使用 KneadData 对原始双端 FASTQ 文件进行处理。你需要准备一个宿主参考基因组的 Bowtie2 索引。
# 假设你的原始数据在 raw_data/ 目录下,宿主索引在 host_db/ 目录下
# 双端数据示例:sampleA_R1.fastq.gz, sampleA_R2.fastq.gz
# 下载宿主参考基因组并构建 Bowtie2 索引 (如果还没有的话)
# 例如下载人类基因组
# kneaddata_database --download human_genome bowtie2 /path/to/your/host_db
# 对每个样本运行 KneadData
# 对于 sampleA:
kneaddata --input1 raw_data/sampleA_R1.fastq.gz \
--input2 raw_data/sampleA_R2.fastq.gz \
--reference-db /path/to/your/host_db/human_genome \
--output kneaddata_output/sampleA \
--remove-intermediate-output \
--output-fastq-gz \
--threads <number_of_threads>
# KneadData 会生成多个输出文件,其中 *_kneaddata_paired_1.fastq.gz 和 *_kneaddata_paired_2.fastq.gz
# 是通过质控并去除了宿主序列的配对 reads,*_kneaddata_unmatched_1.fastq.gz 和 *_kneaddata_unmatched_2.fastq.gz
# 是通过质控但失去配对的 reads。
步骤 4: 功能分析 (HUMAnN3)
将 KneadData 处理后的 clean reads 作为 HUMAnN3 的输入。对于双端测序数据,通常的做法是将 KneadData 输出的 *_paired_1.fastq.gz 和 *_paired_2.fastq.gz 文件合并成一个文件作为输入。虽然有些工作流程会自动处理双端,但合并输入是一个兼容性较好的方法。保留的 unpaired reads 也可以单独作为一个文件输入。
# 进入 KneadData 输出目录
cd kneaddata_output/sampleA
# 合并配对的 reads
cat sampleA_kneaddata_paired_1.fastq.gz sampleA_kneaddata_paired_2.fastq.gz > sampleA_kneaddata_paired.fastq.gz
# 如果你有unmatched reads,也可以合并(可选,取决于你的分析需求和read数量)
# cat sampleA_kneaddata_unmatched_1.fastq.gz sampleA_kneaddata_unmatched_2.fastq.gz > sampleA_kneaddata_unmatched.fastq.gz
# 返回主工作目录
cd ../..
# 运行 HUMAnN3
# 输入文件可以是合并后的 paired 文件,或者 paired 文件和 unmatched 文件的组合。
# 最常见和推荐的输入是所有通过QC的reads合并到一起。
# 对于 sampleA:
humann --input kneaddata_output/sampleA/sampleA_kneaddata_paired.fastq.gz \
--output humann_output/sampleA \
--threads <number_of_threads> \
--metaphlan-options "--bowtie2db /path/to/your/metaphlan_database" # 指定MetaPhlAn数据库路径
# 如果你在步骤2配置了humann的数据库路径,这里通常不需要通过命令行指定
# 如果你也想包含 unpaired reads 进行分析(注意这可能会略微影响结果,取决于 unpaired reads 的比例和来源)
# 你可以将 paired 和 unpaired 合并后再输入:
# cat kneaddata_output/sampleA/sampleA_kneaddata_paired.fastq.gz kneaddata_output/sampleA/sampleA_kneaddata_unmatched.fastq.gz > kneaddata_output/sampleA/sampleA_kneaddata_clean.fastq.gz
# humann --input kneaddata_output/sampleA/sampleA_kneaddata_clean.fastq.gz \
# --output humann_output/sampleA \
# --threads <number_of_threads> \
# --metaphlan-options "--bowtie2db /path/to/your/metaphlan_database"
# HUMAnN3 会生成多个文件,主要关注以下几个:
# sampleA_genefamilies.tsv: 基因家族的丰度表。
# sampleA_pathabundance.tsv: 代谢通路的丰度表。
# sampleA_pathcoverage.tsv: 代谢通路的覆盖度表。
对你的所有样本重复步骤 3 和 4。
步骤 5: 结果合并和标准化
分析完成后,你需要将所有样本的输出文件合并成一个大表,并进行标准化以便进行样本间的比较。
# 进入 HUMAnN3 输出目录
cd humann_output
# 合并基因家族丰度表
humann_join_tables --input . \
--output combined_genefamilies.tsv \
--file_name genefamilies
# 合并通路丰度表
humann_join_tables --input . \
--output combined_pathabundance.tsv \
--file_name pathabundance
# 合并通路覆盖度表
humann_join_tables --input . \
--output combined_pathcoverage.tsv \
--file_name pathcoverage
# 标准化合并后的基因家族丰度表 (例如标准化为 CPM - Counts Per Million)
humann_renorm_table --input combined_genefamilies.tsv \
--output combined_genefamilies_cpm.tsv \
--units cpm
# 标准化合并后的通路丰度表 (例如标准化为相对丰度 - relative abundance)
humann_renorm_table --input combined_pathabundance.tsv \
--output combined_pathabundance_relab.tsv \
--units relab
步骤 6: 下游分析
合并和标准化的表格(如 combined_genefamilies_cpm.tsv, combined_pathabundance_relab.tsv, combined_pathcoverage.tsv 等)可以用于各种下游分析,例如:
差异丰度分析: 找出在不同样本组之间有显著差异的基因家族或通路 (例如使用 LEfSe, ALDeX2 等工具)。
聚类分析和可视化: 使用热图、PCoA 图等方式探索样本间的相似性和聚类模式。
关联分析: 将功能丰度与宿主表型、环境因素等进行关联分析。
这些下游分析通常需要使用 R 或 Python 等统计编程语言和相应的包 (如 phyloseq, vegan, pandas, numpy, matplotlib, seaborn)。
注意事项
数据库路径: 确保你在安装和运行过程中正确指定了数据库的路径。
内存和线程: 根据你的计算资源调整 --threads 参数,并确保有足够的内存来运行 HUMAnN3 (特别是载入数据库时)。
日志文件: 仔细检查 KneadData 和 HUMAnN3 生成的日志文件,以排查任何错误或警告。
中间文件: KneadData 可以使用 --remove-intermediate-output 选项删除中间文件,以节省存储空间。
MetaPhlAn3: HUMAnN3 依赖 MetaPhlAn3 进行物种分类,因此 MetaPhlAn3 的数据库和正确运行是 HUMAnN3 分析的基础。
版本兼容性: 确保你安装的 HUMAnN3, MetaPhlAn3, KneadData 以及依赖库之间版本兼容。使用 Conda 安装通常能很好地处理这个问题。
这个流程提供了一个基础框架,你可能需要根据你的具体项目需求和数据特点进行调整。希望这份详细的流程对你有帮助!
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)