Source code for ali.instrument.sensors.raptor_owl_640_n

from ali.instrument.sensors.cardinal_640 import Cardinal640
from skcomponents.optics import Filter
import numpy as np


[docs] class RaptorOWL640N(Cardinal640): def __init__(self): """ InGaAs SWIR camera with good sensitivity between 400 and 1600 nm. https://www.raptorphotonics.com/products/owl-640-ii/ Notes ----- .. list-table:: :widths: 100 100 :header-rows: 0 * - ADC bits - 14 * - Rows - 512 * - Columns - 640 * - Readout noise - 180 * - Well depth - 650,000 * - Dark current @273K - 2000 e/s """ super().__init__() self._adc_bits = 14 epa = 6.241509074e18 self.dark_current_temps = np.array([273.15 + 15.0, 273.15 - 15.0]) self.dark_current_values = np.array([28000 / epa, 2000 / epa]) self.num_rows = 512 self.num_columns = 640 self.processors = self._create_post_processors() def quantum_efficiency(self) -> Filter: wavel = np.array([400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500, 1600]) transmission = np.array([0.4, 0.4, 0.42, 0.45, 0.55, 0.75, 0.85, 0.9, 0.92, 0.92, 0.9, 0.87, 0.8]) return Filter(wavelength_nm=wavel, transmission=transmission) @property def gain(self): if self._gain == 0: return 'low' elif self._gain == 1: return 'high' else: raise ValueError('Unrecognized gain mode') @gain.setter def gain(self, value): if type(value) is str: if value.lower() == 'low': self._gain = 0 elif value.lower() == 'high': self._gain = 1 else: raise ValueError('Unrecognized gain mode') else: self._gain = int(value) if self._gain == 0: self._ccd_readout_noise = 180 self._max_well_depth = 650_000 elif self._gain == 1: self._ccd_readout_noise = 18 self._max_well_depth = 10_000