SNPhylo是一个基于SNP数据构建群体系统发生树的流程工具,它能接受VCF,HapMap和简单SNP数据格式作为输入,经过一系列的过滤(低质量数据、连锁不平衡)得到用于构建系统发生树的输入数据,最后会自动调用DNAML构建ML树,得到最终的结果。当然你可以把它当作一个过滤工具,用它生成Phylip输入文件。
安装依赖环境:
- R(getopt, phangorn, gdsfmt,SNPRelate): 实现LD过滤
- Python 2.7: 数据转换和过滤由python编写
- MUSCLE: 实现序列联配,可选步骤
- PHYLIP: 构建ML树
将这些软件放在环境变量中,或者你需要记住这些软件的安装位置。
接着从GitHub上下载该软件,最新版是20180901,支持多核CPU但是不支持压缩的VCF文件。
git clone https://github.com/thlee/SNPhylo.git
最后运行setup.sh进行配置
cd SNPhylo
bash setup.sh
# 配置信息
# Version: 20180901
#START TO SET UP FOR SNPHYLO!!!
#The detected path of R is /usr/local/bin/R. Is it correct[Y/n] y
#The detected path of python is /opt/sysoft/Python-2.7.15/bin/python. Is it correct[Y/n] y
#The detected path of muscle is /opt/biosoft/muscle/muscle. Is it correct[Y/n] y
#The detected path of dnaml is /opt/biosoft/phylip-3.697/dnaml. Is it correct[Y/n] y
#SNPHYLO is successfully installed!!!
流程的入口是snphylo.sh
,使用起来非常方便,以测试数据集为例进行介绍
curl -O http://chibba.pgml.uga.edu/snphylo/soybean.hapmap.gz
gunzip soybean.hapmap.gz
snphylo.sh -H soybean.hapmap
最终会生成一系列以snphylo.output
作为前缀的文件,其中snphylo.output.phylip.txt
可以作为其他建树软件的输入文件。
除了默认参数外,主要需要考虑的是过滤参数的设置, 然后我发现代码里面有一个参数比较奇怪,-p
参数对应了Maximum_PLCS
和Maximum_PNSS
- -c: 最低覆盖深度(5)
- -l: LD阈值(0.1)
- -m: 次等位基因频率阈值(MAF,0.1)
- -M: 缺失率(0.1)
- -a: 最后一个常染色体的编号。这意味着你的染色体编号必须是纯数字
学习这个软件并不意味着我们一定要用,我们可以借鉴流程的思路,使用其他软件实现相同的处理。