tested steroids
parent
015b4fa1e1
commit
ed4fe52cfe
99
DeepDrug.py
99
DeepDrug.py
|
|
@ -11,7 +11,7 @@
|
|||
import numpy as np
|
||||
import tensorflow as tf
|
||||
from sklearn.preprocessing import LabelEncoder
|
||||
from keras.models import Sequential
|
||||
from keras.models import Sequential, load_model
|
||||
from keras import optimizers, callbacks
|
||||
from keras.layers import Dense, Flatten, TimeDistributed, Dropout
|
||||
from keras import Input, Model
|
||||
|
|
@ -23,16 +23,6 @@ from keras.layers import Convolution3D, MaxPooling3D
|
|||
|
||||
# ### used to store model prediction in order to plot roc curve
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
class prediction_history(callbacks.Callback):
|
||||
def __init__(self):
|
||||
self.predhis = []
|
||||
def on_epoch_end(self, epoch, logs={}):
|
||||
self.predhis.append(model.predict(predictor_train))
|
||||
|
||||
|
||||
# ### Creating input and ouputs
|
||||
|
||||
# In[ ]:
|
||||
|
|
@ -130,7 +120,7 @@ def model_heavy(): # créer un objet modèle
|
|||
# In[8]:
|
||||
|
||||
|
||||
def model_new(): # créer un objet modèle
|
||||
def model_fast_k32(): # créer un objet modèle
|
||||
"""
|
||||
Return a simple sequentiel model
|
||||
|
||||
|
|
@ -138,10 +128,10 @@ def model_new(): # créer un objet modèle
|
|||
- model : keras.Model
|
||||
"""
|
||||
inputs = Input(shape=(14,32,32,32))
|
||||
conv_1 = Convolution3D(filters=64, kernel_size=5, padding="valid", data_format='channels_first')(inputs)
|
||||
conv_1 = Convolution3D(filters=64, kernel_size=32, padding="valid", data_format='channels_first')(inputs)
|
||||
activation_1 = LeakyReLU(alpha = 0.1)(conv_1)
|
||||
drop_1 = Dropout(0.2)(activation_1)
|
||||
conv_2 = Convolution3D(filters=64, kernel_size=3, padding="valid", data_format='channels_first')(drop_1)
|
||||
conv_2 = Convolution3D(filters=128, kernel_size=32, padding="valid", data_format='channels_first')(drop_1)
|
||||
activation_2 = LeakyReLU(alpha = 0.1)(conv_2)
|
||||
maxpool = MaxPooling3D(pool_size=(2,2,2),
|
||||
strides=None,
|
||||
|
|
@ -149,7 +139,37 @@ def model_new(): # créer un objet modèle
|
|||
data_format='channels_first')(activation_2)
|
||||
drop_2 = Dropout(0.4)(maxpool)
|
||||
flatters = Flatten()(drop_2)
|
||||
dense = Dense(128)(flatters)
|
||||
dense = Dense(256)(flatters)
|
||||
activation_3 = LeakyReLU(alpha = 0.1)(dense)
|
||||
drop_3 = Dropout(0.4)(activation_3)
|
||||
output = Dense(3, activation='softmax')(drop_3)
|
||||
model = Model(inputs=inputs, outputs=output)
|
||||
my_opt = optimizers.Adam(learning_rate=0.000001, beta_1=0.9, beta_2=0.999, amsgrad=False)
|
||||
print(model.summary)
|
||||
model.compile(optimizer=my_opt, loss="categorical_crossentropy",
|
||||
metrics=["accuracy"])
|
||||
return model
|
||||
|
||||
def model_fast_k16(): # créer un objet modèle
|
||||
"""
|
||||
Return a simple sequentiel model
|
||||
|
||||
Returns :
|
||||
- model : keras.Model
|
||||
"""
|
||||
inputs = Input(shape=(14,32,32,32))
|
||||
conv_1 = Convolution3D(filters=64, kernel_size=16, padding="valid", data_format='channels_first')(inputs)
|
||||
activation_1 = LeakyReLU(alpha = 0.1)(conv_1)
|
||||
drop_1 = Dropout(0.2)(activation_1)
|
||||
conv_2 = Convolution3D(filters=128, kernel_size=16, padding="valid", data_format='channels_first')(drop_1)
|
||||
activation_2 = LeakyReLU(alpha = 0.1)(conv_2)
|
||||
maxpool = MaxPooling3D(pool_size=(2,2,2),
|
||||
strides=None,
|
||||
padding='valid',
|
||||
data_format='channels_first')(activation_2)
|
||||
drop_2 = Dropout(0.4)(maxpool)
|
||||
flatters = Flatten()(drop_2)
|
||||
dense = Dense(256)(flatters)
|
||||
activation_3 = LeakyReLU(alpha = 0.1)(dense)
|
||||
drop_3 = Dropout(0.4)(activation_3)
|
||||
output = Dense(3, activation='softmax')(drop_3)
|
||||
|
|
@ -200,51 +220,72 @@ def model_light(): # créer un objet modèle
|
|||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
data = in_out_lists(1400)
|
||||
sample = 1000
|
||||
data = in_out_lists(sample)
|
||||
pockets = np.cumsum(data[1], axis=0)[-1]
|
||||
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
print("with random seed=9001 and a 1400 pockets dataset the rates are:\n {} heme, {} nucleotide, {} control\n Total avaible dataset are composed of the following proportions:\n {} heme, {} nucleotide, {} control".format(pockets[0]/1400, pockets[1]/1400,pockets[2]/1400,
|
||||
0.145, 0.380, 0.475))
|
||||
print("with random seed=9001 and a {} pockets dataset the rates are:\n {} heme, {} nucleotide, {} control\n Total avaible dataset are composed of the following proportions:\n {} heme, {} nucleotide, {} control".format(sample, pockets[0]/sample,
|
||||
pockets[1]/sample,pockets[2]/sample,
|
||||
0.145, 0.380, 0.475))
|
||||
|
||||
|
||||
# In[ ]:
|
||||
|
||||
train = int(sample*0.6)
|
||||
|
||||
data_onehot = data[0]
|
||||
output = data[1]
|
||||
X_train = data_onehot[0:1000,]
|
||||
Y_train = output[0:1000,]
|
||||
X_test = data_onehot[1000:,]
|
||||
Y_test = output[1000:,]
|
||||
|
||||
X_train = data_onehot[0:train,]
|
||||
Y_train = output[0:train,]
|
||||
X_test = data_onehot[train:,]
|
||||
Y_test = output[train:,]
|
||||
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
my_model = model_new()
|
||||
my_model = model_fast_k16()
|
||||
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
tf.test.is_gpu_available()
|
||||
#my_model.fit(X_train, Y_train, epochs=50, batch_size=30)
|
||||
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
history_mild_2mp = my_model.fit(X_train, Y_train, validation_data=(X_test, Y_test), epochs=30, batch_size=32)
|
||||
my_model.save('new_model_e30_b32_t1000.h5')
|
||||
my_model.fit(X_train, Y_train, validation_data=(X_test, Y_test), epochs=50, batch_size=32)
|
||||
#my_model.save('new_model_e50_b32_t1600.h5')
|
||||
#my_model = load_model('new_model_e50_b32_t1600.h5')
|
||||
|
||||
# ## Testing steroids
|
||||
|
||||
# In[ ]:
|
||||
with open("steroid.list", "r") as filin:
|
||||
steroid = filin.read()
|
||||
steroid = steroid.split("\n")
|
||||
steroid.pop()
|
||||
|
||||
X_steroid = np.ndarray(shape=(69, 14, 32, 32, 32))
|
||||
|
||||
#predictions=prediction_history()
|
||||
i = -1
|
||||
for pocket in steroid:
|
||||
i += 1
|
||||
X_steroid[i,] = np.load("deepdrug3d_voxel_data/"+pocket+".npy")
|
||||
|
||||
Y_pred_steroid = my_model.predict(X_steroid)
|
||||
Y_pred_steroid = Y_pred_steroid.round()
|
||||
|
||||
steroid_predict = Y_pred_steroid.cumsum(axis=0)
|
||||
print("On 69 steroid-binded pockets, prediction are the following:\n\
|
||||
predicted as heme:\t{}\npredicted as nucleotide:\t{}\n\
|
||||
predicted as control:\t{}\n".format(steroid_predict[0],
|
||||
steroid_predict[1],
|
||||
steroid_predict[2]))
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue