deepmodeling / deepmodeling/Uni-Mol
如何使用 Uni-Mol 对化合物库进行聚类?
- Dominant language
- Python
- Stars
- 1.2k
- Forks
- 181
- PR merge metrics
- No merged PRs in 30d
Description
目前我的做法是使用cls token对化合物的嵌入表示之间做一个cosine的计算,但是我觉得你们的工具应该会有更方便、更好用的聚类工具?
```
def generate_unimol_cls_reprs(smiles_list, batch_size=100):
"""
使用 Uni-Mol 生成 CLS token 表征。
Args:
smiles_list (list): SMILES 字符串的列表。
batch_size (int): 每批处理的 SMILES 数量。
Returns:
list: CLS token 表征的列表。
"""
clf = UniMolRepr(
data_type='molecule',
remove_hs=False,
model_name='unimolv1', # 可选: 'unimolv1', 'unimolv2'
model_size='84m', # 仅在 model_name 为 'unimolv2' 时有效: '84m', '164m', '310m', '570m', '1.1B'
)
cls_reprs = []
for i in range(0, len(smiles_list), batch_size):
batch_smiles = smiles_list[i:i+batch_size]
print(f"Processing batch {i // batch_size + 1}: {len(batch_smiles)} SMILES")
try:
reprs = clf.get_repr(batch_smiles, return_atomic_reprs=False)
cls_reprs.extend(reprs['cls_repr'])
except Exception as e:
print(f"Error processing batch {i // batch_size + 1}: {e}")
return cls_reprs
```
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.