在上一期推文中Claude code做宏基因组数据质控,我们展示了如何利用Claude code辅助完成宏基因组数据的质量控制。高质量的“Clean Reads”是后续所有分析的基石。然而,对于来自宿主动物(如人类、小鼠、骆驼等)的样本,这些Clean Reads其实是微生物与宿主DNA的“混合体”。
今天,我们就来聚焦宏基因组分析的关键步骤——去宿主基因,学习如何从海量的测序数据中精准剔除宿主序列,富集我们真正关心的微生物信号。
宏基因组测序样本通常来源于复杂的生物环境,如动物肠道、皮肤或口腔。因此,测序得到的DNA序列不可避免地包含了大量的宿主细胞DNA。在某些情况下,宿主DNA的占比甚至会超过90%!
如果不进行去除,这些宿主序列将对后续分析造成巨大干扰:
因此,去宿主的根本目的就是“去伪存真,富集信号” ,将属于宿主基因组的序列精准识别并剔除,从而让后续的物种分类和功能分析更加准确、高效。
去宿主的核心流程与我们上一篇的质控一脉相承,主要包含三步:
由于我们本次处理的骆驼样本有完整的参考基因组,因此选择“基于比对” 的方法是最直接有效的策略。其原理就像是拿着一张宿主的“标准像”(参考基因组),去比对我们手中的所有照片(测序Reads),凡是匹配上的,就认为是宿主来源并丢弃。
我们沿用上一篇文章质控后的数据,直接进入去宿主环节。
要让Bowtie2认识宿主,我们首先需要提供宿主的参考基因组,并为它构建“索引”。索引就像一本书的目录,能让Bowtie2极速查找到匹配的序列。
# 设定工作目录
WORKDIR="/path/to/your/project"
cd $WORKDIR
# 1. 下载骆驼 (Camelus bactrianus) 参考基因组
# 使用 -c 参数支持断点续传
wget -c https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/048/773/025/GCF_048773025.1_ASM4877302v1/GCF_048773025.1_ASM4877302v1_genomic.fna.gz
# 2. 为了方便管理,重命名并解压
mv GCF_048773025.1_ASM4877302v1_genomic.fna.gz Camelus73025.1.fna.gz
gunzip Camelus73025.1.fna.gz
# 3. 使用 bowtie2-build 构建索引
# -f 指定输入是fasta格式
# Camelus73025.1.fna 是输入的基因组文件
# Camelus73025.1 是你为索引指定的前缀名
# --threads 指定使用的计算核心数,可加快速度
bowtie2-build -f Camelus73025.1.fna Camelus73025.1 --threads 8
运行结束后,会看到当前目录下生成了多个以 Camelus73025.1 开头、.bt2 结尾的索引文件。这些文件就是Bowtie2进行比对的依据。
现在,万事俱备,我们可以召唤 KneadData 了。由于数据已经做过质控,我们使用 --bypass-trim 参数跳过KneadData内置的Trimmomatic质控步骤,从而避免重复工作。
指令:我要用KneadData去宿主基因,我下载好了骆驼的参考基因组,也有经过初步质控的骆驼宏基因组数据,请以骆驼的宏基因组数据为例,进行去宿主基因操作。
参数详解:
KneadData 的输出文件非常清晰,它会帮你把宿主序列(contaminated)和非宿主序列(clean) 完美地分离开。
这些文件包含了所有成功比对到骆驼基因组上的 reads。
这才是我们后续分析的主角——经过“净化”的、富含微生物信息的 reads。
通过文件大小对比,我们能得到一个直观的结论:291M (宿主) vs 1.3M (微生物)。
这意味着,在这个样本中,超过 99% 的序列都来源于宿主骆驼!如果没有这一步,我们后续的分析将完全被宿主DNA的“噪音”所淹没,几乎不可能得到任何有意义的微生物学结论。
通过本次实战,可以发现Claude code能够使用 KneadData 进行宏基因组去宿主的核心技术。或许我可以更早的使用Claude code,从 Bowtie2 建立索引开始,就让它生成完整流程。我们专注于策略思考,它负责精准执行,让人机协作的价值最大化,事半功倍。
希望这篇推文能为你提供一些启发,也期待大家加入我们的社群参与讨论,分享你的实践经验!