as_built#

esis.flights.f1.optics.as_built(grid=None, axis_channel='channel', num_distribution=11)[source]#

Load the as-built optical model.

Based on design(), but includes efficiency and figure measurements of the primary mirror and gratings, as well as gain measurements of the sensor.

Parameters:
  • grid (None | ObjectVectorArray) – sampling of wavelength, field, and pupil positions that will be used to characterize the optical system.

  • axis_channel (str) – The name of the logical axis corresponding to changing camera channel.

  • num_distribution (int) – number of Monte Carlo samples to draw when computing uncertainties

Return type:

Instrument

Examples

Load the as-built optical model and print its parameters.

import esis

esis.flights.f1.optics.as_built()
Instrument(
    name='ESIS 1 final design (all channels)',
    axis_channel='channel',
    front_aperture=<esis.optics._front_apertures._front_apertures.FrontAperture object at 0x7fe6e5ef6010>,
    central_obscuration=CentralObscuration(
        num_folds=8,
        halfwidth=35.31326554 mm,
        remove_last_vertex=True,
        translation=Cartesian3dVectorArray(
            x=0. mm,
            y=0. mm,
            z=-1404.27 mm,
        ),
    ),
    primary_mirror=PrimaryMirror(
        sag=ParabolicSag(
            transformation=None,
            parameters_slope_error=SlopeErrorParameters(
                step_size=4. mm,
                kernel_size=2. mm,
            ),
            parameters_roughness=RoughnessParameters(
                period_min=0.06 mm,
                period_max=6. mm,
            ),
            parameters_microroughness=RoughnessParameters(
                period_min=1.6 um,
                period_max=70. um,
            ),
            focal_length=-1000. mm,
        ),
        num_folds=8,
        width_clear=143.94043117 mm,
        width_border=5.35850129 mm,
        material=MultilayerMirror(
            layers=[
                Layer(
                    chemical='SiO2',
                    thickness=1. nm,
                    interface=ErfInterfaceProfile(
                        width=3.44068978 nm,
                    ),
                    kwargs_plot={'color': 'tab:blue', 'alpha': 0.3},
                    x_label=None,
                ),
                Layer(
                    chemical='SiC',
                    thickness=21.27827884 nm,
                    interface=ErfInterfaceProfile(
                        width=3.44068978 nm,
                    ),
                    kwargs_plot={'color': 'tab:blue', 'alpha': 0.5},
                    x_label=None,
                ),
                Layer(
                    chemical='Cr',
                    thickness=5. nm,
                    interface=ErfInterfaceProfile(
                        width=1.77840007 nm,
                    ),
                    kwargs_plot={'color': 'tab:orange', 'alpha': 0.5},
                    x_label=None,
                ),
            ],
            substrate=Layer(
                chemical='SiO2',
                thickness=30. mm,
                interface=ErfInterfaceProfile(
                    width=5.53 Angstrom,
                ),
                kwargs_plot={'color': 'gray', 'alpha': 0.5},
                x_label=None,
            ),
        ),
        translation=Cartesian3dVectorArray(
            x=UniformUncertainScalarArray(
                nominal=0. mm,
                width=1. mm,
                num_distribution=11,
                seed=71967619082360938115356412507343569871,
            ),
            y=UniformUncertainScalarArray(
                nominal=0. mm,
                width=1. mm,
                num_distribution=11,
                seed=15699433473226962310783336660888875425,
            ),
            z=0. mm,
        ),
        pitch=0. deg,
        yaw=0. deg,
        roll=0. deg,
    ),
    field_stop=FieldStop(
        num_folds=8,
        radius_clear=1.82 mm,
        radius_mechanical=2.81 mm,
        translation=Cartesian3dVectorArray(
            x=UniformUncertainScalarArray(
                nominal=0. mm,
                width=1. mm,
                num_distribution=11,
                seed=71967619082360938115356412507343569871,
            ),
            y=UniformUncertainScalarArray(
                nominal=0. mm,
                width=1. mm,
                num_distribution=11,
                seed=15699433473226962310783336660888875425,
            ),
            z=-1000. mm,
        ),
    ),
    grating=Grating(
        serial_number=ScalarArray(
            ndarray=['89025', '89024', '89026', '89027'],
            axes=('channel',),
        ),
        manufacturing_number=ScalarArray(
            ndarray=['UBO-16-024', 'UBO-16-017', 'UBO-16-019', 'UBO-16-014'],
            axes=('channel',),
        ),
        angle_input=1.301 deg,
        angle_output=8.057 deg,
        sag=SphericalSag(
            transformation=None,
            parameters_slope_error=SlopeErrorParameters(
                step_size=2. mm,
                kernel_size=1. mm,
            ),
            parameters_roughness=RoughnessParameters(
                period_min=0.024 mm,
                period_max=2.4 mm,
            ),
            parameters_microroughness=RoughnessParameters(
                period_min=0.02 um,
                period_max=2. um,
            ),
            radius=ScalarArray(
                ndarray=[596.88      , 597.05333333, 597.04333333, 597.19166667] mm,
                axes=('channel',),
            ),
        ),
        material=MultilayerMirror(
            layers=[
                Layer(
                    chemical='SiO2',
                    thickness=1. nm,
                    interface=ErfInterfaceProfile(
                        width=1. nm,
                    ),
                    kwargs_plot={'color': 'gray'},
                    x_label=1.1,
                ),
                Layer(
                    chemical=Chemical(
                        formula='SiC',
                        is_amorphous=True,
                        table='kortright',
                    ),
                    thickness=9.60594508 nm,
                    interface=ErfInterfaceProfile(
                        width=1.90483881 nm,
                    ),
                    kwargs_plot={'color': 'lightgray'},
                    x_label=None,
                ),
                Layer(
                    chemical='Al',
                    thickness=4.80725357 nm,
                    interface=ErfInterfaceProfile(
                        width=1.90483881 nm,
                    ),
                    kwargs_plot={'color': 'lightblue'},
                    x_label=1.1,
                ),
                Layer(
                    chemical=Chemical(
                        formula='Mg',
                        is_amorphous=False,
                        table='fernandez_perea',
                    ),
                    thickness=26.62708342 nm,
                    interface=ErfInterfaceProfile(
                        width=1.90483881 nm,
                    ),
                    kwargs_plot={'color': 'pink'},
                    x_label=None,
                ),
                PeriodicLayerSequence(
                    layers=[
                        Layer(
                            chemical='Al',
                            thickness=1.20181339 nm,
                            interface=ErfInterfaceProfile(
                                width=1.90483881 nm,
                            ),
                            kwargs_plot={'color': 'lightblue'},
                            x_label=1.1,
                        ),
                        Layer(
                            chemical=Chemical(
                                formula='SiC',
                                is_amorphous=True,
                                table='kortright',
                            ),
                            thickness=9.60594508 nm,
                            interface=ErfInterfaceProfile(
                                width=1.90483881 nm,
                            ),
                            kwargs_plot={'color': 'lightgray'},
                            x_label=None,
                        ),
                        Layer(
                            chemical=Chemical(
                                formula='Mg',
                                is_amorphous=False,
                                table='fernandez_perea',
                            ),
                            thickness=26.62708342 nm,
                            interface=ErfInterfaceProfile(
                                width=1.90483881 nm,
                            ),
                            kwargs_plot={'color': 'pink'},
                            x_label=None,
                        ),
                    ],
                    num_periods=3,
                ),
                Layer(
                    chemical='Al',
                    thickness=12.01813392 nm,
                    interface=ErfInterfaceProfile(
                        width=1.90483881 nm,
                    ),
                    kwargs_plot={'color': 'lightblue'},
                    x_label=1.1,
                ),
            ],
            substrate=Layer(
                chemical='SiO2',
                thickness=10. mm,
                interface=ErfInterfaceProfile(
                    width=0.5 nm,
                ),
                kwargs_plot={'color': 'gray'},
                x_label=None,
            ),
        ),
        rulings=MeasuredRulings(
            spacing=Polynomial1dRulingSpacing(
                coefficients={0: UncertainScalarArray(
    nominal=0.00038677 mm,
    distribution=ScalarArray(
        ndarray=[0.00038687, 0.00038682, 0.00038668, 0.00038676, 0.00038692, 0.00038691, 0.00038677, 0.00038678,
                 0.00038678, 0.00038681, 0.00038691] mm,
        axes=('_distribution',),
    ),
), 1: UniformUncertainScalarArray(
    nominal=-3.3849e-05 um / mm,
    width=5.12e-07 um / mm,
    num_distribution=11,
    seed=329869872466312402796082487199101091404,
), 2: UniformUncertainScalarArray(
    nominal=-1.3625e-07 um / mm2,
    width=8.558e-09 um / mm2,
    num_distribution=11,
    seed=112968521009357236984484910939464160130,
)},
                normal=Cartesian3dVectorArray(x=1, y=0, z=0),
                transformation=None,
            ),
            diffraction_order=-1,
            efficiency_measured=FunctionArray(
                inputs=TemporalSpectralDirectionalVectorArray(
                    time=<Time object: scale='utc' format='iso' value=2018-01-21 00:00:00.000>,
                    wavelength=ScalarArray(
                        ndarray=[449.9605, 455.0952, 460.0931, 465.0887, 470.089 , 475.0917, 480.1014, 485.0828,
                                 490.0831, 495.0905, 500.0861, 505.0863, 510.089 , 515.1011, 520.0967, 525.0922,
                                 530.0902, 535.0858, 540.0861, 545.0816, 550.0914, 555.0869, 560.0919, 565.0899,
                                 570.0878, 575.0905, 580.0884, 585.0911, 590.0866, 595.0964, 600.0919, 605.0899,
                                 610.0925, 615.0952, 620.0931, 625.0934, 630.0843, 635.0822, 640.0896, 645.0875,
                                 650.0949, 655.0905, 660.0837, 665.0887, 670.0961, 675.0846, 680.0802, 685.0899,
                                 690.0902, 695.0881, 700.0908, 705.0863, 710.0984, 715.0916, 720.0754, 725.0852,
                                 730.0831, 735.0787, 740.0861, 745.0863, 750.0937, 755.0916, 760.0872, 765.0875,
                                 770.0902, 775.0881, 780.0837, 785.0911, 790.0866, 795.0893, 800.0802, 805.097 ,
                                 810.0902, 815.0881, 820.0837, 825.0911, 830.089 , 835.0893, 840.0943, 845.0875,
                                 850.0902, 855.0881, 860.0837, 865.0863, 870.0914, 875.0846, 880.092 , 885.0875,
                                 890.0878, 895.0928, 900.0861, 905.0887, 910.0914, 915.094 , 920.0967, 925.0852,
                                 930.0925, 935.0928, 940.0861, 945.0887, 950.0749] Angstrom,
                        axes=('wavelength',),
                    ),
                    direction=0. deg,
                ),
                outputs=ScalarArray(
                    ndarray=[0.12321582, 0.59322994, 0.31578597, 0.37807883, 0.17012928, 0.10194699, 0.18328038,
                             0.13686031, 0.17249875, 0.23871327, 0.29489931, 0.42754583, 0.47872766, 0.45725882,
                             0.46379642, 0.47099969, 0.49313259, 0.51549805, 0.53398935, 0.5273769 , 0.51934506,
                             0.51059013, 0.49531883, 0.48487497, 0.47691071, 0.4673829 , 0.45800468, 0.44929878,
                             0.44494296, 0.44225212, 0.43921125, 0.43504338, 0.4323591 , 0.43168854, 0.43338953,
                             0.43193699, 0.4241297 , 0.40739984, 0.38069944, 0.34527646, 0.30570771, 0.26643472,
                             0.23812677, 0.22188315, 0.22124548, 0.23516671, 0.25738814, 0.28634021, 0.32160106,
                             0.34335857, 0.35209299, 0.35816431, 0.34814608, 0.33287109, 0.31726986, 0.29441473,
                             0.29216422, 0.29250187, 0.2702469 , 0.26815913, 0.2805732 , 0.28988671, 0.27849082,
                             0.29253054, 0.27877292, 0.33070687, 0.29231947, 0.32340672, 0.26830668, 0.36282648,
                             0.34440822, 0.26244641, 0.2573431 , 0.29912549, 0.29644082, 0.19558709, 0.34615717,
                             0.27346896, 0.32036365, 0.29543568, 0.24915719, 0.23839011, 0.34789841, 0.31262912,
                             0.30885046, 0.27228885, 0.34258837, 0.34673988, 0.37144668, 0.19229355, 0.39421528,
                             0.24486465, 0.18794816, 0.16429062, 0.35197533, 0.35929711, 0.58378151, 0.06519925,
                             0.46418769, 0.26846698, 0.04033995] ,
                    axes=('wavelength',),
                ),
            ),
        ),
        num_folds=8,
        halfwidth_inner=8.44 mm,
        halfwidth_outer=8.49 mm,
        width_border=2. mm,
        width_border_inner=4.58 mm,
        clearance=1.25 mm,
        distance_radial=20.74999998 mm,
        azimuth=ScalarArray(
            ndarray=[ 22.5,  67.5, 112.5, 157.5] deg,
            axes=('channel',),
        ),
        translation=Cartesian3dVectorArray(
            x=UniformUncertainScalarArray(
                nominal=0. mm,
                width=1. mm,
                num_distribution=11,
                seed=268827035523857317240856824879161492947,
            ),
            y=UniformUncertainScalarArray(
                nominal=0. mm,
                width=1. mm,
                num_distribution=11,
                seed=271848020833971290943398258332359372941,
            ),
            z=UniformUncertainScalarArray(
                nominal=-1374.7 mm,
                width=1.52752523e-05 m,
                num_distribution=11,
                seed=334495149580179008661797779475673063279,
            ),
        ),
        pitch=0. deg,
        yaw=-4.46956724 deg,
        roll=UniformUncertainScalarArray(
            nominal=0. deg,
            width=0.013 rad,
            num_distribution=11,
            seed=264238292223191947886392788461005086671,
        ),
    ),
    filter=Filter(
        material=ThinFilmFilter(
            layer=Layer(
                chemical='Al',
                thickness=100. nm,
                interface=None,
                kwargs_plot={'color': 'lightgray'},
                x_label=None,
            ),
            layer_oxide=Layer(
                chemical=Chemical(
                    formula='Al2O3',
                    is_amorphous=True,
                    table='palik',
                ),
                thickness=4. nm,
                interface=None,
                kwargs_plot={'color': 'gray'},
                x_label=1.1,
            ),
            mesh=Mesh(
                chemical='Ni',
                efficiency=0.82,
                pitch=70. 1 / inch,
            ),
        ),
        radius_clear=15. mm,
        width_border=0. mm,
        distance_radial=95.9 mm,
        azimuth=ScalarArray(
            ndarray=[ 22.5,  67.5, 112.5, 157.5] deg,
            axes=('channel',),
        ),
        translation=Cartesian3dVectorArray(
            x=0. mm,
            y=0. mm,
            z=-73.03800115 mm,
        ),
        pitch=0. deg,
        yaw=-3.45 deg,
        roll=45. deg,
    ),
    camera=Camera(
        sensor=Sensor(
            manufacturer='Teledyne/e2v',
            family='CCD230-42',
            serial_number=ScalarArray(
                ndarray=['SN6', 'SN7', 'SN9', 'SN10'],
                axes=('channel',),
            ),
            grade=None,
            width_pixel=15. um,
            num_pixel_x=2048,
            num_pixel_y=2064,
            num_blank=50,
            num_overscan=2,
            cte=99.9995 %,
            readout_noise=6. electron,
            readout_mode='transfer',
            temperature=-55. deg_C,
            width_package_x=42. mm,
            width_package_y=61. mm,
            distance_radial=108. mm,
            azimuth=ScalarArray(
                ndarray=[ 22.5,  67.5, 112.5, 157.5] deg,
                axes=('channel',),
            ),
            translation=Cartesian3dVectorArray(
                x=0. mm,
                y=0. mm,
                z=126.96199885 mm,
            ),
            pitch=0. deg,
            yaw=-12.252 deg,
            roll=0. deg,
            position_image=0. mm,
        ),
        gain=ScalarArray(
            ndarray=[[[2.55, 2.63],
                      [2.57, 2.57]],

                     [[2.57, 2.53],
                      [2.5 , 2.52]],

                     [[2.57, 2.59],
                      [2.53, 2.52]],

                     [[2.6 , 2.58],
                      [2.6 , 2.54]]] electron / DN,
            axes=('channel', 'tap_y', 'tap_x'),
        ),
        bits_adc=16,
        timedelta_exposure=10. s,
        timedelta_exposure_min=2. s,
        timedelta_exposure_max=600. s,
        timedelta_exposure_step=100. ms,
        timedelta_transfer=50. ms,
        timedelta_readout=1.1 s,
        axis_tap_x='tap_x',
        axis_tap_y='tap_y',
        timedelta_sync=1. ms,
        channel=ScalarArray(
            ndarray=[1, 2, 3, 4],
            axes=('channel',),
        ),
        channel_trigger=1,
    ),
    wavelength=629.77 Angstrom,
    field=Cartesian2dVectorLinearSpace(
        start=-1,
        stop=1,
        axis=Cartesian2dVectorArray(x='field_x', y='field_y'),
        num=11,
        endpoint=True,
        centers=True,
    ),
    pupil=Cartesian2dVectorLinearSpace(
        start=-1,
        stop=1,
        axis=Cartesian2dVectorArray(x='pupil_x', y='pupil_y'),
        num=11,
        endpoint=True,
        centers=True,
    ),
    pitch=0. deg,
    yaw=0. deg,
    roll=0. deg,
    kwargs_plot=None,
)