-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.py
110 lines (89 loc) · 2.97 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
from flask import Flask, render_template, jsonify, request
from suffixTree.suffixTree import SuffixTree
from suffixTree.helpers.searchPattern import SearchPattern
from suffixTree.helpers.lrs import LRS
from suffixTree.helpers.lcs import LCS
from suffixTree.helpers.lps import LPS
from fastaParser import SimpleFastaParser
from io import StringIO
from pptree import print_tree
import sys
PORT = 5000
HOST = '0.0.0.0'
app = Flask(__name__)
def simple_view(tree):
old_stdout = sys.stdout
new_stdout = StringIO()
sys.stdout = new_stdout
print_tree(tree.root, 'childrenArray')
output = new_stdout.getvalue()
sys.stdout = old_stdout
return output
@app.route('/', methods=['GET'])
def home():
return render_template('index.html')
@app.route('/api/search-pattern', methods=['POST'])
def search_pattern():
strings = request.form.get('strings')
if(strings is None or strings == ''):
strings = ''
strings = strings.splitlines()
strings = [(title, sequence)
for title, sequence in SimpleFastaParser(strings)]
tree = SuffixTree(strings, True)
pattern = request.form.get('pattern')
if(pattern is None or pattern == ''):
pattern = ''
checker = SearchPattern(tree, pattern)
result = {'tree_simple_view': simple_view(tree),
'result': checker.search()}
return jsonify(result)
@app.route('/api/lrs', methods=['POST'])
def lrs():
strings = request.form.get('strings')
if(strings is None or strings == ''):
strings = ''
strings = strings.splitlines()
strings = [(title, sequence)
for title, sequence in SimpleFastaParser(strings)]
tree = SuffixTree(strings, True)
k = request.form.get('k')
if(k is None or k == ''):
k = 0
k = int(k)
checker = LRS(tree, k)
result = {'tree_simple_view': simple_view(tree),
'result': checker.find()}
return jsonify(result)
@app.route('/api/lcs', methods=['POST'])
def lcs():
strings = request.form.get('strings')
if(strings is None or strings == ''):
strings = ''
strings = strings.splitlines()
strings = [(title, sequence)
for title, sequence in SimpleFastaParser(strings)]
tree = SuffixTree(strings, True)
k = request.form.get('k')
if(k is None or k == ''):
k = 0
k = int(k)
checker = LCS(tree, k)
result = {'tree_simple_view': simple_view(tree),
'result': checker.find()}
return jsonify(result)
@app.route('/api/lps', methods=['POST'])
def lps():
strings = request.form.get('strings')
if(strings is None or strings == ''):
strings = ''
strings = strings.splitlines()
strings = [(title, sequence)
for title, sequence in SimpleFastaParser(strings)]
tree = SuffixTree(strings, True, True)
checker = LPS(tree)
result = {'tree_simple_view': simple_view(tree),
'result': checker.find()}
return jsonify(result)
if __name__ == '__main__':
app.run(host=HOST, port=PORT)