空間運動会計

♪the SkyCoord オブジェクトは、ソースの位置を更新し、ソースの空間的動きを与え、新しい位置の時間(または座標の現在の時間と新しい時間との間の差)を評価することをサポートする。これは使用です apply_space_motion() 方法です。

例を引く

まず私たちは SkyCoord 指定のある obstime **

>>> import astropy.units as u
>>> from astropy.time import Time
>>> from astropy.coordinates import SkyCoord
>>> c = SkyCoord(l=10*u.degree, b=45*u.degree, distance=100*u.pc,
...              pm_l_cosb=34*u.mas/u.yr, pm_b=-117*u.mas/u.yr,
...              frame='galactic',
...              obstime=Time('1988-12-18 05:11:23.5'))

空間運動を考慮して、私たちは今他の時間に位置を見つけることができる。観測時間と所要時間の時間差を指定することができる:

>>> c.apply_space_motion(dt=10. * u.year) 
<SkyCoord (Galactic): (l, b, distance) in (deg, deg, pc)
    ( 10.00013356,  44.999675,  99.99999994)
 (pm_l_cosb, pm_b, radial_velocity) in (mas / yr, mas / yr, km / s)
    ( 33.99980714, -117.00005604,  0.00034117)>
>>> c.apply_space_motion(dt=-10. * u.year) 
<SkyCoord (Galactic): (l, b, distance) in (deg, deg, pc)
    ( 9.99986643,  45.000325,  100.00000006)
 (pm_l_cosb, pm_b, radial_velocity) in (mas / yr, mas / yr, km / s)
    ( 34.00019286, -116.99994395, -0.00034117)>

あるいは、以下の時間に評価職の新しい時間を指定することができます。

>>> c.apply_space_motion(new_obstime=Time('2017-12-18 01:12:07.3')) 
<SkyCoord (Galactic): (l, b, distance) in (deg, deg, pc)
    ( 10.00038732,  44.99905754,  99.99999985)
 (pm_l_cosb, pm_b, radial_velocity) in (mas / yr, mas / yr, km / s)
    ( 33.99944073, -117.00016248,  0.00098937)>

もし SkyCoord 対象は指定されていない径方向速度(RV)であり,RVを0とする.震源が慣性系で等速直線運動を行うと仮定し,震源の新たな位置を決定する。これが超えているので、より複雑な進化(例えば、非慣性系またはより複雑な進化)を支持する計画はありません。 astropy コアパッケージ(様々な付属パケットの範囲内にある可能性が高いにもかかわらず)。

例:速度を用いて異なる暦の空位置を計算する.

この例では Gaia TGAS 2 MASSが近くの恒星を観測した日に天体測定を行い,震源の空位置を計算した。TGAS天体測定は参考暦J 2015.0で提供されたが、2 MASS測定は1990年代末に行われた。興味のある恒星については、2回測定した空の位置に有意差があるほど自分で十分に大きい。

ソースの以前の位置を計算した後,ソースと2 MASSスターを交差マッチングして計算を行う. Gaia この対像源の−2 MASS色。

注釈

この例は Gaia TGASと2 MASS星表です。以下の便利さと迅速さのために、データを含む辞書オブジェクトを作成しました。Astropy付属ソフトウェアパッケージを用いてデータを検索します astroquery 以下のクエリを使用します。

import astropy.coordinates as coord
import astropy.units as u
from astroquery.gaia import Gaia
from astroquery.vizier import Vizier

job = Gaia.launch_job("SELECT TOP 1 * FROM gaiadr1.tgas_source \
    WHERE parallax_error < 0.3  AND parallax > 5 AND pmra > 100 \
    ORDER BY random_index")
result_tgas = job.get_results()[0]

c_tgas = coord.SkyCoord(ra=result_tgas['ra'] * u.deg,
                        dec=result_tgas['dec'] * u.deg)
v = Vizier(columns=["**"], catalog="II/246/out")
result_2mass = v.query_region(c, radius=1*u.arcmin)['II/246/out']

このソース関連列のTGASデータ(上記の注釈のクエリを参照):

>>> result_tgas = dict(ra=66.44280212823296,
...                    dec=-69.99366255906372,
...                    parallax=22.764078749733947,
...                    pmra=144.91354358297048,
...                    pmdec=5.445648092997134,
...                    ref_epoch=2015.0,
...                    phot_g_mean_mag=7.657174523348196)

上記の位置の周囲1角分以内のすべての震源の2 MASSデータ(上記の注釈のクエリを参照):

>>> result_2mass = dict(RAJ2000=[66.421970000000002, 66.433521999999996,
...                              66.420564999999996, 66.485068999999996,
...                              66.467928999999998, 66.440815000000001,
...                              66.440454000000003],
...                     DEJ2000=[-70.003722999999994, -69.990768000000003,
...                              -69.992255999999998, -69.994881000000007,
...                              -69.994926000000007, -69.993613999999994,
...                              -69.990836999999999],
...                     Jmag=[16.35, 13.663, 16.171, 16.184, 16.292,
...                           6.6420002, 12.275],
...                     Hmag=[15.879, 13.955, 15.154, 15.856, 15.642,
...                           6.3660002, 12.185],
...                     Kmag=[15.581, 14.238, 14.622, 15.398, 15.123,
...                           6.2839999, 12.106],
...                     Date=['1998-10-24', '1998-10-24', '1998-10-24',
...                           '1998-10-24', '1998-10-24', '1998-10-24',
...                           '1998-10-24'])

まず最初に SkyCoord オブジェクトはTGASディレクトリから提供された情報から削除する.注意してください obstime TGASディレクトリ(J 2015.0)で提供される参照紀元のオブジェクト:

>>> import astropy.units as u
>>> from astropy.coordinates import SkyCoord, Distance
>>> from astropy.time import Time
>>> c = SkyCoord(ra=result_tgas['ra'] * u.deg,
...              dec=result_tgas['dec'] * u.deg,
...              distance=Distance(parallax=result_tgas['parallax'] * u.mas),
...              pm_ra_cosdec=result_tgas['pmra'] * u.mas/u.yr,
...              pm_dec=result_tgas['pmdec'] * u.mas/u.yr,
...              obstime=Time(result_tgas['ref_epoch'], format='jyear'))

次に私たちは SkyCoord 2 MASSディレクトリからの空の位置を持つオブジェクト,および Time 2 MASS星表で提供される2 MASS観測日の対象(この領域中のデータについては,観測日は同じであるので,0番目の値のみをとる):

>>> catalog_2mass = SkyCoord(ra=result_2mass['RAJ2000'] * u.deg,
...                          dec=result_2mass['DEJ2000'] * u.deg)
>>> epoch_2mass = Time(result_2mass['Date'][0])

私たちは今使用することができます apply_space_motion() 方法:別の期間におけるTGASソースの位置を計算する。これは、直線運動のソースの位置を仮定するために、適切な動きおよび視差情報を使用して進化する:

>>> c_2mass_epoch = c.apply_space_motion(epoch_2mass)

現在はTGAS源の2 MASS暦元の座標があり、交差マッチングを行うことができます(なお参照 色分解、オフセット、ディレクトリマッチング、および関連機能 ):

>>> idx, sep, _ = c_2mass_epoch.match_to_catalog_sky(catalog_2mass) 
>>> sep[0].to_string() 
'0d00m00.2818s'
>>> idx 
array(5)

それによって見つかった最も近いソース距離は、2 MASSディレクトリ内の行リード5に対応する0.2818コーナー秒である。そして例えば計算することができます Gaia -2 MASS色::

>>> G = result_tgas['phot_g_mean_mag']
>>> J = result_2mass['Jmag'][idx] 
>>> K = result_2mass['Kmag'][idx] 
>>> G - J, G - K 
(1.0151743233481962, 1.3731746233481958)