I am currently working on a target that is extended and has a lot of continuum and fills the IGRINS slit and the PLP's readout pattern removal code seems to overcorrect for the readout pattern (row amplifier bias? not really clear to me exactly what it is correcting). Below are some images of my target in the H band showing the overcorrection where the continuum is bright. I suspect stray light from the bright continuum hitting the detector beyond the order edges is causing this.


I tracked the issue down to the PLP's readout pattern removal code (in the qlook and reimplement_cr_reject branches). Specifically in
igrins/procedures/readout_pattern_helper.py the following function
if mask is None:
mask = np.zeros(d.shape, dtype=bool)
else:
mask = mask.copy()
mask[:4] = True
mask[-4:] = True
p = [pipes[k] for k in ['p64_1st_order',
'col_wise_bias_c64',
'amp_wise_bias_r2',
'col_wise_bias']]
return apply_pipe(d, p, mask=mask)
where amp_wise_bias_r2 appears to be the cause.
I tracked the "pipe" for amp_wise_bias_r2 to igrins/procedures/readout_pattern.py where it points to the following function
class PatternAmpP2(PatternBase):
@classmethod
def get(kls, d, mask=None):
"""
returns a tuple of two 32 element array. First is per-amp bias values.
The second is the [1,-1] amplitude for each amp.
"""
d = np.ma.array(d, mask=mask).filled(np.nan)
do = d.reshape(32, 32, 2, -1)
av = np.nanmedian(do, axis=[1, 3])
amp_bias_mean = np.mean(av, axis=1)
amp_bias_amp = av[:, 0] - amp_bias_mean
return amp_bias_mean, amp_bias_amp
@classmethod
def broadcast(kls, d, av_p):
av, p = av_p
k = p[:, np.newaxis] * np.array([1, -1])
v = np.zeros((32, 32, 2, 1)) + k[:, np.newaxis, :, np.newaxis]
avv = av.reshape(32, 1, 1, 1) + v
return avv.reshape(2048, 1)
To try to resolve the issue, I tried to simply comment out amp_wise_bias_r2 in igrins/procedures/readout_pattern_helper.py like so:
if mask is None:
mask = np.zeros(d.shape, dtype=bool)
else:
mask = mask.copy()
mask[:4] = True
mask[-4:] = True
p = [pipes[k] for k in ['p64_1st_order',
'col_wise_bias_c64',
#'amp_wise_bias_r2',
'col_wise_bias']]
return apply_pipe(d, p, mask=mask)
and the result is a stacked H band frame that looks much better here when I blink it with what I had before:

It is very tempting to just leave amp_wise_bias_r2 turned off as a solution, but my main worry is that I am disabling pattern correction or bias subtraction that should be left on, so I am not sure this is the solution. My attempts to modify class PatternAmpP2(PatternBase) did not result in any improvement.
I am currently working on a target that is extended and has a lot of continuum and fills the IGRINS slit and the PLP's readout pattern removal code seems to overcorrect for the readout pattern (row amplifier bias? not really clear to me exactly what it is correcting). Below are some images of my target in the H band showing the overcorrection where the continuum is bright. I suspect stray light from the bright continuum hitting the detector beyond the order edges is causing this.
I tracked the issue down to the PLP's readout pattern removal code (in the qlook and reimplement_cr_reject branches). Specifically in
igrins/procedures/readout_pattern_helper.py the following function
where
amp_wise_bias_r2appears to be the cause.I tracked the "pipe" for amp_wise_bias_r2 to igrins/procedures/readout_pattern.py where it points to the following function
To try to resolve the issue, I tried to simply comment out amp_wise_bias_r2 in igrins/procedures/readout_pattern_helper.py like so:
and the result is a stacked H band frame that looks much better here when I blink it with what I had before:
It is very tempting to just leave amp_wise_bias_r2 turned off as a solution, but my main worry is that I am disabling pattern correction or bias subtraction that should be left on, so I am not sure this is the solution. My attempts to modify
class PatternAmpP2(PatternBase)did not result in any improvement.