-
Notifications
You must be signed in to change notification settings - Fork 0
/
fy_web.py
executable file
·67 lines (49 loc) · 1.55 KB
/
fy_web.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
#!/usr/bin/python
import tornado.ioloop
import tornado.web
import sys
from web import *
# handler for connectivity
class ConnectivityHandler(tornado.web.RequestHandler):
def initialize(self, querier):
self.__querier = querier
def get(self, X, Y, Z, radius):
self.write(self.__querier.get_mesh_connectivity(X, Y, Z, radius))
def set_default_headers(self):
# enable CORS
self.set_header("Access-Control-Allow-Origin", "*")
# handler for bundles (same as above but different function)
class BundleHandler(ConnectivityHandler):
def initialize(self, querier):
self.__querier = querier
def get(self, id, radius):
self.write(self.__querier.get_bundle(id, radius))
def set_default_headers(self):
# enable CORS
self.set_header("Access-Control-Allow-Origin", "*")
#
#
#
# ENTRYPOINT
#
#
#
# simple sanity check
if len(sys.argv) != 5:
print 'USAGE: ./fy_web.py TRK_FILE LH.SMOOTHWM RH.SMOOTHWM BRAIN.NII.GZ'
sys.exit(1)
# start Querier
querier = Querier(sys.argv[1],sys.argv[2],sys.argv[3],sys.argv[4])
application = tornado.web.Application([
#
# query a fiber with mesh connectivity using X,Y,Z coordinates (RAS space)
#
(r"/connectivity/(?P<X>[^\/]+)/(?P<Y>[^\/]+)/(?P<Z>[^\/]+)/(?P<radius>[^\/]+)", ConnectivityHandler, dict(querier=querier)),
#
# query for neighborhood tracks using a track ID and a bundle radius
#
(r"/bundle/(?P<id>[^\/]+)/(?P<radius>[^\/]+)", BundleHandler, dict(querier=querier)),
])
# start webserver
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()