From 237c6dd97a66983748a14c965343e7d035ff267a Mon Sep 17 00:00:00 2001 From: James Chiang Date: Mon, 18 Feb 2019 08:46:58 -0800 Subject: [PATCH 1/2] make one profile plot for each CCD that shows tearing --- .../BOT_EO_analysis/v0/validator_BOT_EO_analysis.py | 4 ++++ .../v0/validator_tearing_detection.py | 5 +++++ python/tearing_detection.py | 10 +++++----- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/harnessed_jobs/BOT_EO_analysis/v0/validator_BOT_EO_analysis.py b/harnessed_jobs/BOT_EO_analysis/v0/validator_BOT_EO_analysis.py index a0ab6d1..ba65e7d 100755 --- a/harnessed_jobs/BOT_EO_analysis/v0/validator_BOT_EO_analysis.py +++ b/harnessed_jobs/BOT_EO_analysis/v0/validator_BOT_EO_analysis.py @@ -14,6 +14,7 @@ import eotestUtils import lsst.eotest.sensor as sensorTest from camera_components import camera_info +from tearing_detection import persist_tearing_png_files from bot_eo_analyses import make_file_prefix def report_missing_data(validator, missing_data, components='detectors', @@ -517,6 +518,9 @@ def validate_tearing(results, det_names): list(values) + [slot, raft])) results.append(lcatr.schema.valid(schema, **stats)) + png_files = sorted(glob.glob('*_tearing.png')) + results.extend(persist_tearing_png_files(png_files)) + report_missing_data("validate_tearing", missing_det_names) return results diff --git a/harnessed_jobs/tearing_detection/v0/validator_tearing_detection.py b/harnessed_jobs/tearing_detection/v0/validator_tearing_detection.py index f1d3478..a3aa29a 100755 --- a/harnessed_jobs/tearing_detection/v0/validator_tearing_detection.py +++ b/harnessed_jobs/tearing_detection/v0/validator_tearing_detection.py @@ -2,10 +2,12 @@ """ Validator script for raft-level flat pairs analysis. """ +import glob import pickle import lcatr.schema import siteUtils import camera_components +from tearing_detection import persist_tearing_png_files raft_id = siteUtils.getUnitId() raft = camera_components.Raft.create_from_etrav(raft_id) @@ -22,6 +24,9 @@ list(values) + [slot])) results.append(lcatr.schema.valid(schema, **stats)) +png_files = sorted(glob.glob('*_tearing.png')) +results.extend(persist_tearing_png_files(png_files)) + results.extend(siteUtils.jobInfo()) lcatr.schema.write_file(results) lcatr.schema.validate_file() diff --git a/python/tearing_detection.py b/python/tearing_detection.py index 5aad04a..475cd49 100644 --- a/python/tearing_detection.py +++ b/python/tearing_detection.py @@ -8,7 +8,7 @@ __all__ = ['tearing_detection', 'persist_tearing_png_files'] -def tearing_detection(fitsfiles, make_png_files=False, bias_frame=None): +def tearing_detection(fitsfiles, num_png_files=1, bias_frame=None): """ Run the tearing detection code over a collection of single sensor flats. @@ -19,10 +19,10 @@ def tearing_detection(fitsfiles, make_png_files=False, bias_frame=None): List of single sensor flats. This should generally be for a given sensor since any png files of the tearing profiles would be later persisted by slot number. - make_png_files: bool [False] - Flag to make png files of the tearing profiles. + num_png_files: int [1] + Number of the tearing profiles to output as a png file. bias_frame: str [None] - Name of bias frame file. If None, then overscan region will be used. + Name of bias frame file. If None, then the overscan region will be used. Returns ------- @@ -36,7 +36,7 @@ def tearing_detection(fitsfiles, make_png_files=False, bias_frame=None): ts = sensorTest.TearingStats(filename, bias_frame=bias_frame) if ts.has_tearing(): files_with_tearing.append(filename) - if make_png_files: + if len(png_files) < num_png_files: ts.plot_profiles() outfile = (os.path.basename(filename).split('.')[0] + '_tearing.png') From 93970e7109f68bc133f313e2ac74794c8585367f Mon Sep 17 00:00:00 2001 From: Jim Chiang Date: Tue, 19 Feb 2019 09:03:39 -0800 Subject: [PATCH 2/2] v12 backwards compatibility for afwImage.ImageF --- python/correlated_noise.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/python/correlated_noise.py b/python/correlated_noise.py index e53d9eb..a57a0fe 100644 --- a/python/correlated_noise.py +++ b/python/correlated_noise.py @@ -32,7 +32,7 @@ def get_overscans(infile, oscan_indices=None): y0, y1, x0, x1 = oscan_indices overscans = dict() for amp in imutils.allAmps(): - oscan_data = afw_image.ImageF(infile, amp).array + oscan_data = afw_image.ImageF(infile, imutils.dm_hdu(amp)).getArray() overscans[amp] = copy.deepcopy(oscan_data[y0:y1, x0:x1]) return overscans @@ -46,7 +46,8 @@ def get_mean_overscans(infiles, oscan_indices=None): mean_overscans = defaultdict(list) for infile in infiles: for amp in imutils.allAmps(): - oscan_data = afw_image.ImageF(infile, amp).array + oscan_data \ + = afw_image.ImageF(infile, imutils.dm_hdu(amp)).getArray() mean_overscans[amp].append(copy.deepcopy(oscan_data[y0:y1, x0:x1])) for amp, images in mean_overscans.items(): mean_overscans[amp] = sum(images)/float(len(images))