上期介绍完《基于深度学习的病毒序列识别》后,不少小伙伴后台私信小编要求讲解一下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. 原文解读 |
|