复现ChemicalX教程示例时遇AttributeError: Molecule无dummy_atom属性
问题与解决方案
问题描述
复现ChemicalX官方教程示例时触发错误:
AttributeError: type object 'Molecule' has no attribute 'dummy_atom'
已确认torchdrug的Molecule类确实不存在dummy_atom属性,但无法自行解决。相关代码如下:
from chemicalx.data import DrugCombDB, BatchGenerator import torch from chemicalx.models import DeepSynergy loader = DrugCombDB() context_set = loader.get_context_features() drug_set = loader.get_drug_features() triples = loader.get_labeled_triples() train, test = triples.train_test_split(train_size=0.5) generator = BatchGenerator(batch_size=1024, context_features=True, drug_features=True, drug_molecules=False, context_feature_set=context_set, drug_feature_set=drug_set, labeled_triples=train) model = DeepSynergy(context_channels=112, drug_channels=256) optimizer = torch.optim.Adam(model.parameters()) model.train() loss = torch.nn.BCELoss() for batch in generator: optimizer.zero_grad() prediction = model(batch.context_features, batch.drug_features_left, batch.drug_features_right) loss_value = loss(prediction, batch.labels) loss_value.backward() optimizer.step()
原因分析
该错误源于ChemicalX与torchdrug版本不兼容:教程编写时依赖的torchdrug版本包含Molecule.dummy_atom属性,但后续torchdrug版本移除了该属性,当前使用的ChemicalX代码仍在调用这个已被移除的属性。
解决步骤
方法1:安装兼容版本的torchdrug(推荐)
执行以下命令安装与ChemicalX兼容的torchdrug旧版本:
pip install torchdrug==0.1.2
安装完成后重新运行代码即可解决该错误。
方法2:修改ChemicalX源码(进阶)
若不想降级torchdrug,可找到ChemicalX中调用Molecule.dummy_atom的代码位置,替换为torchdrug中替代的实现逻辑(例如手动构造dummy原子的特征张量),但此方法需要对库源码有一定了解,不推荐新手使用。
内容的提问来源于stack exchange,提问作者harsh
相关产品推荐
相关产品推荐

