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# This file is part of afw. 

2# 

3# Developed for the LSST Data Management System. 

4# This product includes software developed by the LSST Project 

5# (https://www.lsst.org). 

6# See the COPYRIGHT file at the top-level directory of this distribution 

7# for details of code ownership. 

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 GNU General Public License 

20# along with this program. If not, see <https://www.gnu.org/licenses/>. 

21 

22__all__ = ["Image", "DecoratedImage"] 

23 

24import numpy as np 

25from lsst.utils import TemplateMeta 

26 

27from ..slicing import supportSlicing 

28from ..disableArithmetic import disableImageArithmetic 

29from .fitsIoWithOptions import imageReadFitsWithOptions, imageWriteFitsWithOptions 

30from .image import ImageI, ImageF, ImageD, ImageU, ImageL 

31from .image import DecoratedImageI, DecoratedImageF, DecoratedImageD, DecoratedImageU, DecoratedImageL 

32 

33 

34class Image(metaclass=TemplateMeta): 

35 

36 def __reduce__(self): 

37 from lsst.afw.fits import reduceToFits 

38 return reduceToFits(self) 

39 

40 def __str__(self): 

41 return "{}, bbox={}".format(self.array, self.getBBox()) 

42 

43 def __repr__(self): 

44 return "{}.{}={}".format(self.__module__, self.__class__.__name__, str(self)) 

45 

46 readFitsWithOptions = classmethod(imageReadFitsWithOptions) 

47 

48 writeFitsWithOptions = imageWriteFitsWithOptions 

49 

50 

51Image.register(np.int32, ImageI) 

52Image.register(np.float32, ImageF) 

53Image.register(np.float64, ImageD) 

54Image.register(np.uint16, ImageU) 

55Image.register(np.uint64, ImageL) 

56Image.alias("I", ImageI) 

57Image.alias("F", ImageF) 

58Image.alias("D", ImageD) 

59Image.alias("U", ImageU) 

60Image.alias("L", ImageL) 

61 

62 

63class DecoratedImage(metaclass=TemplateMeta): 

64 

65 def convertF(self): 

66 return ImageF(self, deep=True) 

67 

68 def convertD(self): 

69 return ImageD(self, deep=True) 

70 

71 readFitsWithOptions = classmethod(imageReadFitsWithOptions) 

72 

73 writeFitsWithOptions = imageWriteFitsWithOptions 

74 

75 

76DecoratedImage.register(np.int32, DecoratedImageI) 

77DecoratedImage.register(np.float32, DecoratedImageF) 

78DecoratedImage.register(np.float64, DecoratedImageD) 

79DecoratedImage.register(np.uint16, DecoratedImageU) 

80DecoratedImage.register(np.uint64, DecoratedImageL) 

81DecoratedImage.alias("I", DecoratedImageI) 

82DecoratedImage.alias("F", DecoratedImageF) 

83DecoratedImage.alias("D", DecoratedImageD) 

84DecoratedImage.alias("U", DecoratedImageU) 

85DecoratedImage.alias("L", DecoratedImageL) 

86 

87 

88for cls in set(Image.values()): 

89 supportSlicing(cls) 

90 disableImageArithmetic(cls) 

91 

92for cls in set(DecoratedImage.values()): 

93 supportSlicing(cls) 

94 disableImageArithmetic(cls)