Skip to content

Commit

Permalink
refactor the benefit cost code to be gooder hahaha
Browse files Browse the repository at this point in the history
no really just put in functions and a main and stuff
  • Loading branch information
Ennazus committed Jun 19, 2015
1 parent 0753e75 commit c29335e
Showing 1 changed file with 54 additions and 57 deletions.
111 changes: 54 additions & 57 deletions scripts/summarize/benefit_cost.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,77 +27,74 @@
guidefile = model_dir + guidefile
report_output_location = model_dir + report_output_location


def read_in_data(file_name, data_names):
my_store = h5py.File(file_name, "r+")
trips_base = my_store['Trip']
var_dict = {}

#read in the data
my_store_base = h5py.File(h5_base_file, "r+")
my_store_scen = h5py.File(h5_scen_file, "r+")

trips_base = my_store_base['Trip']
trips_scen = my_store_scen['Trip']

otaz_base = np.asarray(trips_base["otaz"])
otaz_base = otaz_base.astype('int')
for name in data_names:
var_dict[name]= np.asarray(trips_base[name])

dtaz_base = np.asarray(trips_base["dtaz"])
dtaz_base = dtaz_base.astype('int')
return var_dict

#vot_base = np.asarray(trips_base["vot"])
time_base = np.asarray(trips_base["travtime"])
#cost_base =vot_base*time_base
def fill_trip_matrices(output):

otaz_scen = np.asarray(trips_scen["otaz"])
otaz_scen = otaz_scen.astype('int')
trips=np.zeros((zone_dim,zone_dim), np.float64)

dtaz_scen = np.asarray(trips_scen["dtaz"])
dtaz_scen = dtaz_scen.astype('int')
for trip in range (0, len(output['otaz'])-1):
this_otaz = output['otaz'][trip]
this_dtaz = output['dtaz'][trip]
trips[this_otaz, this_dtaz] = trips[this_otaz, this_dtaz] + 1

return trips

#vot_scen = np.asarray(trips_scen["vot"])
time_scen = np.asarray(trips_scen["travtime"])
#cost_scen =vot_scen*time_scen

def fill_time_matrices(output):
travel_times =np.zeros((zone_dim,zone_dim), np.float64)

trip_base_matrix = np.zeros((zone_dim,zone_dim), np.float64)
time_base_matrix= np.zeros((zone_dim,zone_dim), np.float64)
trip_scen_matrix = np.zeros((zone_dim,zone_dim), np.float64)
time_scen_matrix= np.zeros((zone_dim,zone_dim), np.float64)
for trip in range (0, len(output['otaz'])-1):
this_otaz = output['otaz'][trip]
this_dtaz = output['dtaz'][trip]
this_time = output['travtime'][trip]
travel_times[this_otaz, this_dtaz] = travel_times[this_otaz, this_dtaz] + this_time

# Fill up the base matrices from the arrays of data because they will be faster to work with
for trip in range (0, len(otaz_base)-1):
this_otaz = otaz_base[trip]
this_dtaz = dtaz_base[trip]
this_time = time_base[trip]
trip_base_matrix [this_otaz, this_dtaz] = trip_base_matrix[this_otaz, this_dtaz] + 1
time_base_matrix [this_otaz, this_dtaz] = time_base_matrix[this_otaz, this_dtaz] + this_time
return travel_times

# Fill up the scenario matrices
for trip_s in range (0, len(otaz_scen)-1):
this_otaz = otaz_scen[trip_s]
this_dtaz = dtaz_scen[trip_s]
this_time = time_scen[trip_s]
trip_scen_matrix [this_otaz, this_dtaz] = trip_scen_matrix[this_otaz, this_dtaz] + 1
time_scen_matrix [this_otaz, this_dtaz] = time_scen_matrix[this_otaz, this_dtaz] + this_time
def calculate_diffs(base_trips, base_travel_time, scen_trips, scen_travel_time):
time_diff = (scen_travel_time - base_travel_time)
trips_total = (scen_trips + base_trips)

time_diff = (time_scen_matrix - time_base_matrix)
trips_total = (trip_scen_matrix + trip_base_matrix)
avg_time_diff_matrix = time_diff/trips_total
avg_time_diff_matrix[np.isnan(avg_time_diff_matrix)] =0
return avg_time_diff_matrix

avg_time_diff_matrix = time_diff/trips_total
avg_time_diff_matrix[np.isnan(avg_time_diff_matrix)] =0

taz_labels = np.array(range(1, zone_dim + 1))
def write_results(avg_time_diff_matrix):
taz_labels = np.array(range(1, zone_dim + 1))
time_by_origin = np.mean(avg_time_diff_matrix, axis = 1, dtype=np.float64)
time_by_destination = np.mean(avg_time_diff_matrix, axis = 0, dtype=np.float64)
all_colls = zip(taz_labels,time_by_origin, time_by_destination)
results = pd.DataFrame(data=all_colls, columns=['taz','origin_time_diff', 'destination_time_diff'])
results.to_csv(report_output_location)

#benefits by origin:
time_by_origin = np.mean(avg_time_diff_matrix, axis = 1, dtype=np.float64)

#benefits by destination:
time_by_destination = np.mean(avg_time_diff_matrix, axis = 0, dtype=np.float64)

#combine arrays:
all_colls = zip(taz_labels,time_by_origin, time_by_destination)

#convert to dataframe
results = pd.DataFrame(data=all_colls, columns=['taz','origin_time_diff', 'destination_time_diff'])
def main():
variables_to_read =['otaz', 'dtaz', 'travtime']
matrices_to_fill = ['trips', 'travtime']
outputs_base = {}
outputs_scenario = {}
matrices_base = {}
matrices_scenario = {}

results.to_csv(report_output_location)

outputs_base =read_in_data(h5_base_file,variables_to_read)
outputs_scenario = read_in_data(h5_scen_file,variables_to_read)
base_trips = fill_trip_matrices(outputs_base)
base_trav_times = fill_time_matrices(outputs_base)
scen_trips = fill_trip_matrices(outputs_scen)
scen_trav_times = fill_time_matrices(outputs_scen)

time_diff_matrix = calculate_diffs(base_trips, base_travel_times, scen_trips, scen_trav_time)
write_results(time_diff_matrix)

if __name__ == "__main__":
main()

0 comments on commit c29335e

Please sign in to comment.