固有運動を計算した2015.0版離角テーブルを作るために始まった一連の作業。
ここまでに行ったことをまとめてみます。
0.MySQL のインストール
探して適切にインストール。
MySQL Administrator、MySQL Query Browser、MySQL Command Line Client あたりが
入ればOK。
1.TychoDB の作成
CREATE DATABASE `TychoDB`;
2.TychoDB をデフォルトDBへ設定
USE TychoDB;
次回接続のときは、デフォルトスキーマにしておくと便利(最初にこのコマンド入力が不要)
3.Tycho テーブルの作成(前ブログ参照)
CREATE TABLE `Tycho` (
`id` mediumint(8) unsigned NOT NULL auto_increment,
`TYC1` smallint(4) unsigned NOT NULL,
: (中略)
`pmRA` float(8,2) default NULL,
`pmDE` float(8,2) default NULL,
: (中略)
`corr` float(4,1) default NULL,
PRIMARY KEY (`id`)
) comment='Tycho-2';
最初、pmRA と pmDE の定義をTycho-2に合わせて float(7,1) にしていましたが、後からTycho-1、HIPのデータ定義が float(8,2) とわかり、変更しました。
テーブルを作ってデータを入れてしまった後でも制限がゆるい方への変更は問題無し。
ALTER TABLE Tycho MODIFY pmRA float(8,2);
ALTER TABLE Tycho MODIFY pmDE float(8,2);
で変更できます。うまく作れたかどうかは、
desc Tycho;
とコマンド入力するとわかります。
4.Tycho2星表(I/259)、Tycho1星表(I/239)のダウンロード
ダウンロードページがわかりにくいですが、前ブログ参照ということで。
ダウンロードしたら解凍します。
Tycho1星表を解凍すると hip_main.dat というヒッパルコス星表も付いてきます。
今回必要になったのは固有運動のカラムだけなので、Tycho2テーブルの該当箇所をアップデートしました。
5.星表ファイルの整形
作業的に一番時間がかかるのがここ。
CSVファイルのインポートができるので整形(⇒)しました。
tyc2.dat.00 ~ tyc2.dat.19 ⇒ tyc2.txt Tycho2全体のデータ
suppl_1.dat ⇒ suppl_1.txt 補完データ1
suppl_2.dat ⇒ suppl_2.txt 補完データ2
NULLカラムは \N にするとロードできます。
6.星表ファイルをDBへロード
LOAD DATA LOCAL INFILE "d:\\tyc2.txt"
REPLACE INTO TABLE Tycho FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n';
LOAD DATA LOCAL INFILE "d:\\suppl_1.txt"
INTO TABLE Tycho FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n';
LOAD DATA LOCAL INFILE "d:\\suppl_2.txt"
INTO TABLE Tycho FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n';
7.インデックスの作成
Tycho1(1055件) と Hipparcos(263件) からキーを得て、Tycho2のカラムを高速に更新するためインデックスを作成します。
Tycho1とはTYC1,TYC2,TYC3のカラムでマッチさせたいので、
CREATE INDEX tyc_idx ON Tycho (TYC1, TYC2, TYC3);
カッコ内リスト形式で書くと結合キーになります。
Hipparcos星表は Tycho番号が無いので Tycho2内のHIP番号でマッチさせます。
CREATE INDEX hip_idx ON Tycho (HIP);
8.DBバックアップの作成
MySQL Administrator を使って TychoDB のバックアップを取ります。
9分くらいかかりました。
まっさらな環境へバックアップファイルを持っていけば、同じDBが再現できます。
試しにリストアもやってみて下さい。やってみると10分ほどかかりました。
9.固有運動データの補充
select count(*) from tycho where VTmag < 10.5 and pflag='X';
の結果が、1602件でした。
これらのうち Tycho1 に固有運動が見つかったのが1055件、Hipparcos に見つかったのが263件でした。以下のようなシェルを書いて実行、
Hipparcosで見つかったほうも同様に、以下のようなシェル
10.離角テーブル用データの Select
ここまでくればもう一息、DBからお目当てのカラムを指定してファイルに出します。
RAmdeg,DEmdegは元期2000.0の平均赤経赤緯位置で、存在する場合はこの値と固有運動15年分で計算。
このカラムがNULLのときは元期1991.5のRAdeg,DEdegと固有運動23.5年分で計算することにしました。
pmRA,pmDEが無いときは固有運動計算なしのRAdeg,DEdeg(元期1991.5)が使われます。
年周視差と視線速度がテーブルに無いので、その分の項は計算されていませんが、回転行列をきちんと使って固有運動を反映させたつもりです。
12.離角テーブルの作成
Tetra用の離角テーブル作成プログラムを実行します。
9等級用は3時間、10等級用は8時間、作成にかかります。
13.動作確認
新しい離角テーブルで tetraf が動作するところまでは確認済み。
固有運動の計算結果が正しいか検証中。
ここまでに行ったことをまとめてみます。
0.MySQL のインストール
探して適切にインストール。
MySQL Administrator、MySQL Query Browser、MySQL Command Line Client あたりが
入ればOK。
1.TychoDB の作成
CREATE DATABASE `TychoDB`;
2.TychoDB をデフォルトDBへ設定
USE TychoDB;
次回接続のときは、デフォルトスキーマにしておくと便利(最初にこのコマンド入力が不要)
3.Tycho テーブルの作成(前ブログ参照)
CREATE TABLE `Tycho` (
`id` mediumint(8) unsigned NOT NULL auto_increment,
`TYC1` smallint(4) unsigned NOT NULL,
: (中略)
`pmRA` float(8,2) default NULL,
`pmDE` float(8,2) default NULL,
: (中略)
`corr` float(4,1) default NULL,
PRIMARY KEY (`id`)
) comment='Tycho-2';
最初、pmRA と pmDE の定義をTycho-2に合わせて float(7,1) にしていましたが、後からTycho-1、HIPのデータ定義が float(8,2) とわかり、変更しました。
テーブルを作ってデータを入れてしまった後でも制限がゆるい方への変更は問題無し。
ALTER TABLE Tycho MODIFY pmRA float(8,2);
ALTER TABLE Tycho MODIFY pmDE float(8,2);
で変更できます。うまく作れたかどうかは、
desc Tycho;
とコマンド入力するとわかります。
4.Tycho2星表(I/259)、Tycho1星表(I/239)のダウンロード
ダウンロードページがわかりにくいですが、前ブログ参照ということで。
ダウンロードしたら解凍します。
Tycho1星表を解凍すると hip_main.dat というヒッパルコス星表も付いてきます。
今回必要になったのは固有運動のカラムだけなので、Tycho2テーブルの該当箇所をアップデートしました。
5.星表ファイルの整形
作業的に一番時間がかかるのがここ。
CSVファイルのインポートができるので整形(⇒)しました。
tyc2.dat.00 ~ tyc2.dat.19 ⇒ tyc2.txt Tycho2全体のデータ
suppl_1.dat ⇒ suppl_1.txt 補完データ1
suppl_2.dat ⇒ suppl_2.txt 補完データ2
NULLカラムは \N にするとロードできます。
6.星表ファイルをDBへロード
LOAD DATA LOCAL INFILE "d:\\tyc2.txt"
REPLACE INTO TABLE Tycho FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n';
LOAD DATA LOCAL INFILE "d:\\suppl_1.txt"
INTO TABLE Tycho FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n';
LOAD DATA LOCAL INFILE "d:\\suppl_2.txt"
INTO TABLE Tycho FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n';
7.インデックスの作成
Tycho1(1055件) と Hipparcos(263件) からキーを得て、Tycho2のカラムを高速に更新するためインデックスを作成します。
Tycho1とはTYC1,TYC2,TYC3のカラムでマッチさせたいので、
CREATE INDEX tyc_idx ON Tycho (TYC1, TYC2, TYC3);
カッコ内リスト形式で書くと結合キーになります。
Hipparcos星表は Tycho番号が無いので Tycho2内のHIP番号でマッチさせます。
CREATE INDEX hip_idx ON Tycho (HIP);
8.DBバックアップの作成
MySQL Administrator を使って TychoDB のバックアップを取ります。
9分くらいかかりました。
まっさらな環境へバックアップファイルを持っていけば、同じDBが再現できます。
試しにリストアもやってみて下さい。やってみると10分ほどかかりました。
9.固有運動データの補充
select count(*) from tycho where VTmag < 10.5 and pflag='X';
の結果が、1602件でした。
これらのうち Tycho1 に固有運動が見つかったのが1055件、Hipparcos に見つかったのが263件でした。以下のようなシェルを書いて実行、
---------- a.sh -----------------------
grep " 5 350 1" tyc_main.dat >> ans.txt
grep " 5 350 1" tyc_main.dat >> ans.txt
grep " 25 1379 1" tyc_main.dat >> ans.txt
さらに、ans.txt から、SQLコマンドリストを生成します。
さらに、ans.txt から、SQLコマンドリストを生成します。
update tycho set pmRA='49.7',pmDE='40.4' where TYC1='5' and TYC2='350' and TYC3='1';
update tycho set pmRA='-239.7',pmDE='-165.7' where TYC1='25' and TYC2='1379' and TYC3='1';
このコマンドリストを MySQL Command Line Client にペーストして実行します。
全体で255万件のテーブルなので、最初インデックスを作らないとき、1件の更新に10秒程度かかってしまいました。1055件x10秒=約3時間。インデックスを作った後だと1分ちょいです。Hipparcosで見つかったほうも同様に、以下のようなシェル
grep " 12706|" hip_main.dat >> ans2.txt
grep " 12114|" hip_main.dat >> ans2.txt
ans2.txt から、SQLコマンドリストを生成、
update tycho set pmRa='-146.43',pmDe='-145.27' where HIP='12706' and pflag='X';
update tycho set pmRa='1806.27',pmDe='1442.50' where HIP='12114' and pflag='X';
最初 pflag='X' の指定を忘れたため、二重星の場合Tycho-2データをつぶしていました。
リストアしてやり直して事なきを得ました。
リストアしてやり直して事なきを得ました。
10.離角テーブル用データの Select
ここまでくればもう一息、DBからお目当てのカラムを指定してファイルに出します。
select RAmdeg,DEmdeg,pmRA,pmDE,RAdeg,DEdeg,TYC1,TYC2,TYC3,HIP,BTmag,VTmag from tycho where BTmag < 9.5 or VTmag < 9.5;
201252 件になりました。
10等級用は 9.5 のところを 10.5 に変えただけで、539788件でした。
11.固有運動と元期から2015.0赤経・赤緯の計算10等級用は 9.5 のところを 10.5 に変えただけで、539788件でした。
RAmdeg,DEmdegは元期2000.0の平均赤経赤緯位置で、存在する場合はこの値と固有運動15年分で計算。
このカラムがNULLのときは元期1991.5のRAdeg,DEdegと固有運動23.5年分で計算することにしました。
pmRA,pmDEが無いときは固有運動計算なしのRAdeg,DEdeg(元期1991.5)が使われます。
年周視差と視線速度がテーブルに無いので、その分の項は計算されていませんが、回転行列をきちんと使って固有運動を反映させたつもりです。
12.離角テーブルの作成
Tetra用の離角テーブル作成プログラムを実行します。
9等級用は3時間、10等級用は8時間、作成にかかります。
13.動作確認
新しい離角テーブルで tetraf が動作するところまでは確認済み。
固有運動の計算結果が正しいか検証中。