Coverage for python/lsst/meas/algorithms/makeCoaddApCorrMap.py: 13%

21 statements  

« prev     ^ index     » next       coverage.py v6.5.0, created at 2022-10-18 01:46 -0700

1# 

2# LSST Data Management System 

3# 

4# Copyright 2008-2017 AURA/LSST. 

5# 

6# This product includes software developed by the 

7# LSST Project (http://www.lsst.org/). 

8# 

9# This program is free software: you can redistribute it and/or modify 

10# it under the terms of the GNU General Public License as published by 

11# the Free Software Foundation, either version 3 of the License, or 

12# (at your option) any later version. 

13# 

14# This program is distributed in the hope that it will be useful, 

15# but WITHOUT ANY WARRANTY; without even the implied warranty of 

16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 

17# GNU General Public License for more details. 

18# 

19# You should have received a copy of the LSST License Statement and 

20# the GNU General Public License along with this program. If not, 

21# see <https://www.lsstcorp.org/LegalNotices/>. 

22# 

23__all__ = ["makeCoaddApCorrMap", ] 

24 

25from lsst.afw.image import ApCorrMap 

26from .coaddBoundedField import CoaddBoundedField, CoaddBoundedFieldElement 

27 

28 

29def makeCoaddApCorrMap(catalog, coaddBox, coaddWcs, weightFieldName="weight"): 

30 """Construct an ApCorrMap for a coadd 

31 

32 Parameters 

33 ---------- 

34 catalog: `lsst.afw.table.ExposureCatalog` 

35 A table of coadd inputs 

36 coaddBox : `lsst.geom.Box2I` 

37 Bounding box for coadd 

38 coaddWcs : `lsst.afw.geom.SkyWcs` 

39 Wcs for coadd 

40 weightFieldName : `str` 

41 Name of the weight field in the catalog 

42 

43 Returns 

44 ------- 

45 apCorrMap : `lsst.afw.image.ApCorrMap` 

46 Aperture corrections 

47 """ 

48 

49 # Assemble the BoundedFields for each type 

50 everything = {} # name --> list of CoaddBoundedFieldElement 

51 weightKey = catalog.schema[weightFieldName].asKey() 

52 for row in catalog: 

53 apCorrMap = row.getApCorrMap() 

54 if not apCorrMap: 

55 continue 

56 weight = row.get(weightKey) 

57 wcs = row.getWcs() 

58 validPolygon = row.getValidPolygon() 

59 for name, bf in apCorrMap.items(): 

60 if name not in everything: 

61 everything[name] = [] 

62 everything[name].append(CoaddBoundedFieldElement(bf, wcs, validPolygon, weight)) 

63 

64 # Construct a CoaddBoundedField for each type 

65 apCorrMap = ApCorrMap() 

66 for name, elements in everything.items(): 

67 apCorrMap.set(name, CoaddBoundedField(coaddBox, coaddWcs, elements)) 

68 

69 return apCorrMap