--- a +++ b/app.py @@ -0,0 +1,134 @@ +import os +import xlrd +import pickle +import openpyxl +import numpy as np +import urllib.request, json +from flask import Flask, render_template +from flask import request, jsonify +from werkzeug.utils import secure_filename +from livereload import Server + + +app = Flask(__name__) +model = pickle.load(open('model.pkl', 'rb')) + +@app.route('/') +def home(): + return render_template('home.html') + +@app.route('/page') +def page(): + return render_template('page.html') + +@app.route('/result') +def result(): + return render_template('result.html') + +@app.route('/gene') +def gene(): + return render_template('gene.html') + +@app.route('/predict',methods=['GET', 'POST']) +def predict(): + ''' + For rendering results on HTML GUI + ''' + if request.method == 'POST': + f = request.files['file'] + f.filename = 'patient_data.xlsx' + f.save(secure_filename(f.filename)) + # return 'file uploaded successfully' + + path = 'patient_data.xlsx' + wb_obj = openpyxl.load_workbook(path) + sheet_obj = wb_obj.active + # print(sheet_obj.cell(row = 2, column = 1).value) + + d1 = sheet_obj.cell(row = 2, column = 2).value + d2 = sheet_obj.cell(row = 2, column = 3).value + d3 = sheet_obj.cell(row = 2, column = 4).value + d4 = sheet_obj.cell(row = 2, column = 5).value + d5 = sheet_obj.cell(row = 2, column = 6).value + d6 = sheet_obj.cell(row = 2, column = 7).value + d7 = sheet_obj.cell(row = 2, column = 8).value + d8 = sheet_obj.cell(row = 2, column = 9).value + d9 = sheet_obj.cell(row = 2, column = 10).value + d10= sheet_obj.cell(row = 2, column = 11).value + d11= sheet_obj.cell(row = 2, column = 12).value + d12= sheet_obj.cell(row = 2, column = 13).value + d13= sheet_obj.cell(row = 2, column = 14).value + d14= sheet_obj.cell(row = 2, column = 15).value + d15= sheet_obj.cell(row = 2, column = 16).value + d16= sheet_obj.cell(row = 2, column = 17).value + d17= sheet_obj.cell(row = 2, column = 18).value + d18= sheet_obj.cell(row = 2, column = 19).value + d19= sheet_obj.cell(row = 2, column = 20).value + d20= sheet_obj.cell(row = 2, column = 21).value + arr=np.array([[d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,d18,d19,d20]]) + + #int_features = [int(x) for x in request.form.values()] + #final_features = [np.array(int_features)] + prediction = model.predict(arr) + + output = prediction[0] + if output==0: + print("Chemotherapy Not Suitable") + else: + print("Chemotherapy Suitable") + return render_template('result.html', data=prediction, prediction_text='{}'.format(output)) + +@app.route('/predict1',methods=['POST']) +def predict1(): + ''' + For rendering results on HTML GUI + ''' + d1= request.form['a'] + d2= request.form['b'] + d3= request.form['c'] + d4= request.form['d'] + d5= request.form['e'] + d6= request.form['f'] + d7= request.form['g'] + d8= request.form['h'] + d9= request.form['i'] + d10= request.form['j'] + d11=request.form['k'] + d12= request.form['l'] + d13= request.form['m'] + d14= request.form['n'] + d15= request.form['o'] + d16= request.form['p'] + d17= request.form['q'] + d18= request.form['r'] + d19= request.form['s'] + d20= request.form['t'] + arr=np.array([[d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,d18,d19,d20]]) + + #int_features = [int(x) for x in request.form.values()] + #final_features = [np.array(int_features)] + prediction1 = model.predict(arr) + + output = prediction1[0] + if output==0: + print("Chemotherapy Not Suitable") + else: + print("Chemotherapy Suitable") + return render_template('result.html', data=prediction1, prediction_text='{}'.format(output)) + +@app.route('/search',methods=['POST']) +def search(): + if request.method == 'POST': + word = request.form['query'] + search_word = word.upper() + print(search_word) + link = "https://clinicaltables.nlm.nih.gov/api/ncbi_genes/v3/search?terms="+search_word + with urllib.request.urlopen(link) as url: + data = json.loads(url.read().decode()) + # print(data) + return jsonify({ 'htmlresponse': render_template('table.html', data = data, n = int(len(data[1])), word = search_word ) }) + +if __name__ == "__main__": + # app.run(debug=True) + server = Server(app.wsgi_app) + server.serve() \ No newline at end of file