Exemple #1
0
 def testAddition(self):
     """HMS.__add__ => HMS + HMS."""
     hms1 = tpm.HMS()
     hms2 = tpm.HMS()
     hms1.hh = 1.1
     hms1.mm = 1.2
     hms1.ss = 1.3
     hms2.hh = 2.4
     hms2.mm = 2.5
     hms2.ss = 2.6
     hms = hms1 + hms2
     self.assertAlmostEqual(hms.hh, hms1.hh + hms2.hh)
     self.assertAlmostEqual(hms.mm, hms1.mm + hms2.mm)
     self.assertAlmostEqual(hms.ss, hms1.ss + hms2.ss)
Exemple #2
0
 def testSubtraction(self):
     """HMS.__sub__ => HMS - HMS."""
     hms1 = tpm.HMS()
     hms2 = tpm.HMS()
     hms1.hh = 1.1
     hms1.mm = 1.2
     hms1.ss = 1.3
     hms2.hh = 2.4
     hms2.mm = 2.5
     hms2.ss = 2.6
     hms = hms1 - hms2
     self.assertAlmostEqual(hms.hh, hms1.hh - hms2.hh)
     self.assertAlmostEqual(hms.mm, hms1.mm - hms2.mm)
     self.assertAlmostEqual(hms.ss, hms1.ss - hms2.ss)
Exemple #3
0
    def testProperMotion(self):
        """Convert.proper_motion: multiple V6C values."""
        ra = tpm.d2r(269.45402305)
        de = tpm.d2r(4.66828815)
        px = 549.01 / 1000.0  # To Arc seconds
        rv = 0.0
        # pmra * cos(de) into pmra
        pmra = (-797.84 / 1000.0) / math.cos(de)
        pmra *= 100.0  # To Arcseconds per century.
        pmde = (10326.93 / 1000.0)
        pmde *= 100.0  # To Arcseconds per century.
        C = tpm.CJ

        v6 = tpm.cat2v6(ra, de, pmra, pmde, px, rv, C)

        v6_out = convert.proper_motion([v6, v6], tpm.J2000,
                                       tpm.jyear2jd(1991.25))

        for i in v6_out:
            v6 = i.c2s()
            hms = tpm.HMS(r=v6.alpha)
            dms = tpm.DMS(r=v6.delta)
            hms.normalize()
            dms.normalize()

            self.assertAlmostEqual(hms.hh, -7.0)
            self.assertAlmostEqual(hms.mm, 57.0)
            self.assertAlmostEqual(hms.ss, 48.4986, 3)
            self.assertAlmostEqual(dms.dd, 4.0)
            self.assertAlmostEqual(dms.mm, 41.0)
            self.assertAlmostEqual(dms.ss, 36.1980, 3)
Exemple #4
0
    def testpm(self):
        """Proper motion => apply PM to position."""
        import math
        ra = tpm.d2r(269.45402305)
        de = tpm.d2r(4.66828815)
        px = 549.01 / 1000.0 # To Arc seconds
        rv = 0.0
        # pmra * cos(de) into pmra
        pmra = (-797.84 / 1000.0 ) / math.cos(de) 
        pmra *= 100.0 # To Arcseconds per century.
        pmde = (10326.93 / 1000.0) 
        pmde *= 100.0 # To Arcseconds per century.
        C = tpm.CJ

        v6 = tpm.cat2v6(ra, de, pmra, pmde, px, rv, C)
        
        v6 = tpm.proper_motion(v6, tpm.J2000, tpm.jyear2jd(1991.25))
        v6 = v6.c2s()
        hms = tpm.HMS(r=v6.alpha)
        dms = tpm.DMS(r=v6.delta)
        hms.normalize()
        dms.normalize() 

        self.assertAlmostEqual(hms.hh, -7.0)
        self.assertAlmostEqual(hms.mm, 57.0)
        self.assertAlmostEqual(hms.ss, 48.4986, 3)
        self.assertAlmostEqual(dms.dd, 4.0)
        self.assertAlmostEqual(dms.mm, 41.0)
        self.assertAlmostEqual(dms.ss, 36.1980, 3)
Exemple #5
0
 def testUnicodeAndStr(self):
     """HMS.__str__ => string representation."""
     hms = tpm.HMS()
     hms.hh = 1.0
     hms.mm = 2.0
     hms.ss = 3.0
     self.assertEqual(str(hms), " 01H 02M 03.000S")
Exemple #6
0
    def testAdditionNonHMS(self):
        """HMS + x => Exception when addition involves non HMS value."""
        hms = tpm.HMS()  # All zeros.

        def add_hms(hms, x):
            return hms + x

        self.assertRaises(TypeError, add_hms, hms, 1)
Exemple #7
0
    def testSubtractNonHMS(self):
        """HMS - x => Exception if subtraction involves non HMS value."""
        hms = tpm.HMS()  # All zeros.

        def sub_hms(hms, x):
            return hms - x

        self.assertRaises(TypeError, sub_hms, hms, 1)
Exemple #8
0
 def testSetFieldValues(self):
     """DMS.x => set values after creation."""
     hms = tpm.HMS()
     hms.hh = 1.0
     hms.mm = 1.0
     hms.ss = 1.34
     self.assertAlmostEqual(hms.hh, 1.0)
     self.assertAlmostEqual(hms.mm, 1.0)
     self.assertAlmostEqual(hms.ss, 1.34)
Exemple #9
0
 def testToDMS(self):
     """HMS.to_dms() => HMS to DMS."""
     t = {'hh': 12.0, 'mm': 30.0, 'ss': 0.0}
     t_dms = {'dd': 180.0, 'mm': 450.0, 'ss': 0.0}
     hms = tpm.HMS(**t)
     dms = hms.to_dms()
     self.assertEqual(type(dms), tpm.DMS)
     self.assertEqual(dms.dd, t_dms['dd'])
     self.assertEqual(dms.mm, t_dms['mm'])
     self.assertEqual(dms.ss, t_dms['ss'])
Exemple #10
0
 def testRepr(self):
     """HMS.__repr__ => dictionary as a string."""
     hms = tpm.HMS()
     hms.hh = 1.1
     hms.mm = 1.2
     hms.ss = 1.3
     h = eval(repr(hms))
     self.assertAlmostEqual(h['hh'], hms.hh)
     self.assertAlmostEqual(h['mm'], hms.mm)
     self.assertAlmostEqual(h['ss'], hms.ss)
Exemple #11
0
    def fB1950toJ2000_main(ra_J2000, dec_J2000):
        '''
		Precess Right Ascension and Declination coordinates from the sexagismal positions in the B1959 system to decimal degrees in the J2000 system.
		
		Input
		ra_J2000: single Right Ascension position in sexagismal J2000
		dec_J2000: single Declination position in sexagismal J2000
		
		Output
		ra_deg: single Right Ascension position in decimal degree
		dec_deg: single Declination position in decimal degrees
		'''

        # convert decimal degrees to sexagismal format
        ra_sexa, dec_sexa = degtosexa(ra_J2000, dec_J2000)
        # extract RA hh:mm:ss and Dec dd:mm:ss components
        ra_hh = float(ra_sexa.split(" ")[0])
        ra_mm = float(ra_sexa.split(" ")[1])
        ra_ss = float(ra_sexa.split(" ")[2])
        dec_dd = float(dec_sexa.split(" ")[0][1:])
        dec_mm = float(dec_sexa.split(" ")[1])
        dec_ss = float(dec_sexa.split(" ")[2])
        # create RA and Dec objects
        ra_J2000 = tpm.HMS(hh=ra_hh, mm=ra_mm, ss=ra_ss).to_radians()
        dec_J2000 = tpm.DMS(dd=dec_dd, mm=dec_mm, ss=dec_ss).to_radians()
        # velocity vector
        v5 = convert.cat2v6(ra_J2000, dec_J2000)
        v5_fk6 = convert.convertv6(v5,
                                   s1=5,
                                   s2=6,
                                   epoch=tpm.B1950,
                                   equinox=tpm.B1950)
        v5_fk6_ep2000 = convert.proper_motion(v5_fk6, tpm.J2000, tpm.B1950)
        d = convert.v62cat(v5_fk6_ep2000, C=tpm.CJ)
        ra_new_rad = d["alpha"]
        ra_deg = ra_new_rad * 180. / np.pi
        dec_new_rad = d["delta"]
        dec_deg = dec_new_rad * 180. / np.pi

        return ra_deg, dec_deg
Exemple #12
0
 def verify(t, t_norm):
     self.assertAlmostEqual(tpm.HMS(**t).to_radians(), t_norm)
Exemple #13
0
 def verify(t, t_norm):
     self.assertAlmostEqual(tpm.HMS(**t).to_degrees(), t_norm)
Exemple #14
0
 def verify(t, t_norm):
     hms = tpm.HMS(**t)
     hms.normalize()
     self.assertAlmostEqual(hms.hh, t_norm['hh'])
     self.assertAlmostEqual(hms.mm, t_norm['mm'])
     self.assertAlmostEqual(hms.ss, t_norm['ss'])
Exemple #15
0
 def testCreate(self):
     """HMS() => create an HMS object."""
     hms = tpm.HMS()
     self.assertEqual(type(hms), tpm.HMS)
Exemple #16
0
 def testInvalidKeywordAtInit(self):
     """HMS(key=value) => raise TypeError if key is invalid."""
     self.assertRaises(TypeError, lambda: tpm.HMS(h=12.0))
     self.assertRaises(TypeError, lambda: tpm.HMS(hours=12.0))
Exemple #17
0
 def testGetFields(self):
     """HMS.x => retrieve values of fields."""
     hms = tpm.HMS()
     self.assertAlmostEqual(hms.hh, 0.0)
     self.assertAlmostEqual(hms.mm, 0.0)
     self.assertAlmostEqual(hms.ss, 0.0)