All the functions are defined in "functions.py". Simply run "main.py" file and it will call the functions in the suitable order.
Feel free to change "dataName" in "main.py" to use other available intersection-data. You can also play around with the inputs of the functions. Pay extra attention to the number of "OD" clusters when clustering the start/end points; pick suitable "k"s for each intersection (midway in "main.py"), and then move on to the next lines in "main.py".
Have fun!