meineko’s blog

元つくばの某独立行政法人勤務の植物屋です。最近は、ほぼ、突発天体の話題です。

readstd

Katさんが、BJDへの変換をRでやるのをRで実装されて、vaolj-mlにpostされました。
一部、実行速度の関係だと思いますが、cで書かれてコンパイルしたものを、呼び出しています。
Linux用(?)のbinaryも配布されたので、Linuxで実行する分には良いのでしょうが、Rの動く他の環境への移植は再コンパイルが必要のようです。


で、表題のreadstdとか便利そうだと思ったのですが、中で読んでいるtojdがまさに、cで書かれたコマンドです。
ここだけ、Rで書きなおせば動かせそうですが、yyyymmddhhmmss形式でかかれた日付をJDに直すんですよね。
yyyymmddhhmmssが完全に揃ってるばいいは書きやすそうだけれど、秒とか欠けてるデータも扱うには、どうやって書けばいいかな?
#まぁ、とりあえず、欠けてないのを前提で書いてみる?
JDの計算は、以前やった気も?


(追記)
DBVSのtojd.cのソースをもらったので読みました。
バッファを用意してとか、cから遠ざかっているので、懐かしい感じがします。
で、そんなこと、一切考えない、Rはやっぱり楽です。


で、やっぱり中で呼んでいるymdtojdのソースが見つからない??
みつけましたymdtojd.c、これをRに移植すればいいのですよね。
c2Rとかいうパーサーは無いのかな(w


(追記2)
20101213172000みたいなyyyymmddhhmmss形式のデータから、年、月、日、時、分、秒を切り分けるのは、substr関数で出来ました。
told.cを読むと、日までしか無い、秒が無いとかいうのは、予めチェックして埋めておくのか、なるほど。
ymdtojd.cを読むと、JDの整数部(日)と、小数点以下を分けて別々に計算して足してます。勉強になる。
で、JDの日の部分を計算する式って、どこにあったかな?y,m,dを与えてJDを計算する式を以前どこかで見た気が。
という訳で、tojd.R実装の目処が付きました。
#Katさんみたいに、何万、何十万のデータをいっぺんに変換しようというわけではないので、速度も問題なしと思います?
#という訳で、実装は後日?


そもそも、stdをRで読まなくても、DBVSのtojdで、std形式から、jd+magに変換しておけばいいじゃんというは、無視の方向で。
いや、そもそもが、ecliminをRでという話だったので、BJDとか言わないのなら、jd+mag形式のファイルを読み込めるふうに、eclimin.Rに少し手を加えれば済む話でした。
readstd.Rを書いておけば、後からいろいろ、応用が効きそうと思ったのが運の尽き。


(追記3)
で、Ubuntuで、tojdを動かしてみて思い出しました。
等級+測光バンド形式になっているのを切りは離すのの実装の参考にしようと思ってたんだ>readstd.R
#よくありますよね、途中で当初の目的を忘れるのって。