源码出处:之前已经写过
首先这个代码有很多bug,需要慢慢修复
解决Importrror:主要原因是代码内部有很多引用模块,遇到这个问题可以用延迟引用,或者重构代码的模块(比较困难哈),我用的第一种,别人已经写好的代码重构会有很多改变,建议不要这么做
复现SyntaLinker:查看readme文件
第一步:创建环境:这里不详细叙述,有环境文件,直接用conda env create -f environment.yml创建,环境名SyntaLinker 避雷提醒:在安装环境时最好看一看自己的服务器配置,如果torch和cuda版本不对应是用不起来的,如果有的包安装不上建议从环境文件中删除,单独安装
第二步:进入环境: conda activate SyntaLinker
第三步:预处理,对于输入文件进行预处理,bash preprocess.sh
输出文件在:* saving 0th valid data shard to data/ChEMBL/.valid.0.pt.
第四步:训练,开始模型训练,bash training.sh
-save_checkpoint_steps 1000 -train_steps 10000 ,这两个训练的参数经过了缩小,原来是训练50万步,每1万步保存一次
第五步:为了达到最好的结果,取最后10次的训练模型进行优化,bash average_models.sh
注:第四步和第五步的结果在./checkpoints/ChEMBL中
第六步:测试,为了生成分子用translate.py,其中需要注意:这个文件中有几个参数需要自己定义,
后面定义训练过程的参数-model checkpoints/ChEMBL/ChEMBL_model_average.pt -src data/ChEMBL/tgt-test.txt -output /predictions__ChEMBL_model_average.pt_on_ChEMBL_beam10.txt -batch_size 64 -replace_unk -max_length 200 -beam_size 10 -verbose -n_best 10
在复现过程中可以适当缩小,后面跑通再恢复,-src可以是自己的数据集
python translate.py -model checkpoints/ChEMBL/ChEMBL_model_average.pt -src data/ChEMBL/tgt-test.txt -output /predictions__ChEMBL_model_average.pt_on_ChEMBL_beam10.txt -batch_size 64 -replace_unk -max_length 200 -beam_size 10 -verbose -n_best 10
python translate.py -model checkpoints/ChEMBL/ChEMBL_model_average.pt -src data/ChEMBL/tgt-test.txt -output checkpoints/predictions_beam10.txt -batch_size 2 -replace_unk -max_length 5 -beam_size 5 -verbose -n_best 5
$testing_beam_search.sh这个文件因为一些原因没能运行起来。
第七步:评价,一些指标, bash recovery.sh,用上面的输出文件predictions__ChEMBL_model_average.pt_on_ChEMBL_beam10.txt 作为输入
到此结束
关于数据的一些问题:在代码压缩包中作者并没有给原始数据,因为这项工作他们之前做过了,所以直接给的处理后的数据,如果有需要自己处理原始数据需要去Utils文件家中有两个mmps算法的文件。