Skip to content
Snippets Groups Projects
Commit 6349d572 authored by Lennard Geese's avatar Lennard Geese
Browse files

Reorganize Main

parent 53db7dbb
No related branches found
No related tags found
No related merge requests found
......@@ -2,6 +2,7 @@ import fastf1
from abc import ABC
from fastf1.core import Session
from fastf1.events import EventSchedule, Event
from DataHandler import DataHandler
......@@ -11,6 +12,17 @@ from DataHandler import DataHandler
class DataImporter(DataHandler, ABC):
def importAllEventsFromYear(self, year: int):
races: list[Event] = []
schedule: EventSchedule = fastf1.get_event_schedule(year, include_testing = False)
for raceIndex in schedule['RoundNumber']:
races.append(schedule.get_event_by_round(raceIndex))
return races
def importRaceSessions(self, races):
sessions: list[Session] = []
for race in races:
......
from asyncio import Event
from DataAnalyser import DataAnalyser
from DataChecker import DataChecker
from DataImporter import DataImporter
......@@ -6,41 +8,58 @@ from DataPlotter import DataPlotter
class Main:
class DataHandlingPackage:
importer = DataImporter()
analyser = DataAnalyser()
plotter = DataPlotter()
checker = DataChecker()
def main(self):
# contains pairs of season & race number to identify specific races
self.listWetWeatherRacesSince(2015)
race_indexes = [
[2022, 4], # Imola 2022 (DWR)
[2024, 7], # Imola 2024 (SWR)
[2024, 9], # Canada 2024 (DWR)
[2023, 8] # Canada 2023 (SWR)
[2024, 9], # Canada 2024 (DWR)
[2023, 8] # Canada 2023 (SWR)
# TODO: add more races
]
self.overtakeAnalysis(race_indexes)
importer = DataImporter()
analyser = DataAnalyser()
plotter = DataPlotter()
def listWetWeatherRacesSince(self, firstYear: int):
dataHandler: Main.DataHandlingPackage = self.DataHandlingPackage()
events: list[Event] = []
for year in range(firstYear, 2025): # FIXME: Add automatic upper bound for year
events.append(dataHandler.importer.importAllEventsFromYear(year))
for event in events:
x = 0
# TODO: filter out dry races
def overtakeAnalysis(self, race_indexes: list[(int, int)]):
dataHandler: Main.DataHandlingPackage = self.DataHandlingPackage()
for race_index in race_indexes:
# Import
raceSession = importer.importRaceSession(race_index)
raceSession = dataHandler.importer.importRaceSession(race_index)
raceName: str = f"{raceSession.event['EventName']} {raceSession.event.year}"
print("Import done")
# Analyse
overtakesInRaces: list[int] = analyser.analyseRaceForOvertakes(raceSession)
overtakesInRaces: list[int] = dataHandler.analyser.analyseRaceForOvertakes(raceSession)
print("Overtake analysis done")
# weatherInRaces = analyser.analyseRaceForWeather(raceSession)
earliestTireChange: int = analyser.getEarliestTireChange(raceSession) # first lap where someone switched from slicks to non slicks or vice versa, denoted by lap number
earliestTireChange: int = dataHandler.analyser.getEarliestTireChange(raceSession) # first lap where someone switched from slicks to non slicks or vice versa, denoted by lap number
print("First tire change done")
latestTireChange: int = analyser.getLatestTireChange(raceSession)
latestTireChange: int = dataHandler.analyser.getLatestTireChange(raceSession)
print("Last tire change done")
# Plot
plotter.plotOvertakesWithTireChangeWindow(overtakesInRaces, earliestTireChange, latestTireChange, raceName)
dataHandler.plotter.plotOvertakesWithTireChangeWindow(overtakesInRaces, earliestTireChange, latestTireChange, raceName)
print("Plot done")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment