分享

DeepVirFinder使用指南

 深圳易基因科技 2021-01-14

上期介绍完《基于深度学习的病毒序列识别》后,不少小伙伴后台私信小编要求讲解一下DeepVirFinder使用指南,这里就给大家安排上。

DeepVirFinder[1]使用深度学习方法预测病毒序列。该方法对短病毒序列具有较好的预测精度,可用于从宏基因组数据中预测序病毒列。与基于k-merVirFinder方法相比,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),可以通过Rqvalue进行相应计算

#安装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.


原文解读

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多