天文学分野で用いられる各種座標変換用ライブラリの多くはC言語やC++言語で実装されているが、それらをPythonで使えるようにラップした「Astropy」が存在し、ALMA望遠鏡の「CASA」やベラルービン天文台のパイプライン開発などで使用されている。また近年では、ハードウェアを跨いだ分散並列処理をPythonで実装するための「Dask」も登場してきており、これら新しい技術を組み合わせることで、本研究で必要になる「様々な望遠鏡で取得された観測データを元の天球座標へ再投影するライブラリ」を当初計画(JavaやScalaを用いて実装予定)よりも短期間で開発できると考え、ライブラリのコーディングを開始した。 今回開発中のシステムでは、画像データの各画素を天球を等分割した「HEALPix ID」に変換する。元の画像データの各画素をHEALPix IDに射影する際、HEALPix IDはモートン順序であるためIDを直接ピンポイントでは計算できず、包含する可能性のあるHEALPix IDの候補(実際は不要なものが多数)を取得する必要がある。この部分については、言語仕様上はPythonの配列・数値計算ライブラリNumPyの「memory-map」(ファイルを用いることで実メモリ以上の配列を取り扱える)機能で解決できるが、AstropyのHEALPix計算のコードを確認したところ、この機能が使用できないことが判明した。 そこでJavaのHEALPixライブラリで画像データを内包するHEALPix IDの「範囲」のリストを計算してファイルに書き出し、その結果をPythonでHEALPix IDに変換する方式とした。画像変換機能をDaskで実装する作業は完了しており、現在コードのテストを行っているところである。
|