def miri_params(request): cid, asn_type, asn_name, product_name = request.param pool = combine_pools(t_path('data/pool_007_spec_miri.csv')) gc = constrain_on_candidates((cid, )) rules = registry_level3_only(global_constraints=gc) asns = generate(pool, rules) return asns, asn_type, asn_name, product_name
def test_nrs_msa_nod(): pool = combine_pools(t_path('data/pool_023_nirspec_msa_3nod.csv')) all_candidates = constrain_on_candidates(None) asns = generate(pool, registry_level2_only(global_constraints=all_candidates)) assert len(asns) == 12 for asn in asns: assert len(asn['products'][0]['members']) == 3
def test_nrs_fixedslit_nod(): """Test NIRSpec Fixed-slit background nods""" pool = combine_pools(t_path('data/pool_024_nirspec_fss_nods.csv')) constraint_all_candidates = constrain_on_candidates(None) asns = generate(pool, registry_level2_only( global_constraints=constraint_all_candidates) ) assert len(asns) == 30 for asn in asns: n_dithers = int(asn.constraints['nods'].value) n_spectral_dithers = int(asn.constraints['subpxpts'].value) # Expect self + all exposures not at the same primary dither n_members = n_dithers - n_spectral_dithers + 1 assert len(asn['products'][0]['members']) == n_members
def test_nrs_fixedslit_nod(): """Test NIRSpec Fixed-slit background nods""" pool = combine_pools(t_path('data/pool_024_nirspec_fss_nods.csv')) constraint_all_candidates = constrain_on_candidates(None) asns = generate( pool, registry_level2_only(global_constraints=constraint_all_candidates)) assert len(asns) == 30 for asn in asns: nods = int(asn.constraints['nods'].value) multiplier = DITHER_PATTERN_MULTIPLIER[ asn.constraints['subpxpts'].value] n_members = nods * multiplier assert len(asn['products'][0]['members']) == n_members
def test_duplicate_names(): """ For Level 3 association, there should be no association with the same product name. Generation should produce log messages indicating when duplicate names have been found. """ pool = AssociationPool.read(t_path('data/jw00632_dups.csv')) constrain_all_candidates = constrain_on_candidates(None) rules = registry_level3_only(global_constraints=constrain_all_candidates) with pytest.warns(RuntimeWarning): asns = generate(pool, rules) # There should only be one association left. assert len(asns) == 1
def test_nrs_fixedslit_nod_chop(): """Test NIRSpec Fixed-slit background nods""" pool = combine_pools(t_path('data/pool_025_nirspec_fss_nod_chop.csv')) constraint_all_candidates = constrain_on_candidates(None) asns = generate(pool, registry_level2_only( global_constraints=constraint_all_candidates) ) assert len(asns) == 8 for asn in asns: assert asn['asn_rule'] in ['Asn_Lv2NRSFSS', 'Asn_Lv2SpecSpecial'] if asn['asn_rule'] == 'Asn_Lv2SpecSpecial': assert len(asn['products'][0]['members']) == 1 else: nods = int(asn.constraints['nods'].value) if asn['asn_id'].startswith('c'): nods += 1 assert len(asn['products'][0]['members']) == nods
def test_duplicate_generate(): """Test for duplicate/overwrite association The pool has two exposures, one without a valid `asn_candidate`, and one with a valid observation `asn_candidate`. When set with the "all candidates" constraint, only one association should be made. The prompt for this test was that three associations were being created, two of which were the observation candidate, with the second being a duplicate of the first. The third was an extraneous discovered candidate. """ pool = AssociationPool.read(t_path('data/pool_duplicate.csv')) constrain_all_candidates = constrain_on_candidates(None) rules = registry_level3_only(global_constraints=constrain_all_candidates) asns = generate(pool, rules) assert len(asns) == 1 asn = asns[0] assert asn['asn_type'] == 'image3' assert asn['asn_id'] == 'o029'
"""test_level3_dithers: Test of WFS rules.""" from jwst.associations.tests import helpers from jwst.associations import generate from jwst.associations.main import constrain_on_candidates # Generate Level3 assocations all_candidates = constrain_on_candidates(None) rules = helpers.registry_level3_only(global_constraints=all_candidates) pool = helpers.combine_pools(helpers.t_path('data/pool_004_wfs.csv')) level3_asns = generate(pool, rules) class TestLevel3WFS(helpers.BasePoolRule): pools = [ helpers.PoolParams(path=helpers.t_path('data/pool_004_wfs.csv'), n_asns=42, n_orphaned=0), ] valid_rules = [ 'Asn_Lv3WFSCMB', ] def test_wfs_duplicate_product_names(): """Test for duplicate product names""" global level3_asns