inject_sources_into_l2
- romanisim.image.inject_sources_into_l2(model, cat, x=None, y=None, psf=None, rng=None, gain=None, psftype='epsf')
Inject sources into an L2 image.
This routine allows sources to be injected into an existing L2 image. Source injection into an L2 image relies on knowing the objects’ x and y locations, the PSF, and the image gain; if these are not provided, reasonable defaults are generated from the input model.
The simulation proceeds by (optionally) using the model WCS to generate the x & y locations, grabbing the gain from romanisim.parameters.reference_data, and grabbing the read_pattern from the model_metadata. The number of additional counts in each pixel are simulated. We create a “virtual” ramp that uses the input L2 image and evenly apportions the measured DN/s along the ramp using the MA table. We apportion the new counts to a new ramp, and add the new ramp to the virtual ramp. We then refit the new ramp, and replace the old fit with the new fit.
This simulation is not as complete as the full L2 simulation. We do not include non-linearity or saturation, for example. Identified CR hits are lost. But it should do a decent job at providing realistic uncertainties otherwise, including how read & Poisson noise influence the choice of weights used in ramp fitting and how those influence the final uncertainties.
- Parameters:
- model: roman_datamodels.datamodels.ImageModel
model into which to inject sources
- cat: astropy.table.Table
catalog of sources to inject into image
- x: list[float] or None
x coordinates of catalog locations in image
- y: list[float] or None
y coordinates of catalog locations in image
- psf: galsim.gsobject.GSObject
PSF to use
- rng: galsim.BaseDeviate
galsim random number generator to use
- gain: float [electron / DN]
gain to use when converting simulated electrons to DN
- psftypeOne of [‘epsf’, ‘galsim’, ‘stpsf]
How to determine the PSF.
- Returns:
- model_out: roman_datamodels.datamodel.ImageModel
model with additional sources