def quick_test_estimation_aberrations():

    # Import packages
    #################

    import os
    import numpy as np
    import matplotlib.pyplot as plt
    from matplotlib.colors import LogNorm
    from datetime import date
    from datetime import datetime
    from astropy.io import fits

    from Simulator import Simulation
    from Estimation import Estimation

    # Set up directories
    ####################

    today = date.today()
    date = test_date = today.strftime("%Y%m%d")
    print(test_date)

    tests_directory = './Tests/' + test_date + '/'

    if not os.path.exists(tests_directory):
        os.makedirs(tests_directory)

    directory = tests_directory + test_date + '_quick_test_estimation_aberrations/'
    if not os.path.exists(directory):
        os.makedirs(directory)

    # Parameters simulation images
    ##############################

    #transmission = '/Users/mygouf/Python/webbpsf/webbpsf-data4/jwst_pupil_RevW_npix1024.fits.gz'
    #opd = '/Users/mygouf/Python/webbpsf/webbpsf-data4/NIRCam/OPD/OPD_RevW_ote_for_NIRCam_requirements.fits.gz'

    wfe_budget = [
        0, 2000, 2000, 1500, 1000, 1000, 500, 360, 360, 250, 100, 100, 80, 70,
        70, 60, 50, 50, 40, 30, 30, 20, 10, 10, 9, 8, 8, 7, 6, 6, 5, 4, 4, 3,
        2, 2, 1
    ]
    #wfe_budget = [0, 2000, 2000] #, 1500, 1000, 1000, 500, 360, 360, 250, 100, 100, 80, 70, 70, 60, 50, 50, 40, 30, 30, 20, 10, 10, 9, 8, 8, 7, 6, 6, 5, 4, 4, 3, 2, 2, 1]

    # poppy paramaters

    #pixelscale = 0.063
    fov_arcsec = 10
    #oversample = 4
    #wavelength = 4.441e-6

    # webbPSF parameters

    #filt = 'F444W'

    # Simulation PSF
    ################

    dict_simulation_parameters = {
        'wfe_budget': wfe_budget,
        'fov_arcsec': fov_arcsec
    }
    simulation = Simulation(dict_simulation_parameters)
    dict_, coefficient_set_init = simulation.generate_psfs()
    image = dict_['image']
    noise = dict_['noise']
    wavefront_map = dict_['wavefront_map']
    dict_['wfe_budget'] = wfe_budget
    dict_['fov_arcsec'] = fov_arcsec

    image_simu = image.copy()
    noise_simu = noise.copy()
    wavefront_map_simu = wavefront_map.copy()
    coefficient_set_init_simu = coefficient_set_init.copy()

    # Estimation Zernike coefficients - without noise same budget
    #################################

    method = 'L-BFGS-B'

    test = '_without_noise_same_budget'
    wfe_budget_estimation = wfe_budget

    dict_['wfe_budget'] = wfe_budget_estimation
    dict_['noise'] = noise_simu

    now = datetime.now()

    #estimation = Estimation(dict_,guess=coefficient_set_init_simu[0])
    estimation = Estimation(dict_)
    final_image, estimated_coefficients = estimation.estimate_zernikes(
        method=method)
    print('Simulated coefficients', coefficient_set_init)
    dict_estimated = simulation.create_image(estimated_coefficients[0])
    wavefront_map_estimated = dict_estimated['wavefront_map']

    now2 = datetime.now()
    print("Time to estimate", now2 - now)

    # Save fits files
    write_fits(directory + date + test + '_image_simulation.fits', image_simu)
    write_fits(directory + date + test + '_noise_simulation.fits', noise_simu)
    write_fits(
        directory + date + test + '_Zernike_coefficients_simulation.fits',
        coefficient_set_init_simu)
    write_fits(directory + date + test + '_wavefront_map_simulation.fits',
               wavefront_map_simu)
    write_fits(directory + date + test + '_image_estimation.fits', final_image)
    write_fits(
        directory + date + test + '_Zernike_coefficients_estimation.fits',
        estimated_coefficients[0])
    write_fits(directory + date + test + '_wavefront_map_estimation.fits',
               wavefront_map_estimated)

    # Create and saving figures
    figure_images(image_simu, final_image, directory + date + test)
    figure_wavefronts(wavefront_map_simu, wavefront_map_estimated,
                      directory + date + test)
    figure_coefficients(coefficient_set_init_simu, estimated_coefficients,
                        directory + date + test)