109 """Construct a list of AmplifierBuilder objects
113 amp =
list(ccd[
'amplifiers'].values())[0]
116 xRawExtent, yRawExtent = rawBBox.getDimensions()
118 readCorners = {
"LL": ReadoutCorner.LL,
119 "LR": ReadoutCorner.LR,
120 "UL": ReadoutCorner.UL,
121 "UR": ReadoutCorner.UR}
124 for name, amp
in sorted(ccd[
'amplifiers'].
items(), key=
lambda x: x[1][
'hdu']):
125 amplifier = Amplifier.Builder()
126 amplifier.setName(name)
129 perAmpData = amp[
'perAmpData']
133 x0, y0 = ix*xRawExtent, iy*yRawExtent
136 xDataExtent, yDataExtent = rawDataBBox.getDimensions()
138 geom.PointI(ix*xDataExtent, iy*yDataExtent), rawDataBBox.getDimensions()))
142 amplifier.setRawBBox(rawBBox)
146 amplifier.setRawDataBBox(rawDataBBox)
150 amplifier.setRawHorizontalOverscanBBox(rawSerialOverscanBBox)
154 amplifier.setRawVerticalOverscanBBox(rawParallelOverscanBBox)
158 amplifier.setRawPrescanBBox(rawSerialPrescanBBox)
161 amplifier.setRawXYOffset(
geom.Extent2I(ix*xRawExtent, iy*yRawExtent))
165 amplifier.setReadoutCorner(readCorners[amp[
'readCorner']])
166 amplifier.setGain(amp[
'gain'])
167 amplifier.setReadNoise(amp[
'readNoise'])
168 amplifier.setSaturation(amp[
'saturation'])
169 amplifier.setSuspectLevel(amp.get(
'suspect', np.nan))
172 flipX, flipY = amp.get(
"flipXY")
174 amplifier.setRawFlipX(flipX)
175 amplifier.setRawFlipY(flipY)
177 amplifier.setLinearityCoeffs([float(val)
for val
in amp[
'linearityCoeffs']])
178 amplifier.setLinearityType(amp[
'linearityType'])
179 amplifier.setLinearityThreshold(float(amp[
'linearityThreshold']))
180 amplifier.setLinearityMaximum(float(amp[
'linearityMax']))
181 amplifier.setLinearityUnits(
"DN")
182 amplifierList.append(amplifier)