AlishbaImran commited on
Commit
0088ae9
1 Parent(s): 4f877e5

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +26 -51
app.py CHANGED
@@ -41,7 +41,7 @@ def create_model(optimizer='RMSprop', learn_rate=0.1, momentum=0.4, activation='
41
  keras_model.add(Dropout(dropout_rate))
42
  keras_model.add(Dense(1,activation='linear'))
43
  keras_model.summary()
44
- # Compile model
45
  keras_model.compile(loss='mean_squared_error', optimizer=optimizer)
46
 
47
  return keras_model
@@ -61,9 +61,9 @@ def get_ecfc(smiles_list, radius=2, nBits=2048, useCounts=True):
61
  else:
62
  ecfp_fingerprints.append(list(AllChem.GetMorganFingerprintAsBitVect(mol, radius, nBits).ToBitString()))
63
 
64
- # Create dataframe of fingerprints
65
  df_ecfp_fingerprints = pd.DataFrame(data = ecfp_fingerprints, index = smiles_list)
66
- # Remove erroneous data
67
  if len(erroneous_smiles)>0:
68
  print("The following erroneous SMILES have been found in the data:\n{}.\nThe erroneous SMILES will be removed from the data.".format('\n'.join(map(str, erroneous_smiles))))
69
  df_ecfp_fingerprints = df_ecfp_fingerprints.dropna(how='any')
@@ -115,7 +115,7 @@ st.write('**Insert your SMILES**')
115
 
116
  st.write('Type any SMILES used as a reactant in the redox reaction. This model will output the reaction energy.')
117
 
118
- ## Read SMILES input
119
  SMILES_input = "Oc1cccc(c12)c(O)c(nn2)O\nc1cccc(c12)cc(nn2)O\nOc1c(O)ccc(c12)cc(nn2)O"
120
 
121
  SMILES = st.text_area('press ctrl+enter to run model!', SMILES_input, height=20)
@@ -124,7 +124,7 @@ SMILES = list(filter(None, SMILES))
124
 
125
 
126
 
127
- # Use only top 1000
128
  if len(SMILES)>1000:
129
  SMILES=SMILES[0:1000]
130
 
@@ -132,57 +132,48 @@ ecfc_encoder = get_ecfc(SMILES)
132
 
133
  generated_dataset = generate(SMILES)
134
 
135
- ### transformer for gcn
136
  filename = 'final_models/transformers.pkl'
137
  infile = open(filename,'rb')
138
  transformers = pickle.load(infile)
139
  infile.close()
140
 
141
 
142
- ## model for gcn
143
  model_dir = 'final_models/tf_chp_initial'
144
  gcne_model = dc.models.GraphConvModel(n_tasks=1, batch_size=100, mode='regression', dropout=0.25,model_dir= model_dir,random_seed=0)
145
  gcne_model.restore('final_models/tf_chp_initial/ckpt-94/ckpt-197')
146
- #print(gcne_model)
147
 
148
 
149
- ## predict energy from gcn model
 
150
  pred_gcne = gcne_model.predict(generated_dataset, transformers)
151
 
152
 
153
- #---------------------------------------------------------------------------------
154
- ##keras model load
155
  from keras.models import model_from_json
156
 
157
  keras_final_model = model_from_json(open('./final_models/keras_final_model_architecture.json').read())
158
  keras_final_model.load_weights('./final_models/keras_final_model_weights.h5')
159
 
160
- #keras_final_model = pickle.load(open(r'./final_models/keras_final_model.txt', "rb"))
161
  rf_final_model = pickle.load(open(r'./final_models/rf_final_model.txt', "rb"))
162
- #xgbm_final_model = pickle.load(open(r'.\final_models\xgbm_final_model.txt', "rb"))
163
 
164
 
165
 
166
- #predict test data (Keras,RF, GCN)
 
167
  pred_keras = keras_final_model.predict(ecfc_encoder)
168
  pred_rf = rf_final_model.predict(ecfc_encoder)
169
 
170
- ##reshape (n,) ----> (n,1)
171
-
172
- pred_rf_r = pred_rf.reshape((len(pred_rf),1))
173
- #pred_xgb = xgbm_final_model.predict(ecfc_encoder)
174
 
175
 
176
- #calculate consensus
177
- pred_consensus = (pred_keras + pred_gcne + pred_rf)/3
178
- # predefined_models.get_errors(test_logS_list,pred_enseble)
179
 
180
- #%% Weighted
181
 
182
- #------------------------------------------------------------------------------------------------------------------
183
 
184
 
185
- #------------------------------------------------------------------------------------------------------------------
186
 
187
 
188
 
@@ -191,23 +182,23 @@ pred_consensus = (pred_keras + pred_gcne + pred_rf)/3
191
 
192
  from sklearn.metrics import mean_absolute_error,mean_squared_error,r2_score
193
 
194
- ## Test 1 Experiments
195
 
196
  test1_mae = []
197
 
198
- test1_mae.append(0.00705) # 0 - GCN
199
- test1_mae.append(0.00416) # 1 - Keras
200
- test1_mae.append(0.0035) # 3 - RF
 
201
 
202
 
203
 
204
- ## Test 2 Experiments
205
 
206
  test2_mae = []
207
 
208
- test2_mae.append(0.00589) # 0 - GCN
209
- test2_mae.append(0.00483) # 1 - Keras
210
- test2_mae.append(0.00799) # 3 - RF
211
 
212
 
213
 
@@ -218,9 +209,7 @@ weighted_pred_0_1_3=( np.power(2/(test1_mae[0]+test2_mae[0]),3) * pred_gcne +
218
 
219
 
220
 
221
- #--------
222
 
223
- #### ???? array shape not correct and no difference with pred_consensus
224
 
225
  pred_weighted = (pred_gcne + pred_keras + pred_rf_r)/3
226
 
@@ -230,31 +219,17 @@ pred_weighted = (pred_gcne + pred_keras + pred_rf_r)/3
230
 
231
 
232
 
233
- #%%
234
- # results=np.column_stack([pred_mlp,pred_xgb,pred_rf,pred_consensus])
235
 
236
  df_results = pd.DataFrame(SMILES, columns=['SMILES Reactant'])
237
  df_results["Predicted Reaction Energy"]= weighted_pred_0_1_3
238
- #df_results["reaction_energy"]= pred_weighted
239
- df_results=df_results.round(6)
240
 
241
- # df_results.to_csv("results/predicted-"+test_data_name+".csv",index=False)
242
 
243
 
244
- # Results DF
245
 
246
  st.header('Prediction of Reaction Energy for RFB')
247
- df_results # Skips the dummy first item
248
-
249
-
250
-
251
-
252
-
253
 
254
- # download=st.button('Download Results File')
255
- # if download:
256
- csv = df_results.to_csv(index=False)
257
- b64 = base64.b64encode(csv.encode()).decode() # some strings
258
-
259
 
260
 
 
41
  keras_model.add(Dropout(dropout_rate))
42
  keras_model.add(Dense(1,activation='linear'))
43
  keras_model.summary()
44
+
45
  keras_model.compile(loss='mean_squared_error', optimizer=optimizer)
46
 
47
  return keras_model
 
61
  else:
62
  ecfp_fingerprints.append(list(AllChem.GetMorganFingerprintAsBitVect(mol, radius, nBits).ToBitString()))
63
 
64
+
65
  df_ecfp_fingerprints = pd.DataFrame(data = ecfp_fingerprints, index = smiles_list)
66
+
67
  if len(erroneous_smiles)>0:
68
  print("The following erroneous SMILES have been found in the data:\n{}.\nThe erroneous SMILES will be removed from the data.".format('\n'.join(map(str, erroneous_smiles))))
69
  df_ecfp_fingerprints = df_ecfp_fingerprints.dropna(how='any')
 
115
 
116
  st.write('Type any SMILES used as a reactant in the redox reaction. This model will output the reaction energy.')
117
 
118
+
119
  SMILES_input = "Oc1cccc(c12)c(O)c(nn2)O\nc1cccc(c12)cc(nn2)O\nOc1c(O)ccc(c12)cc(nn2)O"
120
 
121
  SMILES = st.text_area('press ctrl+enter to run model!', SMILES_input, height=20)
 
124
 
125
 
126
 
127
+
128
  if len(SMILES)>1000:
129
  SMILES=SMILES[0:1000]
130
 
 
132
 
133
  generated_dataset = generate(SMILES)
134
 
135
+
136
  filename = 'final_models/transformers.pkl'
137
  infile = open(filename,'rb')
138
  transformers = pickle.load(infile)
139
  infile.close()
140
 
141
 
142
+
143
  model_dir = 'final_models/tf_chp_initial'
144
  gcne_model = dc.models.GraphConvModel(n_tasks=1, batch_size=100, mode='regression', dropout=0.25,model_dir= model_dir,random_seed=0)
145
  gcne_model.restore('final_models/tf_chp_initial/ckpt-94/ckpt-197')
 
146
 
147
 
148
+
149
+
150
  pred_gcne = gcne_model.predict(generated_dataset, transformers)
151
 
152
 
153
+
 
154
  from keras.models import model_from_json
155
 
156
  keras_final_model = model_from_json(open('./final_models/keras_final_model_architecture.json').read())
157
  keras_final_model.load_weights('./final_models/keras_final_model_weights.h5')
158
 
159
+
160
  rf_final_model = pickle.load(open(r'./final_models/rf_final_model.txt', "rb"))
 
161
 
162
 
163
 
164
+
165
+
166
  pred_keras = keras_final_model.predict(ecfc_encoder)
167
  pred_rf = rf_final_model.predict(ecfc_encoder)
168
 
 
 
 
 
169
 
170
 
171
+ pred_rf_r = pred_rf.reshape((len(pred_rf),1))
 
 
172
 
 
173
 
 
174
 
175
 
176
+ pred_consensus = (pred_keras + pred_gcne + pred_rf)/3
177
 
178
 
179
 
 
182
 
183
  from sklearn.metrics import mean_absolute_error,mean_squared_error,r2_score
184
 
185
+
186
 
187
  test1_mae = []
188
 
189
+ test1_mae.append(0.00705)
190
+ test1_mae.append(0.00416)
191
+ test1_mae.append(0.0035)
192
+
193
 
194
 
195
 
 
196
 
197
  test2_mae = []
198
 
199
+ test2_mae.append(0.00589)
200
+ test2_mae.append(0.00483)
201
+ test2_mae.append(0.00799)
202
 
203
 
204
 
 
209
 
210
 
211
 
 
212
 
 
213
 
214
  pred_weighted = (pred_gcne + pred_keras + pred_rf_r)/3
215
 
 
219
 
220
 
221
 
222
+
 
223
 
224
  df_results = pd.DataFrame(SMILES, columns=['SMILES Reactant'])
225
  df_results["Predicted Reaction Energy"]= weighted_pred_0_1_3
 
 
226
 
227
+ df_results=df_results.round(6)
228
 
229
 
 
230
 
231
  st.header('Prediction of Reaction Energy for RFB')
232
+ df_results
 
 
 
 
 
233
 
 
 
 
 
 
234
 
235