DeepVirFinder使用指南
上期介绍完《基于深度学习的病毒序列识别》后,不少小伙伴后台私信小编要求讲解一下DeepVirFinder使用指南,这里就给大家安排上。
DeepVirFinder[1]使用深度学习方法预测病毒序列。该方法对短病毒序列具有较好的预测精度,可用于从宏基因组数据中预测序病毒列。与基于k-mer的VirFinder方法相比,DeepVirFinder通过使用卷积神经网络(CNN)显著提高了预测精度。CNN可以自动从病毒和原核生物序列中学习基因组模式,同时根据学习到的基因组模式建立预测模型。
依赖关系
DeepVirFinder是基于python语言开发的软件,因此安装前需要部署好相关的python包,部署命令如下:
pip install numpy theano keras scikit-learn Biopython
安装
DeepVirFinder的安装非常简单,利用git clone命令
git clone https://github.com/jessieren/DeepVirFinder
cd DeepVirFinder
chmod 755 dvf.py
其中dvf.py即为执行主程序
使用指南:
DeepVirFinder的输入是fasta文件,其中包含要预测的序列,输出是.txt文件,其中包含每个输入序列的预测分数和p值。分数越高或p值越低,表明存在病毒序列的可能性越大。p值是通过比较原核生物序列的预测分数和零分布来计算的。
默认情况下,输出文件将位于与输入文件相同的目录中。用户还可以通过选项[-o]指定输出目录。选项[-l]用于设置最小的序列长度阈值,小于该阈值的序列不会进入预测流程。该程序还支持并行计算。使用[-c]指定要使用的线程数。选项[-m]用于为模型指定目录。默认的模型目录是./models,其中包含系统自带的训练和使用的模型。
python dvf.py [-i INPUT_FA] [-o OUTPUT_DIR] [-l CUTOFF_LEN] [-c CORE_NUM]
-h, --help show this help message and exit
-i INPUT_FA, --in=INPUT_FA
input fasta file
-m MODDIR, --mod=MODDIR
model directory (default ./models)
-o OUTPUT_DIR, --out=OUTPUT_DIR
output directory
-l CUTOFF_LEN, --len=CUTOFF_LEN
predict only for sequence >= L bp (default 1)
-c CORE_NUM, --core=CORE_NUM
number of parallel cores (default 1)
如果筛选过程想使用q值(FDR),可以通过R包qvalue进行相应计算
#安装qvalue包
BiocManager::install(“qvalue”)
#载入qvalue包
library(qvalue)
#读取预测结果
result <- read.table("dvfpred.txt", sep=“\t”)
#计算qvalue
result$qvalue <- qvalue(result$pvalue)$qvalues
#依据qvalue值进行相应排序,方便后续筛选
result[order(result$qvalue),]
第三方模型训练:
如果想针对已知特殊环境结构体系提高预测精度,大家可以构建并训练自己的模型。此步骤操作需要四份文件。
用于训练的宿主基因组序列 host_tr.fa
用于验证宿主基因组序列 host_val.fa
用于训练病毒基因组序列 virus_tr.fa
由于验证病毒基因组序列 virus_val.fa
encode.py脚本通过将输入基因组序列分割为固定长度的序列[-l]来处理这些序列,并使用One-Hot编码方法对它们进行编码。contig类型[-p]设置序列是病毒或宿主的类型。此参数将被编码到文件名中,并将在以下步骤中用于数据类型识别。建议对基因组切割的时候采用多种长度切割。
for l in 150 300 500 1000
do
# for training
python encode.py -i ./train_example/tr/host_tr.fa -l $l -p host
python encode.py -i ./train_example/tr/virus_tr.fa -l $l -p virus
# for validation
python encode.py -i ./train_example/val/host_val.fa -l $l -p host
python encode.py -i ./train_example/val/virus_val.fa -l $l -p virus
done
for l in 150 300 500 1000
do
python training.py -l $l -i ./train_example/tr/encode -j ./train_example/val/encode -o ./train_example/models -f 10 -n 500 -d 500 -e 10
done
#ok,可以愉快的使用自己构建的模型了
python dvf.py -i test.fa -o test -l 300 -m ./train_example/models
[1] Ren, J., et al., Identifying viruses from metagenomic data using deep learning. Quantitative Biology, 2020. 8(1): p. 64-77.