|
a |
|
b/app.py |
|
|
1 |
import os |
|
|
2 |
import xlrd |
|
|
3 |
import pickle |
|
|
4 |
import openpyxl |
|
|
5 |
import numpy as np |
|
|
6 |
import urllib.request, json |
|
|
7 |
from flask import Flask, render_template |
|
|
8 |
from flask import request, jsonify |
|
|
9 |
from werkzeug.utils import secure_filename |
|
|
10 |
from livereload import Server |
|
|
11 |
|
|
|
12 |
|
|
|
13 |
app = Flask(__name__) |
|
|
14 |
model = pickle.load(open('model.pkl', 'rb')) |
|
|
15 |
|
|
|
16 |
@app.route('/') |
|
|
17 |
def home(): |
|
|
18 |
return render_template('home.html') |
|
|
19 |
|
|
|
20 |
@app.route('/page') |
|
|
21 |
def page(): |
|
|
22 |
return render_template('page.html') |
|
|
23 |
|
|
|
24 |
@app.route('/result') |
|
|
25 |
def result(): |
|
|
26 |
return render_template('result.html') |
|
|
27 |
|
|
|
28 |
@app.route('/gene') |
|
|
29 |
def gene(): |
|
|
30 |
return render_template('gene.html') |
|
|
31 |
|
|
|
32 |
@app.route('/predict',methods=['GET', 'POST']) |
|
|
33 |
def predict(): |
|
|
34 |
''' |
|
|
35 |
For rendering results on HTML GUI |
|
|
36 |
''' |
|
|
37 |
if request.method == 'POST': |
|
|
38 |
f = request.files['file'] |
|
|
39 |
f.filename = 'patient_data.xlsx' |
|
|
40 |
f.save(secure_filename(f.filename)) |
|
|
41 |
# return 'file uploaded successfully' |
|
|
42 |
|
|
|
43 |
path = 'patient_data.xlsx' |
|
|
44 |
wb_obj = openpyxl.load_workbook(path) |
|
|
45 |
sheet_obj = wb_obj.active |
|
|
46 |
# print(sheet_obj.cell(row = 2, column = 1).value) |
|
|
47 |
|
|
|
48 |
d1 = sheet_obj.cell(row = 2, column = 2).value |
|
|
49 |
d2 = sheet_obj.cell(row = 2, column = 3).value |
|
|
50 |
d3 = sheet_obj.cell(row = 2, column = 4).value |
|
|
51 |
d4 = sheet_obj.cell(row = 2, column = 5).value |
|
|
52 |
d5 = sheet_obj.cell(row = 2, column = 6).value |
|
|
53 |
d6 = sheet_obj.cell(row = 2, column = 7).value |
|
|
54 |
d7 = sheet_obj.cell(row = 2, column = 8).value |
|
|
55 |
d8 = sheet_obj.cell(row = 2, column = 9).value |
|
|
56 |
d9 = sheet_obj.cell(row = 2, column = 10).value |
|
|
57 |
d10= sheet_obj.cell(row = 2, column = 11).value |
|
|
58 |
d11= sheet_obj.cell(row = 2, column = 12).value |
|
|
59 |
d12= sheet_obj.cell(row = 2, column = 13).value |
|
|
60 |
d13= sheet_obj.cell(row = 2, column = 14).value |
|
|
61 |
d14= sheet_obj.cell(row = 2, column = 15).value |
|
|
62 |
d15= sheet_obj.cell(row = 2, column = 16).value |
|
|
63 |
d16= sheet_obj.cell(row = 2, column = 17).value |
|
|
64 |
d17= sheet_obj.cell(row = 2, column = 18).value |
|
|
65 |
d18= sheet_obj.cell(row = 2, column = 19).value |
|
|
66 |
d19= sheet_obj.cell(row = 2, column = 20).value |
|
|
67 |
d20= sheet_obj.cell(row = 2, column = 21).value |
|
|
68 |
arr=np.array([[d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,d18,d19,d20]]) |
|
|
69 |
|
|
|
70 |
#int_features = [int(x) for x in request.form.values()] |
|
|
71 |
#final_features = [np.array(int_features)] |
|
|
72 |
prediction = model.predict(arr) |
|
|
73 |
|
|
|
74 |
output = prediction[0] |
|
|
75 |
if output==0: |
|
|
76 |
print("Chemotherapy Not Suitable") |
|
|
77 |
else: |
|
|
78 |
print("Chemotherapy Suitable") |
|
|
79 |
return render_template('result.html', data=prediction, prediction_text='{}'.format(output)) |
|
|
80 |
|
|
|
81 |
@app.route('/predict1',methods=['POST']) |
|
|
82 |
def predict1(): |
|
|
83 |
''' |
|
|
84 |
For rendering results on HTML GUI |
|
|
85 |
''' |
|
|
86 |
d1= request.form['a'] |
|
|
87 |
d2= request.form['b'] |
|
|
88 |
d3= request.form['c'] |
|
|
89 |
d4= request.form['d'] |
|
|
90 |
d5= request.form['e'] |
|
|
91 |
d6= request.form['f'] |
|
|
92 |
d7= request.form['g'] |
|
|
93 |
d8= request.form['h'] |
|
|
94 |
d9= request.form['i'] |
|
|
95 |
d10= request.form['j'] |
|
|
96 |
d11=request.form['k'] |
|
|
97 |
d12= request.form['l'] |
|
|
98 |
d13= request.form['m'] |
|
|
99 |
d14= request.form['n'] |
|
|
100 |
d15= request.form['o'] |
|
|
101 |
d16= request.form['p'] |
|
|
102 |
d17= request.form['q'] |
|
|
103 |
d18= request.form['r'] |
|
|
104 |
d19= request.form['s'] |
|
|
105 |
d20= request.form['t'] |
|
|
106 |
arr=np.array([[d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,d18,d19,d20]]) |
|
|
107 |
|
|
|
108 |
#int_features = [int(x) for x in request.form.values()] |
|
|
109 |
#final_features = [np.array(int_features)] |
|
|
110 |
prediction1 = model.predict(arr) |
|
|
111 |
|
|
|
112 |
output = prediction1[0] |
|
|
113 |
if output==0: |
|
|
114 |
print("Chemotherapy Not Suitable") |
|
|
115 |
else: |
|
|
116 |
print("Chemotherapy Suitable") |
|
|
117 |
return render_template('result.html', data=prediction1, prediction_text='{}'.format(output)) |
|
|
118 |
|
|
|
119 |
@app.route('/search',methods=['POST']) |
|
|
120 |
def search(): |
|
|
121 |
if request.method == 'POST': |
|
|
122 |
word = request.form['query'] |
|
|
123 |
search_word = word.upper() |
|
|
124 |
print(search_word) |
|
|
125 |
link = "https://clinicaltables.nlm.nih.gov/api/ncbi_genes/v3/search?terms="+search_word |
|
|
126 |
with urllib.request.urlopen(link) as url: |
|
|
127 |
data = json.loads(url.read().decode()) |
|
|
128 |
# print(data) |
|
|
129 |
return jsonify({ 'htmlresponse': render_template('table.html', data = data, n = int(len(data[1])), word = search_word ) }) |
|
|
130 |
|
|
|
131 |
if __name__ == "__main__": |
|
|
132 |
# app.run(debug=True) |
|
|
133 |
server = Server(app.wsgi_app) |
|
|
134 |
server.serve() |