Snippy 怎么用?一份从安装到多样本比对的完整实操笔记
【免费下载链接】snippy:scissors: :zap: Rapid haploid variant calling and core genome alignment项目地址: https://gitcode.com/gh_mirrors/sn/snippy
Snippy 是一套面向单倍体基因组的快速变异检测流水线,它能在参考序列与测序数据之间一次性定位 SNP 和插入缺失,并自动完成注释与核心基因组比对。如果你是做细菌、病毒或质粒测序的研究人员,下面这份笔记会按"选型 → 安装 → 首跑 → 批量"的顺序,带你走完从零到产出变异清单的全过程。
它到底帮你做什么
设想一个常见场景:你手上有十几个样本的测序数据,想快速知道它们相对某个参考基因组各自发生了哪些突变,还想比较它们之间的亲缘关系。手工比对、逐位筛查显然不现实,Snippy 就是把这条流水线压缩成一条命令的工具。
- 适用对象:细菌、病毒、质粒、线粒体等单倍体基因组
- 输出内容:变异位点清单(VCF/TAB)、比对文件(BAM)、修正版基因组(consensus)、核心 SNP 比对(core.aln)
- 工作方式:内部依次调用 bwa 做比对、freebayes 找变异、snpEff 做注释,对外只暴露一个入口
| 输入形态 | 适用情况 |
|---|---|
| 双端 FASTQ | 最常见的 Illumina 测序产物 |
| 单端 FASTQ | Ion Torrent 等平台,或双端文件只剩其一 |
| contigs | 原始 reads 已丢失,仅剩拼装结果 |
⚠️ 注意:Snippy 面向单倍体样本。人类这类二倍体需要区分杂合位点,不在它的处理范围内。
开工前,先核对这几样
- ✅ 参考基因组:FASTA 或 GenBank 格式均可,多 contig 不影响
- ✅ 测序数据:FASTQ 或 FASTA,支持 gzip 压缩
- ✅ 一个专门存放结果的文件夹
- ✅ 硬件:多核 CPU 能显著提速(官方在 64 核机器上验证过)
- ✅ 外部依赖:bwa、minimap2、samtools、bcftools、bedtools、freebayes、snpEff、samclip、seqtk 等
最后一项最容易被忽视:Snippy 本体只是一个调度脚本,真正干重活的是背后那一串外部程序。任何一个缺失,流程都会在中途停下。所以判断安装是否成功,不能只看 Snippy 本身。
三条安装路径怎么取舍
| 路径 | 适合谁 | 优点 | 要注意什么 |
|---|---|---|---|
| Conda | 大多数用户 | 依赖自动装齐、环境隔离、卸载干净 | 需要先配置好 Bioconda 源 |
| Homebrew | macOS 用户 | 一条命令搞定,与系统软件统一管理 | 依赖按 brew 方式处理 |
| 源码 | 想追最新版的人 | 代码最新、便于二次开发 | 依赖全部自己装,PATH 需手动配置 |
Conda 路线,一条命令把依赖一起装齐:
conda install -c conda-forge -c bioconda -c defaults snippyHomebrew 路线:
brew install brewsci/bio/snippy源码路线,先把代码拿到手,再补依赖:
git clone https://gitcode.com/gh_mirrors/sn/snippy.git export PATH=$PWD/snippy/bin:$PATH源码方式只是拿到 Snippy 本体,配套程序仍需另行安装,例如:
conda install -c bioconda bwa samtools bcftools freebayes snpeff samclip seqtk连续实操:装完 → 验证 → 跑第一个案例
第 1 步:确认版本号。
snippy --version预期会打印出版本字符串(当前仓库为 5.0.0-dev);如果提示找不到命令,多半是 PATH 没配对,回头检查一下路径配置。
第 2 步:检查全部依赖。
snippy --check命令会逐个探测比对、排序、变异识别、注释等环节用到的外部程序,可用的显示 OK 或版本信息。若有缺失就针对性补装,然后重新检查,直到全部通过。这一步值得认真做——检查通过再上真实数据,能避免跑到一半才发现缺工具。
第 3 步:准备一份练手数据。
仓库的 test 目录里已经备好 example.fna(参考序列)、example.gbk(带注释版本)和 example.bed(区域文件)。真实 reads 文件比较大,先用 wgsim 按参考序列模拟一对双端 reads:
cd test wgsim -S 7 -h -r 0.005 -N 12000 -1 100 -2 100 -d 200 example.fna sim_1.fq sim_2.fq这行命令的作用:以参考序列为模板,随机撒入约 0.5% 的变异,生成 1.2 万对、长度 100 bp 的虚拟双端 reads,用来验证整条流程是否通畅。
第 4 步:正式检出变异。
snippy --cpus 4 --outdir demo1 --ref example.fna --R1 sim_1.fq --R2 sim_2.fq运行过程中会依次看到比对、变异识别等阶段日志,收尾时打印结果目录路径并显示 Done。
第 5 步:查看产出。
ls demo1此时文件夹里已经躺着整套标准产物。
结果文件夹里都有什么
| 文件 | 作用 |
|---|---|
| snps.vcf | 注释后的标准变异文件 |
| snps.tab / snps.csv | 便于阅读的表格汇总 |
| snps.bam | 比对结果,含未比对与多比对 reads |
| snps.consensus.fa | 把变异回贴到参考序列的"修正版基因组" |
| snps.raw.vcf / snps.filt.vcf | 过滤前后的变异记录 |
| snps.html | 可在浏览器打开的网页版汇总 |
想直接看变异清单,执行:
head -5 demo1/snps.tab表格各列的含义依次是:变异所在的序列名(CHROM)、位置(POS)、类型(TYPE,取值 snp/mnp/ins/del/complex)、参考碱基(REF)、样本碱基(ALT)、支持各碱基的 reads 计数(EVIDENCE)。
如果参考用的是 example.gbk 这类带注释的文件,表格还会多出基因名、产物描述和影响效应列——变异落在哪个基因、是否改变氨基酸,一眼就能看到,这是 Snippy 很贴心的设计。
从单样本扩展到批量分析
样本一多,逐个手敲命令就不现实了。Snippy 提供了批量入口:先准备一个制表符分隔的清单文件 input.tab,每行描述一个样本:
SampleA /path/to/A_1.fq.gz /path/to/A_2.fq.gz SampleB /path/to/B.fq.gz SampleC /path/to/C.contigs.fa生成并检查批量脚本:
snippy-multi input.tab --ref Reference.gbk --cpus 16 > runme.sh less runme.sh确认脚本内容无误后放行:
sh runme.sh脚本会逐个样本输出结果文件夹,并在末尾自动调用 snippy-core,把所有样本都有覆盖的位点聚合成核心 SNP 比对,产出 core.aln(多序列比对)和 core.vcf(多样本 VCF)。core.aln 可以直接交给 FastTree 等建树工具绘制系统发育树,做亲缘关系分析。
三个高频调参场景
场景一:深度太高,跑得特别慢。有的样本深度高达上千倍,而多数变异在 50~100 倍深度下就能可靠检出。用 --subsample 按比例随机抽读:
snippy --subsample 0.1 --outdir demo2 --ref ref.fna --R1 R1.fq.gz --R2 R2.fq.gz场景二:只关心特定区域。比如只想筛耐药基因上的突变,把目标区域写进 BED 文件,用 --targets 限定范围,能省下大量计算:
snippy --targets sites.bed --outdir demo3 --ref ref.fna --R1 R1.fq.gz --R2 R2.fq.gz场景三:只有 contigs 没有原始 reads。改用 --ctgs 传入 contigs 文件,Snippy 会把它撕成约 250 bp 的伪 reads 再比对,产物与 reads 样本完全兼容,可以混在一起参与批量分析:
snippy --outdir demo4 --ref ref.fna --ctgs sample.fasta另外三个核心过滤参数也值得记住:--mincov(位点最少覆盖数,默认 10)、--minfrac(支持变异碱基的最低比例)、--minqual(最低质量值,默认 100),它们共同决定了最终哪些变异会被保留。
出问题时的排查速查表
| 症状 | 常见原因 | 处理办法 |
|---|---|---|
| 提示 command not found | PATH 没配好或依赖缺失 | 用 which 逐个定位缺失工具,补进 PATH 或补装 |
| 运行极慢 | 数据深度过高 | 用 --subsample 按比例抽读 |
| --check 报某项缺失 | 外部依赖未安装 | 用 conda 补装对应包,再重跑检查 |
| 结果缺注释列 | 参考文件是 FASTA 而非 GenBank | 换成带注释的 .gbk 文件重跑 |
收尾:跑通之后继续做什么
- 用测试数据完整走一遍"验证 → 单样本 → 批量"的流程,把每个环节的输出记在脑子里,再碰真实数据。
- 正式样本开跑前备份好原始 reads,并为每个样本建立清晰的命名规范,方便日后追溯。
- 记录 --version 的输出和关键参数——变异检测结果与版本强相关,注明版本能让你的结果更可信、可复现。
- 进阶方向:结合 --report 生成逐位点可视化报告,或把 core.aln 送入建树、重组过滤流程做群体分析。
Snippy 的价值在于把"比对—变异识别—注释—汇总"这条长流水线封装成一条命令。当你把第一份 reads 顺利变成一张清晰的变异表格时,后续的群体分析和系统发育研究也就有了可靠的数据地基。
【免费下载链接】snippy:scissors: :zap: Rapid haploid variant calling and core genome alignment项目地址: https://gitcode.com/gh_mirrors/sn/snippy
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考