[ PROMPT_NODE_26456 ]
Deepchem 工作流
[ SKILL_DOCUMENTATION ]
# DeepChem 工作流
本文档提供了 DeepChem 常见用例的详细工作流。
## 工作流 1:基于 SMILES 的分子属性预测
**目标**: 从 SMILES 字符串预测分子属性(例如溶解度、毒性、活性)。
### 分步流程
#### 1. 准备数据
数据应为 CSV 格式,至少包含:
- 一列 SMILES 字符串
- 一列或多列属性值(目标值)
CSV 结构示例:
csv
smiles,solubility,toxicity
CCO,-0.77,0
CC(=O)OC1=CC=CC=C1C(=O)O,-1.19,1
#### 2. 选择特征化器 (Featurizer)
决策树:
- **小数据集 (100K)**: 使用基于图的特征化器 (`MolGraphConvFeaturizer`, `DMPNNFeaturizer`)
- **迁移学习**: 使用预训练模型特征化器 (`GroverFeaturizer`)
#### 3. 加载并特征化数据
python
import deepchem as dc
# 基于指纹
featurizer = dc.feat.CircularFingerprint(radius=2, size=2048)
# 或者基于图
featurizer = dc.feat.MolGraphConvFeaturizer()
loader = dc.data.CSVLoader(
tasks=['solubility', 'toxicity'], # 要预测的列名
feature_field='smiles', # 包含 SMILES 的列
featurizer=featurizer
)
dataset = loader.create_dataset('data.csv')
#### 4. 分割数据
**关键**: 在药物发现中请使用 `ScaffoldSplitter` 以防止数据泄露。
python
splitter = dc.splits.ScaffoldSplitter()
train, valid, test = splitter.train_valid_test_split(
dataset,
frac_train=0.8,
frac_valid=0.1,
frac_test=0.1
)
#### 5. 转换数据(可选但推荐)
python
transformers = [
dc.trans.NormalizationTransformer(
transform_y=True,
dataset=train
)
]
for transformer in transformers:
train = transformer.transform(train)
valid = transformer.transform(valid)
test = transformer.transform(test)
#### 6. 选择并训练模型
python
# 对于指纹
model = dc.models.MultitaskRegressor(
n_tasks=2, # 要预测的属性数量
n_features=2048, # 指纹大小
layer_sizes=[1000, 500], # 隐藏层大小
dropouts=0.25,
learning_rate=0.001
)
# 或者对于图
model = dc.models.GCNModel(
n_tasks=2,
mode='regression',
batch_size=128,
learning_rate=0.001
)
# 训练
model.fit(train, nb_epoch=50)
#### 7. 评估