deepmodeling / deepmodeling/Uni-Mol

如何使用 Uni-Mol 对化合物库进行聚类?

Open
#317 1 comment 0 reactions 0 assignees View on GitHub
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.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.