A Deep Learning Approach to Antibiotic Discovery
web:
git@github.com:chemprop/chemprop.git
系列:
AI与药物
目的:
复现chemprop
原理:
步骤:
(1)克隆仓库:
git clone git@github.com:chemprop/chemprop.git
(2)安装配置:
conda create -n chemprop python=3.8
conda activate chemprop
conda install -c conda-forge rdkit
pip install git+https://github.com/bp-kelley/descriptastorus
pip install chemprop
(3)训练
3.1数据处理
数据格式:
csv格式,必须有header
SMILES,标签(二分类或者回归)
默认第一列为SMILES,标签值在余下几列
example:
smiles,NR-AR,NR-AR-LBD,NR-AhR,NR-Aromatase,NR-ER,NR-ER-LBD,NR-PPAR-gamma,SR-ARE,SR-ATAD5,SR-HSE,SR-MMP,SR-p53
CCOc1ccc2nc(S(N)(=O)=O)sc2c1,0,0,1,,,0,0,1,0,0,0,0
CCN1C(=O)NC(c2ccccc2)C1=O,0,0,0,0,0,0,0,,0,,0,0
3.2数据训练
chemprop_train --data_path <path> --dataset_type <type> --save_dir <dir> --num_folds <k> --ensemble_size <n>
To train an ensemble, specify the number of models in the ensemble with . The default is --ensemble_size 1
--data_path <path>:数据文件
--dataset_type <type>:"classification" or "regression"
--save_dir <dir>:保存文件夹
--num_folds <k>:交叉验证次数
--ensemble_size <n>: 使用集成模型
--num_iters <n> :超参优化
--config_save_path <config_path> :超参优化后参数存储
simple example:
chemprop_train --data_path data/tox21.csv --dataset_type classification --save_dir tox21_checkpoints
3.3:模型预测
chemprop_predict --test_path tox21.csv --checkpoint_dir tox21_checkpoints --preds_path tox21_preds.csv
--test_path <path> :需要预测的数据文件
--checkpoint_dir <dir> :model checkpoint 模型存储文件夹
--preds_path Path :预测结果文件
3.4 普通测试
chemprop_train --data_path tox21_prepare.csv --dataset_type classification --save_dir ./
输入文件格式:
smiles NR-AR
CCOc1ccc2nc(S(N)(=O)=O)sc2c1 0
CCN1C(=O)NC(c2ccccc2)C1=O 0
CCCN(CC)C(CC)C(=O)Nc1c(C)cccc1C 0
CC(O)(P(=O)(O)O)P(=O)(O)O 0
CC(C)(C)OOC(C)(C)CCC(C)(C)OOC(C)(C)C 0
O=S(=O)(Cl)c1ccccc1 0
O=[N+]([O-])c1cc(C(F)(F)F)cc([N+](=O)[O-])c1Cl 1
CC1(C)O[C@@H]2C[C@H]3[C@@H]4C[C@H](F)C5=CC(=O)C=C[C@]5(C)[C@H]4[C@@H](O)C[C@]3(C)[C@]2(C(=O)CO)O1 1
C[C@]12CC[C@H]3[C@@H](CC[C@@]45O[C@@H]4C(O)=C(C#N)C[C@]35C)[C@@H]1CC[C@@H]2O 1
C[C@]12C[C@H](O)[C@H]3[C@@H](CCC4=CC(=O)CC[C@@]43C)[C@@H]1CC[C@]2(O)C(=O)COP(=O)([O-])[O-] 1
CCC(=O)N(c1ccccc1)C1CCN(CCc2ccccc2)CC1 1
C[C@]12CC[C@H]3[C@@H](CCC4=CC(=O)CC[C@@]43C)[C@@H]1CC[C@@H]2C(=O)CO 1
O=C(OC[C@H]1O[C@@H](OC(=O)c2cc(O)c(O)c(OC(=O)c3cc(O)c(O)c(O)c3)c2)[C@H](OC(=O)c2cc(O)c(O)c(OC(=O)c3cc(O)c(O)c(O)c3)c2)[C@@H](OC(=O)c2cc(O)c(O)c(OC(=O)c3cc(O)c(O)c(O)c3)c2)[C@@H]1OC(=O)c1cc(O)c(O)c(OC(=O)c2cc(O)c(O)c(O)c2)c1)c1cc(O)c(O)c(OC(=O)c2cc(O)c(O)c(O)c2)c1 1
输出:
Fold 0
Model 0 best validation auc = 0.742572 on epoch 5
Model 0 test auc = 0.778364
Ensemble test auc = 0.778364
1-fold cross validation
Seed 0 ==> test auc = 0.778364
Overall test auc = 0.778364 +/- 0.000000
Elapsed time = 0:04:46
结果:
auc=0.77
这只是一个简单测试,还需要优化
预测:
chemprop_predict --test_path tox21_prepare_predict.csv --checkpoint_dir ./ --preds_path tox21_pres.csv
输入文件格式:
smiles
CCOc1ccc2nc(S(N)(=O)=O)sc2c1
CCN1C(=O)NC(c2ccccc2)C1=O
CCCN(CC)C(CC)C(=O)Nc1c(C)cccc1C
CC(O)(P(=O)(O)O)P(=O)(O)O
CC(C)(C)OOC(C)(C)CCC(C)(C)OOC(C)(C)C
O=S(=O)(Cl)c1ccccc1
O=C(O)Cc1cc(I)c(Oc2ccc(O)c(I)c2)c(I)c1
OC[C@H](O)[C@@H](O)[C@H](O)CO
NC(=O)c1ccc[n+]([C@@H]2O[C@H](COP(=O)([O-])OP(=O)(O)OC[C@H]3O[C@@H](n4cnc5c(N)ncnc54)[C@H](O)[C@@H]3O)[C@@H](O)[C@H]2O)c1
O=c1[nH]c(=O)n([C@H]2C[C@H](O)[C@@H](CO)O2)cc1I
CC(C)COC(=O)C(C)C
C=C(C)C(=O)OCCOC(=O)C(=C)C
模型所处文件夹:
./
输出:
tox21_pres.csv
smiles NR-AR
CCOc1ccc2nc(S(N)(=O)=O)sc2c1 0.030260406
CCN1C(=O)NC(c2ccccc2)C1=O 0.029164942
CCCN(CC)C(CC)C(=O)Nc1c(C)cccc1C 0.014695766
CC(O)(P(=O)(O)O)P(=O)(O)O 0.00670884
CC(C)(C)OOC(C)(C)CCC(C)(C)OOC(C)(C)C 0.000621845
O=S(=O)(Cl)c1ccccc1 0.007683345
O=C(O)Cc1cc(I)c(Oc2ccc(O)c(I)c2)c(I)c1 0.013461859
OC[C@H](O)[C@@H](O)[C@H](O)CO 0.018673014
NC(=O)c1ccc[n+]([C@@H]2O[C@H](COP(=O)([O-])OP(=O)(O)OC[C@H]3O[C@@H](n4cnc5c(N)ncnc54)[C@H](O)[C@@H]3O)[C@@H](O)[C@H]2O)c1 0.022330828
O=c1[nH]c(=O)n([C@H]2C[C@H](O)[C@@H](CO)O2)cc1I 0.025767796
CC(C)COC(=O)C(C)C 0.00350783
C=C(C)C(=O)OCCOC(=O)C(=C)C 0.01329965
Everyday you must keep something new.