Exemple #1
0
    def test_slalib_nwdfs_fk54z(self):
        """convertv6(x,s1=6,s=5) + PM <=> SLALIB FK5-FK4 (fk54z) NDWFS"""
        v6l = []
        for r, d in zip(self.ndwfs_tab['raj2'], self.ndwfs_tab['decj2']):
            v6 = tpm.V6S()
            v6.r = 1e9
            v6.alpha = tpm.d2r(r)
            v6.delta = tpm.d2r(d)
            v6l.append(v6.s2c())

        v6o = convert.convertv6(v6l, s1=6, s2=5)
        v6o = convert.proper_motion(v6o, tpm.B1950, tpm.J2000)
        cat = (tpm.v62cat(v, tpm.CB) for v in v6o)

        tab = get_sla("slalib_ndwfs_fk54z.txt")

        for v, s in zip(cat, tab):
            ra = math.degrees(tpm.r2r(v['alpha']))
            dec = math.degrees(v['delta'])
            # arcsec/cent to milli-arcsec/year.
            pma = v['pma'] * 1000.0 / 100.0
            pmd = v['pmd'] * 1000.0 / 100.0

            ra_diff = abs(ra - s[0]) * 3600.0
            dec_diff = abs(dec - s[1]) * 3600.0
            pma_diff = abs(pma - s[2])
            pmd_diff = abs(pmd - s[3])
            self.assertTrue(ra_diff <= 0.0001)
            self.assertTrue(dec_diff <= 0.0001)
            self.assertTrue(pma_diff <= 1)
            self.assertTrue(pmd_diff <= 1)
def hipfk524():
    """Print summary of FK5-FK4 comparison with SLALIB fk524 (HIP)."""
    hip_tab = get_hipdata()
    sla_tab = get_sla("slalib_hip_fk524.txt")
    rv = np.zeros((len(hip_tab['px'],)))

    v6l = convert.cat2v6(hip_tab['raj2'], hip_tab['decj2'], hip_tab['pma'],
                    hip_tab['pmd'], hip_tab['px'], rv, tpm.CJ)

    v6o = convert.convertv6(v6l, s1=6, s2=5, epoch=tpm.J2000)
    v6o = convert.proper_motion(v6o, tpm.B1950, tpm.J2000)
    cat = (tpm.v62cat(v, tpm.CB) for v in v6o)
    d = cat2array(cat)

    ra_diff = np.degrees(d['alpha']) - sla_tab[:, 0]
    ra_diff *= 3600.0
    dec_diff = np.degrees(d['delta']) - sla_tab[:, 1]
    dec_diff *= 3600.0
    px_diff = d['px'] * 1000.0 - sla_tab[:, 2]
    pma_diff = d['pma'] * 1000.0 / 100.0 - sla_tab[:, 3]
    pmd_diff = d['pmd'] * 1000.0 / 100.0 - sla_tab[:, 4]
    rv_diff = d['rv'] - sla_tab[:, 5]

    fs = "{0} {1}\n" + \
        "Min:  {2:.4f} Max: {3:.4f} \nMean: {4:.4f} Std: {5:.4f}\n"
    x = [stats.describe(np.abs(i)) for i in
         [ra_diff, dec_diff, px_diff, pma_diff, pmd_diff, rv_diff]]
    print("Comparison with SLALIB fk524 using HIPPARCOS data.")
    for name, unit, s in zip(
        ["ra_diff", "dec_diff", "px_diff", "pma_diff", "pmd_diff",
         "rv_diff"],
        ["arsec", "arcsec", "milliarcsec", "milli-arsec/trop. yr",
         "milli-arcsec/trop. yr", "km/s"],
        x):
        print(fs.format(name, unit, s[1][0], s[1][1], s[2], s[3] ** 0.5))
Exemple #3
0
    def test_slalib_nwdfs_fk54z(self):
        """convertv6(x,s1=6,s=5) + PM <=> SLALIB FK5-FK4 (fk54z) NDWFS"""
        v6l = []
        for r, d in zip(self.ndwfs_tab['raj2'], self.ndwfs_tab['decj2']):
            v6 = tpm.V6S()
            v6.r = 1e9
            v6.alpha = tpm.d2r(r)
            v6.delta = tpm.d2r(d)
            v6l.append(v6.s2c())

        v6o = convert.convertv6(v6l, s1=6, s2=5)
        v6o = convert.proper_motion(v6o, tpm.B1950, tpm.J2000)
        cat = (tpm.v62cat(v, tpm.CB) for v in v6o)

        tab = get_sla("slalib_ndwfs_fk54z.txt")

        for v, s in zip(cat, tab):
            ra = math.degrees(tpm.r2r(v['alpha']))
            dec = math.degrees(v['delta'])
            # arcsec/cent to milli-arcsec/year.
            pma = v['pma'] * 1000.0 / 100.0
            pmd = v['pmd'] * 1000.0 / 100.0

            ra_diff = abs(ra - s[0]) * 3600.0
            dec_diff = abs(dec - s[1]) * 3600.0
            pma_diff = abs(pma - s[2])
            pmd_diff = abs(pmd - s[3])
            self.assertTrue(ra_diff <= 0.0001 )
            self.assertTrue(dec_diff <= 0.0001)
            self.assertTrue(pma_diff <= 1)
            self.assertTrue(pmd_diff <= 1)
def hipeqgal():
    """Print summary of EQ-GAL comparison with SLALIB eqgal (HIP)."""
    hip_tab = get_hipdata()
    sla_tab = get_sla("slalib_hip_eqgal.txt")

    dummy = np.zeros((len(hip_tab['px']),))
    v6l = convert.cat2v6(hip_tab['raj2'], hip_tab['decj2'], dummy, dummy,
                         dummy, dummy, tpm.CJ)

    v6o = convert.convertv6(v6l, s1=6, s2=4)
    # The galactic coordinates are at epoch J2000. But SLALIB
    # results are for B1950. So apply proper motion here.
    v6o = convert.proper_motion(v6o, tpm.B1950, tpm.J2000)
    cat = convert.v62cat(v6o, tpm.CJ)

    cat = cat2array(cat)

    ra_diff = np.degrees(cat['alpha']) - sla_tab[:, 0]
    ra_diff = np.abs(ra_diff * 3600.0)
    dec_diff = np.degrees(cat['delta']) - sla_tab[:, 1]
    dec_diff = np.abs(dec_diff * 3600.0)

    print("Comparison with SLALIB eqgal using HIPPARCOS data.")
    fs = "{0} {1}\n" + \
        "Min:  {2:.4f} Max: {3:.4f} \nMean: {4:.4f} Std: {5:.4f}\n"
    x = stats.describe(ra_diff)
    print(fs.format("ra_diff", "arcsec", x[1][0], x[1][1], x[2],
                    x[3] ** 0.5))
    x = stats.describe(dec_diff)
    print(fs.format("dec_diff", "arcsec", x[1][0], x[1][1], x[2],
                    x[3] ** 0.5))
Exemple #5
0
def hipecleq():
    """Print summary of ECL-EQ comparison with SLALIB ecleq (HIP)."""
    hip_tab = get_hipdata()
    sla_tab = get_sla("slalib_hip_ecleq.txt")

    dummy = np.zeros((len(hip_tab['px']), ))
    v6l = convert.cat2v6(hip_tab['elon2'], hip_tab['elat2'], dummy, dummy,
                         dummy, dummy, tpm.CJ)

    v6o = convert.convertv6(v6l, s1=3, s2=6)
    cat = convert.v62cat(v6o, tpm.CJ)

    cat = cat2array(cat)

    ra_diff = np.degrees(cat['alpha']) - sla_tab[:, 0]
    ra_diff = np.abs(ra_diff * 3600.0)
    dec_diff = np.degrees(cat['delta']) - sla_tab[:, 1]
    dec_diff = np.abs(dec_diff * 3600.0)

    print("Comparison with SLALIB ecleq using HIPPARCOS data.")
    fs = "{0} {1}\n" + \
        "Min:  {2:.4f} Max: {3:.4f} \nMean: {4:.4f} Std: {5:.4f}\n"
    x = stats.describe(ra_diff)
    print(fs.format("ra_diff", "arcsec", x[1][0], x[1][1], x[2], x[3]**0.5))
    x = stats.describe(dec_diff)
    print(fs.format("dec_diff", "arcsec", x[1][0], x[1][1], x[2], x[3]**0.5))
Exemple #6
0
    def test_slalib_hip_eqgal(self):
        """convertv6(x,s1=6,s=4) + PM <=> SLALIB eqgal HIP"""
        v6l = []
        for r, d in zip(self.hip_tab['raj2'], self.hip_tab['decj2']):
            v6 = tpm.V6S()
            v6.r = 1e9
            v6.alpha = tpm.d2r(r)
            v6.delta = tpm.d2r(d)
            v6l.append(v6.s2c())

        v6o = convert.convertv6(v6l, s1=6, s2=4)
        # The galactic coordinates are at epoch J2000. But SLALIB
        # results are for B1950. So apply proper motion here.
        v6o = convert.proper_motion(v6o, tpm.B1950, tpm.J2000)
        cat = (tpm.v62cat(v, tpm.CJ) for v in v6o)

        tab = get_sla("slalib_hip_eqgal.txt")

        for v, s in zip(cat, tab):
            ra = math.degrees(tpm.r2r(v['alpha']))
            dec = math.degrees(v['delta'])

            ra_diff = abs(ra - s[0]) * 3600.0
            dec_diff = abs(dec - s[1]) * 3600.0
            self.assertTrue(ra_diff <= 0.001)
            self.assertTrue(dec_diff <= 0.001)
Exemple #7
0
    def test_slalib_hip_eqgal(self):
        """convertv6(x,s1=6,s=4) + PM <=> SLALIB eqgal HIP"""
        v6l = []
        for r, d in zip(self.hip_tab['raj2'], self.hip_tab['decj2']):
            v6 = tpm.V6S()
            v6.r = 1e9
            v6.alpha = tpm.d2r(r)
            v6.delta = tpm.d2r(d)
            v6l.append(v6.s2c())

        v6o = convert.convertv6(v6l, s1=6, s2=4)
        # The galactic coordinates are at epoch J2000. But SLALIB
        # results are for B1950. So apply proper motion here.
        v6o = convert.proper_motion(v6o, tpm.B1950, tpm.J2000)
        cat = (tpm.v62cat(v, tpm.CJ) for v in v6o)

        tab = get_sla("slalib_hip_eqgal.txt")

        for v, s in zip(cat, tab):
            ra = math.degrees(tpm.r2r(v['alpha']))
            dec = math.degrees(v['delta'])

            ra_diff = abs(ra - s[0]) * 3600.0
            dec_diff = abs(dec - s[1]) * 3600.0
            self.assertTrue(ra_diff <= 0.001 )
            self.assertTrue(dec_diff <= 0.001 )
Exemple #8
0
    def test_slalib_hip_galeq(self):
        """convertv6(x,s1=4,s=6) + PM <=> SLALIB galeq HIP"""
        v6l = []
        for r, d in zip(self.hip_tab['glon'], self.hip_tab['glat']):
            v6 = tpm.V6S()
            v6.r = 1e9
            v6.alpha = tpm.d2r(r)
            v6.delta = tpm.d2r(d)
            v6l.append(v6.s2c())

        # The epoch of galactic data is J2000. But in SLALIB
        # the input is taken to be B1950.0. I can't apply proper_motion
        # from J2000 to B1950 before input to SLALIB since, I don't
        # have galactic velocities. In essence, the SLALIB input has a
        # proper_motion for the period B1950 to J2000, which is also
        # present in the output. By setting
        # epoch=tpm.B1950 PyTPM will return FK5 values at eq. J2000
        # but at epoch B1950, which should match the results from
        # SLALIB. The velocities for this conversion show up during
        # FK4-FK5 frame conversion.
        v6o = convert.convertv6(v6l, s1=4, s2=6, epoch=tpm.B1950)
        cat = (tpm.v62cat(v, tpm.CJ) for v in v6o)

        tab = get_sla("slalib_hip_galeq.txt")

        for v, s in zip(cat, tab):
            ra = math.degrees(tpm.r2r(v['alpha']))
            dec = math.degrees(v['delta'])

            ra_diff = abs(ra - s[0]) * 3600.0
            dec_diff = abs(dec - s[1]) * 3600.0
            self.assertTrue(ra_diff <= 0.001 )
            self.assertTrue(dec_diff <= 0.001 )
Exemple #9
0
def hipeqgal():
    """Print summary of EQ-GAL comparison with SLALIB eqgal (HIP)."""
    hip_tab = get_hipdata()
    sla_tab = get_sla("slalib_hip_eqgal.txt")

    dummy = np.zeros((len(hip_tab['px']), ))
    v6l = convert.cat2v6(hip_tab['raj2'], hip_tab['decj2'], dummy, dummy,
                         dummy, dummy, tpm.CJ)

    v6o = convert.convertv6(v6l, s1=6, s2=4)
    # The galactic coordinates are at epoch J2000. But SLALIB
    # results are for B1950. So apply proper motion here.
    v6o = convert.proper_motion(v6o, tpm.B1950, tpm.J2000)
    cat = convert.v62cat(v6o, tpm.CJ)

    cat = cat2array(cat)

    ra_diff = np.degrees(cat['alpha']) - sla_tab[:, 0]
    ra_diff = np.abs(ra_diff * 3600.0)
    dec_diff = np.degrees(cat['delta']) - sla_tab[:, 1]
    dec_diff = np.abs(dec_diff * 3600.0)

    print("Comparison with SLALIB eqgal using HIPPARCOS data.")
    fs = "{0} {1}\n" + \
        "Min:  {2:.4f} Max: {3:.4f} \nMean: {4:.4f} Std: {5:.4f}\n"
    x = stats.describe(ra_diff)
    print(fs.format("ra_diff", "arcsec", x[1][0], x[1][1], x[2], x[3]**0.5))
    x = stats.describe(dec_diff)
    print(fs.format("dec_diff", "arcsec", x[1][0], x[1][1], x[2], x[3]**0.5))
Exemple #10
0
def hipgaleq():
    """Print summary of GAL-EQ comparison with SLALIB galeq (HIP)."""
    hip_tab = get_hipdata()
    sla_tab = get_sla("slalib_hip_galeq.txt")

    dummy = np.zeros((len(hip_tab['px']), ))
    v6l = convert.cat2v6(hip_tab['glon'], hip_tab['glat'], dummy, dummy, dummy,
                         dummy, tpm.CJ)

    # The actual epoch of galactic data is J2000. But in SLALIB
    # the input is taken to be B1950.0. So use tpm.B1950 as epoch
    # in the conversion.
    v6o = convert.convertv6(v6l, s1=4, s2=6, epoch=tpm.B1950)
    cat = convert.v62cat(v6o, tpm.CJ)

    cat = cat2array(cat)

    ra_diff = np.degrees(cat['alpha']) - sla_tab[:, 0]
    ra_diff = np.abs(ra_diff * 3600.0)
    dec_diff = np.degrees(cat['delta']) - sla_tab[:, 1]
    dec_diff = np.abs(dec_diff * 3600.0)

    print("Comparison with SLALIB galeq using HIPPARCOS data.")
    fs = "{0} {1}\n" + \
        "Min:  {2:.4f} Max: {3:.4f} \nMean: {4:.4f} Std: {5:.4f}\n"
    x = stats.describe(ra_diff)
    print(fs.format("ra_diff", "arcsec", x[1][0], x[1][1], x[2], x[3]**0.5))
    x = stats.describe(dec_diff)
    print(fs.format("dec_diff", "arcsec", x[1][0], x[1][1], x[2], x[3]**0.5))
def hipecleq():
    """Print summary of ECL-EQ comparison with SLALIB ecleq (HIP)."""
    hip_tab = get_hipdata()
    sla_tab = get_sla("slalib_hip_ecleq.txt")

    dummy = np.zeros((len(hip_tab['px']),))
    v6l = convert.cat2v6(hip_tab['elon2'], hip_tab['elat2'], dummy, dummy,
                         dummy, dummy, tpm.CJ)

    v6o = convert.convertv6(v6l, s1=3, s2=6)
    cat = convert.v62cat(v6o, tpm.CJ)

    cat = cat2array(cat)

    ra_diff = np.degrees(cat['alpha']) - sla_tab[:, 0]
    ra_diff = np.abs(ra_diff * 3600.0)
    dec_diff = np.degrees(cat['delta']) - sla_tab[:, 1]
    dec_diff = np.abs(dec_diff * 3600.0)

    print("Comparison with SLALIB ecleq using HIPPARCOS data.")
    fs = "{0} {1}\n" + \
        "Min:  {2:.4f} Max: {3:.4f} \nMean: {4:.4f} Std: {5:.4f}\n"
    x = stats.describe(ra_diff)
    print(fs.format("ra_diff", "arcsec", x[1][0], x[1][1], x[2],
                    x[3] ** 0.5))
    x = stats.describe(dec_diff)
    print(fs.format("dec_diff", "arcsec", x[1][0], x[1][1], x[2],
                    x[3] ** 0.5))
def hipgaleq():
    """Print summary of GAL-EQ comparison with SLALIB galeq (HIP)."""
    hip_tab = get_hipdata()
    sla_tab = get_sla("slalib_hip_galeq.txt")

    dummy = np.zeros((len(hip_tab['px']),))
    v6l = convert.cat2v6(hip_tab['glon'], hip_tab['glat'], dummy, dummy,
                         dummy, dummy, tpm.CJ)

    # The actual epoch of galactic data is J2000. But in SLALIB
    # the input is taken to be B1950.0. So use tpm.B1950 as epoch
    # in the conversion.
    v6o = convert.convertv6(v6l, s1=4, s2=6, epoch=tpm.B1950)
    cat = convert.v62cat(v6o, tpm.CJ)

    cat = cat2array(cat)

    ra_diff = np.degrees(cat['alpha']) - sla_tab[:, 0]
    ra_diff = np.abs(ra_diff * 3600.0)
    dec_diff = np.degrees(cat['delta']) - sla_tab[:, 1]
    dec_diff = np.abs(dec_diff * 3600.0)

    print("Comparison with SLALIB galeq using HIPPARCOS data.")
    fs = "{0} {1}\n" + \
        "Min:  {2:.4f} Max: {3:.4f} \nMean: {4:.4f} Std: {5:.4f}\n"
    x = stats.describe(ra_diff)
    print(fs.format("ra_diff", "arcsec", x[1][0], x[1][1], x[2],
                    x[3] ** 0.5))
    x = stats.describe(dec_diff)
    print(fs.format("dec_diff", "arcsec", x[1][0], x[1][1], x[2],
                    x[3] ** 0.5))
Exemple #13
0
    def test_slalib_hip_galeq(self):
        """convertv6(x,s1=4,s=6) + PM <=> SLALIB galeq HIP"""
        v6l = []
        for r, d in zip(self.hip_tab['glon'], self.hip_tab['glat']):
            v6 = tpm.V6S()
            v6.r = 1e9
            v6.alpha = tpm.d2r(r)
            v6.delta = tpm.d2r(d)
            v6l.append(v6.s2c())

        # The epoch of galactic data is J2000. But in SLALIB
        # the input is taken to be B1950.0. I can't apply proper_motion
        # from J2000 to B1950 before input to SLALIB since, I don't
        # have galactic velocities. In essence, the SLALIB input has a
        # proper_motion for the period B1950 to J2000, which is also
        # present in the output. By setting
        # epoch=tpm.B1950 PyTPM will return FK5 values at eq. J2000
        # but at epoch B1950, which should match the results from
        # SLALIB. The velocities for this conversion show up during
        # FK4-FK5 frame conversion.
        v6o = convert.convertv6(v6l, s1=4, s2=6, epoch=tpm.B1950)
        cat = (tpm.v62cat(v, tpm.CJ) for v in v6o)

        tab = get_sla("slalib_hip_galeq.txt")

        for v, s in zip(cat, tab):
            ra = math.degrees(tpm.r2r(v['alpha']))
            dec = math.degrees(v['delta'])

            ra_diff = abs(ra - s[0]) * 3600.0
            dec_diff = abs(dec - s[1]) * 3600.0
            self.assertTrue(ra_diff <= 0.001)
            self.assertTrue(dec_diff <= 0.001)
Exemple #14
0
def fk5ecl():
    # FK5 equinox and epoch J2000.0, to IAU 1980 ecliptic J2000.0
    v6o = convert.convertv6(v6, s1=6, s2=3)
    # Convert V6C vectors into a list of dictionaries, each of which
    # contain the 6-D Fk4 B1950.0 coordinates.
    cat = convert.v62cat(v6o, tpm.CJ)

    return cat
Exemple #15
0
def hipfk425():
    """Print summary of FK4-FK5 comparison with SLALIB fk425 (HIP).

    The input FK4 data is the same generated for the the FK5-FK4
    conversion test. I read that data into slalib and perform the
    reverse conversion. The result is then compared with that from
    PyTPM.
    """
    sla_tabb = get_sla("slalib_hip_fk524.txt")
    sla_tab = get_sla("slalib_hip_fk524_fk425.txt")

    r = np.radians(sla_tabb[:, 0])
    d = np.radians(sla_tabb[:, 1])
    px = sla_tabb[:, 2] / 1000.0
    pma = sla_tabb[:, 3] / 1000.0 * 100.0
    pmd = sla_tabb[:, 4] / 1000.0 * 100.0
    rv = sla_tabb[:, 5]

    v6l = convert.cat2v6(r, d, pma, pmd, px, rv, tpm.CB)
    v6o = convert.convertv6(v6l, s1=5, s2=6, epoch=tpm.B1950)
    v6o = convert.proper_motion(v6o, tpm.J2000, tpm.B1950)
    cat = convert.v62cat(v6o, tpm.CJ)
    cat = cat2array(cat)

    r = np.degrees(cat['alpha'])
    d = np.degrees(cat['delta'])
    # arc-sec/cent. to milli-arcsec/Jul. year.
    pma = cat['pma'] * 1000.0 / 100.0
    pmd = cat['pmd'] * 1000.0 / 100.0
    # arc-sec to milli-arcsec
    px = cat['px'] * 1000.0

    ra_diff = np.abs(r - sla_tab[:, 0]) * 3600.0
    dec_diff = np.abs(d - sla_tab[:, 1]) * 3600.0
    px_diff = np.abs(px - sla_tab[:, 2])
    pma_diff = np.abs(pma - sla_tab[:, 3])
    pmd_diff = np.abs(pmd - sla_tab[:, 4])
    rv_diff = np.abs(rv - sla_tab[:, 5])

    fs = "{0} {1}\n" + \
        "Min:  {2:.4f} Max: {3:.4f} \nMean: {4:.4f} Std: {5:.4f}\n"
    x = [
        stats.describe(np.abs(i))
        for i in [ra_diff, dec_diff, px_diff, pma_diff, pmd_diff, rv_diff]
    ]
    print("Comparison with SLALIB fk425 using HIPPARCOS data.")
    for name, unit, s in zip(
        ["ra_diff", "dec_diff", "px_diff", "pma_diff", "pmd_diff", "rv_diff"],
        [
            "arsec", "arcsec", "milliarcsec", "milli-arsec/trop. yr",
            "milli-arcsec/trop. yr", "km/s"
        ], x):
        print(fs.format(name, unit, s[1][0], s[1][1], s[2], s[3]**0.5))
def hipfk425():
    """Print summary of FK4-FK5 comparison with SLALIB fk425 (HIP).

    The input FK4 data is the same generated for the the FK5-FK4
    conversion test. I read that data into slalib and perform the
    reverse conversion. The result is then compared with that from
    PyTPM.
    """
    sla_tabb = get_sla("slalib_hip_fk524.txt")
    sla_tab = get_sla("slalib_hip_fk524_fk425.txt")

    r = np.radians(sla_tabb[:, 0])
    d = np.radians(sla_tabb[:, 1])
    px = sla_tabb[:, 2] / 1000.0
    pma = sla_tabb[:, 3] / 1000.0 * 100.0
    pmd = sla_tabb[:, 4] / 1000.0 * 100.0
    rv = sla_tabb[:, 5]

    v6l = convert.cat2v6(r, d, pma, pmd, px, rv, tpm.CB)
    v6o = convert.convertv6(v6l, s1=5, s2=6, epoch=tpm.B1950)
    v6o = convert.proper_motion(v6o, tpm.J2000, tpm.B1950)
    cat = convert.v62cat(v6o, tpm.CJ)
    cat = cat2array(cat)

    r = np.degrees(cat['alpha'])
    d = np.degrees(cat['delta'])
    # arc-sec/cent. to milli-arcsec/Jul. year.
    pma = cat['pma'] * 1000.0 / 100.0
    pmd = cat['pmd'] * 1000.0 / 100.0
    # arc-sec to milli-arcsec
    px = cat['px'] * 1000.0

    ra_diff = np.abs(r - sla_tab[:, 0]) * 3600.0
    dec_diff = np.abs(d - sla_tab[:, 1]) * 3600.0
    px_diff = np.abs(px - sla_tab[:, 2])
    pma_diff = np.abs(pma - sla_tab[:, 3])
    pmd_diff = np.abs(pmd - sla_tab[:, 4])
    rv_diff = np.abs(rv - sla_tab[:, 5])

    fs = "{0} {1}\n" + \
        "Min:  {2:.4f} Max: {3:.4f} \nMean: {4:.4f} Std: {5:.4f}\n"
    x = [stats.describe(np.abs(i)) for i in
         [ra_diff, dec_diff, px_diff, pma_diff, pmd_diff, rv_diff]]
    print("Comparison with SLALIB fk425 using HIPPARCOS data.")
    for name, unit, s in zip(
        ["ra_diff", "dec_diff", "px_diff", "pma_diff", "pmd_diff",
         "rv_diff"],
        ["arsec", "arcsec", "milliarcsec", "milli-arsec/trop. yr",
         "milli-arcsec/trop. yr", "km/s"],
        x):
        print(fs.format(name, unit, s[1][0], s[1][1], s[2], s[3] ** 0.5))
Exemple #17
0
def fk54():
    # Convert from FK5 equinox and epoch J2000.0 to FK4 equinox B1950, but
    # at the given epoch i.e., J2000.0.
    v6o = convert.convertv6(v6, s1=6, s2=5, epoch=tpm.J2000)

    # Apply proper motion from J2000.0 to B1950.0. Objects with zero
    # velocity in FK5 will have a fictitious proper motion in FK4.
    v6o = convert.proper_motion(v6o, tpm.B1950, tpm.J2000)

    # Convert V6C vectors into a list of dictionaries, each of which
    # contain the 6-D Fk4 B1950.0 coordinates.
    cat = convert.v62cat(v6o, tpm.CB)

    return cat
Exemple #18
0
    def testConvertv6(self):
        """ConvertV6: J2000 (~ICRS) 1991.25 => FK4 B1950 ep 1950.0."""
        # Set s2=TPM_S05 and ep2=B1950 in
        # c_tests/test_conversion_with_pm.c.
        ra = []
        dec = []
        pmra = []
        pmdec = []
        px = []
        f = open(hip_data_icrs, "r")
        for i in f:
            x = [float(j) for j in i.split()]
            ra.append(tpm.d2r(x[0]))
            dec.append(tpm.d2r(x[1]))
            # Milli-arcsec/year to arcsec/century.
            pmra.append(((x[2] / 1000.0) / math.cos(tpm.d2r(x[1]))) * 100.0)
            pmdec.append((x[3] / 1000.0) * 100.0)
            px.append(x[4])
        f.close()

        s1 = tpm.TPM_S06
        ep = tpm.y2j(1991.25)
        eq = tpm.J2000
        s2 = tpm.TPM_S05
        ep2 = tpm.B1950

        f = open(os.path.join(c_tests_dir, "hipicrsep1991_fk4B1950ep1950.txt"),
                 "r")

        v6_l = []
        for i in range(len(ra)):
            v6 = tpm.cat2v6(ra[i], dec[i], pmra[i], pmdec[i], px[i], 0.0,
                            tpm.CJ)
            v6_l.append(v6)

        v6_out = convert.convertv6(v6_l, epoch=ep, equinox=eq, s1=s1, s2=s2)

        for v in v6_out:
            tpm.proper_motion(v, ep2, ep)
            d = tpm.v62cat(v, tpm.CJ)
            x = [float(j) for j in f.readline().strip().split()]
            self.assertAlmostEqual(tpm.r2d(tpm.r2r(d['alpha'])), x[0], 8)
            self.assertAlmostEqual(tpm.r2d(d['delta']), x[1], 8)
            self.assertAlmostEqual(d['pma'], x[2], 4)
            self.assertAlmostEqual(d['pmd'], x[3], 4)
            self.assertAlmostEqual(d['px'], x[4], 8)
            self.assertAlmostEqual(d['rv'], x[5], 2)

        f.close()
Exemple #19
0
    def testConvertv6(self):
        """ConvertV6: J2000 (~ICRS) 1991.25 => FK4 B1950 ep 1950.0."""
        # Set s2=TPM_S05 and ep2=B1950 in
        # c_tests/test_conversion_with_pm.c.
        ra = []
        dec = []
        pmra = []
        pmdec = []
        px = []
        f = open(hip_data_icrs, "r")
        for i in f:
            x = [float(j) for j in i.split()]
            ra.append(tpm.d2r(x[0]))
            dec.append(tpm.d2r(x[1]))
            # Milli-arcsec/year to arcsec/century.
            pmra.append(((x[2] / 1000.0) / math.cos(tpm.d2r(x[1]))) * 100.0)
            pmdec.append((x[3] / 1000.0) * 100.0)
            px.append(x[4])
        f.close()

        s1 = tpm.TPM_S06
        ep = tpm.y2j(1991.25)
        eq = tpm.J2000
        s2 = tpm.TPM_S05
        ep2 = tpm.B1950

        f = open(os.path.join(c_tests_dir, "hipicrsep1991_fk4B1950ep1950.txt"), "r")

        v6_l = []
        for i in range(len(ra)):
            v6 = tpm.cat2v6(ra[i], dec[i], pmra[i], pmdec[i], px[i], 0.0, tpm.CJ)
            v6_l.append(v6)

        v6_out = convert.convertv6(v6_l, epoch=ep, equinox=eq, s1=s1, s2=s2)

        for v in v6_out:
            tpm.proper_motion(v, ep2, ep)
            d = tpm.v62cat(v, tpm.CJ)
            x = [float(j) for j in f.readline().strip().split()]
            self.assertAlmostEqual(tpm.r2d(tpm.r2r(d["alpha"])), x[0], 8)
            self.assertAlmostEqual(tpm.r2d(d["delta"]), x[1], 8)
            self.assertAlmostEqual(d["pma"], x[2], 4)
            self.assertAlmostEqual(d["pmd"], x[3], 4)
            self.assertAlmostEqual(d["px"], x[4], 8)
            self.assertAlmostEqual(d["rv"], x[5], 2)

        f.close()
Exemple #20
0
    def test_slalib_hip_fk524(self):
        """convertv6(x,s1=6,s2=5) + PM <=> SLALIB FK5-FK4 (fk524) HIP"""
        v6l = []
        for r, d, pa, pd, px in zip(self.hip_tab['raj2'],
                                    self.hip_tab['decj2'],
                                    self.hip_tab['pma'],
                                    self.hip_tab['pmd'],
                                    self.hip_tab['px']):
            r = tpm.d2r(r)
            d = tpm.d2r(d)
            # Milli-arcsec / Jul. yr to milli-arcsec per Jul. century.
            pma = pa / math.cos(d) / 1000.0 * 100.0
            pmd = pd / 1000.0 * 100.0
            px /= 1000.0  # mili-arcsec to arc-sec.
            v6 = tpm.cat2v6(r, d, pma, pmd, px, 0.0, tpm.CJ)
            v6l.append(v6)

        v6o = convert.convertv6(v6l, s1=6, s2=5)
        v6o = convert.proper_motion(v6o, tpm.B1950, tpm.J2000)
        cat = (tpm.v62cat(v, tpm.CB) for v in v6o)

        tab = get_sla("slalib_hip_fk524.txt")

        for v, s in zip(cat, tab):
            ra = math.degrees(tpm.r2r(v['alpha']))
            dec = math.degrees(v['delta'])
            # arc-sec/cent. to milli-arcsec/trop. year.
            pma = v['pma'] * 1000.0 / 100.0
            pmd = v['pmd'] * 1000.0 / 100.0
            px = v['px'] * 1e3  # arc-sec to milli-arcsec

            ra_diff = abs(ra - s[0]) * 3600.0
            dec_diff = abs(dec - s[1]) * 3600.0
            px_diff = abs(px - s[2])
            pma_diff = abs(pma - s[3])
            pmd_diff = abs(pmd - s[4])
            rv_diff = abs(v['rv'] - s[5])

            self.assertTrue(ra_diff <= 0.001)
            self.assertTrue(dec_diff <= 0.001)
            self.assertTrue(pma_diff <= 0.001)
            self.assertTrue(pmd_diff <= 0.001)
            self.assertTrue(px_diff <= 9)
            self.assertTrue(rv_diff <= 0.04)
Exemple #21
0
    def test_slalib_hip_fk524(self):
        """convertv6(x,s1=6,s2=5) + PM <=> SLALIB FK5-FK4 (fk524) HIP"""
        v6l = []
        for r, d, pa, pd, px in zip(self.hip_tab['raj2'],
                                    self.hip_tab['decj2'], self.hip_tab['pma'],
                                    self.hip_tab['pmd'], self.hip_tab['px']):
            r = tpm.d2r(r)
            d = tpm.d2r(d)
            # Milli-arcsec / Jul. yr to milli-arcsec per Jul. century.
            pma = pa / math.cos(d) / 1000.0 * 100.0
            pmd = pd / 1000.0 * 100.0
            px /= 1000.0  # mili-arcsec to arc-sec.
            v6 = tpm.cat2v6(r, d, pma, pmd, px, 0.0, tpm.CJ)
            v6l.append(v6)

        v6o = convert.convertv6(v6l, s1=6, s2=5)
        v6o = convert.proper_motion(v6o, tpm.B1950, tpm.J2000)
        cat = (tpm.v62cat(v, tpm.CB) for v in v6o)

        tab = get_sla("slalib_hip_fk524.txt")

        for v, s in zip(cat, tab):
            ra = math.degrees(tpm.r2r(v['alpha']))
            dec = math.degrees(v['delta'])
            # arc-sec/cent. to milli-arcsec/trop. year.
            pma = v['pma'] * 1000.0 / 100.0
            pmd = v['pmd'] * 1000.0 / 100.0
            px = v['px'] * 1e3  # arc-sec to milli-arcsec

            ra_diff = abs(ra - s[0]) * 3600.0
            dec_diff = abs(dec - s[1]) * 3600.0
            px_diff = abs(px - s[2])
            pma_diff = abs(pma - s[3])
            pmd_diff = abs(pmd - s[4])
            rv_diff = abs(v['rv'] - s[5])

            self.assertTrue(ra_diff <= 0.001)
            self.assertTrue(dec_diff <= 0.001)
            self.assertTrue(pma_diff <= 0.001)
            self.assertTrue(pmd_diff <= 0.001)
            self.assertTrue(px_diff <= 9)
            self.assertTrue(rv_diff <= 0.04)
Exemple #22
0
    def test_slalib_hip_fk425(self):
        """convertv6(v6,s1=5,s2=6) + PM <=> SLALIB FK4-FK5 (fk425) HIP."""
        sla_tabb = get_sla("slalib_hip_fk524.txt")
        tab = get_sla("slalib_hip_fk524_fk425.txt")

        v6l = []
        for r, d, px, pa, pd, rv in sla_tabb:
            r = tpm.d2r(r)
            d = tpm.d2r(d)
            # Milli-arcsec / Trop. yr to arcsec per Trop. century.
            pma = pa / 1000.0 * 100.0
            pmd = pd / 1000.0 * 100.0
            px /= 1000.0  # mili-arcsec to arc-sec.
            v6 = tpm.cat2v6(r, d, pma, pmd, px, rv, tpm.CB)
            v6l.append(v6)

        v6o = convert.convertv6(v6l, s1=5, s2=6, epoch=tpm.B1950)
        v6o = convert.proper_motion(v6o, tpm.J2000, tpm.B1950)
        cat = (tpm.v62cat(v, tpm.CJ) for v in v6o)

        for v, s in zip(cat, tab):
            ra = math.degrees(tpm.r2r(v['alpha']))
            dec = math.degrees(v['delta'])
            # arc-sec/cent. to milli-arcsec/Jul. year.
            pma = v['pma'] * 1000.0 / 100.0
            pmd = v['pmd'] * 1000.0 / 100.0
            px = v['px'] * 1e3  # arc-sec to milli-arcsec

            ra_diff = abs(ra - s[0]) * 3600.0
            dec_diff = abs(dec - s[1]) * 3600.0
            px_diff = abs(px - s[2])
            pma_diff = abs(pma - s[3])
            pmd_diff = abs(pmd - s[4])
            rv_diff = abs(v['rv'] - s[5])

            self.assertTrue(ra_diff <= 0.001)
            self.assertTrue(dec_diff <= 0.001)
            self.assertTrue(pma_diff <= 0.001)
            self.assertTrue(pmd_diff <= 0.001)
            self.assertTrue(px_diff <= 9)
            self.assertTrue(rv_diff <= 0.04)
Exemple #23
0
    def test_slalib_hip_fk425(self):
        """convertv6(v6,s1=5,s2=6) + PM <=> SLALIB FK4-FK5 (fk425) HIP."""
        sla_tabb = get_sla("slalib_hip_fk524.txt")
        tab = get_sla("slalib_hip_fk524_fk425.txt")

        v6l = []
        for r, d, px, pa, pd, rv in sla_tabb:
            r = tpm.d2r(r)
            d = tpm.d2r(d)
            # Milli-arcsec / Trop. yr to arcsec per Trop. century.
            pma = pa / 1000.0 * 100.0
            pmd = pd / 1000.0 * 100.0
            px /= 1000.0  # mili-arcsec to arc-sec.
            v6 = tpm.cat2v6(r, d, pma, pmd, px, rv, tpm.CB)
            v6l.append(v6)

        v6o = convert.convertv6(v6l, s1=5, s2=6, epoch=tpm.B1950)
        v6o = convert.proper_motion(v6o, tpm.J2000, tpm.B1950)
        cat = (tpm.v62cat(v, tpm.CJ) for v in v6o)

        for v, s in zip(cat, tab):
            ra = math.degrees(tpm.r2r(v['alpha']))
            dec = math.degrees(v['delta'])
            # arc-sec/cent. to milli-arcsec/Jul. year.
            pma = v['pma'] * 1000.0 / 100.0
            pmd = v['pmd'] * 1000.0 / 100.0
            px = v['px'] * 1e3  # arc-sec to milli-arcsec

            ra_diff = abs(ra - s[0]) * 3600.0
            dec_diff = abs(dec - s[1]) * 3600.0
            px_diff = abs(px - s[2])
            pma_diff = abs(pma - s[3])
            pmd_diff = abs(pmd - s[4])
            rv_diff = abs(v['rv'] - s[5])

            self.assertTrue(ra_diff <= 0.001)
            self.assertTrue(dec_diff <= 0.001)
            self.assertTrue(pma_diff <= 0.001)
            self.assertTrue(pmd_diff <= 0.001)
            self.assertTrue(px_diff <= 9)
            self.assertTrue(rv_diff <= 0.04)
Exemple #24
0
    def test_slalib_hip_fk52appradec(self):
        """convert(x, s1=6, s2=11) + PM => SLALIB sla_map HIP."""
        tab = get_sla("slalib_hip_map.txt")

        v6l = []
        for r, d, pa, pd, px in zip(self.hip_tab['raj2'],
                                    self.hip_tab['decj2'], self.hip_tab['pma'],
                                    self.hip_tab['pmd'], self.hip_tab['px']):
            r = tpm.d2r(r)
            d = tpm.d2r(d)
            # Milli-arcsec / Jul. yr to arcsec per Jul. century.
            pma = pa / math.cos(d) / 1000.0 * 100.0
            pmd = pd / 1000.0 * 100.0
            px /= 1000.0  # mili-arcsec to arc-sec.
            v6 = tpm.cat2v6(r, d, pma, pmd, px, 0.0, tpm.CJ)
            v6l.append(v6)

        utc = tpm.gcal2j(2010, 1, 1) - 0.5  # midnight
        tt = tpm.utc2tdb(utc)

        v6o = convert.proper_motion(v6l, tt, tpm.J2000)
        v6o = convert.convertv6(v6o,
                                s1=6,
                                s2=11,
                                epoch=tt,
                                equinox=tpm.J2000,
                                utc=utc,
                                delta_at=tpm.delta_AT(utc))

        cat = (tpm.v62cat(v, tpm.CJ) for v in v6o)

        l = len(v6o)

        for v, s, i in zip(cat, tab, range(l)):
            ra = math.degrees(tpm.r2r(v['alpha']))
            dec = math.degrees(v['delta'])

            ra_diff = abs(ra - s[0]) * 3600.0
            dec_diff = abs(dec - s[1]) * 3600.0
            self.assertTrue(ra_diff <= 0.33)
            self.assertTrue(dec_diff <= 0.03)
Exemple #25
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 #26
0
    def test_slalib_hip_fk52appradec(self):
        """convert(x, s1=6, s2=11) + PM => SLALIB sla_map HIP."""
        tab = get_sla("slalib_hip_map.txt")

        v6l = []
        for r, d, pa, pd, px in zip(self.hip_tab['raj2'],
                                    self.hip_tab['decj2'],
                                    self.hip_tab['pma'],
                                    self.hip_tab['pmd'],
                                    self.hip_tab['px']):
            r = tpm.d2r(r)
            d = tpm.d2r(d)
            # Milli-arcsec / Jul. yr to arcsec per Jul. century.
            pma = pa / math.cos(d) / 1000.0 * 100.0
            pmd = pd / 1000.0 * 100.0
            px /= 1000.0  # mili-arcsec to arc-sec.
            v6 = tpm.cat2v6(r, d, pma, pmd, px, 0.0, tpm.CJ)
            v6l.append(v6)

        utc = tpm.gcal2j(2010, 1, 1) - 0.5  # midnight
        tt = tpm.utc2tdb(utc)

        v6o = convert.proper_motion(v6l, tt, tpm.J2000)
        v6o = convert.convertv6(v6o, s1=6, s2=11, epoch=tt,
                                equinox=tpm.J2000,
                                utc=utc, delta_at=tpm.delta_AT(utc))

        cat = (tpm.v62cat(v, tpm.CJ) for v in v6o)

        l = len(v6o)

        for v, s, i in zip(cat, tab, range(l)):
            ra = math.degrees(tpm.r2r(v['alpha']))
            dec = math.degrees(v['delta'])

            ra_diff = abs(ra - s[0]) * 3600.0
            dec_diff = abs(dec - s[1]) * 3600.0
            self.assertTrue(ra_diff <= 0.33)
            self.assertTrue(dec_diff <= 0.03)
Exemple #27
0
    def test_slalib_hip_ecleq(self):
        """convertv6(x,s1=3,s=6) <=> SLALIB ecleq HIP"""
        v6l = []
        for r, d in zip(self.hip_tab['elon2'], self.hip_tab['elat2']):
            v6 = tpm.V6S()
            v6.r = 1e9
            v6.alpha = tpm.d2r(r)
            v6.delta = tpm.d2r(d)
            v6l.append(v6.s2c())

        v6o = convert.convertv6(v6l, s1=3, s2=6)
        cat = (tpm.v62cat(v, tpm.CJ) for v in v6o)

        tab = get_sla("slalib_hip_ecleq.txt")

        for v, s in zip(cat, tab):
            ra = math.degrees(tpm.r2r(v['alpha']))
            dec = math.degrees(v['delta'])

            ra_diff = abs(ra - s[0]) * 3600.0
            dec_diff = abs(dec - s[1]) * 3600.0
            self.assertTrue(ra_diff <= 0.001)
            self.assertTrue(dec_diff <= 0.001)
Exemple #28
0
    def test_slalib_hip_ecleq(self):
        """convertv6(x,s1=3,s=6) <=> SLALIB ecleq HIP"""
        v6l = []
        for r, d in zip(self.hip_tab['elon2'], self.hip_tab['elat2']):
            v6 = tpm.V6S()
            v6.r = 1e9
            v6.alpha = tpm.d2r(r)
            v6.delta = tpm.d2r(d)
            v6l.append(v6.s2c())

        v6o = convert.convertv6(v6l, s1=3, s2=6)
        cat = (tpm.v62cat(v, tpm.CJ) for v in v6o)

        tab = get_sla("slalib_hip_ecleq.txt")

        for v, s in zip(cat, tab):
            ra = math.degrees(tpm.r2r(v['alpha']))
            dec = math.degrees(v['delta'])

            ra_diff = abs(ra - s[0]) * 3600.0
            dec_diff = abs(dec - s[1]) * 3600.0
            self.assertTrue(ra_diff <= 0.001)
            self.assertTrue(dec_diff <= 0.001)
Exemple #29
0
    def test_slalib_nwdfs_eqecl(self):
        """convertv6(x,s1=6,s=3) <=> SLALIB eqecl NDWFS"""
        v6l = []
        for r, d in zip(self.ndwfs_tab['raj2'], self.ndwfs_tab['decj2']):
            v6 = tpm.V6S()
            v6.r = 1e9
            v6.alpha = tpm.d2r(r)
            v6.delta = tpm.d2r(d)
            v6l.append(v6.s2c())

        v6o = convert.convertv6(v6l, s1=6, s2=3)
        cat = (tpm.v62cat(v, tpm.CJ) for v in v6o)

        tab = get_sla("slalib_ndwfs_eqecl.txt")

        for v, s in zip(cat, tab):
            ra = math.degrees(tpm.r2r(v['alpha']))
            dec = math.degrees(v['delta'])

            ra_diff = abs(ra - s[0]) * 3600.0
            dec_diff = abs(dec - s[1]) * 3600.0
            self.assertTrue(ra_diff <= 0.001)
            self.assertTrue(dec_diff <= 0.001)
Exemple #30
0
    def test_slalib_nwdfs_eqecl(self):
        """convertv6(x,s1=6,s=3) <=> SLALIB eqecl NDWFS"""
        v6l = []
        for r, d in zip(self.ndwfs_tab['raj2'], self.ndwfs_tab['decj2']):
            v6 = tpm.V6S()
            v6.r = 1e9
            v6.alpha = tpm.d2r(r)
            v6.delta = tpm.d2r(d)
            v6l.append(v6.s2c())

        v6o = convert.convertv6(v6l, s1=6, s2=3)
        cat = (tpm.v62cat(v, tpm.CJ) for v in v6o)

        tab = get_sla("slalib_ndwfs_eqecl.txt")

        for v, s in zip(cat, tab):
            ra = math.degrees(tpm.r2r(v['alpha']))
            dec = math.degrees(v['delta'])

            ra_diff = abs(ra - s[0]) * 3600.0
            dec_diff = abs(dec - s[1]) * 3600.0
            self.assertTrue(ra_diff <= 0.001 )
            self.assertTrue(dec_diff <= 0.001)
Exemple #31
0
def hipfk524():
    """Print summary of FK5-FK4 comparison with SLALIB fk524 (HIP)."""
    hip_tab = get_hipdata()
    sla_tab = get_sla("slalib_hip_fk524.txt")
    rv = np.zeros((len(hip_tab['px'], )))

    v6l = convert.cat2v6(hip_tab['raj2'], hip_tab['decj2'], hip_tab['pma'],
                         hip_tab['pmd'], hip_tab['px'], rv, tpm.CJ)

    v6o = convert.convertv6(v6l, s1=6, s2=5, epoch=tpm.J2000)
    v6o = convert.proper_motion(v6o, tpm.B1950, tpm.J2000)
    cat = (tpm.v62cat(v, tpm.CB) for v in v6o)
    d = cat2array(cat)

    ra_diff = np.degrees(d['alpha']) - sla_tab[:, 0]
    ra_diff *= 3600.0
    dec_diff = np.degrees(d['delta']) - sla_tab[:, 1]
    dec_diff *= 3600.0
    px_diff = d['px'] * 1000.0 - sla_tab[:, 2]
    pma_diff = d['pma'] * 1000.0 / 100.0 - sla_tab[:, 3]
    pmd_diff = d['pmd'] * 1000.0 / 100.0 - sla_tab[:, 4]
    rv_diff = d['rv'] - sla_tab[:, 5]

    fs = "{0} {1}\n" + \
        "Min:  {2:.4f} Max: {3:.4f} \nMean: {4:.4f} Std: {5:.4f}\n"
    x = [
        stats.describe(np.abs(i))
        for i in [ra_diff, dec_diff, px_diff, pma_diff, pmd_diff, rv_diff]
    ]
    print("Comparison with SLALIB fk524 using HIPPARCOS data.")
    for name, unit, s in zip(
        ["ra_diff", "dec_diff", "px_diff", "pma_diff", "pmd_diff", "rv_diff"],
        [
            "arsec", "arcsec", "milliarcsec", "milli-arsec/trop. yr",
            "milli-arcsec/trop. yr", "km/s"
        ], x):
        print(fs.format(name, unit, s[1][0], s[1][1], s[2], s[3]**0.5))
Exemple #32
0
    def test_slalib_nwdfs_fk45z(self):
        """convertv6(x,s1=5,s=6) <=> SLALIB FK4-FK5 (fk45z) NDWFS"""
        v6l = []
        for r, d in zip(self.ndwfs_tab['rab1'], self.ndwfs_tab['decb1']):
            v6 = tpm.V6S()
            v6.r = 1e9
            v6.alpha = tpm.d2r(r)
            v6.delta = tpm.d2r(d)
            v6l.append(v6.s2c())

        v6o = convert.convertv6(v6l, s1=5, s2=6)
        v6o = convert.proper_motion(v6o, tpm.J2000, tpm.B1950)
        cat = (tpm.v62cat(v, tpm.CJ) for v in v6o)

        tab = get_sla("slalib_ndwfs_fk45z.txt")

        for v, s in zip(cat, tab):
            ra = math.degrees(tpm.r2r(v['alpha']))
            dec = math.degrees(v['delta'])

            ra_diff = abs(ra - s[0]) * 3600.0
            dec_diff = abs(dec - s[1]) * 3600.0
            self.assertTrue(ra_diff <= 0.5)
            self.assertTrue(dec_diff <= 0.5)
Exemple #33
0
    def test_slalib_nwdfs_fk45z(self):
        """convertv6(x,s1=5,s=6) <=> SLALIB FK4-FK5 (fk45z) NDWFS"""
        v6l = []
        for r, d in zip(self.ndwfs_tab['rab1'], self.ndwfs_tab['decb1']):
            v6 = tpm.V6S()
            v6.r = 1e9
            v6.alpha = tpm.d2r(r)
            v6.delta = tpm.d2r(d)
            v6l.append(v6.s2c())

        v6o = convert.convertv6(v6l, s1=5, s2=6)
        v6o = convert.proper_motion(v6o, tpm.J2000, tpm.B1950)
        cat = (tpm.v62cat(v, tpm.CJ) for v in v6o)

        tab = get_sla("slalib_ndwfs_fk45z.txt")

        for v, s in zip(cat, tab):
            ra = math.degrees(tpm.r2r(v['alpha']))
            dec = math.degrees(v['delta'])

            ra_diff = abs(ra - s[0]) * 3600.0
            dec_diff = abs(dec - s[1]) * 3600.0
            self.assertTrue(ra_diff <= 0.5 )
            self.assertTrue(dec_diff <= 0.5)
Exemple #34
0
    def test_slalib_hip_fk52obs(self):
        """convert(x, s1=6, s2=19) (+ s2=20) + PM => SLALIB sla_aop HIP."""
        tab = get_sla("slalib_hip_aop.txt")
        az_sla = []
        zd_sla = []
        ha_sla = []
        dec_sla = []
        ra_sla = []
        for i in tab:
            # Convert longitude values to 0 - 360
            az_sla.append(i[0] if i[0] >= 0 else i[0] + 360.0)
            zd_sla.append(i[1])
            ha_sla.append(i[2] if i[2] >= 0 else i[2] + 360.0)
            dec_sla.append(i[3])
            ra_sla.append(i[4] if i[4] >= 0 else i[4] + 360.0)

        v6l = []
        for r, d, pa, pd, px in zip(self.hip_tab['raj2'],
                                    self.hip_tab['decj2'], self.hip_tab['pma'],
                                    self.hip_tab['pmd'], self.hip_tab['px']):
            r = tpm.d2r(r)
            d = tpm.d2r(d)
            # Milli-arcsec / Jul. yr to arcsec per Jul. century.
            pma = pa / math.cos(d) / 1000.0 * 100.0
            pmd = pd / 1000.0 * 100.0
            px /= 1000.0  # mili-arcsec to arc-sec.
            v6 = tpm.cat2v6(r, d, pma, pmd, px, 0.0, tpm.CJ)
            v6l.append(v6)

        utc = tpm.gcal2j(2010, 1, 1) - 0.5  # midnight
        tt = tpm.utc2tdb(utc)

        # Convert to Az-EL.
        v6o = convert.proper_motion(v6l, tt, tpm.J2000)
        v6o = convert.convertv6(v6o, s1=6, s2=19, utc=utc)

        cat = (tpm.v62cat(v, tpm.CJ) for v in v6o)

        az = []
        zd = []
        for i in cat:
            az.append(tpm.r2d(i['alpha']))
            zd.append(90.0 - tpm.r2d(i['delta']))

        # Convert Az-El to HA-Dec.
        v6o = convert.convertv6(v6o, s1=19, s2=20, utc=utc)

        cat = (tpm.v62cat(v, tpm.CJ) for v in v6o)

        # Find LAST.
        tstate = tpm.TSTATE()
        tpm.tpm_data(tstate, tpm.TPM_INIT)
        tstate.utc = utc
        tstate.delta_ut = tpm.delta_UT(utc)
        tstate.delta_at = tpm.delta_AT(utc)
        tstate.lon = tpm.d2r(-111.598333)
        tstate.lat = tpm.d2r(31.956389)
        tpm.tpm_data(tstate, tpm.TPM_ALL)
        last = tpm.r2d(tstate.last)

        ha = []
        dec = []
        ra = []
        for i in cat:
            ha.append(tpm.r2d(i['alpha']))
            dec.append(tpm.r2d(i['delta']))
            # RA = LAST - HA and convert to 0 - 360.
            x = last - tpm.r2d(i['alpha'])
            ra.append(x if x >= 0 else x + 360.0)

        for i in range(len(az)):
            # Test only the coordinates with ZD < 75.0.
            if zd[i] < 75.0:
                self.assertTrue(abs(az[i] - az_sla[i]) * 3600.0 <= 0.25)
                self.assertTrue(abs(zd[i] - zd_sla[i]) * 3600.0 <= 0.04)
                self.assertTrue(abs(ha[i] - ha_sla[i]) * 3600.0 <= 0.28)
                self.assertTrue(abs(dec[i] - dec_sla[i]) * 3600.0 <= 0.04)
                self.assertTrue(abs(ra[i] - ra_sla[i]) * 3600.0 <= 0.33)
Exemple #35
0
tab = np.loadtxt(os.path.join(testdatadir, "slalib_hip_map.txt"))
rv = np.zeros_like(hip_tab['px'])

# Create V6C array from catalog data.
v6l = convert.cat2v6(hip_tab['raj2'], hip_tab['decj2'], hip_tab['pma'],
                     hip_tab['pmd'], hip_tab['px'], rv, tpm.CJ)

# UTC and TDB for mid-night of 2010/1/1.
utc = tpm.gcal2j(2010, 1, 1) - 0.5  # midnight
tt = tpm.utc2tdb(utc)

# Apply proper motion from J2000 to date.
v6o = convert.proper_motion(v6l, tt, tpm.J2000)

# Convert from mean equinox J2000 to true equinox and epoch of date.
v6o = convert.convertv6(v6o, s1=6, s2=11, utc=utc)

# Convert to Numpy rec-array.
cat = convert.v62cat(v6o, tpm.CJ)
cat = cat2array(cat)

ra_diff = np.degrees(cat['alpha']) - tab[:, 0]
ra_diff = np.abs(ra_diff) * 3600.0
dec_diff = np.degrees(cat['delta']) - tab[:, 1]
dec_diff = np.abs(dec_diff) * 3600.0

print("Comparison with SLALIB map using HIPPARCOS data.")
fs = "{0} {1}\n" + \
    "Min:  {2:.4f} Max: {3:.4f} \nMean: {4:.4f} Std: {5:.4f}\n"
x = stats.describe(ra_diff)
print(fs.format("ra_diff", "arcsec", x[1][0], x[1][1], x[2], x[3]**0.5))
Exemple #36
0
    def test_slalib_hip_fk52obs(self):
        """convert(x, s1=6, s2=19) (+ s2=20) + PM => SLALIB sla_aop HIP."""
        tab = get_sla("slalib_hip_aop.txt")
        az_sla = []
        zd_sla = []
        ha_sla = []
        dec_sla = []
        ra_sla = []
        for i in tab:
            # Convert longitude values to 0 - 360
            az_sla.append(i[0] if i[0] >= 0 else i[0] + 360.0)
            zd_sla.append(i[1])
            ha_sla.append(i[2] if i[2] >= 0 else i[2] + 360.0)
            dec_sla.append(i[3])
            ra_sla.append(i[4] if i[4] >= 0 else i[4] + 360.0)

        v6l = []
        for r, d, pa, pd, px in zip(self.hip_tab['raj2'],
                                    self.hip_tab['decj2'],
                                    self.hip_tab['pma'],
                                    self.hip_tab['pmd'],
                                    self.hip_tab['px']):
            r = tpm.d2r(r)
            d = tpm.d2r(d)
            # Milli-arcsec / Jul. yr to arcsec per Jul. century.
            pma = pa / math.cos(d) / 1000.0 * 100.0
            pmd = pd / 1000.0 * 100.0
            px /= 1000.0  # mili-arcsec to arc-sec.
            v6 = tpm.cat2v6(r, d, pma, pmd, px, 0.0, tpm.CJ)
            v6l.append(v6)

        utc = tpm.gcal2j(2010, 1, 1) - 0.5  # midnight
        tt = tpm.utc2tdb(utc)

        # Convert to Az-EL.
        v6o = convert.proper_motion(v6l, tt, tpm.J2000)
        v6o = convert.convertv6(v6o, s1=6, s2=19, utc=utc)

        cat = (tpm.v62cat(v, tpm.CJ) for v in v6o)

        az = []
        zd = []
        for i in cat:
            az.append(tpm.r2d(i['alpha']))
            zd.append(90.0 - tpm.r2d(i['delta']))

        # Convert Az-El to HA-Dec.
        v6o = convert.convertv6(v6o, s1=19, s2=20, utc=utc)

        cat = (tpm.v62cat(v, tpm.CJ) for v in v6o)

        # Find LAST.
        tstate = tpm.TSTATE()
        tpm.tpm_data(tstate, tpm.TPM_INIT)
        tstate.utc = utc
        tstate.delta_ut = tpm.delta_UT(utc)
        tstate.delta_at = tpm.delta_AT(utc)
        tstate.lon = tpm.d2r(-111.598333)
        tstate.lat = tpm.d2r(31.956389)
        tpm.tpm_data(tstate, tpm.TPM_ALL)
        last = tpm.r2d(tstate.last)

        ha = []
        dec = []
        ra = []
        for i in cat:
            ha.append(tpm.r2d(i['alpha']))
            dec.append(tpm.r2d(i['delta']))
            # RA = LAST - HA and convert to 0 - 360.
            x = last - tpm.r2d(i['alpha'])
            ra.append(x if x >= 0  else x + 360.0)

        for i in range(len(az)):
            # Test only the coordinates with ZD < 75.0.
            if zd[i] < 75.0:
                self.assertTrue(abs(az[i] - az_sla[i]) * 3600.0 <= 0.25)
                self.assertTrue(abs(zd[i] - zd_sla[i]) * 3600.0 <= 0.04)
                self.assertTrue(abs(ha[i] - ha_sla[i]) * 3600.0 <= 0.28)
                self.assertTrue(abs(dec[i] - dec_sla[i]) * 3600.0 <= 0.04)
                self.assertTrue(abs(ra[i] - ra_sla[i]) * 3600.0 <= 0.33)
Exemple #37
0
ra_sla = np.array([i if i >= 0 else i + 360.0 for i in tab[:, 4]])

# Dummy radial velocity.
rv = np.zeros_like(hip_tab['px'])

# Create array of TPM V6C vectors.
v6l = convert.cat2v6(hip_tab['raj2'], hip_tab['decj2'], hip_tab['pma'],
                     hip_tab['pmd'], hip_tab['px'], rv, tpm.CJ)

# Time for the observations.
utc = tpm.gcal2j(2010, 1, 1) - 0.5  # midnight
tt = tpm.utc2tdb(utc)

# Convert J2000 RA, DEC to Az, EL and ZD at given UTC.
v6o = convert.proper_motion(v6l, tt, tpm.J2000)
v619 = convert.convertv6(v6o, s1=6, s2=19, utc=utc)
cat19 = convert.v62cat(v619, tpm.CJ)
cat19 = cat2array(cat19)

az = np.degrees(cat19['alpha'])
el = np.degrees(cat19['delta'])
zd = 90.0 - el
# Keep only those objects with ZD < 75.0 degrees.
indx = np.where(zd < 75.0)

# Difference in AZ and ZD, using TPM and SLALIB.
az_diff = np.abs(az[indx] - az_sla[indx]) * 3600.0
zd_diff = np.abs(zd[indx] - zd_sla[indx]) * 3600.0

# Az, El to HA and Dec.
v620 = convert.convertv6(v619, s1=19, s2=20, utc=utc)
Exemple #38
0
alt = 35800.26  #m
ut = 2455822.20000367  #julian date

for i in range(0, 1):
    v6 = convert.cat2v6(alpha=az,
                        delta=el,
                        pma=0.0,
                        pmd=0.0,
                        px=0.0,
                        rv=0,
                        C=tpm.CJ)
    start_clock = time.clock()
    v6c = convert.convertv6(v6=v6,
                            utc=ut,
                            s1=tpm.TPM_S19,
                            s2=tpm.TPM_S07,
                            epoch=tpm.J2000,
                            equinox=tpm.J2000,
                            lon=lon,
                            lat=lat,
                            alt=alt,
                            xpole=0.0,
                            ypole=0.0,
                            T=273.15,
                            P=1013.25,
                            H=0.0,
                            wavelength=19986.16386)
    print("TIME[%d]:%.2g s" % (i, time.clock() - start_clock))
    cat = convert.v62cat(v6c)
    print(np.degrees([cat['alpha'], cat['delta']]))
import datetime
import time
import numpy as np

from pytpm import convert, tpm 

az = 3.30084818 #rad
el = 0.94610742 #rad
lat = 34.64 #deg
lon = -103.7 #deg
alt = 35800.26 #m
ut = 2455822.20000367 #julian date

for i in range(0, 1):
    v6 = convert.cat2v6(alpha = az, delta = el, pma=0.0, pmd=0.0, px=0.0, rv=0, C=tpm.CJ)
    start_clock = time.clock()
    v6c = convert.convertv6(v6=v6,
        utc=ut,
        s1=tpm.TPM_S19, s2=tpm.TPM_S07,
        epoch=tpm.J2000, equinox=tpm.J2000,
        lon=lon, lat=lat, alt=alt,
        xpole=0.0, ypole=0.0,
        T=273.15, P=1013.25, H=0.0, wavelength=19986.16386)
    print("TIME[%d]:%.2g s" % (i, time.clock() - start_clock))
    cat = convert.v62cat(v6c)
    print(np.degrees([cat['alpha'], cat['delta']]))
Exemple #40
0
tab = np.loadtxt(os.path.join(testdatadir, "slalib_hip_map.txt"))
rv = np.zeros_like(hip_tab['px'])

# Create V6C array from catalog data.
v6l = convert.cat2v6(hip_tab['raj2'], hip_tab['decj2'], hip_tab['pma'],
                     hip_tab['pmd'], hip_tab['px'], rv, tpm.CJ)

# UTC and TDB for mid-night of 2010/1/1.
utc = tpm.gcal2j(2010, 1, 1) - 0.5  # midnight
tt = tpm.utc2tdb(utc)

# Apply proper motion from J2000 to date.
v6o = convert.proper_motion(v6l, tt, tpm.J2000)

# Convert from mean equinox J2000 to true equinox and epoch of date.
v6o = convert.convertv6(v6o, s1=6, s2=11, utc=utc)

# Convert to Numpy rec-array.
cat = convert.v62cat(v6o, tpm.CJ)
cat = cat2array(cat)

ra_diff = np.degrees(cat['alpha']) - tab[:, 0]
ra_diff = np.abs(ra_diff) * 3600.0
dec_diff = np.degrees(cat['delta']) - tab[:, 1]
dec_diff = np.abs(dec_diff) * 3600.0

print("Comparison with SLALIB map using HIPPARCOS data.")
fs = "{0} {1}\n" + \
    "Min:  {2:.4f} Max: {3:.4f} \nMean: {4:.4f} Std: {5:.4f}\n"
x = stats.describe(ra_diff)
print(fs.format("ra_diff", "arcsec", x[1][0], x[1][1], x[2], x[3] ** 0.5))
Exemple #41
0
ra_sla = np.array([i if i >= 0 else i + 360.0 for i in tab[:, 4]])

# Dummy radial velocity.
rv = np.zeros_like(hip_tab['px'])

# Create array of TPM V6C vectors.
v6l = convert.cat2v6(hip_tab['raj2'], hip_tab['decj2'], hip_tab['pma'],
                     hip_tab['pmd'], hip_tab['px'], rv, tpm.CJ)

# Time for the observations.
utc = tpm.gcal2j(2010, 1, 1) - 0.5  # midnight
tt = tpm.utc2tdb(utc)

# Convert J2000 RA, DEC to Az, EL and ZD at given UTC.
v6o = convert.proper_motion(v6l, tt, tpm.J2000)
v619 = convert.convertv6(v6o, s1=6, s2=19, utc=utc)
cat19 = convert.v62cat(v619, tpm.CJ)
cat19 = cat2array(cat19)

az = np.degrees(cat19['alpha'])
el = np.degrees(cat19['delta'])
zd = 90.0 - el
# Keep only those objects with ZD < 75.0 degrees.
indx = np.where(zd < 75.0)

# Difference in AZ and ZD, using TPM and SLALIB.
az_diff = np.abs(az[indx] - az_sla[indx]) * 3600.0
zd_diff = np.abs(zd[indx] - zd_sla[indx]) * 3600.0

# Az, El to HA and Dec.
v620 = convert.convertv6(v619, s1=19, s2=20, utc=utc)