From 1e0916b0fdaf13cc135e0667110ac11a41bf5302 Mon Sep 17 00:00:00 2001 From: Alex Bilger Date: Mon, 19 Jan 2026 11:27:16 +0100 Subject: [PATCH] add filter to select scenes for regression detection --- SofaRegressionProgram.py | 11 ++++++++--- tools/RegressionSceneList.py | 22 ++++++++++++++-------- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/SofaRegressionProgram.py b/SofaRegressionProgram.py index cfb7f93..e0f93e4 100644 --- a/SofaRegressionProgram.py +++ b/SofaRegressionProgram.py @@ -18,7 +18,7 @@ class RegressionProgram: - def __init__(self, input_folder, disable_progress_bar = False, verbose = False): + def __init__(self, input_folder, filter, disable_progress_bar = False, verbose = False): self.scene_sets = [] # List self.disable_progress_bar = disable_progress_bar self.verbose = verbose @@ -28,7 +28,7 @@ def __init__(self, input_folder, disable_progress_bar = False, verbose = False): if file.endswith(".regression-tests"): file_path = os.path.join(root, file) - scene_list = RegressionSceneList.RegressionSceneList(file_path, self.disable_progress_bar, verbose) + scene_list = RegressionSceneList.RegressionSceneList(file_path, filter, self.disable_progress_bar, verbose) scene_list.process_file() self.scene_sets.append(scene_list) @@ -102,6 +102,11 @@ def parse_args(): dest='output', help="Directory where to export data preprocessed", type=str) + + parser.add_argument('--filter', + dest='filter', + help="A regex filter to select scenes to test", + type=str) parser.add_argument('--replay', dest='replay', @@ -138,7 +143,7 @@ def parse_args(): args = parse_args() # 2- Process file if args.input is not None: - reg_prog = RegressionProgram(args.input, args.progress_bar_is_disabled, args.verbose) + reg_prog = RegressionProgram(args.input, args.filter, args.progress_bar_is_disabled, args.verbose) else: exit("Error: Argument is required ! Quitting.") diff --git a/tools/RegressionSceneList.py b/tools/RegressionSceneList.py index 3ae6a5f..96f53a4 100644 --- a/tools/RegressionSceneList.py +++ b/tools/RegressionSceneList.py @@ -1,17 +1,19 @@ import os import tools.RegressionSceneData as RegressionSceneData from tqdm import tqdm +import re ## This class is responsible for loading a file.regression-tests to gather the list of scene to test with all arguments ## It will provide the API to launch the tests or write refs on all scenes contained in this file class RegressionSceneList: - def __init__(self, file_path, disable_progress_bar = False, verbose = False): + def __init__(self, file_path, filter, disable_progress_bar = False, verbose = False): """ /// Path to the file.regression-tests containing the list of scene to tests with all arguments std::string filePath; """ self.file_path = file_path + self.filter = filter self.file_dir = os.path.dirname(file_path) self.scenes_data_sets = [] # List self.nbr_errors = 0 @@ -55,16 +57,20 @@ def process_file(self): print ("line read has not 5 arguments: " + str(len(values)) + " -> " + line) continue + if self.filter is not None and re.search(self.filter, values[0]) is None: + if self.verbose: + print (f'Filtered out {self.filter}: {values[0]}') + continue + full_file_path = os.path.join(self.file_dir, values[0]) full_ref_file_path = os.path.join(self.ref_dir_path, values[0]) - if len(values) == 5: - scene_data = RegressionSceneData.RegressionSceneData(full_file_path, full_ref_file_path, - values[1], values[2], values[3], values[4], - self.disable_progress_bar) - - #scene_data.printInfo() - self.scenes_data_sets.append(scene_data) + scene_data = RegressionSceneData.RegressionSceneData(full_file_path, full_ref_file_path, + values[1], values[2], values[3], values[4], + self.disable_progress_bar) + + #scene_data.printInfo() + self.scenes_data_sets.append(scene_data) def write_references(self, id_scene, print_log = False):