RUCer
RUCer
yes I have run the model 3 times and the results are as follows: 36.36, 37.11, 36.39
we download the data in https://zenodo.org/record/6408497#.Y_MDMuxBy3I.
您好,请问第一个问题的id是什么,我可以先复现一下。然后也确认下这个id对应的构象是8个吗,因为不是所有的id都有8个构象;第二个问题确实是的,是把mol对象的坐标换成预测的坐标来生成的
1:不确定这里是怎么输出的每个id对应的构象坐标shape,如果可以的话可以提供一下相应的代码。不过不是所有id对应的构象都是8个,如果按照给出的图里全都是按照8个来切分,可能混淆了不同id的分子,所以原子数不一样。 2. 这篇论文里我们最终是为了获得预测的homo lumo gap,所以没有返回最终的预测坐标,在得到不同构象下的pos_pred之后没有再做处理了。 3. rdkit_remove_hs(mol)返回的是一个不带H的mol对象,我们show case的时候是基于这个mol对象进行的坐标替换再展示画图,过程中都没有H。
不好意思没有看到您的回复,你理解的其实也差不多,这里把所有分子的原子数都置为max_node_num是为了能用pytorch并行处理一个batch内的所有分子,需要所有tensor的shape一致,所以这里用padding操作,把batch的的分子的原子数补充成相同的数目;为了使得padding的内容不实际影响模型的运算结果,所以使用atom_mask和attn_mask让padding的内容不参与实际运算;因为这篇工作我们只预测分子的能量并不取出分子坐标独立研究,所以没有对返回的分子坐标处理padding的部分,所以看起来同一个分子生成的坐标在不同batch内shape不一样。实际上如果需要取出真实原子的坐标,去掉padding的部分,可以利用atom_mask,把每个分子的atom_mask=1的位置对应的坐标取出,就是所有真实原子的坐标; 或者假设真实原子数为k,可以取出前k个坐标,利用数据中的smiles生成rdkit初始构象,再将前k个坐标填入即得到预测的3d构象(需要原始数据中的smiles不然可能没法对应)。 至于show case中选择的标准是什么,这里其实我们就选择了几个能量预测误差相对小的case展示了一下,没有过多的特殊筛选。