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

1import unittest 

2import numpy as np 

3import lsst.utils.tests 

4from lsst.sims.utils import arcsecFromRadians 

5from lsst.sims.GalSimInterface import GalSimCelestialObject 

6from lsst.sims.photUtils import Sed, BandpassDict, Bandpass 

7from lsst.sims.photUtils import PhotometricParameters 

8 

9 

10def setup_module(module): 

11 lsst.utils.tests.init() 

12 

13 

14class GSCOTestCase(unittest.TestCase): 

15 

16 def test_getters(self): 

17 """ 

18 Verify that what goes into __init__ comes out of the getters 

19 """ 

20 xpupil_rad = 2.176 

21 ypupil_rad = 3.2112 

22 hlr = 1.632 

23 minor_axis_rad = 9.124 

24 major_axis_rad = 21.2684 

25 position_angle_rad = 0.1334 

26 sindex = 4.387 

27 npoints = 19 

28 pixel_scale=25.134 

29 rotation_angle_rad = 0.9335 

30 gamma1 = 0.512 

31 gamma2 = 3.4456 

32 kappa = 1.747 

33 phot_params = PhotometricParameters() 

34 

35 rng = np.random.RandomState(88) 

36 wav = np.arange(0.1, 200.0, 0.17) 

37 spec = Sed(wavelen=wav, flambda=rng.random_sample(len(wav))) 

38 

39 # copy spec for comparison below 

40 spec2 = Sed(wavelen=spec.wavelen, flambda=spec.flambda) 

41 

42 # keep BandpassDict on the same wavelength grid as Sed, 

43 # otherwise, the random initialization results in flux==NaN 

44 bp_list = [] 

45 bp_name_list = [] 

46 for bp_name in 'abcd': 

47 sb = rng.random_sample(len(wav)) 

48 bp = Bandpass(wavelen=wav, sb=sb) 

49 bp_list.append(bp) 

50 bp_name_list.append(bp_name) 

51 

52 bp_dict = BandpassDict(bp_list, bp_name_list) 

53 

54 gso = GalSimCelestialObject('pointSource', 

55 xpupil_rad, ypupil_rad, 

56 hlr, minor_axis_rad, major_axis_rad, 

57 position_angle_rad, sindex, 

58 spec, bp_dict, phot_params, 

59 npoints, 'bob', pixel_scale, 

60 rotation_angle_rad, 

61 gamma1=gamma1, gamma2=gamma2, 

62 kappa=kappa, uniqueId=111) 

63 

64 self.assertAlmostEqual(gso.xPupilRadians/xpupil_rad, 1.0, 10) 

65 self.assertAlmostEqual(gso.xPupilArcsec/arcsecFromRadians(xpupil_rad), 1.0, 10) 

66 self.assertAlmostEqual(gso.yPupilRadians/ypupil_rad, 1.0, 10) 

67 self.assertAlmostEqual(gso.yPupilArcsec/arcsecFromRadians(ypupil_rad), 1.0, 10) 

68 self.assertAlmostEqual(gso.halfLightRadiusRadians/hlr, 1.0, 10) 

69 self.assertAlmostEqual(gso.halfLightRadiusArcsec/arcsecFromRadians(hlr), 1.0, 10) 

70 self.assertEqual(gso.uniqueId, 111) 

71 self.assertEqual(gso.galSimType, 'pointSource') 

72 self.assertEqual(gso.npoints, npoints) 

73 self.assertAlmostEqual(gso.minorAxisRadians/minor_axis_rad, 1.0, 10) 

74 self.assertAlmostEqual(gso.majorAxisRadians/major_axis_rad, 1.0, 10) 

75 self.assertAlmostEqual(gso.positionAngleRadians/position_angle_rad, 1.0, 10) 

76 self.assertAlmostEqual(gso.sindex/sindex, 1.0, 10) 

77 self.assertAlmostEqual(gso.pixel_scale/pixel_scale, 1.0, 10) 

78 self.assertAlmostEqual(gso.rotation_angle/rotation_angle_rad, 1.0, 10) 

79 g1 = gamma1/(1.0-kappa) 

80 self.assertAlmostEqual(gso.g1/g1, 1.0, 10) 

81 g2 = gamma2/(1.0-kappa) 

82 self.assertAlmostEqual(gso.g2/g2, 1.0, 10) 

83 mu = 1.0/((1.0-kappa)**2-(gamma1**2+gamma2**2)) 

84 self.assertAlmostEqual(gso.mu/mu, 1.0, 10) 

85 self.assertEqual(gso.fits_image_file, 'bob') 

86 self.assertEqual(gso.sed, spec2) 

87 for bp_name in bp_dict: 

88 ff = spec2.calcADU(bp_dict[bp_name], phot_params) 

89 ff *= phot_params.gain 

90 self.assertTrue(np.isfinite(ff)) 

91 self.assertAlmostEqual(gso.flux(bp_name)/ff, 1.0, 10) 

92 

93 

94class MemoryTestClass(lsst.utils.tests.MemoryTestCase): 

95 pass 

96 

97if __name__ == "__main__": 97 ↛ 98line 97 didn't jump to line 98, because the condition on line 97 was never true

98 lsst.utils.tests.init() 

99 unittest.main()