メモログ(雑記)

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

ASUS MemoPad8 買いました

布団の中に入ってWEBブラウジングをしながら、眠くなるのを待つことが多く、スマホとして使っているGalaxy Nexusだと画面が物足りないと思ってました。

ということで、タブレットを買おうと。

価格サイトで、

・8インチ以下

・AndroidOS

・安い

という検索条件で検索すると、

ASUSのMemoPad 7 HDとMemo Pad 8とNexus 7(2012)が候補に上がりました。

しかし、Nexus7は身近な人が持っていのと、2013モデルを見ると2012モデルはいまいちな感じが。

Memo Pad 7 HDは、15000円あたりであったため、これにしようかと思いましたが、Nexus7やMemo Pad 8と比較すると、やや劣っていたため、結局Memo Pad 8をポチリ。

4日後には、届きました。

早速、一緒に購入した保護フィルムを貼りましたが・・・

かなり青い・・・

ELEC◯Mに騙された感が。

そんなこんなで、Wifi設定等進めていき、Nexusとほぼ同じアプリを入れました。

 

 

レビューを書けるような使い方はしてません。

とりあえず、ツイッター専用機なったMemo Pad 8でした。

(ちゃんと文書を読んだり、ブラウジングしたりして使ってます。)

近赤外線3バンドによる銀河の撮像とカラー合成

冬の天体観測は、目的天体が少ないのに対して、夜の時間が長いことから普段の観測が暇になります。

 

ということで、せっかくの望遠鏡とカメラでサイエンスとは関係ない天体をたまに撮影しています。

今回はくじら座にあるNGC1055銀河(10:34:48.498 +21:39:42.03)

各バンド(J,H,K)、12秒積分×5点ディザ×3setで撮像。

1次処理で2MASSとマッチングしてWCSを入れるのですが、まさかあまり星が無いのに入るとは思わなかった。(前日にもNGC2903を撮像しましたが3バンド全てWCSは失敗してました。)

 

1次処理が終わり、WCSが入っていれば、ds9でカラーオプションを使って3色合成をするだけです。

>ds9 -lock frame wcs -scale mode 99.5 -rgb -red K.fits -green J.fits -blue H.fits

これだけで3色合成できます。

あとは、各fitsにds9で平滑化をしていきます。

ボックスカー、トップハット、ガウシアンがありますが、

ガウシアンが今のところ綺麗に見えると個人的には思います。

平滑化の量も2~3辺りが自然に見えると思います。

 

あとは、イメージに保存でpngで保存するだけです。

f:id:thefray3104:20140118054352p:plain

 

fitsビュワーであるds9だけで合成したので、専門の画像編集ソフトのようなイメージは期待しないでください笑

 

最後に、ガウシアンで平滑化してもピクセルの粗さが気になるので、次はIRAFでビニングをしてみようかと考え中。

gnuplotでヒストグラムを描く

gnuplotヒストグラムを描きたくて調べていたら、

わざわざデータを一度スクリプトなどに掛けずに、

gnuplotのコマンドだけでプロットできるのを見つけました。

http://qiita.com/iwiwi/items/4c7635d4c84bc785e47a

 

それで自分なりに改良した?コマンド

filter(x,y)=int(x/y)*y
plot "hoge.dat" u (filter($1,0.001)):(1) smooth frequency with boxes lw 2 lc "rgb"

刻み幅は、filterは第2引数で調整。

lwはlinewidth?かな、値を大きくすると線幅が太くなります。

lcはlinecolor?かな、色指定します。

boxesをlp(linepoints)しても使う場面ありそう。

 

MySQLで複数のカラムを変更する

同じようなことを書かれている人が多いですが、備忘録なので書きます。

 

データを変更するには、UPDATEを使います。

「UPDATE tb_name SET col_name=value (WHERE condition)」

WHERE句がないと、すべてのデータにおいて、書き換わってしまうので必ず条件文で変更したいデータを指定したほうが良いかと。

複数のカラムを変更するには、

 「UPDATE tb_name SET col_name1=value1 , col_name2=value2 , col_name3=value3 (WHERE condition)」 

ただ単にコンマでつなげていくだけ。

 

INSERT文の時は、カラム名と値は別に別に書くのに、UPDATE文の時は「=」で繋がないといけないので、スクリプト化する際少々めんどかった。

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

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

観測した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の値をうまくリレーショナルできればよいのだが、全くわけがわからないので保留ということで、座標系の検証をしなければ。

 

 

はてなブログにしてみました

最近、プログラミング(Perl)でやりたいことを頭で考えながら過ごしていますが、

なかなか具現化できず忘れてしまうことが多いので、ブログにメモ代わりにと思い作ってみました。

スクリプトの備忘録としても活用できそうですし…

また、日々の天体観測や解析で思ったこと気づいたことをここに書いていこうかなと思います。

写真とかも貼りつけていければいいですね。

 

ここで、はてなブログを利用する理由は、ただ一つ。

「はてな」がPerl使いな企業だからです。だからといって利用者側にはとくには関係ないですけど。