2017年8月6日日曜日

GDLSSW004, EPS作成、MDIとTrace

GDL (GNU Data Language) 上で SSW (Solar Soft Ware) を使うためのメモ書き


SSWの挙動を確認するために、過去にIDLで作成した図を再度作成する。

画像は、Yamamoto & Sakurai (2009, PASJ, 61, 75)の図3である。(以下の図)


オリジナルのEPSファイルをconvertコマンドでJPGにしたら、こんな感じになってしまった。

イベントはAR10486で起きたX10フレアで、TRACEで観測された1600Aの画像に、MDIの磁場強度の輪郭線を書いている。

 この図の作成の要点は、データの読み込み、マップ化、EPSファイルの作成である。



MDIデータの読み込みとマップ化


まずは、MDIについて、データの読み込みとマップ化を試みた。

MDIのFITSデータの読み込みについてはエラーメッセージは出なかった。

複数のファイルを一度に読み込む'mreadfits'も機能している。

ただ、データの内容については、おかしいかもしれない。

私の記憶では、MDIデータを読み込んだ後のアレイ(e.g., float[1024,1024])で、光球面の外には、float最小値である-32000?程度の値が入っているはずだったが、そこに全て'nan'が入っていた。
 
 
マップ化でエラーメッセージ?が出た。

% Compiled module: GET_FITS_CDELT.
% Compiled module: REP_TAG_NAME.
% Compiled module: IS_NUMBER.
% Compiled module: IS_NUMBER2.
% Input conversion error.
% Type conversion error: Unable to convert given STRING: 'cdel1' to FLOAT.
% Input conversion error.
% Type conversion error: Unable to convert given STRING: 'cdel2' to FLOAT.
% Input conversion error.
% Type conversion error: Unable to convert given STRING: 'dxb_img' to FLOAT.
% Input conversion error.
% Type conversion error: Unable to convert given STRING: 'dyb_img' to FLOAT.
% Compiled module: GET_FITS_CEN.

STRINGをFLOATに変換できないと言っているのは、is_number2.pro中の'finite'関数である。

index2map.pro -> get_fits_par.pro -> get_fits_cdelt.pro -> rep_tag_name.pro -> is_number.pro -> is_number2.pro

結論として、これらのメッセージは無視して良い。



このようにして作ったマップを表示すると、以下のようになる。

<<新版、8/6, 13時台>>


上に書いたように、光球面外の値がnanになっているので、以下の処理をした。

>    w0=where(finite(data0,/nan))
>    data0[w0]=-30000.

±3000Gで表示している。



なお最近のplot_mapは、キーワード無しで使うと、エラーを吐いて止まってしまう。

ベクトル化とかplot_map_index.pro ってなんなんすか、Zarroさん。





<<旧版、8/6, 1時台>>


この図では、光球面の外側も黒白カラーテーブルの中間色である灰色になってしまっている。

以前作った時は、ここが最低値の黒色になっていたはずである。(過去に作成した図で確認した)

そこで、データのnanの領域を-30000などの数値に変えようとしたがうまくいかない。

以下、data0がデータ、map0がマップ構造体である。

GDL> print,data0[0,0]
          nan
GDL> print,data0[10,10]
          nan
GDL> print,map0.data[10,10]
          nan
GDL> w0=where(data0 eq !VALUES.F_NAN)
GDL> help,w0
W0              LONG      =           -1
GDL> print,data0[0,0],!VALUES.F_NAN
          nan          nan
GDL> help,data0[0,0],!VALUES.F_NAN
<Expression>    FLOAT     =           nan
<Expression>    FLOAT     =           nan
GDL> print,(data0[0,0] eq !VALUES.F_NAN)
   0


whereと!VALUES.F_NANを使って、nanの領域を取り出せるかと思ったら失敗。

何より困った事に、データ中のnanとシステム変数のnanが一致しない。

なんか間違えてるかな?

0 件のコメント:

コメントを投稿

注目の投稿

【貨幣循環】名目GDPと M=G+I と V=1/(1-β) の成長率

「 【貨幣循環】貨幣循環導入の3点セット 」では、貨幣循環の定式化である M=G+I と V=1/(1-β) を紹介した。「 【貨幣循環】歳出伸び率とGDP成長率の関係 」では、名目GDPの成長率と政府支出Gの成長率の関係を紹介した。本記事では、MとV、および名目GDPの成長率...

人気の投稿