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# LSST Data Management System 

3# Copyright 2017 LSST Corporation. 

4# 

5# This product includes software developed by the 

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

7# 

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

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

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

11# (at your option) any later version. 

12# 

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

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

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

16# GNU General Public License for more details. 

17# 

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

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

20# see <http://www.lsstcorp.org/LegalNotices/>. 

21# 

22 

23import numpy as np 

24 

25from lsst.utils import continueClass 

26from ..python import reduceTransform 

27from .skyWcs import SkyWcs 

28 

29__all__ = [] 

30 

31 

32@continueClass # noqa: F811 (FIXME: remove for py 3.8+) 

33class SkyWcs: # noqa: F811 

34 def pixelToSkyArray(self, x, y, degrees=False): 

35 """ 

36 Convert numpy array pixels (x, y) to numpy array sky (ra, dec) 

37 positions. 

38 

39 Parameters 

40 ---------- 

41 x : `np.ndarray` 

42 Array of x values. 

43 y : `np.ndarray` 

44 Array of y values. 

45 degrees : `bool`, optional 

46 Return ra, dec arrays in degrees if True. 

47 

48 Returns 

49 ------- 

50 ra : `np.ndarray` 

51 Array of Right Ascension. Units are radians unless 

52 degrees=True. 

53 dec : `np.ndarray` 

54 Array of Declination. Units are radians unless 

55 degrees=True. 

56 """ 

57 xy = np.vstack((x, y)) 

58 ra, dec = np.vsplit(self.getTransform().getMapping().applyForward(xy), 2) 

59 ra %= (2.*np.pi) 

60 

61 if degrees: 

62 return np.rad2deg(ra.ravel()), np.rad2deg(dec.ravel()) 

63 else: 

64 return ra.ravel(), dec.ravel() 

65 

66 def skyToPixelArray(self, ra, dec, degrees=False): 

67 """ 

68 Convert numpy array sky (ra, dec) positions to numpy array 

69 pixels (x, y). 

70 

71 Parameters 

72 ---------- 

73 ra : `np.ndarray` 

74 Array of Right Ascension. Units are radians unless 

75 degrees=True. 

76 dec : `np.ndarray` 

77 Array of Declination. Units are radians unless 

78 degrees=True. 

79 degrees : `bool`, optional 

80 Input ra, dec arrays are degrees if True. 

81 

82 Returns 

83 ------- 

84 x : `np.ndarray` 

85 Array of x values. 

86 y : `np.ndarray` 

87 Array of y values. 

88 """ 

89 radec = np.vstack((ra, dec)) 

90 if degrees: 

91 radec = np.deg2rad(radec) 

92 

93 x, y = np.vsplit(self.getTransform().getMapping().applyInverse(radec), 2) 

94 

95 return x.ravel(), y.ravel() 

96 

97 

98SkyWcs.__reduce__ = reduceTransform