Skip to content

This repository contains the code I wrote for an external industry representative from General Motors who works as an Active Safety Technical Expert. This project reads in data from GM Advanced Driving Assistance Systems and stores it in a memory-efficient linked list, and then visualizes that data.

Notifications You must be signed in to change notification settings

ckrol2/General-Motors-Project

Repository files navigation

General Motors Project

To Run:

Download zip file (including csv files) and extract to a folder. Using Jupyter Notebook, run LinkedList.ipynb, then dataRead.ipynb, and finally plotter.ipynb. On runtime completion of plotter the visualization will be available.


File: LinkedList.py

This file creates a linked list data structure in Python. The linked list was created to preserve memory when compared to Python lists and dictionaries, which function as dynamic arrays and hash tables, respectively. A linked list can reduce memory usage by up to 50% of that of a Python list and up to 70% of a Python dictionary.

The Node class contains attributes corresponding to Event Data Recording (EDR) for a given vehicle, which is identified by its VIN. These attributes can be changed depending on what it is you wish to store in the linked list.

The Linked List class contains two added funtions, the first of which is add_first(), which adds a new Node at the head of the Linked List. This allows for more efficient time complexity, giving the linked list a O(1) insert rather than O(n), saving valuable time as the linked list grows in size. This also allows for a built-in cache when iterating through the linked list, in that the most recently stored nodes will be at the front.

The second function is remove_node(), which allows the user to query by VIN and remove the corresponding node from the linked list. This allows for easy data maintenance and is helpful when deleting data that is not useful from the linked list, saving both space in memory and time for future iterations through the linked list.


File: dataRead.py

This file creates a function called readIn() which reads in raw data from csv files and inserts it into the linked list data structure. The function can be altered to fit the user's needs by reading data from different files and querying by different columns.


File: plotter.py

This file visualizes EDR data from GM Advanced Driving Assistance Systems by plotting a bar graph showing the percentage distribution of gap settings in cars that reach three different speed ranges. The axes being plotted can be altered to visualize different data. The current structure of the graph is three touching bars representing the three gap settings (Near, Medium, and Far) which is in turn being measured at three different speed ranges.

About

This repository contains the code I wrote for an external industry representative from General Motors who works as an Active Safety Technical Expert. This project reads in data from GM Advanced Driving Assistance Systems and stores it in a memory-efficient linked list, and then visualizes that data.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published