def __init__(self, db, options): """ Create a new KDTree instance. :param db : Database with fields x,y :param options : options for configuring the KDTree :Example: >>> tree = KDTree(database,{"max-depth":3}) """ keys = db.keys() data = np.asarray(db.query(keys)) treef = btf.BalancedTreeFunctions if "max-depth" in options: self.max_depth = options["max-depth"] else: self.max_depth = treef.tree_depth(len(data)) if "max-elements" in options: max_elem_depth = treef.tree_depth_max_leave_elements( len(data), options["max-elements"]) if self.max_depth < max_elem_depth: self.max_depth = max_elem_depth self.partition = lambda x, index: np.argsort(x[:, index], axis=0) storage_size = int(math.pow(2, self.max_depth) - 1) self.storage = storage = [{} for x in range(storage_size)] self.traverse(data) self.bb = bb.BoundingBox.from_dataset(data, db.fields()["x"], db.fields()["y"])
def main(stdout=False): if stdout: print() #tornado.options.parse_command_line() #from tornado.log import enable_pretty_logging #enable_pretty_logging() #print(dir(tornado.options.options)) tornado.options.options.log_file_prefix = myapp["logfile"] tornado.options.options.log_file_num_backups=5 # size of a single logfile tornado.options.options.log_file_max_size = 10 * 1000 * 1000 tornado.options.parse_command_line() gen_logger = logging.getLogger("tornado.general") gen_logger.addHandler(log_handler) access_logger = logging.getLogger("tornado.access") access_logger.addHandler(log_handler) #print(access_logger.handlers) #for elem in access_logger.handlers: # print(dir(elem)) app_logger = logging.getLogger("tornado.application") app_logger.addHandler(log_handler) #app = tornado.web.Application(handlers=routes, **app_settings) if stdout: for idx, elem in enumerate(db_settings.keys()): if elem != "default_values": if elem.lower() == "sql": print(" DB #" +str(idx) + ": " + db_settings[elem]["type"] + " enabled: " + str(db_settings[elem]["enabled"]) ) else: print(" DB #" +str(idx) + ": " + elem + " enabled: " + str(db_settings[elem]["enabled"])) #app.listen(app_settings["port"], **server_settings)# #app=Application() #print(app) if stdout: print() print(50*"-") print("Final routes (order matters from here on ;) " ) print(50*"-") for idx,elem in enumerate(app.handlers[0][1]): print("#"+str(idx)+": " + str(elem.regex) + " --> " + str(elem.handler_class)) print() print(50*"-") print("starting the pow server Server ") print(50*"-") print("visit: http://localhost:" + str(app_settings["port"])) print("running...") http_server = tornado.httpserver.HTTPServer(app) http_server.listen(app_settings["port"]) ioloop = tornado.ioloop.IOLoop.instance() if app_settings["IOLoop.set_blocking_log_threshold"]: ioloop.set_blocking_log_threshold( app_settings["IOLoop.set_blocking_log_threshold"]) ioloop.start()