diff --git a/.gitignore b/.gitignore index e5e132ff..e45f14c3 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ data analysis/test.ipynb data analysis/.ipynb_checkpoints/test-checkpoint.ipynb .vscode/settings.json .vscode +data analysis/arthur_pull.ipynb diff --git a/data analysis/__pycache__/data.cpython-37.pyc b/data analysis/__pycache__/data.cpython-37.pyc new file mode 100644 index 00000000..26adb70c Binary files /dev/null and b/data analysis/__pycache__/data.cpython-37.pyc differ diff --git a/data analysis/data.py b/data analysis/data.py new file mode 100644 index 00000000..6649a292 --- /dev/null +++ b/data analysis/data.py @@ -0,0 +1,55 @@ +import requests +import pymongo +import pandas as pd +def req_event_matches(eventkey,apikey): + headers={'X-TBA-Auth-Key':apikey} + r=requests.get('https://www.thebluealliance.com/api/v3/event/'+eventkey+'/matches/simple', headers=headers) + return r +def get_match_data(request): + if request.status_code == 200: + x=[] + for i in sorted(request.json(), key=lambda i: i['actual_time']): + x.append([[i['alliances']['red']['team_keys'], i['alliances']['blue']['team_keys']],i['winning_alliance']]) + return x + +def get_team_match_data(apikey, competition, team_num): + client = pymongo.MongoClient(apikey) + db = client.data_scouting + mdata = db.matchdata + out = {} + for i in mdata.find({"competition" : competition, "team_scouted": team_num}): + out[i['match']] = i['data'] + return pd.DataFrame(out) + +def get_team_pit_data(apikey, competition, team_num): + client = pymongo.MongoClient(apikey) + db = client.data_scouting + mdata = db.pitdata + out = {} + for i in mdata.find({"competition" : competition, "team_scouted": team_num}): + out[i['match']] = i['data'] + return pd.DataFrame(out) + +def unkeyify_2l(layered_dict): + out = {} + for i in layered_dict.keys(): + add = [] + sortkey = [] + for j in layered_dict[i].keys(): + add.append([j,layered_dict[i][j]]) + add.sort(key = lambda x: x[0]) + out[i] = list(map(lambda x: x[1], add)) + return out + +def get_data_formatted(apikey, competition): + client = pymongo.MongoClient(apikey) + db = client.data_scouting + mdata = db.teamlist + x=mdata.find_one({"competition":competition}) + out = {} + for i in x: + try: + out[int(i)] = unkeyify_2l(get_team_match_data(apikey, competition, int(i)).transpose().to_dict()) + except: + pass + return out \ No newline at end of file diff --git a/data analysis/superscript.py b/data analysis/superscript.py index 9e7eb69d..4ecab30e 100644 --- a/data analysis/superscript.py +++ b/data analysis/superscript.py @@ -3,10 +3,14 @@ # Notes: # setup: -__version__ = "0.0.0.007" +__version__ = "0.0.0.008" # changelog should be viewed using print(analysis.__changelog__) __changelog__ = """changelog: + 0.0.0.008: + - added data import + - removed tba import + - finished main method 0.0.0.007: - added load_config - optimized simpleloop for readibility @@ -48,7 +52,7 @@ from analysis import analysis as an from numba import jit import numpy as np import pickle -import tba +import data as d try: from analysis import trueskill as Trueskill except: @@ -56,16 +60,19 @@ except: def main(): while(True): - config = load_config("config.csv") - simpleloop(data, config) + competition, config = load_config("config.csv") + apikey = an.load_csv("keys.txt")[0][0] + data = d.get_data_formatted(apikey, competition) + results = simpleloop(data, config) + print(results) def load_config(file): config_vector = {} file = an.load_csv(file) - for line in file: - config_vector[line[0]] = line[1:] + for line in file[2:]: + config_vector[line[0]] = line[2:] - return config_vector + return (file[0][0], config_vector) def simpleloop(data, tests): # expects 3D array with [Team][Variable][Match] return_vector = {} diff --git a/data analysis/tba.py b/data analysis/tba.py deleted file mode 100644 index 3dfd04fa..00000000 --- a/data analysis/tba.py +++ /dev/null @@ -1,11 +0,0 @@ -import requests -def req_event_matches(eventkey,apikey): - headers={'X-TBA-Auth-Key':apikey} - r=requests.get('https://www.thebluealliance.com/api/v3/event/'+eventkey+'/matches/simple', headers=headers) - return r -def get_match_data(request): - if request.status_code == 200: - x=[] - for i in sorted(request.json(), key=lambda i: i['actual_time']): - x.append([[i['alliances']['red']['team_keys'], i['alliances']['blue']['team_keys']],i['winning_alliance']]) - return x \ No newline at end of file