メモログ(雑記)

日々のメモ代わりに使います。プログラミング、天文学メイン

観測データベース、解析データベースをどうするか

いきなり観測・解析ネタ。

観測したfitsデータのヘッダーをWEB上に表示する仕組みは、

PerlとWCStoolsの「gethead」コマンドで容易にできるのだが、

データ数が多くなってくると表示に時間が掛かってくる。

そのため、某観測所ではMySQLにfitsデータのヘッダー情報や検出した天体の解析結果等をテーブルにしたデータベースを構築しており、PerlPHPなどでデータベースを操作・閲覧できるようにしているそうだ。

ということで、MySQLのようなデータベースは全くの無知ですが、fitsデータのヘッダーを取得してデータベースに登録するところまでは、一応出来ている。(出来ていると言って良いレベルなのかかなり怪しいところだが)


mysqlへのログイン

mysql -p -u username -D dbname

これでmysqlにログインしてから、「USE dbname」

としなくて済む。

 

・fits情報データベースのカラム

+----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+----------------+
| uid | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(500) | NO | | NULL | |
| date_ut | date | NO | | NULL | |
| date_jst | date | NO | | NULL | |
| utc | time | NO | | NULL | |
| jst | time | NO | | NULL | |
| lst | time | NO | | NULL | |
| jd | double | NO | | NULL | |
| mjd | double | NO | | NULL | |
| object | varchar(50) | NO | | NULL | |
| obj_list | varchar(50) | YES | | NULL | |
| list_id | int(5) | YES | | NULL | |
| ra | char(12) | YES | | NULL | |
| dec | char(12) | YES | | NULL | |
| equinox | double | YES | | NULL | |
| airmass | double | YES | | NULL | |
| exp_time | double | YES | | NULL | |
| observer | varchar(50) | YES | | NULL | |
| filter | varchar(3) | YES | | NULL | |
| azimuth | double | YES | | NULL | |
| altitude | double | YES | | NULL | |
| zd | double | YES | | NULL | |
| rotator | double | YES | | NULL | |
| ncombine | int(5) | YES | | NULL | |
| focusflg | varchar(3) | YES | | NULL | |
| fwhm | double | YES | | NULL | |
| fwhm_ave | double | YES | | NULL | |
| aper_dia | double | YES | | NULL | |
| wcsscs | tinyint(1) | YES | | NULL | |
| opm_nmat | int(5) | YES | | NULL | |
| opm_res1 | double | YES | | NULL | |
| opm_res2 | double | YES | | NULL | |
| zeromag | double | YES | | NULL | |
| zmagerr | double | YES | | NULL | |
| skyval | double | YES | | NULL | |
+----------+--------------+------+-----+---------+----------------+

とりあえずわけも分からず、あるスクリプトを真似て作ってみた。

uidとname以外はfitsヘッダーに観測時や直前の解析によって書き込まれているため、それらをgetheadしてあげるだけで取り出せる。

しかし、date_jstとdate_utはimheadとcutコマンドでSQLのtime型に合わせて整形しなおしている。

現在WEB(LAN内だが)の表示は、date_utによる日付ごととobjectによるobjectごとの閲覧のみ。

いずれは、WEBに検索フォーマットを作り、様々な条件で検索が出来るCGIを作成したいのだが、そこに行くまでに問題は山積みである。

ひとつは、データベースに登録された後にデータを変更する仕組みを作っていない。

データを変更するには、「UPDATE」コマンドで行う必要があるが、変更するデータをどのように探し当てるのか、スクリプトで行うための利便性などを考えていく必要がある。

また、データを削除する「DELETE」コマンドに対応するスクリプトも作成していない…。

ひとまずSQLの基本コマンドを扱うサブルーチンはあるので、うまく取り入れていかなければならない。

 

次に、自動解析によって得られる解析結果のデータベースである。

Sextractorによって自動検出・測光を行った結果は、カタログ(出力)ファイルとして吐き出させている。しかし、この時のカタログファイルはアストロメトリ前(WCS決定前)の測光結果のため、天体の座標はもちろんピクセル座標(X,Y)である。

ピクセル座標でデータベースに登録するのは、意味が無いので(天体の位置が分からない)、登録する際はもちろん赤道座標系(RA,DEC)で登録したい。

そこで、アストロメトリが出来たfitsデータ(WCSSCS=1というフラグ)で再度Sextractorを実行して、そのカタログファイル(paramファイルで指定)を「RA,DEC,MAG,MERR」みたいにして出力させてあげれば、カタログファイルやデータベースに登録はRA,DECで行える。

しかし、すでにあるカタログファイルとは別に再度カタログファイルを作成するというのもデータ容量の増加につながる。(テキストファイルだからそんなに影響もなさそうだけど…)

そのため、fitsデータとピクセル座標でのカタログファイルを用意して、wcstoolsの「xy2sky」によってRA,DECを求めるという方法もあるのではないかと考えている。

WCSパラメーターが同じであれば、X,Y→RA,DEC(xy2sky)の値とSextractorの出力時にRA,DECを出す値はおそらく一緒のはず?

まぁ検証は必要な項目である。

座標系の問題がクリアできれば、次はゼロ点との関係である。

fits情報データベースにあるzeromagの値をうまくリレーショナルできればよいのだが、全くわけがわからないので保留ということで、座標系の検証をしなければ。