MCPcopy Create free account
hub / github.com/RenderKit/oidn / test_regression

Function test_regression

scripts/test.py:179–321  ·  view source on GitHub ↗
(filter, feature_sets, dataset)

Source from the content-addressed store, hash-verified

177
178# Runs regression tests for the specified filter
179def test_regression(filter, feature_sets, dataset):
180 dataset_dir = os.path.join(cfg.data_dir, dataset)
181 baseline_dir = os.path.join(cfg.baseline_dir, dataset)
182
183 # Convert the input images to PFM
184 if cfg.command == 'baseline':
185 if os.path.exists(baseline_dir):
186 print('Error: baseline directory already exists')
187 exit(1)
188 os.makedirs(baseline_dir)
189
190 input_filenames = sorted(glob(os.path.join(dataset_dir, '**', '*.exr'), recursive=True))
191 for input_filename in input_filenames:
192 image_name, feature = os.path.relpath(input_filename, dataset_dir).rsplit('.', 2)[0:2]
193 print_test(f'{filter}.{image_name}.{feature}', 'Convert')
194 output_filename = os.path.join(baseline_dir, f'{image_name}.input.{feature}.pfm')
195 convert_cmd = os.path.join(root_dir, 'training', 'convert_image.py')
196 convert_cmd += f' "{input_filename}" "{output_filename}"'
197 run_test(convert_cmd)
198
199 # Iterate over the feature sets
200 out_filename = None
201
202 for features, full_test, model_sizes in feature_sets:
203 if cfg.minimal and (out_filename or filter != 'RT'):
204 full_test = False
205
206 # Get the result name
207 result_base = filter.lower()
208 for f in features:
209 result_base += '_' + f
210 features_str = result_base.split('_', 1)[1]
211
212 if cfg.command == 'baseline':
213 # Generate the baseline images
214 for model_size in model_sizes:
215 print_test(f'{filter}.{model_size}.{features_str}', 'Infer')
216 result = result_base + ('_' + model_size if model_size != 'base' else '')
217 infer_cmd = os.path.join(root_dir, 'training', 'infer.py')
218 infer_cmd += f' -D "{cfg.data_dir}" -R "{cfg.results_dir}" -O "{cfg.baseline_dir}" -i {dataset} -r {result} -F pfm'
219 run_test(infer_cmd)
220
221 elif cfg.command == 'run':
222 main_feature = features[0]
223 main_feature_ext = get_feature_ext(main_feature)
224
225 # Gather the list of input images
226 input_filenames = sorted(glob(os.path.join(baseline_dir, '**', f'*.input.{main_feature_ext}.pfm'), recursive=True))
227 if not input_filenames:
228 print('Error: baseline input images missing (run with "baseline" first)')
229 exit(1)
230 image_names = [os.path.relpath(filename, baseline_dir).rsplit('.', 3)[0] for filename in input_filenames]
231
232 # Iterate over quality
233 for quality in (['high', 'balanced', 'fast'] if (filter == 'RT' and not cfg.minimal) or cfg.full else ['high']):
234 model_size = {'high' : 'large', 'balanced' : 'base', 'fast' : 'small'}[quality]
235 result = result_base
236 if model_size != 'base' and model_size in model_sizes:

Callers 1

test.pyFile · 0.85

Calls 6

printFunction · 0.85
print_testFunction · 0.85
run_testFunction · 0.85
get_feature_extFunction · 0.85
get_feature_optFunction · 0.85
setFunction · 0.50

Tested by

no test coverage detected