diff --git a/bin.src/imsim.py b/bin.src/imsim.py index 7da87c2a..2cfd1946 100755 --- a/bin.src/imsim.py +++ b/bin.src/imsim.py @@ -30,6 +30,8 @@ help='disable sensor effects') parser.add_argument('--file_id', type=str, default=None, help='ID string to use for checkpoint and centroid filenames.') +parser.add_argument('--create_centroid_file', default=False, action="store_true", + help='Write centroid file(s).') parser.add_argument('--seed', type=int, default=267, help='integer used to seed random number generator') parser.add_argument('--processes', type=int, default=1, @@ -43,7 +45,7 @@ psf = desc.imsim.make_psf(args.psf, obs_md, log_level=args.log_level) sensor_list = args.sensors.split('^') if args.sensors is not None \ - else args.sensors + else args.sensors apply_sensor_model = not args.disable_sensor_model @@ -55,6 +57,7 @@ outdir=args.outdir, sensor_list=sensor_list, apply_sensor_model=apply_sensor_model, + create_centroid_file=args.create_centroid_file, file_id=args.file_id, log_level=args.log_level) diff --git a/data/default_imsim_configs b/data/default_imsim_configs index a293f501..b86a40ca 100644 --- a/data/default_imsim_configs +++ b/data/default_imsim_configs @@ -6,6 +6,7 @@ full_well = 1e5 [persistence] eimage_prefix = lsst_e_ +centroid_prefix = centroid_ [cosmic_rays] ccd_rate = 8 diff --git a/python/desc/imsim/ImageSimulator.py b/python/desc/imsim/ImageSimulator.py index b448ae18..119680da 100644 --- a/python/desc/imsim/ImageSimulator.py +++ b/python/desc/imsim/ImageSimulator.py @@ -29,6 +29,7 @@ # image_simulator to self so that it is available in the callbacks. image_simulator = None + class ImageSimulator: """ Class to manage the parallel simulation of sensors using the @@ -36,7 +37,7 @@ class ImageSimulator: """ def __init__(self, instcat, psf, numRows=None, config=None, seed=267, outdir='fits', sensor_list=None, apply_sensor_model=True, - file_id=None, log_level='WARN'): + create_centroid_file=False, file_id=None, log_level='WARN'): """ Parameters ---------- @@ -69,6 +70,7 @@ def __init__(self, instcat, psf, numRows=None, config=None, seed=267, Logging level ('DEBUG', 'INFO', 'WARN', 'ERROR', 'CRITICAL'). """ self.config = read_config(config) + self.create_centroid_file = create_centroid_file self.psf = psf self.outdir = outdir self.obs_md, self.phot_params, sources \ @@ -125,6 +127,11 @@ def _make_gs_interpreters(self, seed, sensor_list, file_id): self.phot_params, self.obs_md) + if self.create_centroid_file: + self.gs_interpreters[det_name].centroid_base_name = \ + os.path.join(self.outdir, + self.config['persistence']['centroid_prefix']) + @staticmethod def checkpoint_file(file_id, det_name): """ @@ -164,7 +171,7 @@ def eimage_file(self, det_name): prefix = self.config['persistence']['eimage_prefix'] obsHistID = str(self.obs_md.OpsimMetaData['obshistID']) return os.path.join(self.outdir, prefix + '_'.join( - (obsHistID, detector.fileName, self.obs_md.bandpass +'.fits'))) + (obsHistID, detector.fileName, self.obs_md.bandpass + '.fits'))) def run(self, processes=1, wait_time=None): """ @@ -280,6 +287,11 @@ def __call__(self, gs_objects): gs_interpreter.writeImages(nameRoot=os.path.join(outdir, prefix) + obsHistID) + # Write out the centroid files if they were made. + gs_interpreter.write_centroid_files() + gs_interpreter.close_centroid_files() + + # # The image for the sensor-visit has been drawn, so delete the # # checkpoint file. # os.remove(gs_interpreter.checkpoint_file)