fixing style problems
This commit is contained in:
parent
1f8d486fcb
commit
6396199a38
|
@ -4,12 +4,19 @@ import os
|
|||
|
||||
|
||||
class Recording(object):
|
||||
"""
|
||||
Class to record all the logs for the benchmark. It records individual episodes measurements
|
||||
and also summary for each episodes.
|
||||
"""
|
||||
|
||||
def __init__(self
|
||||
, name_to_save
|
||||
, continue_experiment
|
||||
, save_images
|
||||
):
|
||||
def __init__(self, name_to_save, continue_experiment, save_images):
|
||||
"""
|
||||
Recorder constructors
|
||||
Args:
|
||||
name_to_save: Name of the log
|
||||
continue_experiment: If you want to continue a previous experiment with the same names
|
||||
save_images: If you want to save images to the disk.
|
||||
"""
|
||||
|
||||
self._dict_summary = {'exp_id': -1,
|
||||
'rep': -1,
|
||||
|
@ -44,15 +51,13 @@ class Recording(object):
|
|||
os.mkdir('_benchmarks_results')
|
||||
|
||||
# Generate the full path for the log files
|
||||
self._path = os.path.join('_benchmarks_results'
|
||||
, name_to_save
|
||||
)
|
||||
self._path = os.path.join('_benchmarks_results', name_to_save)
|
||||
|
||||
# Check for continuation of experiment, also returns the last line, used for test purposes
|
||||
# If you don't want to continue it will create a new path name with a number.
|
||||
# Also returns the fieldnames for both measurements and summary, so you can keep the
|
||||
# previous order
|
||||
self._path, _, self._summary_fieldnames, self._measurements_fieldnames\
|
||||
self._path, _, self._summary_fieldnames, self._measurements_fieldnames \
|
||||
= self._continue_experiment(continue_experiment)
|
||||
|
||||
self._create_log_files()
|
||||
|
@ -72,20 +77,31 @@ class Recording(object):
|
|||
return self._path
|
||||
|
||||
def log_poses(self, start_index, end_index, weather_id):
|
||||
"""
|
||||
Log tested poses by the benchmark
|
||||
"""
|
||||
with open(self._internal_log_name, 'a+') as log:
|
||||
log.write(' Start Poses (%d %d ) on weather %d \n ' %
|
||||
(start_index, end_index, weather_id))
|
||||
|
||||
def log_poses_finish(self):
|
||||
"""
|
||||
Log when a set of poses (task) is finished by the benchmark
|
||||
"""
|
||||
with open(self._internal_log_name, 'a+') as log:
|
||||
log.write('Finished Task')
|
||||
|
||||
def log_start(self, id_experiment):
|
||||
|
||||
"""
|
||||
Log when a set of poses (task) is started by the benchmark
|
||||
"""
|
||||
with open(self._internal_log_name, 'a+') as log:
|
||||
log.write('Start Task %d \n' % id_experiment)
|
||||
|
||||
def log_end(self):
|
||||
"""
|
||||
Log when the benchmark is finished
|
||||
"""
|
||||
with open(self._internal_log_name, 'a+') as log:
|
||||
log.write('====== Finished Entire Benchmark ======')
|
||||
|
||||
|
@ -110,7 +126,6 @@ class Recording(object):
|
|||
with open(os.path.join(self._path, 'summary.csv'), 'a+') as ofd:
|
||||
w = csv.DictWriter(ofd, self._dict_summary.keys())
|
||||
w.fieldnames = self._summary_fieldnames
|
||||
|
||||
w.writerow(self._dict_summary)
|
||||
|
||||
def write_measurements_results(self, experiment, rep, pose, reward_vec, control_vec):
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
|
||||
import unittest
|
||||
from carla.driving_benchmark.recording import Recording
|
||||
|
||||
class testRecording(unittest.TestCase):
|
||||
|
||||
class testRecording(unittest.TestCase):
|
||||
|
||||
def test_init(self):
|
||||
import os
|
||||
|
@ -13,93 +12,81 @@ class testRecording(unittest.TestCase):
|
|||
|
||||
"""
|
||||
|
||||
|
||||
recording = Recording(name_to_save='Test1'
|
||||
, continue_experiment=False, save_images=True
|
||||
recording = Recording(name_to_save='Test1',
|
||||
continue_experiment=False, save_images=True
|
||||
)
|
||||
|
||||
|
||||
_ = open(os.path.join(recording._path,'summary.csv'), 'r')
|
||||
_ = open(os.path.join(recording._path, 'summary.csv'), 'r')
|
||||
_ = open(os.path.join(recording._path, 'measurements.csv'), 'r')
|
||||
|
||||
# There should be three files in any newly created case
|
||||
self.assertEqual(len(os.listdir(recording._path)), 3)
|
||||
|
||||
|
||||
def test_write_summary_results(self):
|
||||
|
||||
import os
|
||||
from carla.driving_benchmark.experiment import Experiment
|
||||
|
||||
recording = Recording(name_to_save='Test1'
|
||||
, continue_experiment=False, save_images=True
|
||||
recording = Recording(name_to_save='Test1',
|
||||
continue_experiment=False, save_images=True
|
||||
)
|
||||
|
||||
recording.write_summary_results( experiment=Experiment(), pose=[24,32], rep=1,
|
||||
path_distance=200, remaining_distance=0,
|
||||
final_time=0.2, time_out=49, result=1)
|
||||
recording.write_summary_results(experiment=Experiment(), pose=[24, 32], rep=1,
|
||||
path_distance=200, remaining_distance=0,
|
||||
final_time=0.2, time_out=49, result=1)
|
||||
|
||||
with open(os.path.join(recording._path, 'summary.csv'), 'r') as f:
|
||||
|
||||
header = f.readline().split(',')
|
||||
#Assert if header is header
|
||||
# Assert if header is header
|
||||
self.assertIn('exp_id', header)
|
||||
|
||||
self.assertEqual(len(header), len(recording._dict_summary))
|
||||
#Assert if there is something writen in the row
|
||||
# Assert if there is something writen in the row
|
||||
|
||||
written_row = f.readline().split(',')
|
||||
|
||||
#Assert if the number of collums is correct
|
||||
# Assert if the number of collums is correct
|
||||
self.assertEqual(len(written_row), len(recording._dict_summary))
|
||||
|
||||
|
||||
def test_write_summary_results_good_order(self):
|
||||
|
||||
import os
|
||||
from carla.driving_benchmark.experiment import Experiment
|
||||
|
||||
recording = Recording(name_to_save='Test_good_order'
|
||||
, continue_experiment=False, save_images=True
|
||||
recording = Recording(name_to_save='Test_good_order',
|
||||
continue_experiment=False, save_images=True
|
||||
)
|
||||
|
||||
for i in range(0, 10):
|
||||
recording.write_summary_results(experiment=Experiment(), pose=[24, 32], rep=1,
|
||||
path_distance=200, remaining_distance=0,
|
||||
final_time=0.2, time_out=49, result=1)
|
||||
|
||||
recording = Recording(name_to_save='Test_good_order',
|
||||
continue_experiment=True, save_images=True
|
||||
)
|
||||
|
||||
for i in range(0, 10):
|
||||
recording.write_summary_results( experiment=Experiment(), pose=[24,32], rep=1,
|
||||
path_distance=200, remaining_distance=0,
|
||||
final_time=0.2, time_out=49, result=1)
|
||||
|
||||
recording = Recording(name_to_save='Test_good_order'
|
||||
, continue_experiment=True, save_images=True
|
||||
)
|
||||
recording.write_summary_results(experiment=Experiment(), pose=[24, 32], rep=1,
|
||||
path_distance=200, remaining_distance=0,
|
||||
final_time=0.2, time_out=49, result=1)
|
||||
|
||||
recording = Recording(name_to_save='Test_good_order',
|
||||
continue_experiment=True, save_images=True
|
||||
)
|
||||
|
||||
for i in range(0, 10):
|
||||
recording.write_summary_results( experiment=Experiment(), pose=[24,32], rep=1,
|
||||
path_distance=200, remaining_distance=0,
|
||||
final_time=0.2, time_out=49, result=1)
|
||||
|
||||
|
||||
recording = Recording(name_to_save='Test_good_order'
|
||||
, continue_experiment=True, save_images=True
|
||||
)
|
||||
recording.write_summary_results(experiment=Experiment(), pose=[24, 32], rep=1,
|
||||
path_distance=200, remaining_distance=0,
|
||||
final_time=0.2, time_out=49, result=1)
|
||||
|
||||
recording = Recording(name_to_save='Test_good_order',
|
||||
continue_experiment=True, save_images=True
|
||||
)
|
||||
|
||||
for i in range(0, 10):
|
||||
recording.write_summary_results( experiment=Experiment(), pose=[24,32], rep=1,
|
||||
path_distance=200, remaining_distance=0,
|
||||
final_time=0.2, time_out=49, result=1)
|
||||
|
||||
recording = Recording(name_to_save='Test_good_order'
|
||||
, continue_experiment=True, save_images=True
|
||||
)
|
||||
|
||||
|
||||
for i in range(0, 10):
|
||||
recording.write_summary_results( experiment=Experiment(), pose=[24,32], rep=1,
|
||||
path_distance=200, remaining_distance=0,
|
||||
final_time=0.2, time_out=49, result=1)
|
||||
|
||||
recording.write_summary_results(experiment=Experiment(), pose=[24, 32], rep=1,
|
||||
path_distance=200, remaining_distance=0,
|
||||
final_time=0.2, time_out=49, result=1)
|
||||
|
||||
def test_write_measurements_results(self):
|
||||
|
||||
|
@ -108,12 +95,10 @@ class testRecording(unittest.TestCase):
|
|||
from carla.carla_server_pb2 import Measurements
|
||||
from carla.carla_server_pb2 import Control
|
||||
|
||||
|
||||
recording = Recording(name_to_save='Test1'
|
||||
, continue_experiment=False, save_images=True
|
||||
recording = Recording(name_to_save='Test1',
|
||||
continue_experiment=False, save_images=True
|
||||
)
|
||||
|
||||
|
||||
reward_vec = [Measurements().player_measurements for x in range(20)]
|
||||
control_vec = [Control() for x in range(25)]
|
||||
|
||||
|
@ -122,24 +107,22 @@ class testRecording(unittest.TestCase):
|
|||
control_vec=control_vec)
|
||||
|
||||
with open(os.path.join(recording._path, 'measurements.csv'), 'r') as f:
|
||||
|
||||
header = f.readline().split(',')
|
||||
#Assert if header is header
|
||||
# Assert if header is header
|
||||
self.assertIn('exp_id', header)
|
||||
|
||||
self.assertEqual(len(header), len(recording._dict_measurements))
|
||||
#Assert if there is something writen in the row
|
||||
# Assert if there is something writen in the row
|
||||
|
||||
written_row = f.readline().split(',')
|
||||
|
||||
#Assert if the number of collums is correct
|
||||
# Assert if the number of collums is correct
|
||||
self.assertEqual(len(written_row), len(recording._dict_measurements))
|
||||
|
||||
|
||||
def test_continue_experiment(self):
|
||||
|
||||
recording = Recording( name_to_save='Test1'
|
||||
, continue_experiment=False, save_images=True
|
||||
recording = Recording(name_to_save='Test1',
|
||||
continue_experiment=False, save_images=True
|
||||
)
|
||||
|
||||
# A just started case should return the continue experiment case
|
||||
|
@ -150,31 +133,25 @@ class testRecording(unittest.TestCase):
|
|||
from carla.driving_benchmark.experiment import Experiment
|
||||
|
||||
recording.write_summary_results(experiment=Experiment(), pose=[24, 32], rep=1,
|
||||
path_distance=200, remaining_distance=0,
|
||||
final_time=0.2, time_out=49, result=1)
|
||||
path_distance=200, remaining_distance=0,
|
||||
final_time=0.2, time_out=49, result=1)
|
||||
recording.write_summary_results(experiment=Experiment(), pose=[24, 32], rep=1,
|
||||
path_distance=200, remaining_distance=0,
|
||||
final_time=0.2, time_out=49, result=1)
|
||||
path_distance=200, remaining_distance=0,
|
||||
final_time=0.2, time_out=49, result=1)
|
||||
|
||||
# After writing two experiments it should return 2, so you could start writing os pos 3
|
||||
self.assertEqual(recording._continue_experiment(True)[1], 3)
|
||||
# If you dont want to continue, should return also one
|
||||
self.assertEqual(recording._continue_experiment(False)[1], 1)
|
||||
|
||||
|
||||
def test_get_pose_and_experiment(self):
|
||||
|
||||
|
||||
|
||||
recording = Recording( name_to_save='Test1'
|
||||
, continue_experiment=False, save_images=True
|
||||
recording = Recording(name_to_save='Test1',
|
||||
continue_experiment=False, save_images=True
|
||||
)
|
||||
|
||||
|
||||
|
||||
from carla.driving_benchmark.experiment import Experiment
|
||||
|
||||
|
||||
pose, experiment = recording.get_pose_and_experiment(25)
|
||||
|
||||
# An starting experiment should return zero zero
|
||||
|
@ -182,13 +159,12 @@ class testRecording(unittest.TestCase):
|
|||
self.assertEqual(pose, 0)
|
||||
self.assertEqual(experiment, 0)
|
||||
|
||||
|
||||
recording.write_summary_results( experiment=Experiment(), pose=[24,32], rep=1,
|
||||
path_distance=200, remaining_distance=0,
|
||||
final_time=0.2, time_out=49, result=1)
|
||||
recording.write_summary_results( experiment=Experiment(), pose=[24,32], rep=1,
|
||||
path_distance=200, remaining_distance=0,
|
||||
final_time=0.2, time_out=49, result=1)
|
||||
recording.write_summary_results(experiment=Experiment(), pose=[24, 32], rep=1,
|
||||
path_distance=200, remaining_distance=0,
|
||||
final_time=0.2, time_out=49, result=1)
|
||||
recording.write_summary_results(experiment=Experiment(), pose=[24, 32], rep=1,
|
||||
path_distance=200, remaining_distance=0,
|
||||
final_time=0.2, time_out=49, result=1)
|
||||
|
||||
pose, experiment = recording.get_pose_and_experiment(25)
|
||||
self.assertEqual(pose, 2)
|
||||
|
@ -214,11 +190,10 @@ class testRecording(unittest.TestCase):
|
|||
|
||||
def test_get_pose_and_experiment_corner(self):
|
||||
|
||||
|
||||
from carla.driving_benchmark.experiment import Experiment
|
||||
|
||||
recording = Recording( name_to_save='Test1'
|
||||
, continue_experiment=False, save_images=True
|
||||
recording = Recording(name_to_save='Test1',
|
||||
continue_experiment=False, save_images=True
|
||||
)
|
||||
|
||||
pose, experiment = recording.get_pose_and_experiment(1)
|
||||
|
@ -232,44 +207,39 @@ class testRecording(unittest.TestCase):
|
|||
self.assertEqual(pose, 0)
|
||||
self.assertEqual(experiment, 0)
|
||||
|
||||
|
||||
recording.write_summary_results( experiment=Experiment(), pose=[24, 32], rep=1,
|
||||
path_distance=200, remaining_distance=0,
|
||||
final_time=0.2, time_out=49, result=1)
|
||||
|
||||
recording.write_summary_results(experiment=Experiment(), pose=[24, 32], rep=1,
|
||||
path_distance=200, remaining_distance=0,
|
||||
final_time=0.2, time_out=49, result=1)
|
||||
|
||||
pose, experiment = recording.get_pose_and_experiment(1)
|
||||
|
||||
print (pose, experiment)
|
||||
print(pose, experiment)
|
||||
self.assertEqual(pose, 0)
|
||||
self.assertEqual(experiment, 1)
|
||||
|
||||
|
||||
pose, experiment = recording.get_pose_and_experiment(2)
|
||||
|
||||
print (pose, experiment)
|
||||
print(pose, experiment)
|
||||
# An starting experiment should return one
|
||||
self.assertEqual(pose, 1)
|
||||
self.assertEqual(experiment, 0)
|
||||
|
||||
pose, experiment = recording.get_pose_and_experiment(3)
|
||||
|
||||
print (pose, experiment)
|
||||
print(pose, experiment)
|
||||
# An starting experiment should return one
|
||||
self.assertEqual(pose, 1)
|
||||
self.assertEqual(experiment, 0)
|
||||
|
||||
recording.write_summary_results( experiment=Experiment(), pose=[24, 32], rep=1,
|
||||
path_distance=200, remaining_distance=0,
|
||||
final_time=0.2, time_out=49, result=1)
|
||||
|
||||
recording.write_summary_results(experiment=Experiment(), pose=[24, 32], rep=1,
|
||||
path_distance=200, remaining_distance=0,
|
||||
final_time=0.2, time_out=49, result=1)
|
||||
|
||||
pose, experiment = recording.get_pose_and_experiment(2)
|
||||
|
||||
self.assertEqual(pose, 0)
|
||||
self.assertEqual(experiment, 1)
|
||||
|
||||
|
||||
pose, experiment = recording.get_pose_and_experiment(3)
|
||||
|
||||
self.assertEqual(pose, 2)
|
||||
|
@ -278,4 +248,3 @@ class testRecording(unittest.TestCase):
|
|||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
Loading…
Reference in New Issue