def test_pipeline(_jail): pipeline_fn = join(dirname(__file__), 'steps', 'python_pipeline.cfg') pipe = Step.from_config_file(pipeline_fn) pipe.output_filename = "output.fits" assert pipe.flat_field.threshold == 42.0 assert pipe.flat_field.multiplier == 2.0 pipe.run()
def test_step(): step_fn = join(dirname(__file__), 'steps', 'some_other_step.cfg') step = Step.from_config_file(step_fn) assert isinstance(step, AnotherDummyStep) assert step.name == 'SomeOtherStepOriginal' assert step.par2 == 'abc def' step.run(1, 2)
def test_hook_with_return(): """Test the running of hooks""" step_fn = join(dirname(__file__), 'steps', 'stepwithmodel_hookreturn.cfg') step = Step.from_config_file(step_fn) model = datamodels.ImageModel() result = step.run(model) assert result == 'PostHookWithReturnStep executed' assert step.pre_hook_run assert step.post_hook_run
def test_hook(): """Test the running of hooks""" step_fn = join(dirname(__file__), 'steps', 'stepwithmodel_hook.cfg') step = Step.from_config_file(step_fn) model = datamodels.ImageModel() result = step.run(model) assert result.pre_hook_run assert step.pre_hook_run assert result.post_hook_run assert step.post_hook_run
def find_suffixes(): """Find all possible suffixes from the jwst package Returns ------- suffixes: set The set of all programmatically findable suffixes. Notes ----- This will load all of the `jwst` package. Consider if this is worth doing dynamically or only as a utility to update a static list. """ from jwst.stpipe import Step suffixes = set() jwst = import_module('jwst') jwst_fpath = path.split(jwst.__file__)[0] # First traverse the code base and find all # `Step` classes. The default suffix is the # class name. for module in load_local_pkg(jwst_fpath): for klass_name, klass in getmembers( module, lambda o: isclass(o) and issubclass(o, Step) ): suffixes.add(klass_name.lower()) # Instantiate Steps/Pipelines from their configuration files. # Different names and suffixes can be defined in this way. # Note: Based on the `collect_pipeline_cfgs` script config_path = path.join(jwst_fpath, 'pipeline') for config_file in listdir(config_path): if config_file.endswith('.cfg'): try: step = Step.from_config_file( path.join(config_path, config_file) ) except Exception as exception: pass else: suffixes.add(step.name.lower()) if step.suffix is not None: suffixes.add(step.suffix.lower()) # That's all folks return list(suffixes)
def find_suffixes(): """Find all possible suffixes from the jwst package Returns ------- suffixes: set The set of all programmatically findable suffixes. Notes ----- This will load all of the `jwst` package. Consider if this is worth doing dynamically or only as a utility to update a static list. """ from jwst.stpipe import Step suffixes = set() jwst = import_module('jwst') jwst_fpath = path.split(jwst.__file__)[0] # First traverse the code base and find all # `Step` classes. The default suffix is the # class name. for module in load_local_pkg(jwst_fpath): for klass_name, klass in getmembers( module, lambda o: isclass(o) and issubclass(o, Step) ): suffixes.add(klass_name.lower()) # Instantiate Steps/Pipelines from their configuration files. # Different names and suffixes can be defined in this way. # Note: Based on the `collect_pipeline_cfgs` script config_path = path.join(jwst_fpath, 'pipeline') for config_file in listdir(config_path): if config_file.endswith('.cfg'): try: step = Step.from_config_file( path.join(config_path, config_file) ) except Exception as err: logger.debug(f'Configuration {config_file} failed: {str(err)}') else: suffixes.add(step.name.lower()) if step.suffix is not None: suffixes.add(step.suffix.lower()) # That's all folks return list(suffixes)
def test_step_with_local_class(): step_fn = join(dirname(__file__), 'steps', 'local_class.cfg') step = Step.from_config_file(step_fn) step.run(datamodels.ImageModel((2, 2)))
def test_reftype(cfg_file, expected): """Test that reftype is produce as expected""" step = Step.from_config_file(t_path(join('steps', cfg_file))) assert step.get_pars_model().meta.reftype == 'pars-' + expected.lower()
def test_reftype(cfg_file, expected_reftype): """Test that reftype is produced as expected""" step = Step.from_config_file(t_path(join('steps', cfg_file))) assert step.__class__.get_config_reftype() == expected_reftype assert step.get_config_reftype() == expected_reftype