Calibration

After the signal is converted to DN by the instrument a calibration is performed to produce the level 1 data.

from ali.instrument.simulator import ImagingSimulator
from ali.instrument.sensor_2channel import ALISensorDualChannel
from ali.util.geometry import optical_axis_from_geometry
import sasktran as sk
import numpy as np
from ali.diagnostics.diagnostics import plot_radiance_profile
from ali.test.util.atmospheres import create_atmosphere


def generate_calibration_radiance():
    """
    Basic test of a limb imager.
    """
    mjd = (np.datetime64('2020-10-22 15:00:00') - np.datetime64('1858-11-17')) / np.timedelta64(1, 'D')
    optical_geometry = []
    sensors = []
    # wavelengths = [np.array([600.0, 650.0]), np.array([750.0])]
    wavelengths = [750.0, 1020.0, 1500.0]
    for lat, wavel, exp_time in zip([45.0, 45.0, 45.0], wavelengths, [0.1, 0.5, 1.0]):

        geometry = sk.VerticalImage()
        geometry.from_sza_ssa(sza=60, ssa=60, lat=lat, lon=0, tanalts_km=[22.5], mjd=mjd, locallook=0, satalt_km=450)
        optical_geometry.append(optical_axis_from_geometry(geometry))

        ali = ALISensorDualChannel(wavelength_nm=np.array([wavel]), num_columns=1, num_rows=640)
        ali.add_dark_current = True
        ali.add_noise = True
        ali.auto_exposure = True
        # ali.simulate_pixel_averaging = 50
        ali.exposure_time = exp_time
        sensors.append(ali)
        # sensors[0].turn_rotator_on()

    atmosphere = create_atmosphere()
    sim = ImagingSimulator(sensors=sensors, optical_axis=optical_geometry,
                           atmosphere=atmosphere, options={'polarization': True, 'numordersofscatter': 1})
    sim.num_vertical_samples = 640
    sim.num_horizontal_samples = 1
    sim.random_seed = 0
    sim.save_diagnostics = True
    sim.grid_sampling = True
    sim.group_scans = False
    data = sim.calculate_radiance()

    sensor = sim.sensors[0]
    plot_radiance_profile(sim.sensors, sim.num_vertical_samples, sim.num_horizontal_samples)


if __name__ == '__main__':

    generate_calibration_radiance()
../../../_images/calibration.png