def run(route, prd, **kwargs): """ :type route: pyticas.ttypes.Route :type prd: pyticas.ttypes.Period :return: """ critical_density = kwargs.get( 'moe_critical_density', get_system_config_info().moe_critical_density) lane_capacity = kwargs.get('moe_lane_capacity', get_system_config_info().moe_lane_capacity) # load_data total flow data tq_results = total_flow.run(route, prd) tq_results = moe_helper.add_virtual_rnodes(tq_results, route) # load_data density data ks_results = density.run(route, prd) ks_results = moe_helper.add_virtual_rnodes(ks_results, route) # copy results to save LVMT values lvmt_results = [res.clone() for res in ks_results] # calculate LVMT lvmt_data = _calculate_uvmt(tq_results, ks_results, prd.interval, critical_density, lane_capacity, **kwargs) for ridx, res in enumerate(lvmt_results): res.data = lvmt_data[ridx] return lvmt_results
def run(route, prd, **kwargs): """ :type route: pyticas.ttypes.Route :type prd: pyticas.ttypes.Period :return: """ critical_density = kwargs.get('critical_k', DEFAULT_CRITICAL_DENSITY) lane_capacity = kwargs.get('lan_capacity', DEFAULT_LANE_CAPACITY) # load_data total flow data tq_results = total_flow.run(route, prd) tq_results = moe_helper.add_virtual_rnodes(tq_results, route) # load_data density data ks_results = density.run(route, prd) ks_results = moe_helper.add_virtual_rnodes(ks_results, route) # copy results to save LVMT values lvmt_results = [res.clone() for res in ks_results] # calculate LVMT lvmt_data = _calculate_lvmt(tq_results, ks_results, prd.interval, critical_density, lane_capacity, **kwargs) for ridx, res in enumerate(lvmt_results): res.data = lvmt_data[ridx] return lvmt_results
def run(route, prd, **kwargs): """ :type route: pyticas.ttypes.Route :type prd: pyticas.ttypes.Period :return: """ # load_data speed data moe_congestion_threshold_speed = kwargs.pop("moe_congestion_threshold_speed", get_system_config_info().moe_congestion_threshold_speed) us = moe_helper.get_speed(route.get_stations(), prd, **kwargs) us_results = moe_helper.add_virtual_rnodes(us, route) us_data = [res.data for res in us_results] us_data = spatial_avg.imputation(us_data) # make empty whole_data for congested miles by copying speed whole_data and reseting data cmh_results = [res.clone() for res in us_results] for ridx, res in enumerate(cmh_results): cmh_results[ridx].data = [0] * len(prd.get_timeline()) cmh_results[ridx].prd = prd # calculate CMH cm_data = _calculate_cmh(us_data, prd.interval, moe_congestion_threshold_speed, **kwargs) for ridx, res in enumerate(cmh_results): res.data = cm_data[ridx] return cmh_results
def add_virtual_rnodes(results, route, **kwargs): """ :type results: list[RNodeData] :type route: pyticas.ttypes.Route :rtype: list[RNodeData] """ return moe_helper.add_virtual_rnodes(results, route, **kwargs)
def run(route, prd, **kwargs): """ :type route: pyticas.ttypes.Route :type prd: pyticas.ttypes.Period :return: """ rnode_list = route.get_stations() # load_data vmt data vmt_results = vmt.run(route, prd) vmt_data = [res.data for res in vmt_results] # load_data speed data us_results = speed.run(route, prd) us_results = moe_helper.add_virtual_rnodes(us_results, route) us_data = [res.data for res in us_results] # copy results to save VMT values vht_results = [res.clone() for res in us_results] # calculate VMT vht_data = _calculate_vht(vmt_data, us_data, prd.interval, **kwargs) for ridx, res in enumerate(vht_results): res.data = vht_data[ridx] return vht_results
def run(route, prd, **kwargs): """ :type route: pyticas.ttypes.Route :type prd: pyticas.ttypes.Period :return: """ # load_data speed data us = moe_helper.get_speed(route.get_stations(), prd, **kwargs) us_results = moe_helper.add_virtual_rnodes(us, route) us_data = [res.data for res in us_results] us_data = spatial_avg.imputation(us_data) # make empty whole_data for STT by copying speed whole_data and reseting data stt_results = [res.clone() for res in us_results] for ridx, res in enumerate(stt_results): stt_results[ridx].data = [0] * len(prd.get_timeline()) stt_results[ridx].prd = prd # calculate STT cm_data = _calculate_stt(us_data, prd.interval, **kwargs) for ridx, res in enumerate(stt_results): res.data = cm_data[ridx] return stt_results
def run(route, prd, **kwargs): """ :type route: pyticas.ttypes.Route :type prd: pyticas.ttypes.Period :return: """ # load_data total flow data tq_results = total_flow.run(route, prd) tq_results = moe_helper.add_virtual_rnodes(tq_results, route) tq_data = [res.data for res in tq_results] return tq_results, tq_data
def run(route, prd, **kwargs): """ :type route: pyticas.ttypes.Route :type prd: pyticas.ttypes.Period :return: """ # load_data total flow data ks_results = density.run(route, prd) ks_results = moe_helper.add_virtual_rnodes(ks_results, route) ks_data = [res.data for res in ks_results] return ks_results, ks_data
def run(route, prd, **kwargs): """ :type route: pyticas.ttypes.Route :type prd: pyticas.ttypes.Period :return: """ rnode_list = route.get_stations() # load_data total flow data tq = moe_helper.get_total_flow(rnode_list, prd, **kwargs) tq_results = moe_helper.add_virtual_rnodes(tq, route) lane_data = [res.lanes for res in tq_results] return lane_data
def run(route, prd, **kwargs): """ :type route: pyticas.ttypes.Route :type prd: pyticas.ttypes.Period :return: """ rnode_list = route.get_stations() # load_data total flow data us = moe_helper.get_speed(rnode_list, prd, **kwargs) us_results = moe_helper.add_virtual_rnodes(us, route) us_data = [res.data for res in us_results] us_data = spatial_avg.imputation(us_data) return us, us_results, us_data
def run(route, prd, **kwargs): """ :type route: pyticas.ttypes.Route :type prd: pyticas.ttypes.Period :return: """ ext_hour = kwargs.get('ext_hour', DEFAULT_END_HOUR_EXTENSION) now = datetime.datetime.now() ext_prd = prd.clone().extend_end_hour(ext_hour) if ext_prd.end_date > datetime.datetime.now(): ext_prd.end_date = now n_origin_data = len(prd.get_timeline()) # load_data speed data (load_data more data than given period) us = moe_helper.get_speed(route.get_stations(), ext_prd, **kwargs) us_results = moe_helper.add_virtual_rnodes(us, route) us_data = [res.data for res in us_results] us_data = spatial_avg.imputation(us_data) # make empty whole_data for travel time by copying speed whole_data and reseting data tt_results = [res.clone() for res in us_results] for idx, res in enumerate(tt_results): tt_results[idx].traffic_type = TrafficType.travel_time for ridx, res in enumerate(tt_results): tt_results[ridx].data = [-1] * n_origin_data tt_results[ridx].prd = prd # calculate travel time by increasing time index for tidx in range(n_origin_data): partial_data = [pd[tidx:] for pd in us_data] tts = _calculate_tt(partial_data, prd.interval, **kwargs) for ridx, tt_data in enumerate(tt_results): tt_results[ridx].data[tidx] = tts[ridx] return tt_results
def run(route, prd, **kwargs): """ :type route: pyticas.ttypes.Route :type prd: pyticas.ttypes.Period :return: """ rnode_list = route.get_stations() # load_data total flow data tq = moe_helper.get_total_flow(rnode_list, prd, **kwargs) tq_results = moe_helper.add_virtual_rnodes(tq, route) tq_data = [res.data for res in tq_results] # copy whole_data to save VMT values n_data = len(prd.get_timeline()) vmt_results = [res.clone() for res in tq_results] # calculate VMT vmt_data = _calculate_vmt(tq_data, prd.interval, **kwargs) for ridx, res in enumerate(vmt_results): res.data = vmt_data[ridx] return vmt_results
def run(route, prd, **kwargs): """ :type route: pyticas.ttypes.Route :type prd: pyticas.ttypes.Period :return: """ # load_data vmt data vmt_results = vmt.run(route, prd) # load_data speed data us_results = speed.run(route, prd) us_results = moe_helper.add_virtual_rnodes(us_results, route) # copy whole_data to save VMT values dvh_results = [res.clone() for res in vmt_results] # calculate VHT dvh_data = _calculate_dvh(vmt_results, us_results, prd.interval, **kwargs) for ridx, res in enumerate(dvh_results): res.data = dvh_data[ridx] return dvh_results
if __name__ == '__main__': import os from pyticas.infra import Infra from pyticas import route from pyticas import period from pyticas.moe import writer data_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '../../../../../data')) Infra.initialize(data_path) infra = Infra.load_infra() r = route.load_route_by_name('Route I-494 WB') prd1 = period.create_period_from_string('2016-05-17 06:00:00', '2016-05-17 09:00:00', 300) prd2 = period.create_period_from_string('2016-05-18 06:00:00', '2016-05-18 09:00:00', 300) res1 = run(r, prd1) res2 = run(r, prd2) res = [res1, res2] writer.write_cm(os.path.join(infra.get_path('moe', create=True), 'cm.xlsx'), r, res) from pyticas.moe.mods import speed ures1 = speed.run(r, prd1) ures2 = speed.run(r, prd2) ures1 = moe_helper.add_virtual_rnodes(ures1, r) ures2 = moe_helper.add_virtual_rnodes(ures2, r) ures = [ures1, ures2] writer.write(os.path.join(infra.get_path('moe', create=True), 'u.xlsx'), r, ures)