def get_pos(): # get data print bcolors.OKBLUE + "/get_position, POST" + bcolors.ENDC try: print bcolors.HEADER + "Try get data..." + bcolors.ENDC separator = ',' data = request.json values = np.fromstring(data.get("values"), sep=separator)[0] lat = np.fromstring(data.get("lat"), sep=separator)[0] lon = np.fromstring(data.get("lon"), sep=separator)[0] speed = np.fromstring(data.get("speed"), sep=separator)[0] print type(speed) acc_data = np.fromstring(data.get("acc_data"), sep=separator) com_data = np.fromstring(data.get("com_data"), sep=separator) tim_data = np.fromstring(data.get("tim_data"), sep=separator) print bcolors.OKGREEN + "Done!" + bcolors.ENDC except Exception as e: print bcolors.FAIL + "get_position: there are an exception! Pls, check data!" + bcolors.ENDC abort(400) # TODO: check data # sizeof acc_data, com_data and tim_data should be the same # prepare data for calculation # TODO: should be changed, currently we need to send request frequently print bcolors.WARNING + "Ignore values from request..." + bcolors.ENDC values = len(com_data) # prepare data for calculation acc_data = cmn.aver_std_array(acc_data, values) acc_data = acc_data.reshape(len(acc_data)/2, 2) acceleration = acc_data.item(0,0) direction = cmn.aver_std_array(com_data, values).item(0) time = tim_data.item(-1)/1000 - tim_data.item(0)/1000 action = sp.predicted(acc_data) speed = sp.get_speed(speed, time, acceleration, action) print "speed ", speed, " direct ", direction, " t ", time, " acc ", acceleration coordinates = pos.calculate_position(speed, time, direction, lat, lon) _lat = "%.6f" % coordinates[0] _lon = "%.6f" % coordinates[1] _speed = speed result = "lat: " + str(_lat) + "; lon: " +str( _lon) + "; speed: " + str(_speed) print bcolors.OKGREEN, result, bcolors.ENDC return jsonify(lat=_lat, lon=_lon, speed=_speed)
def test_calculate_position_no_fills(): orders = test_data.orders_no_fills stocks, cash = position.calculate_position(orders[:2]) assert stocks == 0 assert cash == 0
def test_calculate_position_multiple(): orders = test_data.orders stocks, cash = position.calculate_position(orders[:2]) assert stocks == 30 + 50 assert cash == -30000 - 50 * 1020
def test_calculate_position_single(): orders = test_data.orders stocks, cash = position.calculate_position(orders[:1]) assert stocks == 30 assert cash == -30000