Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

# 

# LSST Data Management System 

# 

# Copyright 2008-2016 AURA/LSST. 

# 

# This product includes software developed by the 

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

# 

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

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

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

# (at your option) any later version. 

# 

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

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

# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 

# GNU General Public License for more details. 

# 

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

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

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

# 

import unittest 

import uuid 

 

import lsst.utils.tests 

import lsst.afw.table as afwTable 

import lsst.meas.extensions.photometryKron as photKron 

from lsst.daf.base import PropertyList 

 

 

def getTableDelimeter(schema): 

""" 

Return the character(s) used as delimeters within the given schema. 

 

Should be "_" in the current afw.table implementation. This functionality 

is not otherwise exposed to Python. 

""" 

a, b = str(uuid.uuid1()), str(uuid.uuid1()) 

return schema.join(a, b).replace(a, '').replace(b, '') 

 

 

class KronFlagHandlerTestCase(unittest.TestCase): 

"""Test the FlagHandler used for Kron photometry""" 

 

def testFlagDefinitions(self): 

""" 

Check flag order. 

 

Flags must be added to the flag handler in the same order that they 

are defined in the algorithm. 

""" 

control = photKron.KronFluxControl() 

name = "kronTest" 

schema = afwTable.SourceTable.makeMinimalSchema() 

algMeta = PropertyList() 

 

# Add the output fields -- including flags -- to the schema. 

photKron.KronFluxAlgorithm(control, name, schema, algMeta) 

 

# Fetch a list of all flag fields, in the order that they were added 

# to the schema (and hence the order they were added to the FlagHandler) 

flagFieldNames = schema.extract("%s_flag*" % (name,), ordered=True).keys() 

# Iterate over each flag field, checking that they were enumerated in 

# the algorithm in the same order as in the FlagHandler. 

for i, flagFieldName in enumerate(flagFieldNames): 

if flagFieldName == "%s_flag" % (name,): 

# The generic "failure" flag is written into the schema as $name_flag. 

self.assertEqual(i, photKron.KronFluxAlgorithm.FAILURE.number) 

else: 

# Other flags are referenced by name. We assert that the 

# enumeration name (e.g. BAD_RADIUS) is an upper-case version 

# of the schema field name (e.g. flag_bad_radius), with the 

# "flag_" prefix stripped. 

flagName = flagFieldName.split(getTableDelimeter(schema), 2)[-1] 

self.assertEqual(i, getattr(photKron.KronFluxAlgorithm, flagName.upper()).number) 

 

# Check that the number of enumerated flags matches the number of flag 

# fields in the schema. 

self.assertEqual(len(photKron.KronFluxAlgorithm.getFlagDefinitions()), len(flagFieldNames)) 

 

 

class TestMemory(lsst.utils.tests.MemoryTestCase): 

pass 

 

 

def setup_module(module): 

lsst.utils.tests.init() 

 

 

91 ↛ 92line 91 didn't jump to line 92, because the condition on line 91 was never trueif __name__ == "__main__": 

lsst.utils.tests.init() 

unittest.main()