当前位置:网站首页>基于Pytorch和RDKit的QSAR模型建立脚本
基于Pytorch和RDKit的QSAR模型建立脚本
2022-07-03 03:42:00 【LRJ-jonas】
QSAR
定量构效方法(quantitative structure-activity relationship, QSAR)是应用最为广泛的药物设计方法。所谓定量构效方法就是通过一些数理统计方法建立其一系列化合 物的生理活性或某种性质与其物理化学性质之间的定量关系,通过这些定关系。可以预测化合物的生理活性或某些性质,指导我们设计出具有更高活性的化合物。
安装环境
pip install pprint
pip install argparse
#安装rdkit
conda install -c rdkit rdkit安装pytorch 教程
基于pytorch和rdkit的QSAR模型建立
#!/usr/bin/python3
import pprint
import argparse
import torch
import torch.optim as optim
from torch import nn as nn
import torch.nn.functional as F
from torch.autograd import Variable
from rdkit import Chem
from rdkit.Chem import AllChem
from rdkit.Chem import DataStructs
import numpy as np
#from sklearn import preprocessing
def base_parser():
parser = argparse.ArgumentParser("This is simple test of pytorch")
parser.add_argument("trainset", help="sdf for train")
parser.add_argument("testset", help="sdf for test")
parser.add_argument("--epochs", default=150)
return parser
parser = base_parser()
args = parser.parse_args()
traindata = [mol for mol in Chem.SDMolSupplier(args.trainset) if mol is not None]
testdata = [mol for mol in Chem.SDMolSupplier(args.testset) if mol is not None]
def molsfeaturizer(mols):
fps = []
for mol in mols:
arr = np.zeros((0,))
fp = AllChem.GetMorganFingerprintAsBitVect(mol, 2)
DataStructs.ConvertToNumpyArray(fp, arr)
fps.append(arr)
fps = np.array(fps, dtype = np.float)
return fps
classes = {"(A) low":0, "(B) medium":1, "(C) high":2}
#classes = {"(A) low":0, "(B) medium":1, "(C) high":1}
trainx = molsfeaturizer(traindata)
testx = molsfeaturizer(testdata)
# for pytorch, y must be long type!!
trainy = np.array([classes[mol.GetProp("SOL_classification")] for mol in traindata], dtype=np.int64)
testy = np.array([classes[mol.GetProp("SOL_classification")] for mol in testdata], dtype=np.int64)
#在pytorch中构建模型,定义每个层和整个结构
X_train = torch.from_numpy(trainx)
X_test = torch.from_numpy(testx)
Y_train = torch.from_numpy(trainy)
Y_test = torch.from_numpy(testy)
print(X_train.size(),Y_train.size())
print(X_test.size(), Y_train.size())
class QSAR_mlp(nn.Module):
def __init__(self):
super(QSAR_mlp, self).__init__()
self.fc1 = nn.Linear(2048, 524)
self.fc2 = nn.Linear(524, 10)
self.fc3 = nn.Linear(10, 10)
self.fc4 = nn.Linear(10,3)
def forward(self, x):
x = x.view(-1, 2048)
h1 = F.relu(self.fc1(x))
h2 = F.relu(self.fc2(h1))
h3 = F.relu(self.fc3(h2))
output = F.sigmoid(self.fc4(h3))
return output
#构建训练和预测模型
model = QSAR_mlp()
print(model)
losses = []
optimizer = optim.Adam( model.parameters(), lr=0.005)
for epoch in range(args.epochs):
data, target = Variable(X_train).float(), Variable(Y_train).long()
optimizer.zero_grad()
y_pred = model(data)
loss = F.cross_entropy(y_pred, target)
print("Loss: {}".format(loss.data[0]))
loss.backward()
optimizer.step()
pred_y = model(Variable(X_test).float())
predicted = torch.max(pred_y, 1)[1]
for i in range(len(predicted)):
print("pred:{}, target:{}".format(predicted.data[i], Y_test[i]))
print( "Accuracy: {}".format(sum(p==t for p,t in zip(predicted.data, Y_test))/len(Y_test)))测试模型
python qsar_pytorch.py solubility.train.sdf solubility.test.sdf边栏推荐
- Mysql Mac版下载安装教程
- Use of sigaction
- 简易版 微信小程序开发之for指令、上传图片及展示效果优化
- Ffmpeg one / more pictures synthetic video
- Compare float with 0
- SAP ui5 application development tutorial 105 - detailed introduction to the linkage effect implementation of SAP ui5 master detail layout mode
- QQ小程序开发之 一些前期准备:预约开发账号、下载安装开发者工具、创建qq小程序
- FileZilla Client下載安裝
- Write it down once Net travel management background CPU Explosion Analysis
- IPv6过渡技术-6to4手工隧道配置实验--尚文网络奎哥
猜你喜欢

ffmpeg之 一张/多张图片合成视频

MongoDB复制集【主从复制】

FileZilla Client下载安装

Avec trois. JS fait une scène 3D simple

ffmpeg下载安装教程及介绍

npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。

Summary of electromagnetic spectrum

Introduction to mongodb

MongoDB簡介

The latest analysis of the main principals of hazardous chemical business units in 2022 and the simulated examination questions of the main principals of hazardous chemical business units
随机推荐
Convert binary stream to byte array
Nanning water leakage detection: warmly congratulate Guangxi Zhongshui on winning the first famous brand in Guangxi
pytorch开源吗?
Filter
UMI route interception (simple and rough)
Applet get user avatar and nickname
MongoDB主配置文件
Intercept string fixed length to array
FileZilla Client下载安装
[learning notes] seckill - seckill project - (11) project summary
IPv6 transition technology-6to4 manual tunnel configuration experiment -- Kuige of Shangwen network
Positioning (relative positioning, absolute positioning, fixed positioning, Z-index) 2022-2-11
Téléchargement et installation du client Filezilla
IPv6过渡技术-6to4手工隧道配置实验--尚文网络奎哥
2022 tea master (intermediate) examination questions and analysis and tea master (intermediate) practical examination video
docker安装及启动mysql服务
ffmpeg下载安装教程及介绍
Web session management security issues
900w+ data, from 17s to 300ms, how to operate
Role of JS No