Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
fits.writeto(readnoise_outfile, readnoise, overwrite=True)
logging.info('\tReadnoise image saved to {}'.format(readnoise_outfile))
# Calculate the full image readnoise stats
clipped = sigma_clip(readnoise, sigma=3.0, maxiters=5)
full_image_mean, full_image_stddev = np.nanmean(clipped), np.nanstd(clipped)
full_image_n, full_image_bin_centers = self.make_histogram(readnoise)
logging.info('\tReadnoise image stats: {:.5f} +/- {:.5f}'.format(full_image_mean, full_image_stddev))
# Calculate readnoise stats in each amp separately
amp_stats = self.get_amp_stats(readnoise, amp_bounds)
logging.info('\tReadnoise image stats by amp: {}'.format(amp_stats))
# Get the current JWST Readnoise Reference File data
parameters = self.make_crds_parameter_dict()
reffile_mapping = crds.getreferences(parameters, reftypes=['readnoise'])
readnoise_file = reffile_mapping['readnoise']
if 'NOT FOUND' in readnoise_file:
logging.warning('\tNo pipeline readnoise reffile match for this file - assuming all zeros.')
pipeline_readnoise = np.zeros(readnoise.shape)
else:
logging.info('\tPipeline readnoise reffile is {}'.format(readnoise_file))
pipeline_readnoise = fits.getdata(readnoise_file)
# Find the difference between the current readnoise image and the pipeline readnoise reffile, and record image stats.
# Sometimes, the pipeline readnoise reffile needs to be cutout to match the subarray.
pipeline_readnoise = pipeline_readnoise[self.substrt2-1:self.substrt2+self.subsize2-1, self.substrt1-1:self.substrt1+self.subsize1-1]
readnoise_diff = readnoise - pipeline_readnoise
clipped = sigma_clip(readnoise_diff, sigma=3.0, maxiters=5)
diff_image_mean, diff_image_stddev = np.nanmean(clipped), np.nanstd(clipped)
diff_image_n, diff_image_bin_centers = self.make_histogram(readnoise_diff)
logging.info('\tReadnoise difference image stats: {:.5f} +/- {:.5f}'.format(diff_image_mean, diff_image_stddev))
of False is primarily intended to support testing on Travis.
Returns
-------
reffile_mapping : dict
Mapping of downloaded CRDS file locations
"""
# IMPORTANT: Import of crds package must be done AFTER the environment
# variables are set in the functions above
import crds
from crds import CrdsLookupError
if download:
try:
reffile_mapping = crds.getreferences(parameter_dict, reftypes=reffile_types)
except CrdsLookupError as e:
raise ValueError("ERROR: CRDSLookupError when trying to find reference files for parameters: {}".format(parameter_dict))
else:
# If the files will not be downloaded, still return the same local
# paths that are returned when the files are downloaded. Note that
# this follows the directory structure currently assumed by CRDS.
crds_path = os.environ.get('CRDS_PATH')
try:
reffile_mapping = crds.getrecommendations(parameter_dict, reftypes=reffile_types)
except CrdsLookupError as e:
raise ValueError("ERROR: CRDSLookupError when trying to find reference files for parameters: {}".format(parameter_dict))
for key, value in reffile_mapping.items():
# Check for NOT FOUND must be done here because the following
# line will raise an exception if NOT FOUND is present
if "NOT FOUND" in value: