====== PhaGCN2 ======
PhaGCN2是一个基于GCN的模型,它可以通过深度学习分类器学习物种屏蔽特征,用于新的病毒分类。要使用PhaGCN2,只需要将contigs输入到程序中。
{{ :yuxi:phagcn.png?600 |}}
===== 用法 =====
在你每次使用它之前,你需要运行的是
source /TJPROJ1/META_ASS/soft/anaconda3/bin/activate /TJPROJ1/META_ASS/soft/PhaGCN2.0-main
export MKL_SERVICE_FORCE_INTEL=1
在这里,我们举了一个例子来展示如何运行PhaGCN2。我们支持Github文件夹中一个名为“contigs.fa”的文件,其中包含从大体大体噬菌体模拟的contigs。你唯一需要运行的命令是
python run_Speed_up.py --contigs contigs.fa --len 8000 --outpath result
程序有两个参数:
* --contigs是您的contigs文件的路径。
* --len是你想预测的contigs的长度。正如我们的论文所示,随着contigs的长度的增加,召回和精度也会增加。我们建议您根据您的需求选择合适的长度。默认长度为8000bp。支持的最短长度为1700bp。输出文件是final_prediction.csv。这个csv文件中有三列:“contig_name,median_file_name,prection”。
===== 训练自己的病毒分类数据库 =====
如果您想训练自己的病毒分类数据库,请按照以下步骤操作。
=== 首先,您需要使用gpu模式(确保您在系统上安装了cuda)并运行 ===
pip install bio
pip install torch
sudo apt install prodigal
cd CHEER
sh creat.sh
=== 第一步:在此步骤中,您需要将病毒序列(已知家族)放入不同的文件夹中,分为训练集和验证集。确保您的病毒序列超过1700BP。(如果您有分段病毒,将其组合成单个序列,否则,它将被分为几种不同类型的病毒)以ICTV 2021年记者为例,Lipothrixviridae中有11个病毒序列。随机划分10个序列中的9个用于进行训练集,1个用于进行测试集。将9个训练集序列组合到一个名为Lipothrixviridae的序列文件中,并将其放入火车文件夹中。将一个验证集序列组合到一个名为Lipothrixviridae的序列文件中,并将其放入验证文件夹中。另一个家族也是如此。(确保验证集不是空的)。===
bash code/re_train_script.sh
* 训练你的数据集CNN模型
python3 train.py --n 8 --gpus 1 --weight "1,1,1,1,1,1,1,1"
--n是您的家族数量,--weight是权重系数,重量中的数字等于n的数量,--gpu是您拥有的Gpus数量,这将生成两个文件Embed.pkl和Params.pkl,替换CNN_Classifier文件夹中同名的两个文件。它需要大约250GB的内存(数据集越大,所需的内存就越多)。
=== 第二步:将所有序列文件合并到一个文件中,并将其命名为all_pre.fasta,然后将其移动到CHEER文件夹。然后运行:===
python3 deal_all_pre.py
* 请修改您的数据集,直到没有报告标签错误(标签应包含至少一个空格)。获取TXT文本中的序号和相应的姓氏,并命名为taxa.txt(用制表符分隔),然后将其放入CHEER文件夹中。运行:
python3 deal_result.py
* 它生成一个结果文件夹,在此文件夹中,将Code.txt的第一行替换为PhaGCN正文中run_GCN.py的第159行,第二行替换为run_Knowledgegraph.py的第643行,其他五个文件替换了数据库文件夹中的五个文件中的每个文件。3.第三步:将run_CNN.py第76行的默认n更改为第二步中的--n数字,将all_simple_pre.fasta复制到您的PhaGCN文件夹并运行():
python3 pre_train.py --contig all_simple_pre.fasta --len 1700
* 运行后,将Cyber_data文件夹中的contig.F重命名为dataset_compressF,并将文件替换为数据库文件夹中的相同名称。
(示例见CHEER/train_example文件夹)
====== 如果您想使用PhaGCN,您需要注意三件事 ======
- 确保你所有的contigs都是病毒contigs。您可以使用VirSorter或DeepVirFinder来清除细菌
- 脚本将传递带有非ACGT字符的contigs,这意味着这些非ACGT contigs将保持不可预测。
- 如果程序输出错误(由您的机器引起):错误:mkl-service + Intel(R) MKL:MKL_THREADING_LAYER=INTEL与libgomp.so.1库不兼容。您可以在运行run_Speed_up.py之前输入命令export MKL_SERVICE_FORCE_INTEL=1
- 如果您想训练自己的病毒分类数据库,硬件要求可能相当可观(超过48 GB,至少一个GPU),这主要取决于数据集的大小和复杂性。(内存需求和即将分析的序列之间的关系)
----
* 普通列表项目官方地址:[[https://github.com/KennthShang/PhaGCN2.0]]
* 测试脚本:[[/TJPROJ1/META_ASS/soft/PhaGCN2.0-main/w.sh]]
* 测试结果路径:[[/TJPROJ1/META_ASS/soft/PhaGCN2.0-main/result/]]