Skip to content

Commit f8e80d1

Browse files
authored
Merge pull request #105 from epernod/fix_replay
[scripts] Fix ReplayState class to use the IO method and add the id of scene to replay form the input list
2 parents 078434a + f8a8ad8 commit f8e80d1

3 files changed

Lines changed: 13 additions & 11 deletions

File tree

SofaRegressionProgram.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,9 @@ def compare_all_sets_references(self):
9292

9393
return nbr_scenes
9494

95-
def replay_references(self, id_set=0):
95+
def replay_references(self, id_scene, id_set=0):
9696
scene_list = self.scene_sets[id_set]
97-
scene_list.replay_references(0)
97+
scene_list.replay_references(id_scene)
9898

9999

100100

@@ -123,7 +123,7 @@ def make_parser():
123123

124124
parser.add_argument('--replay',
125125
dest='replay',
126-
help="test option to replay reference",
126+
help=f"Will launch runSofa on the scene number X (input number) in the input the list of the {regression_file_extension} file given as input and display the scene references aside from the simulation",
127127
type=int)
128128

129129
parser.add_argument(
@@ -155,6 +155,7 @@ def make_parser():
155155
Examples:
156156
python SofaRegressionProgram.py --input ./scenes
157157
python SofaRegressionProgram.py --input ./scenes --filter \"$demo.*.scn\"
158+
python SofaRegressionProgram.py --input ./scenes --replay 5
158159
'''
159160

160161
return parser
@@ -177,10 +178,10 @@ def make_parser():
177178
if args.legacy_mode:
178179
print("Legacy regression mode activated.")
179180
reg_prog.legacy_mode = True
180-
181-
replay = bool(args.replay)
182-
if replay:
183-
reg_prog.replay_references()
181+
182+
if args.replay is not None:
183+
replayId = int(args.replay)
184+
reg_prog.replay_references(replayId)
184185
sys.exit()
185186

186187
if args.write_mode:

tools/RegressionSceneData.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,7 @@ def __init__(self, node, slave_mo, state_filename, **kwargs):
3030
self.frame_step = 0
3131
self.t_sim = 0.0
3232

33-
with gzip.open(state_filename, 'r') as zipfile:
34-
self.ref_data = json.loads(zipfile.read().decode('utf-8'))
35-
for key in self.ref_data:
36-
self.keyframes.append(float(key))
33+
self.ref_data, self.keyframes = reference_io.read_JSON_reference_file(state_filename)
3734

3835
if (self.keyframes[0] == 0.0): # frame 0.0
3936
tmp_position = np.asarray(self.ref_data[str(self.keyframes[0])])

tools/RegressionSceneList.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,10 @@ def compare_all_references(self):
152152

153153

154154
def replay_references(self, id_scene):
155+
if (id_scene < 0 or id_scene >= len(self.scenes_data_sets)):
156+
helper.writeError(f'Id of the scene given for replay: {id_scene} is out of range [0, {len(self.scenes_data_sets) - 1}] from input regression list file.')
157+
return
158+
155159
self.scenes_data_sets[id_scene].load_scene()
156160
self.scenes_data_sets[id_scene].add_compare_state()
157161
self.scenes_data_sets[id_scene].replay_references()

0 commit comments

Comments
 (0)