def save_state(self, endpoint): data = fetch_dict(endpoint) if not data: data = create_default_json_msg() data['_checkpoint']['progress'] = [self._index, self.total] save_dict(endpoint, data)
def save_global_record(route_record, sensors, endpoint): data = fetch_dict(endpoint) if not data: data = create_default_json_msg() stats_dict = route_record.__dict__ data['_checkpoint']['global_record'] = stats_dict data['values'] = [ '{:.3f}'.format(stats_dict['scores']['score_composed']), '{:.3f}'.format(stats_dict['scores']['score_route']), '{:.3f}'.format(stats_dict['scores']['score_penalty']), # infractions '{:.3f}'.format(stats_dict['infractions']['collisions_layout']), '{:.3f}'.format( stats_dict['infractions']['collisions_pedestrian']), '{:.3f}'.format(stats_dict['infractions']['collisions_vehicle']), '{:.3f}'.format(stats_dict['infractions']['outside_route_lanes']), '{:.3f}'.format(stats_dict['infractions']['red_light']), '{:.3f}'.format(stats_dict['infractions']['route_dev']), '{:.3f}'.format(stats_dict['infractions']['stop_infraction']), '{:.3f}'.format(stats_dict['infractions']['route_timeout']), '{:.3f}'.format(stats_dict['infractions']['vehicle_blocked']) ] data['labels'] = [ 'avg. total score', 'avg. route score', 'avg. infraction penalty', 'collisions with layout', 'collisions with pedestrians', 'collisions with vehicles', 'off-road infractions', 'red lights infractions', 'route deviation infractions', 'stop sign infractions', 'timeouts', 'vehicle blocked' ] data['sensors'] = sensors save_dict(endpoint, data)
def save_global_record(route_record, sensors, total_routes, endpoint): data = fetch_dict(endpoint) if not data: data = create_default_json_msg() stats_dict = route_record.__dict__ data['_checkpoint']['global_record'] = stats_dict data['values'] = ['{:.3f}'.format(stats_dict['scores']['score_composed']), '{:.3f}'.format(stats_dict['scores']['score_route']), '{:.3f}'.format(stats_dict['scores']['score_penalty']), # infractions '{:.3f}'.format(stats_dict['infractions']['collisions_pedestrian']), '{:.3f}'.format(stats_dict['infractions']['collisions_vehicle']), '{:.3f}'.format(stats_dict['infractions']['collisions_layout']), '{:.3f}'.format(stats_dict['infractions']['red_light']), '{:.3f}'.format(stats_dict['infractions']['stop_infraction']), '{:.3f}'.format(stats_dict['infractions']['outside_route_lanes']), '{:.3f}'.format(stats_dict['infractions']['route_dev']), '{:.3f}'.format(stats_dict['infractions']['route_timeout']), '{:.3f}'.format(stats_dict['infractions']['vehicle_blocked']) ] data['labels'] = ['Avg. driving score', 'Avg. route completion', 'Avg. infraction penalty', 'Collisions with pedestrians', 'Collisions with vehicles', 'Collisions with layout', 'Red lights infractions', 'Stop sign infractions', 'Off-road infractions', 'Route deviations', 'Route timeouts', 'Agent blocked' ] entry_status = "Finished" eligible = "True" route_records = data["_checkpoint"]["records"] progress = data["_checkpoint"]["progress"] if progress[1] != total_routes: raise Exception('Critical error with the route registry.') if len(route_records) != total_routes or progress[0] != progress[1]: entry_status = "Finished with missing data" eligible = "False" else: for route in route_records: route_status = route["status"] if "Agent crashed" in route_status: entry_status = "Finished with agent errors" break data['entry_status'] = entry_status data['eligible'] = eligible save_dict(endpoint, data)
def save_entry_status(entry_status, eligible, endpoint): data = fetch_dict(endpoint) if not data: data = create_default_json_msg() data['entry_status'] = entry_status data['eligible'] = eligible save_dict(endpoint, data)
def save_sensors(sensors, endpoint): data = fetch_dict(endpoint) if not data: data = create_default_json_msg() if not data['sensors']: data['sensors'] = sensors save_dict(endpoint, data)
def save_record(route_record, index, endpoint): data = fetch_dict(endpoint) if not data: data = create_default_json_msg() stats_dict = route_record.__dict__ record_list = data['_checkpoint']['records'] if index > len(record_list): print('Error! No enough entries in the list') sys.exit(-1) elif index == len(record_list): record_list.append(stats_dict) else: record_list[index] = stats_dict save_dict(endpoint, data)
def save_global_record(route_record, sensors, endpoint): data = fetch_dict(endpoint) if not data: data = create_default_json_msg() stats_dict = route_record.__dict__ data['_checkpoint']['global_record'] = stats_dict data['values'] = [ '{:.3f}'.format(stats_dict['scores']['score_composed']), '{:.3f}'.format(stats_dict['scores']['score_route']), '{:.3f}'.format(stats_dict['scores']['score_penalty']), # infractions '{:.3f}'.format(stats_dict['infractions']['collisions_pedestrian'] ), '{:.3f}'.format(stats_dict['infractions']['collisions_vehicle']), '{:.3f}'.format(stats_dict['infractions']['collisions_layout']), '{:.3f}'.format(stats_dict['infractions']['red_light']), '{:.3f}'.format(stats_dict['infractions']['stop_infraction']), '{:.3f}'.format(stats_dict['infractions']['outside_route_lanes']), '{:.3f}'.format(stats_dict['infractions']['route_dev']), '{:.3f}'.format(stats_dict['infractions']['route_timeout']), '{:.3f}'.format(stats_dict['infractions']['vehicle_blocked']), # addition: new event '{:.3f}'.format(stats_dict['infractions']['on_sidewalk']), '{:.3f}'.format(stats_dict['infractions']['off_road']), '{:.3f}'.format( stats_dict['infractions']['outside_lane_infraction']), '{:.3f}'.format(stats_dict['infractions']['wrong_lane']), '{:.3f}'.format(stats_dict['infractions']['collisions_invisible']) ] data['labels'] = [ 'Avg. driving score', 'Avg. route completion', 'Avg. infraction penalty', 'Collisions with pedestrians', 'Collisions with vehicles', 'Collisions with layout', 'Red lights infractions', 'Stop sign infractions', 'Off-road infractions', 'Route deviations', 'Route timeouts', 'Agent blocked', 'On Sidewalk', 'Off Road', 'Outside Lane', 'Collisions Invisible' ] data['sensors'] = sensors save_dict(endpoint, data)
def save_global_record(route_record, sensors, endpoint, filename, config): data = fetch_dict(endpoint) if not data: data = create_default_json_msg() stats_dict = route_record.__dict__ data['_checkpoint']['global_record'] = stats_dict data['values'] = [ '{:.3f}'.format(stats_dict['scores']['score_composed']), '{:.3f}'.format(stats_dict['scores']['score_route']), '{:.3f}'.format(stats_dict['scores']['score_penalty']), # infractions '{:.3f}'.format(stats_dict['infractions']['collisions_layout']), '{:.3f}'.format( stats_dict['infractions']['collisions_pedestrian']), '{:.3f}'.format(stats_dict['infractions']['collisions_vehicle']), '{:.3f}'.format(stats_dict['infractions']['outside_route_lanes']), '{:.3f}'.format(stats_dict['infractions']['red_light']), '{:.3f}'.format(stats_dict['infractions']['route_dev']), '{:.3f}'.format(stats_dict['infractions']['stop_infraction']), '{:.3f}'.format(stats_dict['infractions']['route_timeout']), '{:.3f}'.format(stats_dict['infractions']['vehicle_blocked']), '{:.3f}'.format(config.weather.precipitation) ] data['labels'] = [ 'avg. total score', 'avg. route score', 'avg. infraction penalty', 'collisions with layout', 'collisions with pedestrians', 'collisions with vehicles', 'off-road infractions', 'red lights infractions', 'route deviation infractions', 'stop sign infractions', 'timeouts', 'vehicle blocked', 'precipitation', 'precipitation_deposits', 'cloudiness', 'wind_intensity', 'sun_azimuth_angle', 'sun_altitude_angle', 'fog_density', 'fog_distance', 'wetness' ] data['sensors'] = sensors # fields = ['avg. total score', 'avg. route score', 'avg. infraction penalty', 'collisions with layout', # 'collisions with pedestrians', 'collisions with vehicles', 'off-road infractions', # 'red lights infractions', 'route deviation infractions', 'stop sign infractions', # 'timeouts', 'vehicle blocked'] myvalues = [{ 'avg. total score': '{:.3f}'.format(stats_dict['scores']['score_composed']), 'avg. route score': '{:.3f}'.format(stats_dict['scores']['score_route']), 'avg. infraction penalty': '{:.3f}'.format(stats_dict['scores']['score_penalty']), 'collisions with layout': math.ceil(stats_dict['infractions']['collisions_layout']), 'collisions with pedestrians': math.ceil(stats_dict['infractions']['collisions_pedestrian']), 'collisions with vehicles': math.ceil(stats_dict['infractions']['collisions_vehicle']), 'off-road infractions': '{:.3f}'.format(stats_dict['infractions']['outside_route_lanes']), 'red lights infractions': '{:.3f}'.format(stats_dict['infractions']['red_light']), 'route deviation infractions': '{:.3f}'.format(stats_dict['infractions']['route_dev']), 'stop sign infractions': '{:.3f}'.format(stats_dict['infractions']['stop_infraction']), 'timeouts': '{:.3f}'.format(stats_dict['infractions']['route_timeout']), 'vehicle blocked': '{:.3f}'.format(stats_dict['infractions']['vehicle_blocked']), 'precipitation': '{:.3f}'.format(config.weather.precipitation), 'precipitation_deposits': '{:.3f}'.format(config.weather.precipitation_deposits), 'cloudiness': '{:.3f}'.format(config.weather.cloudiness), 'wind_intensity': '{:.3f}'.format(config.weather.wind_intensity), 'sun_azimuth_angle': '{:.3f}'.format(config.weather.sun_azimuth_angle), 'sun_altitude_angle': '{:.3f}'.format(config.weather.sun_altitude_angle), 'fog_density': '{:.3f}'.format(config.weather.fog_density), 'fog_distance': '{:.3f}'.format(config.weather.fog_distance), 'wetness': '{:.3f}'.format(config.weather.wetness) }] file_exists = os.path.isfile(filename) # writing to csv file with open(filename, 'a') as csvfile: # creating a csv dict writer object writer = csv.DictWriter(csvfile, fieldnames=data['labels']) if not file_exists: # writing headers (field names) writer.writeheader() # writing data rows writer.writerows(myvalues) save_dict(endpoint, data)