
Snippy 变异检测工具安装全攻略四步跑通你的第一个 SNP 检出【免费下载链接】snippy:scissors: :zap: Rapid haploid variant calling and core genome alignment项目地址: https://gitcode.com/gh_mirrors/sn/snippySnippy 是一款面向单倍体基因组细菌、病毒、质粒等的快速变异检测工具它能把测序 reads 与参考基因组逐位比对一次性找出 SNP、插入缺失indel还能对多个样本做核心基因组比对。本文不打算干巴巴地罗列安装命令而是带你沿着搞清工具 → 选对路线 → 体检确认 → 跑通案例这条思路走一遍每一步都附上可对照的预期结果让新手也能稳稳落地。安装前先避开三个误区Snippy 不是你想的那样在动手敲命令之前先花两分钟校正三个常见的错误认知能帮你省下后面排错的大量时间。误区一以为 Snippy 只能处理细菌。实际上只要基因组是单倍体每个位置只有一份拷贝Snippy 都能处理——细菌、病毒、质粒、线粒体都没问题。反而是人类这种二倍体样本不适合它因为二倍体需要区分杂合位点那不是 Snippy 的定位。误区二以为必须有双端测序数据。Snippy 默认接收--R1/--R2双端 FASTQ但单端 reads 照样能跑更贴心的是如果你手里只有拼装好的 contigs、原始 reads 已经丢了它也能用--ctgs选项把 contigs 撕成虚拟 reads 来比对。误区三以为装好 Snippy 就万事大吉。这是最大的坑。Snippy 本身更像一个调度员真正干重活的是 bwa比对、freebayes变异识别、samtools/bcftoolsBAM/VCF 处理、snpEff注释等一大串外部工具。任何一个缺失运行都会中途卡住。把这三点记在心里接下来选安装方式时你就知道该关注什么了——依赖能不能被一并解决比 Snippy 本身装没装上更重要。三条安装路线怎么选Conda、Homebrew 还是源码先看一张对比表再按自己的情况对号入座路线适合谁优点需要留意的点Conda想省心、怕依赖地狱的大多数人依赖自动装齐环境隔离卸载干净需要先装好 Bioconda版本可能比最新版略旧HomebrewmacOS或装了 LinuxBrew 的 Linux用户一条命令搞定和系统其他工具统一管理依赖按 brew 方式处理个别工具可能需要额外步骤源码安装想追最新功能、愿意自己动手的人永远拿到最新代码方便二次开发PATH 要手动配外部依赖全部自己装想省心就选 Conda 一键安装只要你的机器上已经有 Bioconda一条命令就能把所有依赖一起装齐conda install -c conda-forge -c bioconda -c defaults snippy预期结果conda 会打印一串待安装的包列表其中除了 snippy 本身还会看到 bwa、freebayes、samtools 等依赖包全部装完后回到命令行提示符。macOS 用户优先考虑 Homebrewbrew install brewsci/bio/snippy这条命令会自动解决依赖适合平时习惯用 brew 管理软件的用户。想追最新版就走源码安装源码方式获取的是当前仓库里的最新代码适合等不及 conda 包更新的场景# 克隆仓库到当前目录 git clone https://gitcode.com/gh_mirrors/sn/snippy.git # 把 bin 目录加入 PATH注意用的是 PWD 里的实际路径 export PATH$PWD/snippy/bin:$PATH预期结果此时敲snippy --help应该能弹出完整的参数说明而不是 command not found。这里要提醒一句源码路线只是把 Snippy 本体拿到手bwa、samtools、freebayes、snpEff 这些依赖需要你另外装好例如用conda install -c bioconda bwa samtools bcftools freebayes snpeff。嫌麻烦的话回去选第一条路线会更舒服。安装后两分钟体检--version 与 --check 一条不能少装完别急着上真实数据先用两条命令给环境做个体检。第一步确认版本号snippy --version预期结果终端打印出版本字符串类似snippy 5.0.0-dev。如果这里报错说明 Snippy 本体就没装好回到上一步检查 PATH。第二步检查全部依赖snippy --check预期结果工具会逐个探测 bwa、minimap2、samtools、bcftools、bedtools、freebayes、snpEff 等组件每个可用项旁边显示 OK 或对应的版本信息。如果看到某个组件标记为缺失或找不到就针对它单独补装。用 conda 环境的话最省事conda install -c bioconda samtools bcftools bwa freebayes snpeff samclip seqtk补装完成后重新跑一遍snippy --check直到全部通过为止。这一步值得认真对待——体检合格再开工能避免在正式数据上跑到一半才发现缺工具。第一个实战案例用项目自带测试数据跑通 SNP 检出仓库的test目录里放着一套现成的测试材料example.gbk带注释的参考基因组、example.fna参考序列、example.bed区域文件。我们的第一个案例就用它们来完成。由于真实测序 reads 文件比较大这里先用 wgsim 根据参考序列模拟一对双端 readstest/Makefile里的官方测试流程也是这么做的# 1. 生成模拟双端 reads约 12000 对含 0.5% 的随机变异 wgsim -S 1 -h -r 0.005 -N 12000 -1 100 -2 100 -d 200 example.fna R1.fq R2.fq # 2. 正式跑变异检测--outdir 指定结果文件夹 snippy --cpus 4 --outdir my_first_run --ref example.fna --R1 R1.fq --R2 R2.fq预期结果运行过程中会依次看到 bwa 比对、freebayes 变异识别等日志最后打印类似下面的收尾信息Walltime used: 3 min, 42 sec Results folder: my_first_run Done.跑完后进结果目录看一眼ls my_first_run你会看到snps.vcf标准 VCF 变异文件、snps.tab易读的表格汇总、snps.bam比对文件、snps.consensus.fa把变异回贴到参考上得到的修正版基因组等一整套产物。用下面命令打开表格看前几行head -5 my_first_run/snps.tab每列的含义如下CHROM是变异所在的序列名POS是位置TYPE是变异类型snp/mnp/ins/del/complexREF和ALT分别是参考碱基和样本碱基EVIDENCE给出支持各碱基的 reads 计数。如果你的参考用的是example.gbk这类带注释的文件表格里还会多出基因名、产物描述和 snpEff 预测的影响效应列——这也是 Snippy 一个很贴心的设计直接告诉你变异落在哪个基因、会不会改变氨基酸。到这里你的第一个 SNP 检出案例已经跑通了。从单样本到批量snippy-multi 与核心基因组比对单个样本跑通后你大概率会遇到这个真实场景手里有十几个样本都要跟同一个参考基因组比对还想知道它们之间的亲缘关系。一个个手敲snippy命令显然太低效。Snippy 为此准备了批量入口snippy-multi。你只需要准备一个制表符分隔的清单文件input.tab每行一个样本格式为样本ID 双端reads 或 单端reads 或 contigsIsolate1 /path/to/R1.fq.gz /path/to/R2.fq.gz Isolate2 /path/to/SE.fq.gz Isolate3 /path/to/contigs.fa然后执行snippy-multi input.tab --ref Reference.gbk --cpus 16 runme.sh # 先检查生成的脚本内容是否符合预期 less runme.sh # 确认无误后再放行让它跑完所有样本 sh runme.sh批跑结束后Snippy 会自动调用snippy-core把所有样本中都有覆盖的基因组位置挑出来形成核心 SNP 比对产物是core.aln多序列比对、core.vcf多样本 VCF等文件。你可以把core.aln直接丢给 FastTree 等建树工具画系统发育树。预期结果脚本执行时会按样本逐个输出结果文件夹最后你会看到类似Found 2814 core SNPs from 96615 SNPs.的汇总行意思是总共有 96615 个变异位点其中 2814 个是全体样本共有的核心 SNP。高频报错自救手册跑不起来时先查这四处工具装好了案例跑通了但真实数据往往没那么听话。下面四个问题按出现频率排序遇到时直接对照处理。问题一提示command not found。多半是 PATH 没配好。用which snippy或which bwa逐个排查找到缺失的那个工具把它的目录加进 PATH或者干脆改用绝对路径调用。问题二数据深度太高跑得特别慢。有时候一个样本的测序深度高达上千倍而绝大多数变异在 50~100 倍深度下就已经能可靠检出。此时可以用--subsample参数按比例随机抽读例如深度约 1000x、只需要 100x 时snippy --subsample 0.1 --outdir out --ref ref.fna --R1 R1.fq.gz --R2 R2.fq.gz运行日志里会出现 Sub-sampling reads at rate 0.1 的提示速度提升立竿见影。问题三只想关注特定基因区域不想全基因组筛。比如只关心耐药基因上的突变那就把感兴趣的区域写进一个 BED 文件用--targets限定范围能省下大量计算时间snippy --targets sites.bed --outdir out --ref ref.fna --R1 R1.fq.gz --R2 R2.fq.gz问题四只有 contigs 没有原始 reads。直接改用--ctgs传入 contigs 文件即可Snippy 会把它撕成 250 bp 的伪 reads 再做比对输出目录与 reads 样本完全兼容可以混在一起参与snippy-core分析。收尾装好之后接下来该做什么回顾一下整条路线先避开依赖不重要的认知坑再按自己的环境从 Conda、Homebrew、源码三条路线里选一条装完后用--version和--check给环境做体检然后用test目录的测试材料跑通第一个案例学会看snps.tab的输出列最后通过snippy-multi把流程扩展到批量样本和核心基因组比对。接下来建议你做三件事先用测试数据完整走一遍snippy --check → 单个样本 → 批量的流程把每一步的预期输出都记在脑子里再碰真实数据。真实样本跑之前备份好原始 reads并给每个样本取一个清晰的 ID方便日后追溯。把版本号和关键参数记下来。变异检测结果跟版本强相关写文章或汇报时注明snippy --version的输出能让你的结果更可信、可复现。Snippy 的价值在于把比对—变异识别—注释—比对输出这条长流水线封装成了一条命令。当你能熟练地把第一份 reads 变成一张清晰的变异表格时后面的群体分析和系统发育研究也就有了可靠的数据地基。【免费下载链接】snippy:scissors: :zap: Rapid haploid variant calling and core genome alignment项目地址: https://gitcode.com/gh_mirrors/sn/snippy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考