Skip to content

Commit e33dddc

Browse files
committed
populate new dq bit, erase all knowledge of unreliable_reset
1 parent 63de362 commit e33dddc

File tree

3 files changed

+16
-16
lines changed

3 files changed

+16
-16
lines changed

docs/jwst/references_general/references_general.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -602,7 +602,7 @@ Bit Value Name Description
602602
4 16 OUTLIER Flagged by outlier detection
603603
5 32 PERSISTENCE High persistence
604604
6 64 AD_FLOOR Below A/D floor
605-
7 128 RESERVED
605+
7 128 UNDERSAMP Undersampling correction
606606
8 256 UNRELIABLE_ERROR Uncertainty exceeds quoted error
607607
9 512 NON_SCIENCE Pixel not on science portion of detector
608608
10 1024 DEAD Dead pixel
@@ -623,7 +623,7 @@ Bit Value Name Description
623623
25 33554432 UNRELIABLE_FLAT Flat variance large
624624
26 67108864 OPEN Open pixel (counts move to adjacent pixels)
625625
27 134217728 ADJ_OPEN Adjacent to open pixel
626-
28 268435456 UNRELIABLE_RESET Sensitive to reset anomaly
626+
28 268435456 FLUX_ESTIMATED Pixel flux estimated due to missing/bad data
627627
29 536870912 MSA_FAILED_OPEN Pixel sees light from failed-open shutter
628628
30 1073741824 OTHER_BAD_PIXEL A catch-all flag
629629
31 2147483648 REFERENCE_PIXEL Pixel is a reference pixel

jwst/pixel_replace/pixel_replace.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class PixelReplacement:
2121

2222
# Shortcuts for DQ Flags
2323
DO_NOT_USE = datamodels.dqflags.pixel['DO_NOT_USE']
24-
REPLACED = datamodels.dqflags.pixel['LOW_QE']
24+
FLUX_ESTIMATED = datamodels.dqflags.pixel['FLUX_ESTIMATED']
2525
NON_SCIENCE = datamodels.dqflags.pixel['NON_SCIENCE']
2626

2727
# Shortcuts for dispersion direction for ease of reading
@@ -71,7 +71,7 @@ def replace(self):
7171
# ImageModel inputs (MIR_LRS-FIXEDSLIT)
7272
if isinstance(self.input, datamodels.ImageModel):
7373
self.output = self.algorithm(self.input)
74-
n_replaced = np.count_nonzero(self.output.dq & self.REPLACED)
74+
n_replaced = np.count_nonzero(self.output.dq & self.FLUX_ESTIMATED)
7575
log.info(f"Input model had {n_replaced} pixels replaced.")
7676
elif isinstance(self.input, datamodels.IFUImageModel):
7777
# Attempt to run pixel replacement on each throw of the IFU slicer
@@ -107,12 +107,12 @@ def replace(self):
107107
self.output.dq
108108
)
109109

110-
n_replaced = np.count_nonzero(trace_model.dq & self.REPLACED)
110+
n_replaced = np.count_nonzero(trace_model.dq & self.FLUX_ESTIMATED)
111111
log.info(f"Input MRS frame had {n_replaced} pixels replaced in IFU slice {i+1}.")
112112

113113
trace_model.close()
114114

115-
n_replaced = np.count_nonzero(self.output.dq & self.REPLACED)
115+
n_replaced = np.count_nonzero(self.output.dq & self.FLUX_ESTIMATED)
116116
log.info(f"Input MRS frame had {n_replaced} total pixels replaced.")
117117
else:
118118
# NRS_IFU method - Fixed number of IFU slices to iterate over
@@ -145,12 +145,12 @@ def replace(self):
145145
self.output.dq
146146
)
147147

148-
n_replaced = np.count_nonzero(trace_model.dq & self.REPLACED)
148+
n_replaced = np.count_nonzero(trace_model.dq & self.FLUX_ESTIMATED)
149149
log.info(f"Input NRS_IFU frame had {n_replaced} pixels replaced in IFU slice {i + 1}.")
150150

151151
trace_model.close()
152152

153-
n_replaced = np.count_nonzero(self.output.dq & self.REPLACED)
153+
n_replaced = np.count_nonzero(self.output.dq & self.FLUX_ESTIMATED)
154154
log.info(f"Input NRS_IFU frame had {n_replaced} total pixels replaced.")
155155

156156
# MultiSlitModel inputs (WFSS, NRS_FIXEDSLIT, ?)
@@ -160,7 +160,7 @@ def replace(self):
160160
slit_model = datamodels.SlitModel(self.input.slits[i].instance)
161161
slit_replaced = self.algorithm(slit_model)
162162

163-
n_replaced = np.count_nonzero(slit_replaced.dq & self.REPLACED)
163+
n_replaced = np.count_nonzero(slit_replaced.dq & self.FLUX_ESTIMATED)
164164
log.info(f"Slit {i} had {n_replaced} pixels replaced.")
165165

166166
self.output.slits[i] = slit_replaced
@@ -177,7 +177,7 @@ def replace(self):
177177
dummy_model = datamodels.ImageModel(data=self.input.data[i], dq=self.input.dq[i])
178178
dummy_model.update(self.input)
179179
dummy_replaced = self.algorithm(dummy_model)
180-
n_replaced = np.count_nonzero(dummy_replaced.dq & self.REPLACED)
180+
n_replaced = np.count_nonzero(dummy_replaced.dq & self.FLUX_ESTIMATED)
181181
log.info(f"Input TSO integration {i} had {n_replaced} pixels replaced.")
182182

183183
self.output.data[i] = dummy_replaced.data
@@ -322,7 +322,7 @@ def fit_profile(self, model):
322322
replaced_dq = np.where(
323323
(current_dq & self.DO_NOT_USE ^ current_dq & self.NON_SCIENCE == 1) &
324324
~(np.isnan(replaced_current)),
325-
current_dq ^ self.DO_NOT_USE ^ self.REPLACED,
325+
current_dq ^ self.DO_NOT_USE ^ self.FLUX_ESTIMATED,
326326
current_dq
327327
)
328328

jwst/reset/tests/test_reset_sub.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -110,20 +110,20 @@ def test_dq_combine(make_rampmodel, make_resetmodel):
110110
jump_det = dqflags.pixel['JUMP_DET']
111111
saturated = dqflags.pixel['SATURATED']
112112
do_not_use = dqflags.pixel['DO_NOT_USE']
113-
unreliable_reset = dqflags.pixel['UNRELIABLE_RESET']
113+
nonlinear = dqflags.pixel['NONLINEAR']
114114

115115
# populate dq flags of sci pixeldq and reference dq
116116
dm_ramp.pixeldq[50, 50] = jump_det
117117
dm_ramp.pixeldq[50, 51] = saturated
118118

119-
reset.dq[50, 50] = np.bitwise_or(do_not_use, unreliable_reset)
120-
reset.dq[50, 51] = unreliable_reset
119+
reset.dq[50, 50] = np.bitwise_or(do_not_use, nonlinear)
120+
reset.dq[50, 51] = nonlinear
121121

122122
# run correction step
123123
outfile = resetcorr(dm_ramp, reset)
124124

125-
t50_50 = jump_det | do_not_use | unreliable_reset
126-
t50_51 = saturated | unreliable_reset
125+
t50_50 = jump_det | do_not_use | nonlinear
126+
t50_51 = saturated | nonlinear
127127
# check that dq flags were correctly added
128128
assert outfile.pixeldq[50, 50] == t50_50
129129
assert outfile.pixeldq[50, 51] == t50_51

0 commit comments

Comments
 (0)