8000 JP-3505: Update ASN rules for NRS MOS compromise dither patterns by hbushouse · Pull Request #8184 · spacetelescope/jwst · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

JP-3505: Update ASN rules for NRS MOS compromise dither patterns #8184

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Jan 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
1.13.4 (unreleased)
===================

associations
------------

- Updated the level-2 rules for handling NIRSpec MOS nods that include
sub-pixel dithers, so that only exposures from other nod positions
are used as background members in "spec2" associations. [#8184]

documentation
-------------

Expand Down
9 changes: 7 additions & 2 deletions jwst/associations/lib/rules_level2_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -445,7 +445,7 @@ def make_nod_asns(self):

for other_science in science_exps:
if other_science['expname'] != science_exp['expname']:
if science_exp.item['exp_type'] == 'nrs_fixedslit':
if science_exp.item['exp_type'] in ['nrs_fixedslit', 'nrs_msaspec']:
try:
sci_prim_dithpt = (int(science_exp.item['patt_num']) - 1) // \
int(science_exp.item['subpxpts'])
Expand All @@ -467,7 +467,12 @@ def make_nod_asns(self):
now_background['exptype'] = 'background'
new_members.append(now_background)
except (ValueError, KeyError, ZeroDivisionError):
pass
if science_exp.item['exp_type'] == 'nrs_msaspec':
now_background = Member(other_science)
now_background['exptype'] = 'background'
new_members.append(now_background)
else:
pass
else:
now_background = Member(other_science)
now_background['exptype'] = 'background'
Expand Down
27 changes: 27 additions & 0 deletions jwst/associations/tests/data/pool_023b_nirspec_msa_3nod_subpix.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# NIRSpec MSA simulated 3nod with 3 sub-pixel dithers at each nod
#
# Based on PID 2640
FILENAME|OBS_ID|PROGRAM|OBS_NUM|VISIT|VISIT_ID|VISITGRP|VISITYPE|SEQ_ID|ACT_ID|EXPOSURE|EXP_TYPE|NEXPOSUR|EXPCOUNT|INSTRUME|DETECTOR|CHANNEL|TARGETID|TARGPROP|TARGNAME|TARGTYPE|TEMPLATE|PNTGTYPE|PNTG_SEQ|TARGORDN|EXPSPCIN|DITHPTIN|MOSTILNO|MODULE|FILTER|PUPIL|DITHERID|PATTTYPE|PATTSTRT|NUMDTHPT|PATTSIZE|SUBPXPTS|PATT_NUM|SUBPIXEL|APERNAME|SDP_VER|SUBARRAY|GRATING|FXD_SLIT|BAND|GWA_XTIL|GWA_YTIL|ASN_CANDIDATE|EXPOSERR|IS_PSF|IS_IMPRT|BKGDTARG|TSOVISIT|MSASTATE|MSAMETFL|OPMODE|LAMP|SPEC_NUM|SPAT_NUM|DMS_NOTE|EXSEGTOT
#
# Initialize ACID. This is done with a dummy exposure that will not match any association
set acid|OBS_ID|PROGRAM|OBS_NUM|VISIT|VISIT_ID|VISITGRP|VISITYPE|SEQ_ID|ACT_ID|EXPOSURE|EXP_TYPE|NEXPOSUR|EXPCOUNT|INSTRUME|DETECTOR|CHANNEL|TARGETID|TARGPROP|TARGNAME|TARGTYPE|TEMPLATE|PNTGTYPE|PNTG_SEQ|TARGORDN|EXPSPCIN|DITHPTIN|MOSTILNO|MODULE|FILTER|PUPIL|DITHERID|PATTTYPE|PATTSTRT|NUMDTHPT|PATTSIZE|SUBPXPTS|PATT_NUM|SUBPIXEL|APERNAME|SDP_VER|SUBARRAY|GRATING|FXD_SLIT|BAND|GWA_XTIL|GWA_YTIL|@!next(acid)|EXPOSERR|IS_PSF|IS_IMPRT|BKGDTARG|TSOVISIT|MSASTATE|MSAMETFL|OPMODE|LAMP|SPEC_NUM|SPAT_NUM|DMS_NOTE|EXSEGTOT
#
# 3 nods, with 3 sub-pix dithers, for each of 2 detectors
@!fmt_fname(next(expnum))|V02640001001P0000000011101|2640|@!next(obsnum)|1|02640001001|11|PRIME_TARGETED_FIXED|1|01|1|NRS_MSASPEC|113|78|NIRSPEC|NRS1|NULL|3|WESTERLUND2-DIST-CORE-FULL|NULL|FIXED|NIRSpec MultiObject Spectroscopy|SCIENCE|38|1|5|1|1|NULL|F100LP|NULL|5|3-POINT-WITH-NIRCAM-SIZE1|NULL|9|NULL|3|1|NULL|NRS_FULL_MSA|2023_2a|FULL|G140M|NULL|NULL|0.3282394710000022|0.1243472999999996|@!fmt_cand([(obsnum.value, 'OBSERVATION')])|NULL|NULL|F|F|F|PRIMARYPARK_CONFIG|jw02640001001_02_msa.fits|MSASPEC|NONE|NULL|NULL|NULL|NULL
@!fmt_fname(next(expnum))|V02640001001P0000000011101|2640|@!obsnum.value|1|02640001001|11|PRIME_TARGETED_FIXED|1|01|1|NRS_MSASPEC|113|78|NIRSPEC|NRS2|NULL|3|WESTERLUND2-DIST-CORE-FULL|NULL|FIXED|NIRSpec MultiObject Spectroscopy|SCIENCE|38|1|5|1|1|NULL|F100LP|NULL|5|3-POINT-WITH-NIRCAM-SIZE1|NULL|9|NULL|3|1|NULL|NRS_FULL_MSA|2023_2a|FULL|G140M|NULL|NULL|0.3282394710000022|0.1243472999999996|@!fmt_cand([(obsnum.value, 'OBSERVATION')])|NULL|NULL|F|F|F|PRIMARYPARK_CONFIG|jw02640001001_02_msa.fits|MSASPEC|NONE|NULL|NULL|NULL|NULL
@!fmt_fname(next(expnum))|V02640001001P0000000011101|2640|@!obsnum.value|1|02640001001|11|PRIME_TARGETED_FIXED|1|01|2|NRS_MSASPEC|113|78|NIRSPEC|NRS1|NULL|3|WESTERLUND2-DIST-CORE-FULL|NULL|FIXED|NIRSpec MultiObject Spectroscopy|SCIENCE|39|1|5|2|1|NULL|F100LP|NULL|5|3-POINT-WITH-NIRCAM-SIZE1|NULL|9|NULL|3|2|NULL|NRS_FULL_MSA|2023_2a|FULL|G140M|NULL|NULL|0.3282394710000022|0.1243472999999996|@!fmt_cand([(obsnum.value, 'OBSERVATION')])|NULL|NULL|F|F|F|PRIMARYPARK_CONFIG|jw02640001001_02_msa.fits|MSASPEC|NONE|NULL|NULL|NULL|NULL
@!fmt_fname(next(expnum))|V02640001001P0000000011101|2640|@!obsnum.value|1|02640001001|11|PRIME_TARGETED_FIXED|1|01|2|NRS_MSASPEC|113|78|NIRSPEC|NRS2|NULL|3|WESTERLUND2-DIST-CORE-FULL|NULL|FIXED|NIRSpec MultiObject Spectroscopy|SCIENCE|39|1|5|2|1|NULL|F100LP|NULL|5|3-POINT-WITH-NIRCAM-SIZE1|NULL|9|NULL|3|2|NULL|NRS_FULL_MSA|2023_2a|FULL|G140M|NULL|NULL|0.3282394710000022|0.1243472999999996|@!fmt_cand([(obsnum.value, 'OBSERVATION')])|NULL|NULL|F|F|F|PRIMARYPARK_CONFIG|jw02640001001_02_msa.fits|MSASPEC|NONE|NULL|NULL|NULL|NULL
@!fmt_fname(next(expnum))|V02640001001P0000000011101|2640|@!obsnum.value|1|02640001001|11|PRIME_TARGETED_FIXED|1|01|3|NRS_MSASPEC|113|78|NIRSPEC|NRS1|NULL|3|WESTERLUND2-DIST-CORE-FULL|NULL|FIXED|NIRSpec MultiObject Spectroscopy|SCIENCE|40|1|5|3|1|NULL|F100LP|NULL|5|3-POINT-WITH-NIRCAM-SIZE1|NULL|9|NULL|3|3|NULL|NRS_FULL_MSA|2023_2a|FULL|G140M|NULL|NULL|0.3282394710000022|0.1243472999999996|@!fmt_cand([(obsnum.value, 'OBSERVATION')])|NULL|NULL|F|F|F|PRIMARYPARK_CONFIG|jw02640001001_02_msa.fits|MSASPEC|NONE|NULL|NULL|NULL|NULL
@!fmt_fname(next(expnum))|V02640001001P0000000011101|2640|@!obsnum.value|1|02640001001|11|PRIME_TARGETED_FIXED|1|01|3|NRS_MSASPEC|113|78|NIRSPEC|NRS2|NULL|3|WESTERLUND2-DIST-CORE-FULL|NULL|FIXED|NIRSpec MultiObject Spectroscopy|SCIENCE|40|1|5|3|1|NULL|F100LP|NULL|5|3-POINT-WITH-NIRCAM-SIZE1|NULL|9|NULL|3|3|NULL|NRS_FULL_MSA|2023_2a|FULL|G140M|NULL|NULL|0.3282394710000022|0.1243472999999996|@!fmt_cand([(obsnum.value, 'OBSERVATION')])|NULL|NULL|F|F|F|PRIMARYPARK_CONFIG|jw02640001001_02_msa.fits|MSASPEC|NONE|NULL|NULL|NULL|NULL
@!fmt_fname(next(expnum))|V02640001001P0000000011101|2640|@!obsnum.value|1|02640001001|11|PRIME_TARGETED_FIXED|1|01|4|NRS_MSASPEC|113|78|NIRSPEC|NRS1|NULL|3|WESTERLUND2-DIST-CORE-FULL|NULL|FIXED|NIRSpec MultiObject Spectroscopy|SCIENCE|41|1|5|4|1|NULL|F100LP|NULL|5|3-POINT-WITH-NIRCAM-SIZE1|NULL|9|NULL|3|4|NULL|NRS_FULL_MSA|2023_2a|FULL|G140M|NULL|NULL|0.3282394710000022|0.1243472999999996|@!fmt_cand([(obsnum.value, 'OBSERVATION')])|NULL|NULL|F|F|F|PRIMARYPARK_CONFIG|jw02640001001_02_msa.fits|MSASPEC|NONE|NULL|NULL|NULL|NULL
@!fmt_fname(next(expnum))|V02640001001P0000000011101|2640|@!obsnum.value|1|02640001001|11|PRIME_TARGETED_FIXED|1|01|4|NRS_MSASPEC|113|78|NIRSPEC|NRS2|NULL|3|WESTERLUND2-DIST-CORE-FULL|NULL|FIXED|NIRSpec MultiObject Spectroscopy|SCIENCE|41|1|5|4|1|NULL|F100LP|NULL|5|3-POINT-WITH-NIRCAM-SIZE1|NULL|9|NULL|3|4|NULL|NRS_FULL_MSA|2023_2a|FULL|G140M|NULL|NULL|0.3282394710000022|0.1243472999999996|@!fmt_cand([(obsnum.value, 'OBSERVATION')])|NULL|NULL|F|F|F|PRIMARYPARK_CONFIG|jw02640001001_02_msa.fits|MSASPEC|NONE|NULL|NULL|NULL|NULL
@!fmt_fname(next(expnum))|V02640001001P0000000011101|2640|@!obsnum.value|1|02640001001|11|PRIME_TARGETED_FIXED|1|01|5|NRS_MSASPEC|113|78|NIRSPEC|NRS1|NULL|3|WESTERLUND2-DIST-CORE-FULL|NULL|FIXED|NIRSpec MultiObject Spectroscopy|SCIENCE|42|1|5|5|1|NULL|F100LP|NULL|5|3-POINT-WITH-NIRCAM-SIZE1|NULL|9|NULL|3|5|NULL|NRS_FULL_MSA|2023_2a|FULL|G140M|NULL|NULL|0.3282394710000022|0.1243472999999996|@!fmt_cand([(obsnum.value, 'OBSERVATION')])|NULL|NULL|F|F|F|PRIMARYPARK_CONFIG|jw02640001001_02_msa.fits|MSASPEC|NONE|NULL|NULL|NULL|NULL
@!fmt_fname(next(expnum))|V02640001001P0000000011101|2640|@!obsnum.value|1|02640001001|11|PRIME_TARGETED_FIXED|1|01|5|NRS_MSASPEC|113|78|NIRSPEC|NRS2|NULL|3|WESTERLUND2-DIST-CORE-FULL|NULL|FIXED|NIRSpec MultiObject Spectroscopy|SCIENCE|42|1|5|5|1|NULL|F100LP|NULL|5|3-POINT-WITH-NIRCAM-SIZE1|NULL|9|NULL|3|5|NULL|NRS_FULL_MSA|2023_2a|FULL|G140M|NULL|NULL|0.3282394710000022|0.1243472999999996|@!fmt_cand([(obsnum.value, 'OBSERVATION')])|NULL|NULL|F|F|F|PRIMARYPARK_CONFIG|jw02640001001_02_msa.fits|MSASPEC|NONE|NULL|NULL|NULL|NULL
@!fmt_fname(next(expnum))|V02640001001P0000000011101|2640|@!obsnum.value|1|02640001001|11|PRIME_TARGETED_FIXED|1|01|6|NRS_MSASPEC|113|78|NIRSPEC|NRS1|NULL|3|WESTERLUND2-DIST-CORE-FULL|NULL|FIXED|NIRSpec MultiObject Spectroscopy|SCIENCE|43|1|5|6|1|NULL|F100LP|NULL|5|3-POINT-WITH-NIRCAM-SIZE1|NULL|9|NULL|3|6|NULL|NRS_FULL_MSA|2023_2a|FULL|G140M|NULL|NULL|0.3282394710000022|0.1243472999999996|@!fmt_cand([(obsnum.value, 'OBSERVATION')])|NULL|NULL|F|F|F|PRIMARYPARK_CONFIG|jw02640001001_02_msa.fits|MSASPEC|NONE|NULL|NULL|NULL|NULL
@!fmt_fname(next(expnum))|V02640001001P0000000011101|2640|@!obsnum.value|1|02640001001|11|PRIME_TARGETED_FIXED|1|01|6|NRS_MSASPEC|113|78|NIRSPEC|NRS2|NULL|3|WESTERLUND2-DIST-CORE-FULL|NULL|FIXED|NIRSpec MultiObject Spectroscopy|SCIENCE|43|1|5|6|1|NULL|F100LP|NULL|5|3-POINT-WITH-NIRCAM-SIZE1|NULL|9|NULL|3|6|NULL|NRS_FULL_MSA|2023_2a|FULL|G140M|NULL|NULL|0.3282394710000022|0.1243472999999996|@!fmt_cand([(obsnum.value, 'OBSERVATION')])|NULL|NULL|F|F|F|PRIMARYPARK_CONFIG|jw02640001001_02_msa.fits|MSASPEC|NONE|NULL|NULL|NULL|NULL
@!fmt_fname(next(expnum))|V02640001001P0000000011101|2640|@!obsnum.value|1|02640001001|11|PRIME_TARGETED_FIXED|1|01|7|NRS_MSASPEC|113|78|NIRSPEC|NRS1|NULL|3|WESTERLUND2-DIST-CORE-FULL|NULL|FIXED|NIRSpec MultiObject Spectroscopy|SCIENCE|44|1|5|7|1|NULL|F100LP|NULL|5|3-POINT-WITH-NIRCAM-SIZE1|NULL|9|NULL|3|7|NULL|NRS_FULL_MSA|2023_2a|FULL|G140M|NULL|NULL|0.3282394710000022|0.1243472999999996|@!fmt_cand([(obsnum.value, 'OBSERVATION')])|NULL|NULL|F|F|F|PRIMARYPARK_CONFIG|jw02640001001_02_msa.fits|MSASPEC|NONE|NULL|NULL|NULL|NULL
@!fmt_fname(next(expnum))|V02640001001P0000000011101|2640|@!obsnum.value|1|02640001001|11|PRIME_TARGETED_FIXED|1|01|7|NRS_MSASPEC|113|78|NIRSPEC|NRS2|NULL|3|WESTERLUND2-DIST-CORE-FULL|NULL|FIXED|NIRSpec MultiObject Spectroscopy|SCIENCE|44|1|5|7|1|NULL|F100LP|NULL|5|3-POINT-WITH-NIRCAM-SIZE1|NULL|9|NULL|3|7|NULL|NRS_FULL_MSA|2023_2a|FULL|G140M|NULL|NULL|0.3282394710000022|0.1243472999999996|@!fmt_cand([(obsnum.value, 'OBSERVATION')])|NULL|NULL|F|F|F|PRIMARYPARK_CONFIG|jw02640001001_02_msa.fits|MSASPEC|NONE|NULL|NULL|NULL|NULL
@!fmt_fname(next(expnum))|V02640001001P0000000011101|2640|@!obsnum.value|1|02640001001|11|PRIME_TARGETED_FIXED|1|01|8|NRS_MSASPEC|113|78|NIRSPEC|NRS1|NULL|3|WESTERLUND2-DIST-CORE-FULL|NULL|FIXED|NIRSpec MultiObject Spectroscopy|SCIENCE|45|1|5|8|1|NULL|F100LP|NULL|5|3-POINT-WITH-NIRCAM-SIZE1|NULL|9|NULL|3|8|NULL|NRS_FULL_MSA|2023_2a|FULL|G140M|NULL|NULL|0.3282394710000022|0.1243472999999996|@!fmt_cand([(obsnum.value, 'OBSERVATION')])|NULL|NULL|F|F|F|PRIMARYPARK_CONFIG|jw02640001001_02_msa.fits|MSASPEC|NONE|NULL|NULL|NULL|NULL
@!fmt_fname(next(expnum))|V02640001001P0000000011101|2640|@!obsnum.value|1|02640001001|11|PRIME_TARGETED_FIXED|1|01|8|NRS_MSASPEC|113|78|NIRSPEC|NRS2|NULL|3|WESTERLUND2-DIST-CORE-FULL|NULL|FIXED|NIRSpec MultiObject Spectroscopy|SCIENCE|45|1|5|8|1|NULL|F100LP|NULL|5|3-POINT-WITH-NIRCAM-SIZE1|NULL|9|NULL|3|8|NULL|NRS_FULL_MSA|2023_2a|FULL|G140M|NULL|NULL|0.3282394710000022|0.1243472999999996|@!fmt_cand([(obsnum.value, 'OBSERVATION')])|NULL|NULL|F|F|F|PRIMARYPARK_CONFIG|jw02640001001_02_msa.fits|MSASPEC|NONE|NULL|NULL|NULL|NULL
@!fmt_fname(next(expnum))|V02640001001P0000000011101|2640|@!obsnum.value|1|02640001001|11|PRIME_TARGETED_FIXED|1|01|9|NRS_MSASPEC|113|78|NIRSPEC|NRS1|NULL|3|WESTERLUND2-DIST-CORE-FULL|NULL|FIXED|NIRSpec MultiObject Spectroscopy|SCIENCE|46|1|5|9|1|NULL|F100LP|NULL|5|3-POINT-WITH-NIRCAM-SIZE1|NULL|9|NULL|3|9|NULL|NRS_FULL_MSA|2023_2a|FULL|G140M|NULL|NULL|0.3282394710000023|0.1243472999999996|@!fmt_cand([(obsnum.value, 'OBSERVATION')])|NULL|NULL|F|F|F|PRIMARYPARK_CONFIG|jw02640001001_02_msa.fits|MSASPEC|NONE|NULL|NULL|NULL|NULL
@!fmt_fname(next(expnum))|V02640001001P0000000011101|2640|@!obsnum.value|1|02640001001|11|PRIME_TARGETED_FIXED|1|01|9|NRS_MSASPEC|113|78|NIRSPEC|NRS2|NULL|3|WESTERLUND2-DIST-CORE-FULL|NULL|FIXED|NIRSpec MultiObject Spectroscopy|SCIENCE|46|1|5|9|1|NULL|F100LP|NULL|5|3-POINT-WITH-NIRCAM-SIZE1|NULL|9|NULL|3|9|NULL|NRS_FULL_MSA|2023_2a|FULL|G140M|NULL|NULL|0.3282394710000023|0.1243472999999996|@!fmt_cand([(obsnum.value, 'OBSERVATION')])|NULL|NULL|F|F|F|PRIMARYPARK_CONFIG|jw02640001001_02_msa.fits|MSASPEC|NONE|NULL|NULL|NULL|NULL
24 changes: 24 additions & 0 deletions jwst/associations/tests/test_level2_background.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,30 @@ def test_nrs_msa_nod():
assert len(asn['products'][0]['members']) == 3


def test_nrs_msa_nod_subpix():
# This is a pool with NIRSpec MOS exposures at 3 primary nods and 3 subpixel
# dither positions at each nod, for a total 9 exposures on each of two
# (nrs1, nrs2) detectors, so a grand total of 18 exposures and 18 asns
# (one spec2 asn for each exposure). So each spec2 asn should contain 1
# science member, and the 6 exposures from the other 2 primary nod positions
# as background members.
pool = combine_pools(t_path('data/pool_023b_nirspec_msa_3nod_subpix.csv'))
all_candidates = constrain_on_candidates(None)
asns = generate(pool, registry_level2_only(global_constraints=all_candidates))
assert len(asns) == 18
for asn in asns:
assert len(asn['products'][0]['members']) == 7
nsci = 0
nbkg = 0
for member in asn['products'][0]['members']:
if member['exptype'] == 'science':
nsci += 1
if member['exptype'] == 'background':
nbkg += 1
assert nsci == 1
assert nbkg == 6


def test_nrs_fixedslit_nod():
"""Test NIRSpec Fixed-slit background nods"""
pool = combine_pools(t_path('data/pool_024_nirspec_fss_nods.csv'))
Expand Down
0