Skip to content

Commit 36e91d7

Browse files
committed
update to traversal.py
1 parent ea2e75b commit 36e91d7

File tree

1 file changed

+50
-34
lines changed

1 file changed

+50
-34
lines changed

sub_area_traversal/traversal.py

+50-34
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@
1414
get_gate_mode_splits = False
1515
use_warm_starts = True
1616

17-
gates_df = pd.read_csv(r'inputs\gates.csv')
17+
gates_df = pd.read_csv(r'inputs\gates2_walkadjust.csv')
1818
tod_list = ['6to7', '7to8','8to9']
1919

2020
bank_list = [r'D:\stefan\Seattle_voc\code\banks\6to7', r'D:\stefan\Seattle_voc\code\banks\7to8', r'D:\stefan\Seattle_voc\code\banks\8to9']
2121

2222
project_list = ['projects/6to7/6to7.emp', 'projects/7to8/7to8.emp', 'projects/8to9/8to9.emp']
2323

24-
skim_dict = {"sov" : ["svtl1", "svtl2", "svtl3"], "hov2" : ["h2tl1", "h2tl2", "h2tl3"], "hov3" : ["h3tl1","h3tl2", "h3tl3"], "trucks" : ["hvtrk", "metrk", "lttrk"], "transit" : ['litrat', 'trnst']}
24+
skim_dict = {"sov" : ["svtl1", "svtl2", "svtl3"], "hov2" : ["h2tl1", "h2tl2", "h2tl3"], "hov3" : ["h3tl1","h3tl2", "h3tl3"], "trucks" : ["hvtrk", "metrk", "lttrk"], "transit" : ['litrat', 'trnst'], 'walk' : ['walk'], 'bike' : ['bike']}
2525

2626
skim_list = [item for sublist in skim_dict.values() for item in sublist]
2727

@@ -31,16 +31,30 @@ def start_pool(project_list):
3131
pool.map(run_traversal_parallel,project_list[0:parallel_instances])
3232
pool.close()
3333

34+
def transit_assignment(spec, name, project, add_volumes_):
35+
with open(spec) as f:
36+
spec = json.load(f)
37+
assign_transit = project.m.tool("inro.emme.transit_assignment.extended_transit_assignment")
38+
return assign_transit(spec, save_strategies=True, class_name=name, add_volumes=add_volumes_)
39+
40+
def transit_traversal(spec, name, project):
41+
with open(spec) as f:
42+
spec = json.load(f)
43+
NAMESPACE = "inro.emme.transit_assignment.extended.traversal_analysis"
44+
analyze_transit_paths = project.m.tool(NAMESPACE)
45+
return analyze_transit_paths(spec, append_to_output_file=False, class_name= name, output_file= 'outputs/' + name + '_traversal_' + project.tod, num_processors = 8)
46+
47+
3448
def run_traversal_parallel(project_name):
3549
my_project = EmmeProject(project_name)
3650

37-
# auto assignment/traversal:
51+
## auto assignment/traversal:
3852
with open(r'inputs\traffic_assignment.ems') as f:
3953
spec = json.load(f)
4054
assign_traffic = my_project.m.tool("inro.emme.traffic_assignment.path_based_traffic_assignment")
4155
report = assign_traffic(spec, warm_start = use_warm_starts)
4256

43-
print 'finished assignment'
57+
#print 'finished assignment'
4458

4559
with open(r'inputs\auto_taversal.ems') as f:
4660
spec = json.load(f)
@@ -49,33 +63,18 @@ def run_traversal_parallel(project_name):
4963
report = analyze_paths(spec)
5064

5165
# bus transit assignment/traversal
52-
with open(r'inputs\bus_transit_assignment.ems') as f:
53-
spec = json.load(f)
54-
assign_transit = my_project.m.tool("inro.emme.transit_assignment.extended_transit_assignment")
55-
report = assign_transit(spec, save_strategies=True, class_name='Bus', add_volumes=False)
66+
bus_assigment = transit_assignment(r'inputs\bus_transit_assignment.ems', 'Bus', my_project, False)
67+
bus_traversal = transit_traversal(r'inputs\transit_traversal_analysis.ems', 'Bus', my_project)
5668

57-
print 'finished assignment'
69+
rail_assignment = transit_assignment(r'inputs\rail_transit_assignment.ems', 'Rail', my_project, True)
70+
rail_traversal = transit_traversal(r'inputs\transit_traversal_analysis.ems', 'Rail', my_project)
5871

59-
with open(r'inputs\transit_traversal_analysis.ems') as f:
60-
spec = json.load(f)
61-
NAMESPACE = "inro.emme.transit_assignment.extended.traversal_analysis"
62-
analyze_transit_paths = my_project.m.tool(NAMESPACE)
63-
report = analyze_transit_paths(spec, append_to_output_file=False, class_name='Bus', output_file= 'outputs/bus_traversal_' + my_project.tod, num_processors = 8)
72+
walk_assignment = transit_assignment(r'inputs\walk_transit_assignment.ems', 'walk', my_project, True)
73+
walk_traversal = transit_traversal(r'inputs\transit_traversal_analysis.ems', 'walk', my_project)
6474

65-
# rail transit assignment/traversal
66-
with open(r'inputs\rail_transit_assignment.ems') as f:
67-
spec = json.load(f)
68-
assign_transit = my_project.m.tool("inro.emme.transit_assignment.extended_transit_assignment")
69-
report = assign_transit(spec, save_strategies=True, class_name='Rail', add_volumes=True)
75+
bike_assignment = transit_assignment(r'inputs\bike_transit_assignment.ems', 'bike', my_project, True)
76+
bike_traversal = transit_traversal(r'inputs\transit_traversal_analysis.ems', 'bike', my_project)
7077

71-
print 'finished assignment'
72-
73-
with open(r'inputs\transit_traversal_analysis.ems') as f:
74-
spec = json.load(f)
75-
NAMESPACE = "inro.emme.transit_assignment.extended.traversal_analysis"
76-
analyze_transit_paths = my_project.m.tool(NAMESPACE)
77-
report = analyze_transit_paths(spec, append_to_output_file=False, class_name='Rail', output_file= 'outputs/rail_traversal_' + my_project.tod, num_processors = 8)
78-
7978
my_project.bank.dispose()
8079

8180
def update_network_attribute(bank_path, att_name):
@@ -101,7 +100,7 @@ def gate_volumes_by_class(bank):
101100
if link['@gate'] not in gate_dict.keys():
102101
gate_dict[link['@gate']] = {}
103102
for key, value in skim_dict.iteritems():
104-
if not key == 'transit':
103+
if not key not in ['transit', 'bike', 'walk']:
105104
vol = 0
106105

107106
for user_class in value:
@@ -125,7 +124,7 @@ def gate_volumes_by_class(bank):
125124

126125

127126
def main():
128-
gates_df = pd.read_csv(r'inputs\gates.csv')
127+
gates_df = pd.read_csv(r'inputs\gates2_walkadjust.csv')
129128
districts_df = gates_df[gates_df['TAZ'] >0]
130129
districts_df = districts_df.groupby('TAZ').first()
131130
districts_df.reset_index(inplace = True)
@@ -136,7 +135,7 @@ def main():
136135
for path in bank_list:
137136
update_network_attribute(path, '@gate')
138137

139-
# create matrices for traversal results
138+
#create matrices for traversal results
140139
for bank_path in bank_list:
141140
bank = _eb.Emmebank(os.path.join(bank_path, 'emmebank'))
142141
for matrix in bank.matrices():
@@ -154,8 +153,9 @@ def main():
154153

155154
np_matrices = {}
156155
for key in skim_dict.keys():
157-
print key
158-
np_matrices[key] = np.zeros((3700,3700), np.float16)
156+
if key not in ['transit', 'bike', 'walk']:
157+
print key
158+
np_matrices[key] = np.zeros((3700,3700), np.float16)
159159

160160
for tod in tod_list:
161161
bank = _eb.Emmebank(os.path.join('banks', tod, 'emmebank'))
@@ -199,22 +199,38 @@ def main():
199199
df_final['walk_vol'] = 0
200200

201201
for tod in tod_list:
202-
rail_df = pd.read_csv(r'outputs\rail_traversal_' + tod, skiprows=17, delim_whitespace = True, header = None)
202+
rail_df = pd.read_csv(r'outputs\rail_traversal_' + tod, skiprows=17, delim_whitespace = True, header = None, engine = 'python')
203203
rail_df.columns = ['from', 'to', 'tvol']
204204
df_final = df_final.merge(rail_df, how='left', on = ['from', 'to'])
205205
df_final['tvol'] = df_final['tvol'].convert_objects(convert_numeric=True)
206206
df_final.tvol.fillna(0, inplace=True)
207207
df_final['transit_vol'] = df_final['transit_vol'] + df_final['tvol']
208208
df_final.drop('tvol', axis= 1, inplace=True)
209209

210-
bus_df = pd.read_csv(r'outputs\bus_traversal_' + tod, skiprows=17, delim_whitespace = True, header = None)
210+
bus_df = pd.read_csv(r'outputs\bus_traversal_' + tod, skiprows=17, delim_whitespace = True, header = None, engine = 'python')
211211
bus_df.columns = ['from', 'to', 'tvol']
212212
df_final = df_final.merge(bus_df, how='left', on = ['from', 'to'])
213213
df_final['tvol'] = df_final['tvol'].convert_objects(convert_numeric=True)
214214
df_final.tvol.fillna(0, inplace=True)
215215
df_final['transit_vol'] = df_final['transit_vol'] + df_final['tvol'].astype(float)
216216
df_final.drop('tvol', axis= 1, inplace=True)
217217

218+
walk_df = pd.read_csv(r'outputs\walk_traversal_' + tod, skiprows=17, delim_whitespace = True, header = None, engine = 'python')
219+
walk_df.columns = ['from', 'to', 'tvol']
220+
df_final = df_final.merge(walk_df, how='left', on = ['from', 'to'])
221+
df_final['tvol'] = df_final['tvol'].convert_objects(convert_numeric=True)
222+
df_final.tvol.fillna(0, inplace=True)
223+
df_final['walk_vol'] = df_final['walk_vol'] + df_final['tvol'].astype(float)
224+
df_final.drop('tvol', axis= 1, inplace=True)
225+
226+
bike_df = pd.read_csv(r'outputs\bike_traversal_' + tod, skiprows=17, delim_whitespace = True, header = None, engine = 'python')
227+
bike_df.columns = ['from', 'to', 'tvol']
228+
df_final = df_final.merge(bike_df, how='left', on = ['from', 'to'])
229+
df_final['tvol'] = df_final['tvol'].convert_objects(convert_numeric=True)
230+
df_final.tvol.fillna(0, inplace=True)
231+
df_final['bike_vol'] = df_final['bike_vol'] + df_final['tvol'].astype(float)
232+
df_final.drop('tvol', axis= 1, inplace=True)
233+
218234
districts_df = districts_df[['TAZ', 'district_2', 'district_2_name', 'aggregate_district_name2']]
219235
df_final = df_final.merge(districts_df, how= 'left', left_on = 'from', right_on = 'TAZ')
220236
df_final = df_final.rename(columns={'district_2_name' : 'from_district'})

0 commit comments

Comments
 (0)