def augmentQualiData(datatimes, dataclassification): augmentedData = {} tmpc = {} for tmp in dataclassification: if tmp[4] != 'DNS' and tmp[4] != 'DNF': toptimes = [tsa.getTime(tmp[4])] else: toptimes = [0] if len(tmp) > 8: if tmp[8] != 'DNF': toptimes.append(tsa.getTime(tmp[8])) if len(tmp) == 14: toptimes.append(tsa.getTime(tmp[11])) toptimes.sort() tmpc[tmp[1]] = { 'pos': tmp[0], 'fastlap': toptimes[0], 'name': tmp[2], 'team': tmp[3], 'driverNum': tmp[1] } for item in datatimes: driver = item[0] ag = {'times': item} if driver in tmpc: for att in tmpc[driver]: ag[att] = tmpc[driver][att] else: ag = {'name': item[1], 'times': [], 'driverNum': driver} augmentedData[driver] = ag return augmentedData
def output_pitStops(stops,history,analysis): #['24', 'T. GLOCK', 'Marussia Virgin Racing', '1', '1', '14:05:58', '35.092', '35.092'] driverHistory={} #modify driverHistory to be analysis but with lap 1 time from history lap1times=history[0] for t in lap1times: driverHistory[t[0]]={} for hl in analysis: driver=hl[0] if driver in driverHistory: for pair in tsa.pairs(hl[4:]): driverHistory[driver][pair[0]]=tsa.getTime(pair[1]) for stop in stops: carNum=stop[0] lap=stop[4] stoptime=tsa.getTime(stop[6]) if carNum in driverHistory: threelaps=instopafterLaps(driverHistory[carNum],carNum,lap) else: threelaps=['','','',''] print carNum,lap,stoptime,threelaps
def output_pitStops(stops, history, analysis): #['24', 'T. GLOCK', 'Marussia Virgin Racing', '1', '1', '14:05:58', '35.092', '35.092'] driverHistory = {} #modify driverHistory to be analysis but with lap 1 time from history lap1times = history[0] for t in lap1times: driverHistory[t[0]] = {} for hl in analysis: driver = hl[0] if driver in driverHistory: for pair in tsa.pairs(hl[4:]): driverHistory[driver][pair[0]] = tsa.getTime(pair[1]) for stop in stops: carNum = stop[0] lap = stop[4] stoptime = tsa.getTime(stop[6]) if carNum in driverHistory: threelaps = instopafterLaps(driverHistory[carNum], carNum, lap) else: threelaps = ['', '', '', ''] print carNum, lap, stoptime, threelaps
def augmentQualiData(datatimes,dataclassification): augmentedData={} tmpc={} for tmp in dataclassification: if tmp[4]!='DNS' and tmp[4]!='DNF': toptimes=[tsa.getTime(tmp[4])] else: toptimes=[0] if len(tmp)>8: if tmp[8]!='DNF': toptimes.append(tsa.getTime(tmp[8])) if len(tmp)==14: toptimes.append(tsa.getTime(tmp[11])) toptimes.sort() tmpc[tmp[1]]={'pos':tmp[0],'fastlap':toptimes[0], 'name':tmp[2], 'team':tmp[3],'driverNum':tmp[1]} for item in datatimes: driver=item[0] ag={'times':item} if driver in tmpc: for att in tmpc[driver]: ag[att]=tmpc[driver][att] else: ag={'name':item[1],'times':[],'driverNum':driver} augmentedData[driver]=ag return augmentedData
def _outputPracticeClassification(outfile,sessiondata,sessionName=''): for s in sessiondata: #pos, name, driverNum, team, country, time, laps, speed pos=s[0] name=s[2] driverNum=s[1] team=s[4] country=s[3] time=tsa.getTime(s[5]) laps=s[-1] speed=s[-3] if sessionName=='': outfile.writerow([pos, driverNum, name, time, laps, speed, team, country]) else: outfile.writerow([sessionName,pos, driverNum, name, time, laps, speed, team, country])
def augmentPracticeData(datatimes,dataclassification): augmentedData={} tmpc={} for tmp in dataclassification: tmpc[tmp[1]]={'pos':tmp[0],'fastlap':tsa.getTime(tmp[5]), 'name':tmp[2], 'team':tmp[4],'nationality':tmp[3],'driverNum':tmp[1]} for item in datatimes: driver=item[0] ag={'times':item} if driver in tmpc: for att in tmpc[driver]: ag[att]=tmpc[driver][att] else: ag={'name':item[1],'times':[],'driverNum':driver} augmentedData[driver]=ag return augmentedData
def _outputPracticeClassification(outfile, sessiondata, sessionName=''): for s in sessiondata: #pos, name, driverNum, team, country, time, laps, speed pos = s[0] name = s[2] driverNum = s[1] team = s[4] country = s[3] time = tsa.getTime(s[5]) laps = s[-1] speed = s[-3] if sessionName == '': outfile.writerow( [pos, driverNum, name, time, laps, speed, team, country]) else: outfile.writerow([ sessionName, pos, driverNum, name, time, laps, speed, team, country ])
def augmentPracticeData(datatimes, dataclassification): augmentedData = {} tmpc = {} for tmp in dataclassification: tmpc[tmp[1]] = { 'pos': tmp[0], 'fastlap': tsa.getTime(tmp[5]), 'name': tmp[2], 'team': tmp[4], 'nationality': tmp[3], 'driverNum': tmp[1] } for item in datatimes: driver = item[0] ag = {'times': item} if driver in tmpc: for att in tmpc[driver]: ag[att] = tmpc[driver][att] else: ag = {'name': item[1], 'times': [], 'driverNum': driver} augmentedData[driver] = ag return augmentedData
import csv import timingSheetAnalysis as tsa from data import can2011_data as candata from data import esp2011_data as espdata from data import eur2011_data as eurdata from data import mco2011_data as mcodata from data import tur2011_data as turdata from data import ita2011_data as itadata from data import bel2011_data as beldata from data import gbr2011_data as gbrdata from data import ger2011_data as gerdata from data import hun2011_data as hundata dtype=[turdata,espdata,mcodata,candata,eurdata,itadata,beldata,gbrdata,gerdata,hundata] fpathname='../testOutputFiles' writer = csv.writer(open(fpathname+"/pitStopRaw.csv", "wb")) writer.writerow(['slug','car','driver','team','stopCount','stopLap','timeofday','stoptime','totalStopTime']) for dt in dtype: print dt slug=dt.raceinfo['slug'] for d in dt.stops: d[5]=tsa.getTime(d[5]) d[6]=tsa.getTime(d[6]) d[7]=tsa.getTime(d[7]) row=[slug]+d writer.writerow(row)
from data import esp2011_data as espdata from data import eur2011_data as eurdata from data import mco2011_data as mcodata from data import tur2011_data as turdata from data import ita2011_data as itadata from data import bel2011_data as beldata from data import gbr2011_data as gbrdata from data import ger2011_data as gerdata from data import hun2011_data as hundata dtype = [ turdata, espdata, mcodata, candata, eurdata, itadata, beldata, gbrdata, gerdata, hundata ] fpathname = '../testOutputFiles' writer = csv.writer(open(fpathname + "/pitStopRaw.csv", "wb")) writer.writerow([ 'slug', 'car', 'driver', 'team', 'stopCount', 'stopLap', 'timeofday', 'stoptime', 'totalStopTime' ]) for dt in dtype: print dt slug = dt.raceinfo['slug'] for d in dt.stops: d[5] = tsa.getTime(d[5]) d[6] = tsa.getTime(d[6]) d[7] = tsa.getTime(d[7]) row = [slug] + d writer.writerow(row)
def output_qualiStats(qualitrap, qualispeeds, qualisectors, qualiclassification, sessiondata, typ='quali', grid=[]): f = open('../generatedFiles/' + race + typ + 'stats.csv', 'wb') writer = csv.writer(f) sessionStats = {} for driverdata in qualitrap: driverNum = driverdata[1] sessionStats[driverNum] = { 'name': driverdata[2], 'trap': driverdata[3], 'traptimeofday': driverdata[4] } trapnames = ['inter1', 'inter2', 'finish'] tt = 0 for traps in qualispeeds: for driver in traps: driverNum = driver[1] if driverNum in sessionStats: sessionStats[driverNum][trapnames[tt]] = driver[3] else: sessionStats[driverNum] = {} sessionStats[driverNum][trapnames[tt]] = driver[3] tt = tt + 1 sn = 1 dultimate = {} for sector in qualisectors: for driver in sector: driverNum = driver[1] sessionStats[driverNum]['sector' + str(sn)] = driver[3] sn = sn + 1 fastlap = {} if typ == 'quali': for c in qualiclassification: sessionStats[c[1]]['position'] = c[0] sessionStats[c[1]]['team'] = c[3] if c[0] != 'DNQ' and int(c[0]) < 17: offset = -3 else: offset = -4 if c[-2] != 'DNS' and c[-2] != 'DNF': sessionStats[c[1]]['qualitime'] = tsa.getTime(c[offset]) sessionStats[c[1]]['percent'] = c[6] else: sessionStats[c[1]]['qualitime'] = '' sessionStats[c[1]]['percent'] = '' else: for c in qualiclassification: if c[0] in sessionStats: sessionStats[c[0]]['position'] = c[5] sessionStats[c[0]]['team'] = c[3] fastlap[c[0]] = tsa.getTime(c[-2]) #sessionStats[c[0]]['percent']=c[6] else: sessionStats[c[0]] = {} sessionStats[c[0]]['position'] = '' sessionStats[c[0]]['team'] = '' fastlap[c[0]] = '' px = 1 for p in grid[1:]: sessionStats[p]['grid'] = px px = px + 1 headers = [ 'classification', 'driverNum', 'name', 'sector1', 'sector2', 'sector3' ] if typ == 'quali': headers.append('qualiTime') else: headers.append('grid') headers = headers + [ 'ultimate', 'fastestlap', 'inter1', 'inter2', 'finish', 'trap', 'traptimeofday', 'team' ] writer.writerow(headers) for driverNum in sessionStats: if typ == 'quali': if 'fastlap' in sessiondata[driverNum]: fastlap[driverNum] = sessiondata[driverNum]['fastlap'] else: fastlap[driverNum] = 200 for x in [ 'sector1', 'sector2', 'sector3', 'inter1', 'inter2', 'finish', 'trap', 'traptimeofday', 'team' ]: if x not in sessionStats[driverNum]: sessionStats[driverNum][x] = 0 sessionStats[driverNum]['ultimate'] = float( sessionStats[driverNum]['sector1']) + float( sessionStats[driverNum]['sector2']) + float( sessionStats[driverNum]['sector3']) ss = sessionStats[driverNum] #hackfix outTxt = [] if 'position' in ss: outTxt.append(ss['position']) else: outTxt.append('') outTxt.append(driverNum) for tmpi in ['name', 'sector1', 'sector2', 'sector3']: if tmpi in ss: outTxt.append(ss[tmpi]) else: outTxt.append('') #outTxt=[ss['position'],driverNum,ss['name'],ss['sector1'],ss['sector2'],ss['sector3']] if typ == 'quali': if 'qualitime' in ss: outTxt.append(ss['qualitime']) else: outTxt.append('') else: outTxt.append(ss['grid']) if driverNum not in fastlap: fastlap[driverNum] = 0 outTxt = outTxt + [ ss['ultimate'], fastlap[driverNum], ss['inter1'], ss['inter2'], ss['finish'], ss['trap'], ss['traptimeofday'], ss['team'] ] writer.writerow(outTxt) f.close()
def output_qualiStats(qualitrap,qualispeeds,qualisectors,qualiclassification,sessiondata,typ='quali',grid=[]): f=open('../generatedFiles/'+race+typ+'stats.csv','wb') writer = csv.writer(f) sessionStats={} for driverdata in qualitrap: driverNum=driverdata[1] sessionStats[driverNum]={'name':driverdata[2],'trap':driverdata[3],'traptimeofday':driverdata[4]} trapnames=['inter1','inter2','finish'] tt=0 for traps in qualispeeds: for driver in traps: driverNum=driver[1] if driverNum in sessionStats: sessionStats[driverNum][trapnames[tt]]=driver[3] else: sessionStats[driverNum]={} sessionStats[driverNum][trapnames[tt]]=driver[3] tt=tt+1 sn=1 dultimate={} for sector in qualisectors: for driver in sector: driverNum=driver[1] sessionStats[driverNum]['sector'+str(sn)]=driver[3] sn=sn+1 fastlap={} if typ=='quali': for c in qualiclassification: sessionStats[c[1]]['position']=c[0] sessionStats[c[1]]['team']=c[3] if c[0]!='DNQ' and int(c[0])<17: offset=-3 else: offset=-4 if c[-2]!='DNS' and c[-2]!='DNF': sessionStats[c[1]]['qualitime']=tsa.getTime(c[offset]) sessionStats[c[1]]['percent']=c[6] else: sessionStats[c[1]]['qualitime']='' sessionStats[c[1]]['percent']='' else: for c in qualiclassification: if c[0] in sessionStats: sessionStats[c[0]]['position']=c[5] sessionStats[c[0]]['team']=c[3] fastlap[c[0]]=tsa.getTime(c[-2]) #sessionStats[c[0]]['percent']=c[6] else: sessionStats[c[0]]={} sessionStats[c[0]]['position']='' sessionStats[c[0]]['team']='' fastlap[c[0]]='' px=1 for p in grid[1:]: sessionStats[p]['grid']=px px=px+1 headers=['classification','driverNum','name','sector1','sector2','sector3'] if typ=='quali': headers.append('qualiTime') else: headers.append('grid') headers=headers+['ultimate','fastestlap','inter1','inter2','finish','trap','traptimeofday','team'] writer.writerow(headers) for driverNum in sessionStats: if typ=='quali': if 'fastlap' in sessiondata[driverNum]: fastlap[driverNum]=sessiondata[driverNum]['fastlap'] else: fastlap[driverNum]=200 for x in ['sector1','sector2','sector3','inter1','inter2','finish','trap','traptimeofday','team']: if x not in sessionStats[driverNum]: sessionStats[driverNum][x]=0 sessionStats[driverNum]['ultimate']=float(sessionStats[driverNum]['sector1'])+float(sessionStats[driverNum]['sector2'])+float(sessionStats[driverNum]['sector3']) ss=sessionStats[driverNum] #hackfix outTxt=[] if 'position' in ss: outTxt.append(ss['position']) else: outTxt.append('') outTxt.append(driverNum) for tmpi in ['name','sector1','sector2','sector3']: if tmpi in ss:outTxt.append(ss[tmpi]) else: outTxt.append('') #outTxt=[ss['position'],driverNum,ss['name'],ss['sector1'],ss['sector2'],ss['sector3']] if typ=='quali': if 'qualitime' in ss: outTxt.append(ss['qualitime']) else: outTxt.append('') else: outTxt.append(ss['grid']) if driverNum not in fastlap: fastlap[driverNum]=0 outTxt=outTxt+[ss['ultimate'],fastlap[driverNum],ss['inter1'],ss['inter2'],ss['finish'],ss['trap'],ss['traptimeofday'],ss['team']] writer.writerow(outTxt) f.close()