TourchDrug挺牛逼,但官网给的代码总会出现一些问题,在此做些记录以便自己回顾。
1.从哪儿复制代码
点主页最下方的图标可以进colab,那儿的代码要新一点
2.Error checking compiler version for cl: [WinError 2] 系统找不到指定的文件
把cl.exe所在目录加入Path环境变量,如
D:\ProgramData\Microsoft\Visual Studio itself\VC\Tools\MSVC\14.28.29333\bin\Hostx64\x64
加完后记得重启!!!
3.到synthon_solver.train(num_epoch=1)时报错
错误1:assert(reactant.num_nodes >= synthon.num_nodes).all()处报错
这处困扰了我很久,一直没找到解决办法,assert(reactant.num_nodes >= synthon.num_nodes).all()也不能注释,不然后面训练会报错。debug发现synthon.num_nodes比reactant.num_nodes多了1000多个。
最后跟其他地方的代码对比发现了问题。错误在最开始获取数据集的地方:
出错代码:
synthon_dataset = datasets.USPTO50k("./molecule-datasets/", node_feature="synthon_completion", kekulize=True)
修改为:
synthon_dataset = datasets.USPTO50k("./molecule-datasets/", as_synthon=True, node_feature="synthon_completion", kekulize=True)
中间加了个as_synthon=True就解决了。
错误2:Can't kekulize mol. Unkekulized atoms: 11
有不能kekulize化的分子。
解决方法:
找到Chem.Kekulize(mol)函数位置,将其修改为:
try:
Chem.Kekulize(mol)
except Chem.rdchem.KekulizeException:
pass
这样运行时虽然会出现一大堆红色的Can't kekulize mol. Unkekulized atoms: 但不影响运行。