前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >chemprop简单实现

chemprop简单实现

作者头像
DrugSci
发布2021-02-04 15:04:49
2.1K0
发布2021-02-04 15:04:49
举报
文章被收录于专栏:FindKeyFindKey

A Deep Learning Approach to Antibiotic Discovery

web:

代码语言:javascript
复制
git@github.com:chemprop/chemprop.git

系列:

AI与药物

目的:

复现chemprop

原理:

步骤:

(1)克隆仓库:

代码语言:javascript
复制
git clone git@github.com:chemprop/chemprop.git

(2)安装配置:

代码语言:javascript
复制
    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,标签值在余下几列

代码语言:javascript
复制
    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数据训练

代码语言:javascript
复制
    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:模型预测

代码语言:javascript
复制
    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 普通测试

代码语言:javascript
复制
  chemprop_train --data_path tox21_prepare.csv --dataset_type classification --save_dir ./

输入文件格式:

代码语言:javascript
复制
  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

输出:

代码语言:javascript
复制
  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

结果:

代码语言:javascript
复制
  auc=0.77

这只是一个简单测试,还需要优化

预测:

代码语言:javascript
复制
  chemprop_predict --test_path tox21_prepare_predict.csv --checkpoint_dir ./ --preds_path tox21_pres.csv

输入文件格式:

代码语言:javascript
复制
  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

模型所处文件夹:

代码语言:javascript
复制
  ./

输出:

代码语言:javascript
复制
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.

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FindKey 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档