2019年度研究集会「太陽地球系物理学分野のデータ解析手法、ツールの理解と応用」
解析セッションテキスト- IUGONETツール概要- SPEDAS (CUI) を使ってみよう
Published by IUGONET Project Team, Aug. 2019.
http://www.iugonet.org/
1

IUGONETツール
Type-A

超高層大気観測データベース
IUGONET Type-A
多機関に跨って管理されているデータの横断検索、データの情報（メタデータ）の表示、可視化、解析手
順等を得ることができます。

CUI

統合型解析ソフトウェア
SPEDAS (CUI)
多種多様な衛星・地上観測ミッションで取得されたデータを、コマンドラインインターフェースで解析できます。IDLライセンスが必要です。

GUI

統合型解析ソフトウェア
SPEDAS (GUI)
GUIで操作できるSPEDASです。CUI版とほぼ同じ解析を行うことができます。IDLライセンスが無くても利用できるVM版があります。

2

IUGONETツールによる研究の流れ
観測データを検索する

観測データについて詳しく知る

現象を把握する

解析方法を知る

超高層大気観測データベース
IUGONET Type-A

詳細な解析をする

発表や論文用の図を作る

成果を創出する

統合型解析ソフトウェア
SPEDAS

http://search.iugonet.org/••

IUGONET Type-AとSPEDASの2つを組み合わせることで、超高層大気分野の一連の研究の流れをサポートします。
IUGONET Type-Aには、各観測データのQuick-Look画像や、SPEDASによる解析方法が掲載されており、SPEDASによる高度な解析にスムーズに接続します。
3

IUGONET Type-Aの概要
IUGONET Type-A, http://search.iugonet.org/

観測データを検索する

現象を把握する選択

観測データについて
詳しく知る
現象を把握する

UDAS web

簡易プロットを作成する（少し見てみる）

解析方法を知る

SPEDAS

詳細に解析する4

データ解析ソフトウェア：SPEDAS
インターネット上のデータサーバユーザーのPC

自動ダウンロードdata

データはtplot
変数として読
み込まれるSSL, Berkeley,
THEMIS, GBO
CDAWeb, OMNI,ACE, Wind, etc.

ダウンロードディレクト
リは自動的に作成される.

SPEDAS/TDAS

data
data

SPEDAS-CUI では、3つの基本コマンドでデータ読み込みと描画をすることができます。
1. 時間幅を設定
2. ロードプロシージャを実行
3. プロットプロシージャを実行

timespan, 'yyyy-mm-dd'
iug_load_***tplot, +++GUIの場合でも、数回のマウスクリックで同じ結果を得ることができます。
5

統合型解析ソフトウェア SPEDAS CUISPEDAS CUI を使ってみよう

6

（目次） SPEDAS CUI 操作方法

CUI

1. インストール
2. 基本コマンド2.1

時間幅設定、データのロード、プロットの作成

毎回使うコマンドとして、必ず覚えておきましょう。

timespan, tplot_names,
tplot

2.2

ベクトルの成分分解

成分ごとに詳細な解析（相関解析や演算等）をしたい場合に使います。

split_vec

2.3

時間幅の変更時間軸を拡大して、時間変動を詳しく見たい場合に使います。

tlimit2.4

縦軸範囲の変更

縦軸を拡大して、変動量を詳しく見たい場合に使います。

ylim, zlim

2.5

プロットタイトルの付与、余白とフォントの調整

プロット全体をきれいに仕上げる場合に使います。

tplot_options

2.6

軸タイトル・ラベルの変更、線の色の変更

データごとに凡例や色を変更する場合に使います。

options

2.7

タイムスタンプの表示と非表示

発表や論文等では不要なタイムスタンプ情報を削除します。

time_stamp

2.8

プロット画像の保存

プロット結果を画像ファイルに保存する場合に使います。

makepng, makejpg,
makegif, popen/pclose

2.9

tplot変数のASCII出力、保存、再読込み

tplot_ascii,
tplot_save, tplot_restoreの中身を数値で確認したい場合、後でまたそのtplot変数を使いたい場合に用います。

tplot

7

（目次） SPEDAS CUI 操作方法

CUI

3. 応用コマンド（解析のための準備）
3.1
3.2
3.3

tplot変数のコピー

変数の現在の状態を残して、解析を次に進める（試す）場合に使います。

tplot

tplot変数値のIDL変数への格納
SPEDASで計算した値を、IDLの変数値と比較・演算する場合に使います。

IDL変数値のtplot変数への格納で計算した値を、SPEDASのtplot変数と比較・演算する場合に使います。

IDL

copy_data
get_data
store_data

3.4

日時文字列の構造体への格納

3.5

スパイクノイズの除去

ノイズを除去して本来の値のみ使いたい場合に用います。

clean_spikes

3.6

dt間の値の補間

間を高時間分解能データから補って、時間変動を詳しく見たい場合に使います。

tinterpol

3.7

指定した範囲値の抽出（Y, Z）

指定した範囲内の値のみ使いたい場合に用います。

tclip

3.8

欠損値の補間欠損値（NaN）を有限な値に置き換えて繋げる場合に使います。

tdeflag

3.9

時刻抜け箇所へのNaN挿入

tdegapや日時文字列を構造体化して、IDLやSPEDASの構造体との演算を容易にします。 time_struct

Unix timedt

連続であるはずの時刻が飛んでいる場合に、連続化させるために使います。

3.10 時間範囲を指定して抽出
特定の時間範囲のみを取り出して、詳細に解析したい場合に使います。

time_clip

3.11 指定した時刻の値（配列番号）を抽出指定した時刻の値（配列番号）を取り出して、詳細に解析したい場合に使います。

nn8

（目次） SPEDAS CUI 操作方法

CUI

4. 応用コマンド（解析）4.1

平均値の差し引き変動の相対量を見たい場合に使います。

tsub_average

4.2

移動平均とスムージング

長期変動解析など、指定周期よりも遅い変動のみを解析対象にする場合に使います。

tsmooth_in_time

4.3

ハイパスフィルター

短期変動解析など、指定周期よりも早い変動のみを解析対象にする場合に使います。

thigh_pass_filter

4.4

フーリエスペクトル解析

変動の周波数を算出する場合に使います。

tdpwrspc

4.5

ウェーブレット変換

変動の周波数を算出する場合に使います。

wav_data

4.6

四則演算、微分、平均計算

add_data, dif_data,
mult_data, div_data,
deriv_data, avg_data

4.7

計算式の構築とその演算変数の値を使って単純演算したい場合に使います。

tplot

自分で計算式を構築して演算する場合に使います。

calc

9

（目次） SPEDAS CUI 操作方法

CUI

5. その他の便利なコマンド
5.1

指定した時刻に縦線を引く

プロットにおいて、現象の開始点・終了点をハイライトする場合に使います。

timebar5.2

指定したY軸の値に横線を引く

tplot_apply_databar

現象の振幅等をハイライトする場合に使います。

Appendix. その他の便利な使い方
A.1

crib_sheet を使った連続処理

A.2

UDAS egg を使ったロードプロシージャの自作

バッチ処理のように、一連のコマンドを続けて実行したい場合に使います。
自分のデータを解析したい場合、自分なりの解析ルーチンを構築したい場合に使います。

10

2.1. 時間幅の設定、データの読込み、描画
timespan, 'YYYY-MM-DD/hh:mm:ss', N
読込み開始の日時

読み込む時間幅を設定します。

読み込む日数

プロシージャ名 (, options, /keywords)
tplot_names

CUI

データをロードします。

ロードしたデータは、tplot変数という、SPEDASの構造体に自動的に格納されます。複数のデータをロードしたい場
合は、この操作を繰り返します。また、実行時に表示されるデータの利用ポリシーを必ず確認してください。
ロードしたデータを一覧表示します。

tplot, ['tplot変数名', ..]プロットを作成します。

プロットするtplot変数名
毎回使うコマンドとして、必ず覚えておきましょう。

（例） THEMIS> timespan, '2012-03-05', 7
THEMIS> iug_load_gmag_wdc, site='sym asy'
THEMIS> tplot_names
1 wdc_mag_sym
2 wdc_mag_asy
THEMIS> tplot, ['wdc_mag_sym', 'wdc_mag_asy']
データをロードするためのプロシージャとその使い方は、SPEDASに属する各プロジェクトから提供されます。各プロジェ
クトのウェブサイト等を参照してください。
http://themis.ssl.berkeley.edu/socware/spedas_3_1/idl/_spd_doc.html
http://search.iugonet.org/

等。

指定した期間の地磁気指数SYM/ASYがプロットされました。

11

2.1. 時間幅の設定、データの読込み、描画

CUI

前ページの基本コマンドは、以下のようにも実行できます。
timespan
キーワードで指定した値が日数であることを明示します。
他に、時間（/hour）、分（/min）、秒（/sec）を指定することができます。
省略した場合は日（/day）が適用されます。

timespan, '2012-03-05/00:00:00', 7, /daytimespan, ['2018-04-01', '2018-04-14']
開始日時と終了日時を、具体的に与えることができます。
timespan, ['2018-04-01/00:00:00', '2018-04-01/12:00:00']

tplot_names
tplot_names, 'tplot変数名'

指定したtplot変数がロードされているかを確認することができます。

tplot_names, 'tplot変数名', /verbose

指定したtplot変数の詳細情報を見ることができます。

データ自体の注意事項、データを使う際に必要なPIへのコンタクト、論文に書くべき謝辞内容などは、/verbose オプションによる表示でも確認することができます。データロード時に表示される内容のほか、/verbose を使って、その内容を確認しておくようにしましょう。
tplot
tplot, [1, 2]

tplot変数名の代わりに、tplot変数に振られる通し番号を指定することもできます。通し番号は、
tplot_namesを実行すると見ることができます。

tplot

キーワードの省略により、直前に描画したデータをもう一度描画することができます。

（その他の基本コマンド）
del_data, 'tplot変数'

指定したtplot変数を削除します。すべて削除する場合は、'*' を与えます。

exit

SPEDASとIDLを終了します。

12

2.1. 時間幅の設定、データの読込み、描画

CUI

tplot変数とは？
tplot変数とは、時刻情報、緯度・経度情報、値、データに関する情報（メタ情報）等を格納するための、SPEDAS
構造体です。
SPEDASでは、tplot変数に格納さえすれば、簡単に描画することができます。いかに適した解析を行い、それをいかにtplot変数に格納していくかが、SPEDASを使いこなすうえでのポイントとなります。

読み込むデータ（CDF等の構造体が多い）
時刻配列 データ
配列

メタ情報

データロード時に、元データの各構造の内容が、自動的にtplot変数の構造体に格納される

いかに見映えを整えるか

SPEDAS

tplot変数1（構造体）
時刻配列

データ
配列

メタ情報
可視化情報

いかに解析するか

Quick-Looktplot変数2（構造体）
時刻配列

データ
配列

メタ情報
可視化情報

論文・発表向け成果

3, 4, …

13

2.2. ベクトルの成分分解

CUI

split_vec, 'tplot変数名'
分解したいtplot変数
成分ごとに詳細な解析（相関解析や演算等）をしたい場合に使います。

（例）
THEMIS> split_vec, 'wdc_mag_sym'
THEMIS> split_vec, 'wdc_mag_asy'
THEMIS> tplot_names
1 wdc_mag_sym
2 wdc_mag_asy
3 wdc_mag_sym_0
4 wdc_mag_sym_1
5 wdc_mag_asy_0
成分分解されました。
6 wdc_mag_asy_1
THEMIS> tplot, [3, 4, 5, 6]（その他の使い方）
join_vec, ['tplot変数1', 'tplot変数2'], '新しいtplot変数'

複数のtplot変数を、新しいtplot変数にまとめます。

split_vecでは、分解後の値を格納するtplot変数は自動で作成されます。
join_vecでは、まとめたいデータ間で時間が同じ場合にのみ、使うことができます。

14

2.3. 時間幅の変更

CUI

tlimit, 'YYYY-MM-DD/hh:mm:ss', 'YYYY-MM-DD/hh:mm:ss'
切出し開始の日時

切出し終了の日時

時間軸を拡大して、時間変動を詳しく見たい場合に使います。

（例）
THEMIS> iug_load_gmag_wdc, site='ae'
THEMIS> iug_load_gmag_mm210, site='kag'
THEMIS> split_vec, 'wdc_mag_ae_prov_1min'
THEMIS> tplot, [‘wdc_mag_sym_1’,'wdc_mag_ae_prov_1min_0','mm210_mag_kag_1sec_hdz']
THEMIS> tlimit, '2012-03-07', '2012-03-08'

指定した時間幅に変更されました。

（その他の使い方）
tlimitウィンドウを2点クリックすることで、切出しの開始と終了の日時を与えます。

tlimit, /last

1つ前の時間幅に戻します。

tlimit, /fulltimespanで指定した時間幅に戻します。

15

2.4. 縦軸範囲の変更

CUI

ylim, 'tplot変数名', 最小値, 最大値
縦軸を拡大して、変動量を詳しく見たい場合に使います。

（例）
THEMIS> ylim, 'wdc_mag_sym_1', -100, 100
THEMIS> tplot

上下関係を逆にした場合は、大小が逆転して表示されます。例えば、最小値を100、最大値を-100とした場合、プロットの下端が100、上端が-100に設定されます。

（その他の使い方）

Y軸の範囲が-100から100に変更されました。

ylim

ウィンドウを2点クリックすることで、最小値と最大値を指定します。

ylim, 'tplot変数', 最小値, 最大値, 11を指定すると、ログスケールを適用します。リニアスケールを適用する場合は0を指定します。省略した場合はリニアスケール（0）が適用されます。

zlim, 'tplot変数', 最小値, 最大値

データが三軸（パワースペクトル等）で構成されている場合に、同じように第三軸に対して適
用します。

16

2.5. タイトルの付与、余白とフォントの調整

CUI

tplot_options, 'オプション名', 値
tplot_options, 'region', [x0, y0, x1, y1]
tplot_options, 'title', '文字列'
tplot_options, 'charsize', 比率

プロットの表示位置を調整します。
プロットの上にタイトルを表示します。
フォントのサイズを変更します。
（デフォルトに対する比率0.8等を指定。）

プロット全体をきれいに仕上げる場合に使います。
(x1, y1)=(1, 1)（例）
THEMIS> tplot_options, 'region', [0.05, 0, 1, 1]
THEMIS> tplot

Y軸のタイトルが長い場合は、プロット有効範囲からはみ出てしまう場合があります。

x0を正方向にずらして、赤枠に収める※横方向に若干の圧縮がされるが、問題はない。

この場合、regionオプションを使って有効範囲に収めましょう。

はみ出ている(x0, y0)=(0, 0)

赤枠：プロット有効範囲

灰色枠：プロットの全範囲

17

2.6. 軸タイトル・ラベルの変更、線の色の変更

CUI

options, 'tplot変数名', 'オプション名', 値
options, 'tplot変数', 'labels', ラベル文字列
options, 'tplot変数', 'ytitle', '文字列'
options, 'tplot変数', 'colors', 色コード

プロットのラインのラベルを変更します。
Y軸のタイトルを変更します。
プロットのラインの色を変更します。
（0: 黒、1: マゼンダ、2: 青、3: シアン、4: 緑、5: 黄、6: 赤）

データごとに凡例や色を変更する場合に使います。

（例）
THEMIS> options, 'mm210_mag_kag_1sec_hdz', 'labels', ['H', 'D', 'Z']
THEMIS> tplot

Y軸のタイトルは、デフォルトでは、ロードしたデータに埋め込まれている名称が用いられます。発表や論文等で使う場合は、適したものに変更しましょう。
文字列の途中に改行を入れたい場合は、!Cを入力します。例えば、'mm210!Cmag…' とします。

ラベルがH, D, Zに変更されました。

18

2.7. タイムスタンプの表示／非表示

CUI

time_stamp, (/on または /off)
発表や論文等では不要なタイムスタンプ情報を削除します。

（例）
THEMIS> time_stamp, /off
THEMIS> tplot

タイムスタンプ欄にはプロットを作成した日時が入ります。デフォルトはオンです。
発表や論文等で使う場合はオフにすることをお勧めします。

タイムスタンプが削除されました。

19

2.8. プロット画像の保存

CUI

makepng, '保存名'
プロット結果を画像ファイルに保存する場合に使います。

（例）
THEMIS> makepng, 'myname'

拡張子の入力は不要です。
保存名の欄にはパス情報を含めることもできます。

画像ファイル myname.png として保存されました。
（その他の使い方）
makejpg, '保存名'

JPEGファイルとして保存します。

makegif, '保存名'

GIFファイルとして保存します。

popen, '保存名'
pclosePostscriptファイルとして保存します。
popenを実行した後は、必ず、tplot（再描画）とpcloseを実行してください。

20

2.9. tplot変数のASCII出力、保存、再読込み

CUI

tplot_ascii, 'tplot変数名' （, fname='保存するファイル名'）
tplot_save, 'tplot変数名', filename='保存するファイル名'
tplot_restore, filename='再読込みするファイル名'
tplotの中身を数値で確認したい場合、後でまたそのtplot変数を使いたい場合に用います。

（例）
THEMIS> tplot_ascii, 'mm210_mag_kag_1h_hdz', fname='myfile'
2012-03-05/03:00:00.000
2012-03-05/04:00:00.000…..

-2.9200001e+001-2.7100000e+001-3.3000000e+000-2.5700001e+001-3.5000000e+001-4.3000000e+001

tplot変数の値が、ASCII形式のファイル myfile.txt として保存されました。
THEMIS> tplot_save, 'mm210_mag_kag_1h_hdz', filename='myfile'
THEMIS> tplot_names
tplot変数が myfile.tplot ファイルとして保存されました。
THEMIS> tplot_restore, filename='myfile.tplot'
THEMIS> tplot_names

いずれも拡張子の入力は不要です。
ASCII出力は、他の解析ソフトウェアに引き継がせる等にも効果的です。
tplot変数の保存と再読込みは、解析を一旦終了して後でその続きを実施する場合や、他の人に渡してその解析結果を議論したい場合等に有用です。

21

3.1. tplot変数値のコピー

CUI

copy_data, '元のtplot変数名', '新しいtplot変数名'
tplot変数の現在の状態を残して、解析を次に進める（試す）場合に使います。

（例）
THEMIS> tplot_names
1 wdc_mag_ae_prov_1min
2 wdc_mag_ae_prov_1min_0
3 wdc_mag_ae_prov_1min_1
4 wdc_mag_ae_prov_1min_2
THEMIS> copy_data, 'wdc_mag_ae_prov_1min_1', 'mydata'
THEMIS> tplot_names
1 wdc_mag_ae_prov_1min
2 wdc_mag_ae_prov_1min_0
3 wdc_mag_ae_prov_1min_1
4 wdc_mag_ae_prov_1min_2
5 mydata
tplot変数がコピーされました。 （中身はコピー元と同じです。）

22

3.2. tplot変数値のIDL変数への格納

CUI

get_data, 'tplot変数名', data=d, dlim=dlim, lim=lim
データ配列を入れる変数

メタデータを入れる変数

可視化情報を入れる変数

SPEDASで計算した値を、IDLの変数値と比較・演算する場合に使います。

（例）
THEMIS> get_data, 'mm210_mag_kag_1sec_hdz', data=d, dlim=dlim, lim=lim
THEMIS> help, d, /struct

試しに、helpコマンドとオプション/structを使って、構造体内の情報を確認します。

** Structure <17ac3700>, 2 tags, length=12096000, data length=12096000, refs=1:
X
DOUBLE Array[604800]
Y
FLOAT Array[604800, 3]

tplot変数のデータ部（ここではIDL構造体d）は、X, Yの2つのメンバーで構成されていることが分かります。
X: 倍精度浮動小数点で表したUnix time （1970年1月1日0時0分0秒UTからの積算秒数）
この例では 604800個の要素を持つ1次元配列。
このデータは1秒値で7日分のため、86400秒×7日分＝604800個のtime frameを持つという意味。

Y: 実際にデータが入っている配列
この場合、604800個の要素を持つ1次元配列。

23

3.2. tplot変数値のIDL変数への格納

CUI

THEMIS> help, dlim, /struct** Structure <1ab92dd0>, 4 tags, length=1256, data length=1250, refs=2:
CDF
STRUCT -> <Anonymous> Array[1]
SPEC
BYTE
0
LOG
BYTE
0
YSUBTITLESTRING '[nT]'dlimits構造体にはメタデータ（データに関する各種情報）が格納されています。
例えば CDF はこれ自体も構造体であり、元データファイルであるCDFファイルの情報（ファイルのセーブ場所など）が格納されています。

THEMIS> help, lim, /struct** Structure <2f71e08>, 3 tags, length=64, data length=56, refs=2:
COLORS
INT
Array[3]LABELSSTRING Array[3]LABFLAGINT
1limits構造体には、主にプロット等に可視化する際に必要な情報が入っています。
例えば tplot コマンドがtplot変数をプロットする場合、ここの情報を参照して、線の色や縦軸のラベル等を
決めます。

24

3.3. IDL変数値のtplot変数への格納

CUI

store_data, '新tplot変数名', data = {x:time, y:data}
作成するtplot変数（構造体）の定義
IDLで計算した値を、SPEDASのtplot変数と比較・演算する場合に使います。

（例）
THEMIS> time = d.x （このd.xは、get_dataで作成したIDL変数dのメンバx（時刻）を示します。）
THEMIS> val = sqrt( d.y[*, 0]^2 + d.y[*, 1]^2 + d.y[*, 2]^2 )IDL変数の地磁気ベクトルd.yから地磁気絶対値|B|= √(Bx2+By2+Bz2)を計算し、valに代入したとします。

THEMIS> store_data, 'kag_abs', data = { x:time, y:val }timeとvalを(x, y)に持つ、新しいtplot変数 'kag_abs' を作成します。

THEMIS> tplot_names
THEMIS> tplot, ['mm210_mag_kag_1sec_hdz', 'kag_abs']
データ配列（data）には、スカラーデータの場合は[N]（timeと同じサイズ）、1次元ベクトルデータの場合は[N][J]（Jがベク
トルの成分数）の配列であれば、tplot変数に格納することができます。
tplot変数もIDL構造体です。(x, y)のみでなく、時間、値、緯度、経度などの多くの情報を入れることができます。例えば、
store_data, 'abs_tec', data = {x:time, y:tec, glat:glat,
glon:glon} など、その拡張性により、多量変数のデータを他の演算へ引き継ぐことができます。

IDL構造体であったval（地磁気絶対値|B|）をtplot変数に格納して、SPEDASでプロットすることができました。

25

3.4. 日時文字列の構造体への格納

CUI'新しい変数名' = time_struct('YYYY-MM-DD[/hh:mm:ss]')
指定した値を格納するための構造体名

日時文字列（Unix time でも指定できます）

IDLで計算した値を、SPEDASのtplot変数と比較・演算する場合に使います。

（例）
THEMIS> tstr='2010-01-02/10:20:30'
THEMIS> ts=time_struct(tstr)
THEMIS> help, ts, /str** Structure TIME_STRUCTR, 14 tags, length=48, data length=42:
YEAR
INT
2010
MONTH
INT
1
DATE
INT
2
構造体からは、例えば、ts.year, ts.month のようにして値を
HOUR
INT
10
取り出すことができます。
MIN
INT
20
SEC
INT
30
FSEC
DOUBLE
0.0000000
DAYNUM
LONG
733773
DOY
INT
2
DOW
INT
5
SOD
DOUBLE37230.000
DST
INT
0
TZONE
INT
0
TDIFF
INT
0

26

3.5. スパイクノイズの除去

CUI

clean_spikes, 'tplot変数名', nsmooth=ns, thresh=th (, new_name='新tplot変数')
スムージングをかける点数

閾値

結果を格納する
新しいtplot変数

ノイズを除去して本来の値のみ使いたい場合に用います。

（例）
THEMIS> clean_spikes, 'mm210_mag_kag_1sec_hdz_x', nsmooth=3, thresh=10
THEMIS> tplot, ['mm210_mag_kag_1sec_hdz_x', 'mm210_mag_kag_1sec_hdz_x_cln']
スムージング点数nsと閾値thの関係
nsは時刻方向の配列分（1秒値であれば3秒）を示し、その間でスムージングを行います。元データの値をx、スムージ
ングされた値をxsとすると、|x| > nsth|xs| / (ns-1+th)
06, 12UTに疑似ノイズ（30nT）を追加しています。

により、閾値判定します。
閾値（th）を小さくし過ぎると、正常なデータも除去してしまう
可能性があるので、ノイズ除去後のデータを確認しながら、
適切なns、thを選びましょう。
連続データ中にスパイクノイズがあると、スペクトル計算や相関演算に影響が出ます。事前にスパイク除去を行うことをお勧めします。

スパイクノイズが除去されました。

多くの場合、公開データは、既にノイズが除去された状態にあります。プロットした際に明らかにノイズが見えて、それが解析に支障を与える場合に、ノイズ除去を適用しましょう。

27

3.6. dt間の値の補間

CUI

tinterpol, 'tplot変数名', 'tplot変数名' (, newname='新tplot変数'）
補間したい
現在の粗いデータ

補間情報を持つ細かいデータdt間を高時間分解能データから補って、時間変動を詳しく見たい場合に使います。

（例）
THEMIS> tinterpol, 'mm210_mag_kag_1min_hdz_x', 'mm210_mag_kag_1sec_hdz_x'
THEMIS> tplot, ['mm210_mag_kag_1min_hdz_x', 'mm210_mag_kag_1min_hdz_x_interp']
1分値データを細かくしたい場合等に使います。
補間に使う2つのデータは、同じ時間である必要があります。
同じ観測でも、例えば、1分値と1秒値のデータが用意されている場合があります。詳細に見たい場合は、最初から1秒値データを使うなどの工夫も大切です。
（オリジナルは1秒値データで、サマリーを見るためや
データ容量を削減する目的で1分値データが作成されているという場合があります。）

dt間にデータが補間されました。

28

3.7. 指定した範囲値の抽出（Y, Z）

CUI

tclip, 'tplot変数名', 最小値, 最大値 （, newname='新tplot変数'）抽出する範囲 抽出する範囲
の最小値
の最大値
指定した範囲内の値のみ使いたい場合に用います。

（例）
THEMIS> tclip, 'mm210_mag_kag_1sec_hdz_x', -80, -30
THEMIS> tplot, ['mm210_mag_kag_1sec_hdz_x', 'mm210_mag_kag_1sec_hdz_x_clip']
エラー値（エラーや欠測を意味する値）や、許容範囲を超えている値（例えば、光速を超えた速度など）をプロットさせない、解析対象から外すなどの際に有効なコマンドです。
範囲外の値はNaNに置換されます。

-80から30の範囲のみ抽出されました。

29

3.8. 欠損値の補間

CUI

tdeflag, 'tplot変数名', 'method' (, newname='新tplot変数名'）
補間したい
元データ

補間の種別

補間種別

linearrepeatremove_nan

線形補間
直前の正常値で補間
NaNを取り除く

欠損値（NaN）を有限の値に置き換えて繋げる場合に使います。

（例）
THEMIS> tdeflag, 'mm210_mag_kag_1sec_hdz_x_clip', 'linear'
THEMIS> tplot, ['mm210_mag_kag_1sec_hdz_x_clip', 'mm210_mag_kag_1sec_hdz_x_clip_deflag']
フィルター処理やスペクトル解析、相関演算を行う前に適用します。
あまりにも欠測値があるデータの場合は、解析結果の信頼度を下げることになるため、あまりお勧めしません。
tclipと組み合わせて使うことで、エラー値の箇所を補間することができます。

欠損値（NaN）が線形補間されました。

30

3.9. 時刻抜け箇所へのNaN挿入

CUI

tdegap, 'tplot変数名' （, maxgap=範囲, newname='新tplot変数名'）
適用時間幅
maxgap×dt秒以下の時刻抜け
をNaNで埋める
連続であるはずの時刻が飛んでいる場合に、時刻を連続化させるために使います。

（例）
THEMIS> timespan, '2012-3-10', 2
THEMIS> iug_load_eiscat, site='tro_uhf'
THEMIS> tdegap, 'eiscat_trouhf_ne'
THEMIS> tplot, ['eiscat_trouhf_ne','eiscat_trouhf_ne_degap']
他の変数・構造体との計算やプロット作成の際に、抜けている箇所をNaNにしておく必要がある場合に使います。
また、直後にtdeflagを適用することで、時刻抜けの箇所のデータを補間することができます。
時刻抜けがある箇所（時間が飛んでいる箇所）にNaNが挿入されました。
NaNの部分は、描画が省略されます。

31

3.10. 時間範囲を指定して抽出

CUI

time_clip, 'tplot変数名', 'YYYY-MM-DD/hh:mm:ss', 'YYYY-MM-DD/hh:mm:ss'
抽出開始日時

抽出終了日時（, newname='新tplot変数名'）
特定の時間範囲のみを取り出して、詳細に解析したい場合に使います。

（例）
THEMIS> timespan, '2012-03-08'
THEMIS> iug_load_gmag_mm210, site='kag'
THEMIS> time_clip, 'mm210_mag_kag_1sec_hdz', '2012-03-08/08', '2012-03-08/16'
THEMIS> tplot, ['mm210_mag_kag_1sec_hdz_x', 'mm210_mag_kag_1sec_hdz_x_tclip']
多くのメモリを必要とする高度なスペクトル解析（wavelet, S-transform）を行う際にも有用です。

指定した時間範囲が抽出されました。

32

3.11. 指定した時刻の値（配列番号）を抽出

CUI'戻り値変数名'=nn('tplot変数名', 'YYYY-MM-DD[/hh-mm-ss]')
取り出す時刻（キー）

戻り値（配列番号）を格納するための変数名

指定した時刻の値（配列番号）を取り出して、詳細に解析したい場合に使います。

（例）
THEMIS> timespan, '2012-03-08'
THEMIS> iug_load_gmag_mm210, site='kag'
THEMIS> get_data, 'mm210_mag_kag_1sec_hdz', data=data
THEMIS> tstr='2012-03-08/11:10'
THEMIS> idx=nn(data, tstr)
THEMIS> print, data.y[idx, *]35.3278
12.7848
18.5263

他の言語でいう (key, value) の hash 操作に似ていますが、このコマンドは配列番号を取り出すのみのため、指定時刻で値を抽出したい場合は、結果がtplot変数に格納されるtime_clipの方が便利です。

33

4.1. 平均値の差し引き

CUI

tsub_average, 'tplot変数名', （/median, new_name='新tplot変数名'）
平均値の代わりに中間値を取り除く場合
変動の相対量を見たい場合に使います。

（例）
THEMIS> tsub_average, 'mm210_mag_kag_1sec_hdz_x'
THEMIS> tplot, ['mm210_mag_kag_1sec_hdz_x', 'mm210_mag_kag_1sec_hdz_x-d']
相関演算やスペクトル解析を行う前に必ず実施
しましょう。

平均値を差し引いた値がプロットされました。

34

4.2. 移動平均とスムージング

CUI

tsmooth_in_time, 'tplot変数', dt （, newname='新tplot変数名'）
平均幅（秒）
長期変動解析など、指定周期よりも遅い変動のみを解析対象にする場合に使います。

（例）
THEMIS> tsmooth_in_time, 'mm210_mag_kag_1sec_hdz_x', 600
THEMIS> tplot, ['mm210_mag_kag_1sec_hdz_x', mm210_mag_kag_1sec_hdz_x_smoothed']指定された時間幅（秒数）で移動平均してスムージ
ングします。
長期変動など、指定周期よりも早い変動を取り除いて遅い周期を解析対象にしたい場合に使います。

600秒で移動平均を取った結果がプロットされました。

35

4.3. ハイパスフィルター

CUI

thigh_pass_filter, 'tplot変数', dt （, newname='新tplot変数名'）
下限周期（秒）
短期変動解析など、指定周期よりも早い変動のみを解析対象にする場合に使います。

（例）
THEMIS> thigh_pass_filter, 'mm210_mag_kag_1sec_hdz_x', 200
THEMIS> tplot, ['mm210_mag_kag_1sec_hdz_x', 'mm210_mag_kag_1sec_hdz_x_hpfilt']
短期変動など、指定周期よりも早い変動を取り出して、変動の詳細を見たい場合に使います。

200秒で移動平均を取って算出した下限周期よりも早い変動のみが抽出されてプロットされました。

36

4.4. フーリエスペクトル解析

CUI

tdpwrspc, 'tplot変数', nboxpoints=値 （, nshiftpoints=値）
FFTをかける
データ点数

時間方向にシフトする
データ点数

変動の周波数を算出する場合に使います。

（例）
THEMIS> tdpwrspc, 'mm210_mag_kag_1sec_hdz', nboxpoints=512, nshiftpoints=256
THEMIS> tplot, ['mm210_mag_kag_1sec_hdz_x', 'mm210_mag_kag_1sec_hdz_x_dpwrspc']
欠損値（NaN）ががあるとFFTができない場合があります。欠損値補間（tdeflag）などでデータを補間
しておきましょう。
データ点数は2のn乗にすることをお勧めします。
データ点数は、データの時間分解能により決定し、地磁気データの場合、0.5秒値データ：512以上、1秒値データ：128～512、2秒値データ：128以下が目安です。
周波数の強さを示すカラーバーはZ軸で与えられます。軸範囲変更（zlim）を使って範囲を狭めると、特定周波数を持つ現象が見えてきます。

ダイナミックスペクトルが算出され、プロットされました。

37

4.5. ウェーブレット変換

CUI

wav_data, 'tplot変数' （, trange=時間範囲）
変換する時間範囲
変動の周波数を算出する場合に使います。

（例）
THEMIS> tr=['2012-03-08/08', '2012-03-08/16']
時間範囲は、あらかじめ変数として与えておくと便利です。

THEMIS> wav_data, 'mm210_mag_kag_1sec_hdz_x', trange=tr
THEMIS> tplot, ['mm210_mag_kag_1sec_hdz_x', 'mm210_mag_kag_1sec_hdz_x_wv_pow']
非線形・非定常な変動現象のスペクトルを算出す
る高度な解析手法です。
ただし、データに多くのノイズが含まれているとその影響が強く出るので注意する必要があります。
また、計算機への負担も高く、処理に時間がかかるため、事前に時間範囲抽出（time_clip）を行い、一度に変換するデータ点数を1万点以下にした別のtplot変数を用意しておくことをお勧めします。

指定した時間範囲の値がウェーブレット変換されました。

38

4.6. 四則演算、微分、平均計算

CUI

add_data, 'tplot変数名', 'tplot変数名' （, newname='新tplot変数名'）
演算する2つのtplot変数

その他、dif_data（差）、mult_data（積）、div_data（商）、deriv_data（微分）avg_data, 'tplot変数名', 秒平均値 （, newname='新tplot変数名'）
平均を取る秒
特定の時間範囲のみを取り出して、詳細に解析したい場合に使います。

（例）
THEMIS> tplot_names
1 wdc_mag_ae_prov_1min
2 wdc_mag_ae_prov_1min_0 （AE）
3 wdc_mag_ae_prov_1min_1 AU
4 wdc_mag_ae_prov_1min_2 AL
5 wdc_mag_ae_prov_1min_3 AO
THEMIS> dif_data, 3, 4, newname='AU-AL'
THEMIS> add_data, 3, 4, newname='AU+AL'
THEMIS> tplot, ['wdc_mag_ae_prov_1min_0', 'AU-AL','wdc_mag_ae_prov_1min_3', 'AU+AL']
微弱な変化を見たいときは時間微分（deriv_data）が非常に効果的です。スペクトル解析などに持ち込めます。

'AU-AL' と 'AU+AL' が作成され、プロットされました。
※物理的にも AE=AU-AL, AO=(AU+AL)/2 です。

39

4.7. 計算式の構築とその演算

CUI

calc, ' ''新tplot変数名'' = … 計算式 … '構築する計算式

右辺の計算結果を格納するための新しいtplot変数

自分で計算式を構築して演算する場合に使います。

（例）
THEMIS> calc, ' "iug_ear_faieb3p4g_dpl2_h" = "iug_ear_faieb3p4g_dpl2" *cos(180.0*3.14159/180)/sin(20.8*3.14159/180)'
THEMIS> calc, ' "iug_ear_faieb3p4g_dpl3_h" = "iug_ear_faieb3p4g_dpl3" *cos(207.1*3.14159/180)/sin(23.2*3.14159/180)'
計算式のルール
フォーマットは普通の計算式と同じ。全体を単引用符( ' ) で囲む 。tplot変数は 二重引用符('') で囲む 。
使用可能な演算: 四則(+-*/), べき乗, sin/cos/tan(), exp(),log(), abs(), min(), max(), total(), mean(), median(), …

注意点
複数のtplot変数を演算に使う場合、実体の配列のサイズ・次元は同一である必要がある。データの時刻数が異なる、
データの次元が異なる （スカラーデータと ベクトルデータの混在など）とエラーになる。
calcを用いて新しいtplot変数を生成した場合、前に含んでいたデータの基本情 報を引き継がないので、改めてoptionコマンドで適宜入れる。（軸タイトル、凡例等）

40

5.1. 指定した時刻に縦線を引く

CUI

timebar, 'YYYY-MM-DD[/hh:mm:ss]'
線を引く時刻（, color=色コード, linestyle=線の種類, thick=線の太さ）
色コード
線の種類
線の太さ

0: 黒（既定値） 、1: マゼンダ、2: 青、3: シアン、4: 緑、5: 黄、6: 赤
0: 実線（既定値）、1: 点線、2: 破線、3: 一点鎖線、4: 二点鎖線、5: 長い破線
数値で与えるプロットにおいて、現象の開始点・終了点をハイライトする場合に使います。

（例）
THEMIS> timespan, '2012-3-8'
THEMIS> iug_load_gmag_mm210, site='kag'
THEMIS> tplot, 'mm210_mag_kag_1sec_hdz'
THEMIS> timebar, ['2012-03-08/11', '2012-03-08/16'],color=[0, 1]

指定した時刻に縦線が引かれて、現象の開始点と終了点が分かりやすくなりました。

41

5.2. 指定したY軸の値に横線を引く

CUI

options, 'tplot変数名', 'databar', {yval:Y値}
固定文字列'databar' を与える

固定文字列 線を引く
'yval' をY値与える

tplot_apply_databar, 'tplot変数名'
現象の振幅等をハイライトする場合に使います。

（例）
THEMIS> timespan, '2012-3-8'
THEMIS> iug_load_gmag_mm210, site='kag'
THEMIS> tplot, 'mm210_mag_kag_1sec_hdz'
THEMIS> options, 'mm210_mag_kag_1sec_hdz','databar', {yval:[0, 20, 40]}
THEMIS> tplot_apply_databar
optionsコマンドを使って、線の有効化と値を与えてから、tplot_apply_databar コマンドを使って、実際に線を引きます。

指定したY値（0, 20, 40）に横線が引かれて、現象の振幅が分かりやすくなりました。

42

A.1. crib sheet を使った連続処理

CUI.run crib_sheet名
バッチ処理のように、一連のコマンドを続けて実行したい場合に使います。

（例）iug_crib_asi_nipr.pro （SPEDASに同梱されています）
thm_init

crib sheet は、実行例を示すものとして、SPEDAS
パッケージの中にいくつか入っています。使い方が分からない場合に参考にするのもよいでしょう。

timespan, '2012-01-22/20:30', /min, 30

また、自分で作っても構いません。自分に合った一連の解析を保存しておくのもよいでしょう。

iug_load_asi_nipr,site='hus', wavelength='0000'
tplot_names
tplot, 'nipr_asi_hus_0000'
print, 'Enter ".c" to continue.'stop
window, 1, xsize=480, ysize=480
ctime, /cut
end
43

A.2. UDAS egg を使ったロードプロシージャの自作

CUI

IUGONETウェブサイトからダウンロードします。
UDAS egg

検索

自分のデータを解析したい場合、自分なりの解析ルーチンを構築したい場合に使います。
UDAS eggとは？
ユーザが持っているSPEDAS未対応の科学データを簡単にロード・解析するための、IDL/SPEDAS用プログラムの雛形です。
プログラムコード上にマークされた箇所（計10行程度）を書き換えるだけで、「自分のデータ」を即時に可視化・解析することができます。マニュアルも
IUGONETのウェブサイトからダウンロードできます。

44