Skip to content

Instantly share code, notes, and snippets.

View AndrewTheTM's full-sized avatar
🏃‍♂️

Andrew Rohne AndrewTheTM

🏃‍♂️
View GitHub Profile
@AndrewTheTM
AndrewTheTM / list_bad_transit_load_zones.py
Last active May 30, 2024 19:43
This scans the transit PRN output of a Cube Voyager transit load step and returns a data frame of the from-zone, to-zone, and number of trips.
def list_bad_zones(input_file):
with open(input_file, 'r') as fr:
lines = fr.readlines()
lines = [line.rstrip('\n') for line in lines]
chk = re.compile('.*([0-9]+\.[0-9]*) Trips for I\=([0-9]+) to J\=([0-9]+), but no path.*')
lines = pd.DataFrame({'INPUT': [l for l in lines if chk.match(l)]})
lines['trips'] = lines['INPUT'].apply(lambda x: float(chk.match(x)[1]))
lines['i'] = lines['INPUT'].apply(lambda x: chk.match(x)[2])
lines['j'] = lines['INPUT'].apply(lambda x: chk.match(x)[3])
return lines[['i', 'j', 'trips']]
@AndrewTheTM
AndrewTheTM / convert_transit_lines.py
Created May 21, 2024 13:22
This is a Python script that can convert Bentley/Cube Voyager PT line input files to a shapefile.
import pandas as pd
import numpy as np
import re
import geopandas as gpd
from shapely.geometry import Point, LineString
def read_card(input_file, group_id, key_id, nxy_table):
with open(input_file, 'r') as fr:
lines = fr.readlines()
lines = [line.rstrip('\n') for line in lines]
# NOTE: There's a post that will be on siliconcreek.net about this someday soon.
import os
map_list = [
{'fieldname': 'final_accessibility_auPkRetail', 'Legend Name': 'Peak Auto Accessibility to Retail', 'qryZero': False, 'tablename': 'final_accessibility', 'precision': 4},
{'fieldname': 'final_accessibility_auPkTotal', 'Legend Name': 'Peak Auto Accessibility to Total Emp.', 'qryZero': False, 'tablename': 'final_accessibility', 'precision': 4},
{'fieldname': 'final_accessibility_auOpRetail', 'Legend Name': 'Off-Peak Auto Accessibility to Retail', 'qryZero': False, 'tablename': 'final_accessibility', 'precision': 4},
{'fieldname': 'final_accessibility_auOpTotal', 'Legend Name': 'Off-Peak Auto Accessibility to Total Emp.', 'qryZero': False, 'tablename': 'final_accessibility', 'precision': 4},
{'fieldname': 'final_accessibility_trPkRetail', 'Legend Name': 'Peak Transit Accessibility to Retail', 'qryZero': False, 'tablename': 'final_accessibility', 'precision': 4},
@AndrewTheTM
AndrewTheTM / get_centroid.py
Created January 27, 2022 16:19
I'm putting this here for posterity. This is how pretty accurate centroids can be determined from a set of points. This was originally written using the shapefile library, and I no longer need it in my code because I'm switching everything to the geopandas package (because of another step that needs geoprocessing that the shapefile library doesn…
def getCentroidFromPoints(self, s):
points = s.points
p_x = 0
p_y = 0
pp = np.array(s.points)
pp = np.append(pp, [pp[0]], axis = 0)
area = self.shoelace(pp)
for p in range(0, len(pp) - 1):
p_x += (pp[p, 0] + pp[p + 1, 0])*(pp[p, 0] * pp[p + 1, 1] - pp[p + 1, 0] * pp[p, 1])
p_y += (pp[p, 1] + pp[p + 1, 1])*(pp[p, 0] * pp[p + 1, 1] - pp[p + 1, 0] * pp[p, 1])
# -*- coding: utf-8 -*-
"""
Created on Sun Aug 2 13:05:58 2020
@author: andrew.rohne
"""
import socket
def setLights(setting):
# NeoPixel library strandtest example
# Author: Tony DiCola (tony@tonydicola.com)
#
# Direct port of the Arduino NeoPixel library strandtest example. Showcases
# various animations on a strip of NeoPixels.
import time
from neopixel import *
let tweet = function(){
Twitter.post('statuses/update', {
status: 'Random Number: ' + Math.random()
}, function(err, data, response){
if(err !== undefined){
console.log('err: ' + err);
}
});
}
library(xkcd)
library(ggplot2)
# Load the font from https://github.com/shreyankg/xkcd-desktop/blob/master/Humor-Sans.ttf
windowsFonts(HS=windowsFont("Humor Sans"))
airplaneSeats1 = data.frame(Width = pnorm(seq(0,1,0.025), mean = 0.5, sd = 0.1) * 10)
airplaneSeats1$label = "Avg American Width"
airplaneSeats1$time = as.integer(row.names(airplaneSeats1)) + 1975
library(openxlsx)
library(ggplot2)
library(reshape2)
library(plyr)
# Fix the path!
cd = read.xlsx("countdata.xlsx", "Sheet1")
# Summarize counts to get average weekdays
cntByDay.1 = ddply(cd, .(DayOfWeek, CntTimeTxt), summarize, NB = mean(NB), SB = mean(SB))
@AndrewTheTM
AndrewTheTM / HBWDCPrep.R
Created December 15, 2015 12:53
HBW Destination choice prep file. Do not use, it takes forever.
#
# HBWDCPrep.R
#
# Prepares Destination choice files for HBW DC
library(foreign)
source("http://raw.githubusercontent.com/osPlanning/omx/dev/api/r/omx.R")
A1201 = read.dbf("C:\\Modelrun\\Model80\\Base\\A1201.DBF")