コード例 #1
0
def test_convertManyLSRXYZUVWToAstrometry():
    return
    xyzuvw_bp_helio = np.array([-3.4, -16.4, -9.9, -11.0, -16.0, -9.1])
    xyzuvw_bp_lsr =  xyzuvw_bp_helio + XYZUVWSOLARNOW_pc
    astr_bp = [ # astrometry from wikiepdia
        86.82125, #deg
        -51.0664, #deg
        51.44,  #mas
        4.65,  #mas/yr
        83.1,   #mas/yr
        20.0      #km/s
    ]

    xyzuvw_lsrs = np.array([
        xyzuvw_bp_lsr,
        xyzuvw_bp_lsr,
        xyzuvw_bp_lsr,
    ])
    astros = np.array([
        astr_bp,
        astr_bp,
        astr_bp,
    ])
    calculated_astros = cc.convert_many_lsrxyzuvw2astrometry(xyzuvw_lsrs)
    assert np.allclose(calculated_astros, astros, rtol=1e-2)

    recalculated_xyzuvws = cc.convert_many_astrometry2lsrxyzuvw(calculated_astros)
    assert np.allclose(recalculated_xyzuvws, xyzuvw_lsrs)
コード例 #2
0
def test_convertManyLSRXYZUVWToAstrometry():
    return
    xyzuvw_bp_helio = np.array([-3.4, -16.4, -9.9, -11.0, -16.0, -9.1])
    xyzuvw_bp_lsr = xyzuvw_bp_helio + XYZUVWSOLARNOW_pc
    astr_bp = [  # astrometry from wikiepdia
        86.82125,  #deg
        -51.0664,  #deg
        51.44,  #mas
        4.65,  #mas/yr
        83.1,  #mas/yr
        20.0  #km/s
    ]

    xyzuvw_lsrs = np.array([
        xyzuvw_bp_lsr,
        xyzuvw_bp_lsr,
        xyzuvw_bp_lsr,
    ])
    astros = np.array([
        astr_bp,
        astr_bp,
        astr_bp,
    ])
    calculated_astros = cc.convert_many_lsrxyzuvw2astrometry(xyzuvw_lsrs)
    assert np.allclose(calculated_astros, astros, rtol=1e-2)

    recalculated_xyzuvws = cc.convert_many_astrometry2lsrxyzuvw(
        calculated_astros)
    assert np.allclose(recalculated_xyzuvws, xyzuvw_lsrs)
コード例 #3
0
def convertMeasurementsToCartesian(t=None, loadfile='', astr_dict=None):
    """
    Parameters
    ----------
    t : astropy Table with the following columns:
        name    : id or name of star
        radeg   : right ascension in degrees
        dedeg   : declination in degrees
        plx     : parallax in mas
        e_plx   : error of parallax in mas
        pmra    : proper motion in right ascension in mas/yr
        e_pmra  : error of pm in right ascension in mas/yr
        pmde    : proper motion in declination in mas/yr
        e_pmde  : error of pm in declination in mas/yr
        rv      : radial velocity in km/s
        e_rv    : error of radial velocity in km/s
    loadfile : (String {''})
        if t is None, try and load table from loadfile
    savefile : (String {''})
        if non-empty, will save a fits file with this filename. Appropriate
        file extension is applied if not there.

    Returns
    -------
    dict :
        t : astropy table
        xyzuvw : [nstars, 6] array
            space positions and velocities of each star
        xyzuvw_cov : [nstars, 6, 6] array
            covariance of positions and velocities of each star
    """
    while True:
        if t:
            nstars = len(t)
            astr_arr, err_arr = convertTableToArray(t)
            astr_covs = convertAstrErrsToCovs(err_arr)
            break
        if loadfile:
            t = Table.read(loadfile, format='ascii')
            nstars = len(t)
            astr_arr, err_arr = convertTableToArray(t)
            astr_covs = convertAstrErrsToCovs(err_arr)
            break
        if astr_dict:
            astr_arr = astr_dict['astr_mns']
            astr_covs = astr_dict['astr_covs']
            nstars = astr_arr.shape[0]
            break
        raise StandardError


    xyzuvw = coordinate.convert_many_astrometry2lsrxyzuvw(astr_arr, mas=True)
    xyzuvw_cov = transformAstrCovsToCartesian(astr_covs, astr_arr)

    xyzuvw_dict = {'table':t, 'xyzuvw':xyzuvw, 'xyzuvw_cov':xyzuvw_cov}

    return xyzuvw_dict
コード例 #4
0
def convertMeasurementsToCartesian(t=None, loadfile='', astr_dict=None):
    """
    Parameters
    ----------
    t : astropy Table with the following columns:
        name    : id or name of star
        radeg   : right ascension in degrees
        dedeg   : declination in degrees
        plx     : parallax in mas
        e_plx   : error of parallax in mas
        pmra    : proper motion in right ascension in mas/yr
        e_pmra  : error of pm in right ascension in mas/yr
        pmde    : proper motion in declination in mas/yr
        e_pmde  : error of pm in declination in mas/yr
        rv      : radial velocity in km/s
        e_rv    : error of radial velocity in km/s
    loadfile : (String {''})
        if t is None, try and load table from loadfile
    savefile : (String {''})
        if non-empty, will save a fits file with this filename. Appropriate
        file extension is applied if not there.

    Returns
    -------
    dict :
        t : astropy table
        xyzuvw : [nstars, 6] array
            space positions and velocities of each star
        xyzuvw_cov : [nstars, 6, 6] array
            covariance of positions and velocities of each star
    """
    while True:
        if t:
            # nstars = len(t)
            astr_arr, err_arr = convertTableToArray(t)
            astr_covs = convertAstrErrsToCovs(err_arr)
            break
        if loadfile:
            t = Table.read(loadfile, format='ascii')
            # nstars = len(t)
            astr_arr, err_arr = convertTableToArray(t)
            astr_covs = convertAstrErrsToCovs(err_arr)
            break
        if astr_dict:
            astr_arr = astr_dict['astr_mns']
            astr_covs = astr_dict['astr_covs']
            # nstars = astr_arr.shape[0]
            break
        raise StandardError

    xyzuvw = coordinate.convert_many_astrometry2lsrxyzuvw(astr_arr, mas=True)
    xyzuvw_cov = transformAstrCovsToCartesian(astr_covs, astr_arr)

    xyzuvw_dict = {'table': t, 'xyzuvw': xyzuvw, 'xyzuvw_cov': xyzuvw_cov}

    return xyzuvw_dict
コード例 #5
0
def convertGaiaMeansToXYZUVW(astr_file="all_rvs_w_ok_plx", server=False):
    """
    Generate mean XYZUVW for eac star in provided fits file (Gaia format)
    """
    if server:
        rdir = '/data/mash/tcrun/'
    else:
        rdir = '../data/'
    #gaia_astr_file = rdir+'all_rvs_w_ok_plx.fits'
    gaia_astr_file = rdir + astr_file + ".fits"
    hdul = fits.open(gaia_astr_file)  #, memmap=True)
    nstars = hdul[1].data.shape[0]
    means = np.zeros((nstars, 6))
    means[:, 0] = hdul[1].data['ra']
    means[:, 1] = hdul[1].data['dec']
    means[:, 2] = hdul[1].data['parallax']
    means[:, 3] = hdul[1].data['pmra']
    means[:, 4] = hdul[1].data['pmdec']
    means[:, 5] = hdul[1].data['radial_velocity']

    xyzuvw_mns = cc.convert_many_astrometry2lsrxyzuvw(means, mas=True)
    np.save(rdir + astr_file + "mean_xyzuvw.npy", xyzuvw_mns)
コード例 #6
0
ファイル: datatool.py プロジェクト: mikeireland/chronostar
def convertGaiaMeansToXYZUVW(astr_file="all_rvs_w_ok_plx", server=False):
    """
    Generate mean XYZUVW for eac star in provided fits file (Gaia format)
    """
    if server:
        rdir = '/data/mash/tcrun/'
    else:
        rdir = '../data/'
    #gaia_astr_file = rdir+'all_rvs_w_ok_plx.fits'
    gaia_astr_file = rdir+astr_file+".fits"
    hdul = fits.open(gaia_astr_file)#, memmap=True)
    nstars = hdul[1].data.shape[0]
    means = np.zeros((nstars,6))
    means[:,0] = hdul[1].data['ra']
    means[:,1] = hdul[1].data['dec']
    means[:,2] = hdul[1].data['parallax']
    means[:,3] = hdul[1].data['pmra']
    means[:,4] = hdul[1].data['pmdec']
    means[:,5] = hdul[1].data['radial_velocity']

    xyzuvw_mns = cc.convert_many_astrometry2lsrxyzuvw(means, mas=True)
    np.save(rdir + astr_file + "mean_xyzuvw.npy", xyzuvw_mns)
コード例 #7
0
                                          return_group=True,
                                          xyzuvw_savefile=xyzuvw_init_savefile,
                                          group_savefile=group_savefile)
logging.info("Age is: {} Myr".format(group.age))
xyzuvw_now_true = to.trace_many_cartesian_orbit(xyzuvw_init, np.array([0., group.age]))[:, 1]
#assert np.allclose(np.mean(xyzuvw_now, axis=0), group.mean, rtol=1e-1)
logging.info("Mean of initial stars: {}".format(np.mean(xyzuvw_init, axis=0)))
logging.info("Mean of final stars: {}".format(np.mean(xyzuvw_now_true, axis=0)))

star_table = chronostar.synthdata.measureXYZUVW(xyzuvw_now_true, 20.0, astro_savefile)
astr_arr, err_arr = ms.convertTableToArray(star_table)
nstars = len(star_table)

astr_covs = cv.convertAstroErrsToCovs(err_arr)

xyzuvw_now = cc.convert_many_astrometry2lsrxyzuvw(astr_arr, mas=True)
logging.info("Mean of retrieved stars: {}".format(np.mean(xyzuvw_now, axis=0)))

if plot_it:
    plt.clf()
    plt.plot(xyzuvw_now[:,1], xyzuvw_now[:,2], '.')
    chronostar.fitplotter.plotCovEllipse(group.generateEllipticalCovMatrix()[1:3, 1:3],
                      group.mean[1:3], with_line=True)

xyzuvw_covs = np.zeros((nstars,6,6))
for ix in range(nstars):
    xyzuvw_covs[ix] = tf.transform_covmatrix(
        astr_covs[ix], cc.convert_astrometry2lsrxyzuvw, astr_arr[ix], dim=6
    )

if plot_it:
コード例 #8
0
xyzuvw_now_true = to.trace_many_cartesian_orbit(xyzuvw_init,
                                                np.array([0., group.age]))[:,
                                                                           1]
#assert np.allclose(np.mean(xyzuvw_now, axis=0), group.mean, rtol=1e-1)
logging.info("Mean of initial stars: {}".format(np.mean(xyzuvw_init, axis=0)))
logging.info("Mean of final stars: {}".format(np.mean(xyzuvw_now_true,
                                                      axis=0)))

star_table = chronostar.synthdata.measureXYZUVW(xyzuvw_now_true, 20.0,
                                                astro_savefile)
astr_arr, err_arr = ms.convertTableToArray(star_table)
nstars = len(star_table)

astr_covs = cv.convertAstroErrsToCovs(err_arr)

xyzuvw_now = cc.convert_many_astrometry2lsrxyzuvw(astr_arr, mas=True)
logging.info("Mean of retrieved stars: {}".format(np.mean(xyzuvw_now, axis=0)))

if plot_it:
    plt.clf()
    plt.plot(xyzuvw_now[:, 1], xyzuvw_now[:, 2], '.')
    chronostar.fitplotter.plotCovEllipse(
        group.generateEllipticalCovMatrix()[1:3, 1:3],
        group.mean[1:3],
        with_line=True)

xyzuvw_covs = np.zeros((nstars, 6, 6))
for ix in range(nstars):
    xyzuvw_covs[ix] = tf.transform_covmatrix(astr_covs[ix],
                                             cc.convert_astrometry2lsrxyzuvw,
                                             astr_arr[ix],