Example #1
0
from __future__ import print_function, division

# Import the usual libraries
import numpy as np

import pynrc
from pynrc import nrc_utils
from pynrc.nrc_utils import webbpsf, poppy, offset_bar

import astropy.io.fits as fits
import multiprocessing as mp

pynrc.setup_logging('WARN', verbose=False)

from poppy import zernike
from poppy.optics import MultiHexagonAperture
#from poppy.utils import pad_to_size
from pynrc.maths.image_manip import pad_or_cut_to_size, dist_image, binned_statistic


class OPD_extract(object):
    """Decompose OPD to Zernike/Hexike coefficients
    
    For a given JWST OPD image and header, extract the Zernike/Hexike 
    components for the overall pupil and each mirror segment. Makes
    use of functions in webbpsf.
    
    Parameters
    ----------
    opd : ndarray
        OPD image map.
Example #2
0
from webbpsf_ext.opds import OPDFile_to_HDUList
from webbpsf_ext.webbpsf_ext_core import nrc_mask_trans

from astropy.io import fits

from copy import deepcopy

from scipy.interpolate import interp1d
from scipy.ndimage import zoom

# Progress bar
from tqdm.auto import tqdm, trange

# Disable informational messages and only include warnings and higher
pynrc.setup_logging(level='WARN')

base_dir = '/Users/jarron/NIRCam/Data/Sim_CoronWG/'
opd_dir = base_dir + 'NIRCAM_OPDS/'
fig_dir = base_dir + 'output_M335R/'
contrast_maps_dir = base_dir + 'contrast_maps_M335R/'

# Scenario to consider [best, nominal, requirements]
scenarios = ['Best Case', 'Nominal', 'Requirements']
# LOS Jitter [2.5, 3.8, 5.8] per axis
# Samples from random distribution, 1 sample per time step. 
# hdul_jitter = fits.open(opd_dir + 'LOS_JITTER.fits')
jitter_modes = [2.5, 3.8, 5.8, 0]
# Target Acqs
# Three values for best, nominal, and requirements: 6.2568703,  8.759604 , 12.513741
#   - these are per axis