ヒッパルコス&チコカタログを用いた天文教材作成備忘録 2008 Apr.04
(本稿の内容はもちろん無保証です.間違いなどがあればご連絡ください)

まずHipparcosデータ本体は国立天文台のftpサイト
ftp://dbc.nao.ac.jp/DBC/NASAADC/catalogs/1/1239
配下に
hip_main.dat.gz
として置いてある.これを展開すると

H|           1| |00 00 00.22|+01 05 20.4| 9.10| |H|000.00091185|+01.08901332| |   3.54|   -5.20|   -1.88|  1.32|  0.74|  1.39|  1.36|  0.81| 0.32|-0.07|-0.11|-0.24| 0.09|-0.01| 0.10|-0.01| 0.01| 0.34|  0| 0.74|     1| 9.643|0.020| 9.130|0.019| | 0.482|0.025|T|0.55|0.03|L| | 9.2043|0.0020|0.017| 87| | 9.17| 9.24|       | | | |          | |  | 1| | | |  |   |       |     |     |    |S| | |224700|B+00 5077 |          |          |0.66|F5          |S

という恐ろしい項数のデータとなる(これで星1個分,449カラムで1行).このデータ諸元は
ftp://dbc.nao.ac.jp/DBC/NASAADC/catalogs/1/1239/ReadMe
に詳細がある.

そこでまずここから,必要な項のみを抜き出す処理をする.

基 本的に色付けされているのがUNIXコマンド
まず
tr ' ' '_'  < hip_main.dat> h_m2.txt

で空白を_に変更(こうしないとawksubstrで文字数に応じた切り出しができない.FORTRANならread文,BASICなら mid$関数を用いるところ.Cは文字列操作が難しいのでお勧めできない.ここはawkの一人舞台!)

H|___________1|_|00_00_00.22|+01_05_20.4|_9.10|_|H|000.00091185|+01.08901332|_|___3.54|___-5.20|___-1.88|__1.32|__0.74|__1.39|__1.36|__0.81|_0.32|-0.07|-0.11|-0.24|_0.09|-0.01|_0.10|-0.01|_0.01|_0.34|__0|_0.74|_____1|_9.643|0.020|_9.130|0.019|_|_0.482|0.025|T|0.55|0.03|L|_|_9.2043|0.0020|0.017|_87|_|_9.17|_9.24|_______|_|_|_|__________|_|__|_1|_|_|_|__|___|_______|_____|_____|____|S|_|_|224700|B+00_5077_|__________|__________|0.66|F5__________|S_
H|___________2|_|00_00_00.91|-19_29_55.8|_9.27|_|G|000.00379737|-19.49883745|+|__21.90|__181.21|___-0.93|__1.28|__0.70|__3.10|__1.74|__0.92|_0.12|-0.14|-0.24|-0.29|_0.01|_0.21|-0.02|-0.19|-0.28|_0.14|__2|_1.45|_____2|10.519|0.033|_9.378|0.021|_|_0.999|0.002|G|1.04|0.00|I|_|_9.4017|0.0017|0.015|120|_|_9.37|_9.44|_______|C|_|_|__________|_|__|_1|O|_|_|__|___|_______|_____|_____|____|_|_|_|224690|B-20_6688_|__________|__________|1.04|K3V_________|4_

次に各パートを抽出.(急ぐ方は下記のバグバージョンを読み飛ばしてください)

ーーまずバグバージョン−−−
           HID          赤経        赤緯       実視等級      年周視差   年周視差(error)  B-V B-V(error)       V-I
awk '{print substr($0,9,6),substr($0,18,11),substr($0,30,11),substr($0,42,5),substr($0,80,7),substr($0,120,6),substr($0,246,6),substr($0,253,5),substr($0,261,4)}' h_m2.txt > h_m3.txt

これで
#HID   赤経     赤緯   実視等級 年周視差 error B-V error V-I
_____1 00_00_00.22 +01_05_20.4 _9.10 ___3.54 __1.39 _0.482 0.025 0.55
_____2 00_00_00.91 -19_29_55.8 _9.27 __21.90 __3.10 _0.999 0.002 1.04
_____3 00_00_01.20 +38_51_33.4 _6.61 ___2.81 __0.63 -0.019 0.004 0.00
ができる.この_をはずすために
tr '_' ' '  < h_m3.txt> h_m4.txt
#HID   赤経     赤緯   実視等級 年周視差  SE  B-V  SE V-I
     1 00 00 00.22 +01 05 20.4  9.10    3.54   1.39  0.482 0.025 0.55
     2 00 00 00.91 -19 29 55.8  9.27   21.90   3.10  0.999 0.002 1.04
     3 00 00 01.20 +38 51 33.4  6.61    2.81   0.63 -0.019 0.004 0.00
ができる.これでは赤経,赤緯が扱いにくいので,これを小数に直すがここで失敗.昔恥ずかしいバグを作ったことがあるの で要注意.つまり赤緯の-は度の桁にしか及んでいないことに注意.
awk '{print $1, $2+$3/60+$4/3600, $5+$6/60+$7/3600,$8,$9,$10,$11,$12,$13}'  h_m4.txt > h_m5.txtは
駄目!
ーーバグバージョンおわり−−−

各パートを抽出からやり直し.(符号 を別 項に抽出する)
#       HID       赤経       赤緯(符号)  赤緯         実視等級    年周視差      SE       B-V     SE    V-I
awk '{ ( if substr($0,249,1) != "_" ) print substr($0,9,6),substr($0,18,11),substr($0,30,1),substr($0,31,10),substr($0,42,5),substr($0,80,7),substr($0,120,6),substr($0,246,6),substr($0,253,5),substr($0,261,4)}' h_m2.txt > h_m3.txt
_____1 00_00_00.22 + 01_05_20.4 _9.10 ___3.54 __1.39 _0.482 0.025 0.55
_____2 00_00_00.91 - 19_29_55.8 _9.27 __21.90 __3.10 _0.999 0.002 1.04
_____3 00_00_01.20 + 38_51_33.4 _6.61 ___2.81 __0.63 -0.019 0.004 0.00
_____4 00_00_02.01 - 51_53_36.8 _8.06 ___7.75 __0.97 _0.370 0.009 0.43
_____5 00_00_02.39 - 40_35_28.4 _8.55 ___2.87 __1.11 _0.902 0.013 0.90
_____6 00_00_04.35 + 03_56_47.4 12.31 __18.80 __4.99 _1.336 0.020 1.55

(上のコ マンドの( if substr($0,249,1) != "_" ) の部分がないと,ところどころにB-Vのデータがない行がで きるのでそれをはじくための条件設定)

再び_を空白に戻す.
tr '_' ' '  < h_m3.txt> h_m4.txt
#HID   赤経     赤緯   実視等級 年周視差  SE  B-V  SE V-I
     1 00 00 00.22 + 01 05 20.4  9.10    3.54   1.39  0.482 0.025 0.55
     2 00 00 00.91 - 19 29 55.8  9.27   21.90   3.10  0.999 0.002 1.04
     3 00 00 01.20 + 38 51 33.4  6.61    2.81   0.63 -0.019 0.004 0.00
     4 00 00 02.01 - 51 53 36.8  8.06    7.75   0.97  0.370 0.009 0.43
     5 00 00 02.39 - 40 35 28.4  8.55    2.87   1.11  0.902 0.013 0.90
     6 00 00 04.35 + 03 56 47.4 12.31   18.80   4.99  1.336 0.020 1.55

次に赤経,赤緯を小数に直す.
awk '{print $1, $2+$3/60+$4/3600, $5($6+$7/60+$8/3600),$9,$10,$11,$12,$13,$14}'  h_m4.txt > h_m5.txt
やっとこれで
#HID 赤経  赤緯 実視等級 年周視差 SE B-V SE V-I  
1 6.11111e-05 +1.089 9.10 3.54 1.39 0.482 0.025 0.55
2 0.000252778 -19.4988 9.27 21.90 3.10 0.999 0.002 1.04
3 0.000333333 +38.8593 6.61 2.81 0.63 -0.019 0.004 0.00
4 0.000558333 -51.8936 8.06 7.75 0.97 0.370 0.009 0.43
5 0.000663889 -40.5912 8.55 2.87 1.11 0.902 0.013 0.90
6 0.00120833 +3.9465 12.31 18.80 4.99 1.336 0.020 1.55
という描画用の最終データ h_m5.txtが完成.

ここまでの最終データ処理スクリプトは
#!/bin/bash
# Hipparcosデータから恒星を抽出するスクリプト
# by Y.Okamoto 27/March 2008
#HID 赤経  赤緯 実視等級 年周視差 SE B-V SE V-I
#----------------------------------------------------------------------------------------------
# 0.000663889 -40.5912 8.55 2.87 1.11 0.902 0.013 0.90
tr ' ' '_'  < hip_main.dat> h_m2.txt
awk '{ ( if substr($0,249,1) != "_" ) print substr($0,9,6),substr($0,18,11),substr($0,30,1),substr($0,31,10),substr($0,42,5),substr($0,80,7),substr($0,120,6),substr($0,246,6),substr($0,253,5),substr($0,261,4)}' h_m2.txt > h_m3.txt
tr '_' ' '  < h_m3.txt> h_m4.txt
awk '{print $1, $2+$3/60+$4/3600, $5($6+$7/60+$8/3600),$9,$10,$11,$12,$13,$14}'  h_m4.txt > h_m5.txt


これを用いてもよいが,12万行近いデータで精度の悪い測定の星も含まれるのでこれを精度で間引く.年周視差(Parallax)とB-Vについて,その 誤差(stand errorと表記)の割合を求め,求める誤差未満のもののみを選び出す.
awk '{ if ( ($6/$5 < 0.10) && ($8/$7 < 0.25) ) print $1,$2,$3,$4,$5,$6,$7,$8,$9 }' h_m5.txt > h_m6.txt
でdistanceで10%,色で25%の星が選択できる.これをh_m6.txtとする.星の総数24134個

次に
distanceで5%,色で15%の星の選 択は
awk '{ if ( ($6/$5 < 0.05) && ($8/$7 < 0.15) ) print $1,$2,$3,$4,$5,$6,$7,$8,$9 }' h_m5.txt > h_m7.txt
これをh_m7.txtとする.星の総数9263個.しかしこれは少し星が少なすぎて却下.

最終的な白黒HR図を描画する基本シェルスクリプトは以下のとおり(このスクリプトには誤差選択の上記部分を含んでいる)
#!/bin/bash
# GMTでHR図を描くスクリプト
# by Y.Okamoto 27/March 2008
# Hipparcos data
# #HID RA[deg]  Dec[deg]V[mag]Parallax SE B-V  SE   V-I
#----------------------------------------------------------------------------------------------
# 2 0.000252778 -19.4988 9.27 21.90 3.10 0.999 0.002 1.04
# $1  $2           $3     $4   $5    $6   $7    $8    $9
export PATH=$PATH:/usr/lib/gmt/bin
awk '{ if ( ($6/$5 < 0.10) && ($8/$7 < 0.25) ) print $7,$4-5.0*0.434294482*log(1000/$5)+5.0 }' h_m5.txt | psxy -Jx5.0c/-0.7c -R-0.5/2.0/-6/15 -Sc0.02c -Ba1.0f1.0g1.0> HR2.ps

これで作られる図は下記のとおり.あとは
psxyの各項を必 要に応じて適当に直せばよい.


Copyright (c) Yoshio Okamoto 2008, all rights reserved.