Exposure time for coadd image

Hi all,
We are developing a LSST-strong lensing simulation pipeline. It involves simulation of strong lenses and injection of those lenses to dp0 cutout images. For, this one needs to add poisson noise to simulated lenses based on exposure time of coadd/calexp images. Does dp0.2 coadd images have exposure time? If yes, how to get them?

Thank you,

Narayan

Hi Narayan,

For the frame-level exposure times, I’d expect there are multiple ways of getting at these, but as an example this works for me:

from lsst.daf.butler import Butler
butler = Butler(‘dp02’, collections=‘2.2i/runs/DP0.2’)

dataId = {‘exposure’: 192350, ‘detector’: 175}

raw_metadata = butler.get(‘raw.metadata’, dataId=dataId)

print(raw_metadata[‘EXPTIME’])

The DESC DC2 paper also says “Specifically for the DC2 runs, we use the cadence output minion_1016 , which contains a realization of five DDFs as well as the nominal WFD area, and uses single 30 sec exposures” which to my reading suggests that all DP0.2 exposures have 30 second integration times, though I haven’t checked this exhaustively in the released products. Additionally, DP0.2 tutorial notebook 9a shows how to get the list of input visits for a deepCoadd. Thanks very much…

Just to round out my previous response, one can retrieve a detailed map of the number of contributing exposures per location within a given deepCoadd as follows:

from lsst.daf.butler import Butler
butler = Butler('dp02', collections='2.2i/runs/DP0.2')

coadd_nImage = butler.get('deepCoadd_nImage',
                           dataId = {'band': 'r', 'tract': 4431, 'patch': 17})
import matplotlib.pyplot as plt
plt.imshow(coadd_nImage.array)

So then this deepCoadd_nImage product would readily provide a map of exposure time assuming that all DP0.2 simulated exposures are indeed 30 seconds.

2 Likes

Thanks Aaron!

1 Like

Minor follow-up on this: in the RSP Portal, the following query confirms the fixed 30 second exposure time for DP0.2:

SELECT MIN(expTime), MAX(expTime)
FROM dp02_dc2_catalogs.Visit

It’s preferable if you don’t go digging into the raw headers for information like this. We have infrastructure in place to parse headers from different instruments and convert them to standard form. Rather than using raw.metadata you should be using raw.visitInfo. The visitInfo component should be attached to exposures so you should be able to ask for it from the coadd.

The visitInfo component should be attached to exposures so you should be able to ask for it from the coadd.

The visitInfo for coadds are typically empty or None since it’s not possible to summarize it for the entire coadd. There will be a summary table associated when we switch to cell-based coadds, but for now looking at the deepCoadd_nImage as Aaron mentioned is the way to go about it.

1 Like

Thanks a lot Aaron, Tim, and Arun!

Thanks for the pointer about visitInfo. Indeed the following works:

dataId = {"exposure": 192350, "detector": 175}
raw_vInfo = butler.get("raw.visitInfo", dataId=dataId)

print(raw_vInfo.exposureTime)

And the deepCoadd.visitInfo from DP0.2 gives nan for exposureTime, along the lines of what Arun mentioned.

1 Like