-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtools.py
67 lines (54 loc) · 2.19 KB
/
tools.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
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Fri Apr 23 12:07:29 2021
@author: davearquati
"""
import configparser
import getpass
import logging
import os
import time
import numpy as np
import pandas as pd
import requests
__location__ = os.path.realpath(os.path.join(os.getcwd(), os.path.dirname(__file__)))
config = configparser.ConfigParser()
config.read(os.path.join(__location__,'config.ini'))
proxy_required = config['connections'].getboolean('proxy_required')
proxy_auth_required = config['connections'].getboolean('proxy_auth_required')
proxies = {k: v for k, v in config['proxies'].items()}
def create_onelondon_session(proxy_required=proxy_required,
auth_required=proxy_auth_required,
proxies=proxies):
logging.getLogger(__name__).info("Setting up a OneLondon proxy session...")
session = requests.Session()
if auth_required:
proxy_username = input("Please confirm your OneLondon username to send to the TfL proxy server: ")
proxy_password = getpass.getpass("OneLondon password: ")
session.proxies = {k: v.format(auth=f'{proxy_username}:{proxy_password}@') for k, v in proxies.items()}
elif proxy_required:
session.proxies = {k: v.format(auth='') for k, v in proxies.items()}
return session
class Timer():
def __init__(self, label=None, accuracy=4):
self.a = time.time()
self.accuracy=accuracy
if label is not None:
print(label)
def stop(self):
self.b = time.time()
self.duration = self.b - self.a
elapsis = r"{:."+str(self.accuracy)+"}"
print((elapsis+" seconds elapsed").format(self.duration))
return self.duration
def compass_direction(xdiffs, ydiffs):
return (-np.rad2deg(np.arctan2(xdiffs, ydiffs)) + 90) % 360
def pythag_distance(xdiffs, ydiffs):
return np.sqrt(xdiffs**2 + ydiffs**2)
def compass_to_cardinal(compass_direction):
cardinals = pd.cut(compass_direction.squeeze(),
bins=np.arange(-22.5,360+22.5*2,45),
labels=['N','NE','E','SE','S','SW','W','NW','N2'])\
.replace({'N2':'N'})
return cardinals