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

超高層大気分野の解析ツール
SPEDAS

統合型解析ソフトウェア
SPEDAS
IDL言語で書かれた解析ツールです。多種多様な衛星・地上観測ミッションで取得されたデータを、CUI、GUI両方のインターフェースで解析できます。IDLライセンスが必要です。

pySPEDAS

Pythonベースの統合型解析ソフトウェア pySPEDAS
Python言語で書かれた解析ツールです。多種多様な衛星・地上観測ミッションで取得されたデータを解析できます。誰でも無償で利用できます。

2

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

SPEDAS

ユーザーのPC

自動ダウンロードdata

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

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

SPEDAS/TDAS

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

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

SPEDASの基本的な使い方
timespan, 'YYYY-MM-DD/hh:mm:ss', N
読込み開始の日時

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

読み込む日数

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

SPEDAS

データをロードします。
ロードしたデータは、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がプロットされました。

4

SPEDASの基本コマンド

SPEDAS

前ページの基本コマンドは、以下のようにも実行できます。
timespantimespan, '2012-03-05/00:00:00', 7, /day

キーワードで指定した値が日数であることを明示します。
他に、時間（/hour）、分（/min）、秒（/sec）を指定することができます。
省略した場合は日（/day）が適用されます。

timespan, ['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を終了します。

5

tplot変数

SPEDAS

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

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

データ
配列

いかに見映えを整えるか

SPEDAS

tplot変数1（構造体）

メタ情報

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

時刻配列

データ
配列

メタ情報
可視化情報

いかに解析するか

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

データ
配列

メタ情報
可視化情報

論文・発表向け成果

3, 4, …

6

pySPEDASを使う準備

pySPEDASpySPEDASのインストール

7

pySPEDASのインストール

pySPEDASpySPEDASの動作環境
Windows、macOS、Linuxをサポートしています。
Python 3.8以上のバージョンが必要です。
pySPEDASの公式ウェブサイトでは、Pythonの利用環境として、Anacondaを推奨していますが、利用に際し有償ライセンスが必要になる方もいるので、本講習ではPythonにJupyterLabをインストールして解析を進めます。

Pythonのインストール
Pythonをインストールしていない場合は、以下のサイトを参考に、Pythonをインストールします。
•••

macOS: https://www.python.jp/install/macos/index.html
Windows: https://www.python.jp/install/windows/index.html
Linux(Ubuntu): https://www.python.jp/install/ubuntu/index.html

仮想環境を作成する
他のPythonパッケージとの依存関係の問題を避けるために、PySPEDAS用の仮想環境を作成します。
各OSのターミナルで以下を実行します。
Windows, macOS, Linux共通:
python -m venv pyspedas

8

pySPEDASのインストール

pySPEDAS

仮想環境を開始する
ターミナルでactivateスクリプトを実行します。
Windows:
コマンドプロンプトの場合.¥pyspedas¥Scripts¥activate.bat

仮想環境が有効になると、プロンプトの先頭に(pyspedas)と表示されます

PowerShellの場合.¥pyspedas¥Scripts¥Activate.ps1
macOS, Linux:
source pyspedas/bin/activate（参考）仮想環境を終了する
ターミナルでactivateスクリプトを実行します。
Windows:
コマンドプロンプトの場合
deactivate.bat

仮想環境が終了すると、プロンプトの先頭の(pyspedas)が表示されなくなります

Windows: PowerShellの場合, macOS, Linux:
deactivate
9

pySPEDASのインストール

pySPEDAS

JupyterLabのインストール
本講習では、ブラウザ上で動作する対話型プログラム実行環境のJupyterLabを使います。
ターミナル(仮想環境有効状態)で以下を実行してください。
Windows, macOS, Linux:
python -m pip install jupyterlab

JupyterLabの起動
本講習では、ブラウザ上で動作する対話型プログラム実行環境のJupyterLabを使います。
ターミナル(仮想環境有効状態)で以下を実行してください。
Windows, macOS, Linux:
jupyter lab
ブラウザが自動で開き、JupyteLabのウィンドウが現れます。

10

pySPEDASのインストール

pySPEDASpySPEDASのインストール
1.
2.
3.

Launcher > Othersの「Terminal」をクリックします。
新しいタブでターミナルが開くので、以下を実行します。
python –m pip install pyspedas
タブの×ボタンを押して、ターミナルを閉じます。

11

pySPEDASのインストール

pySPEDAS

Notebookの起動
1.

Launcher>NoteBookの「Python3(ipykernel)」をクリックします。

以下のようなウィンドウが開けば、準備OKです。

12

PySPEDASの使い方

pySPEDASpySPEDAS を使ってみよう

13

pySPEDASの基本的な使い方
import pyspedas
import pytplot
from pytplot.MPLPlotter.tplot import tplot

pySPEDAS

必要なパッケージをインポートします。

データをロードします。

ロード関数(keyword=値)

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

pytplot.tplot_names()

ロードしたデータを一覧表示します。

tplot(['tplot変数名', ..])

プロットを作成します。

プロットするtplot変数名（例） > import pyspedas> import pytplot> from pytplot.MPLPlotter.tplot import tplot> pyspedas.omni.data(trange=['2017-09-07', '2017-09-09'])
データがロードされ、メッセージが表示される。
> pytplot.tplot_names()
0 : IMF
1 : PLS
2 : IMF_PTS:> tplot(['flow_speed', 'proton_density', 'BZ_GSM', 'SYM_H', 'AE_INDEX'])

14

Pythonの便利な機能

pySPEDAS

タブによるコードの自動補完? コマンド> pyspedas.omni.data?

helpコマンド> help(pyspedas.omni.data)15

（例1） OMNIの太陽風、地磁気指数データ

pySPEDAS> import pyspedas> import pytplot> from pytplot.MPLPlotter.tplot import tplot> pyspedas.omni.data(trange=['2017-09-07', '201709-09'])※1行で書く。
データがロードされ、メッセージが表示される。
> pytplot.tplot_names()
0 : IMF
1 : PLS
2 : IMF_PTS:> tplot(['flow_speed', 'proton_density', 'BZ_GSM','SYM_H', 'AE_INDEX'])※1行で書く。
変数名を使わず、通し番号で記述しても良い。
> tplot([17, 21, 14, 39, 35])16

（例2） 地上磁場データ（Tromso）

pySPEDAS> import pyspedas> import pytplot> from pytplot.MPLPlotter.tplot import tplot※これは、一度インポートしたら実行する必要無し。
> pyspedas.themis.gmag(trange=['2017-09-07','2017-09-09'], sites='tro')※1行で書く。
> pytplot.tplot_names()
0 : IMF
1 : PLS
2 : IMF_PTS:? : thg_mag_tro> tplot(['thg_mag_tro'])17

pyUDASの使い方pySPEDAS

pyUDASのインストール

18

pyUDASのインストール

pySPEDASpyUDASとは？
IUGONETプロジェクトで開発中のpySPEDASのプラグインソフトウェアです。
pySPEDASと一緒にpyUDASをインストールすることで、IUGONETで公開している地上観測データをロード、描画することが可能となります。
公募型共同研究「ROIS-DS-JOINT」の支援で各大学の学生や開発支援業者とともに開発中です。
将来的には、pySPEDASに統合することを計画しています。

Gitのインストール
Gitがインストールされていない場合は、以下のサイトを参考に、Gitをインストールします。
• Windows: https://prog-8.com/docs/git-env-win• Mac: https://prog-8.com/docs/git-env
Terminalから以下を実行して、> git
usage: git…という表示がでればインストールされています。

pyUDASのインストール
1.
2.
3.
4.

メニューからFile > New > Terminalを選択し、ターミナルを開きます。
以下を実行します。
python –m pip install git+https://github.com/iugonet/pyudas@koshu2023
ターミナルを閉じます。
19

昭和基地地磁気データ

pySPEDAS> from iugonet import gmag_nipr
ロード関数のインポート。
> gmag_nipr(trange=['2017-09-07', '2017-09-08'],site='syo')※1行で書く。
データがロードされ、メッセージが表示される。
> pytplot.tplot_names()
0 : nipr_mag_syo_1sec> tplot(['nipr_mag_syo_1sec'])20

ベクトルの成分分解

pySPEDAS

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

（例）> pytplot.split_vec('nipr_mag_syo_1sec')['nipr_mag_syo_1sec_x', 'nipr_mag_syo_1sec_y','nipr_mag_syo_1sec_z']
成分分解されました。

> tplot(['nipr_mag_syo_1sec_x', 'nipr_mag_syo_1sec_y','nipr_mag_syo_1sec_z'])（その他の類似関数）
pytplot.join_vec(['tplot変数1', 'tplot変数2'], new_tvar='新しいtplot
複数のtplot変数を、新しいtplot変数にまとめます。
変数')

21

時間幅の変更

pySPEDAS

pytplot.timespan( 'YYYY-MM-DD hh:mm:ss', 値,
keyword='days')
時間軸を拡大して、時間変動を詳しく見たい場合に使います。 他に、hours, minutes, secondsが使えます。

（例）> pytplot.timespan('2017-09-07 18:00:00', 6, keyword='hours')> tplot('nipr_mag_syo_1sec')

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

22

縦軸範囲の変更

pySPEDAS

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

（例）> pytplot.ylim('nipr_mag_syo_1sec', -2000, 2000)> tplot('nipr_mag_syo_1sec')（その他の類似関数）
pytplot.zlim('tplot変数', 最小値, 最大値)

Y軸の範囲が-2000から2000に変更されました。
データが三軸（パワースペクトル等）で構成されている場合に、同じように第三軸に対して適用します。

23タイトルの付与、フォントの調整など

pySPEDASpytplot.tplot_options('オプション名', 値)
pytplot.tplot_options('title', '文字列')
pytplot.tplot_options(' axis_font_size', 値)プロットの上にタイトルを表示します。
軸のフォントのサイズを変更します。
（デフォルトは10）

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

（例）> pytplot.tplot_options('title', 'Geomagnetic field at Syowa')

タイトルが表示されました。

> pytplot.tplot_options('axis_font_size', 15)> tplot('nipr_mag_syo_1sec')

軸のフォントサイズが変更されました。

24

ラベルの変更、線の色の変更など

pySPEDAS

pytplot.options('tplot変数名', 'オプション名', 値)
pytplot.options('tplot変数', 'legend_names', 'ラ
ベル文字列のリスト')
pytplot.options('tplot変数', 'ytitle', '文字列')
pytplot.options('tplot変数', 'color', '色')プロットのラインのラベルを変更します。
Y軸のタイトルを変更します。
プロットのラインの色を変更します。
（red, green, blueなど。RGBのタプル（0, 255, 0）も使えます ）データごとに凡例や色を変更する場合に使います。

（例）> pytplot.options('nipr_mag_syo_1sec_x', 'legend_names', 'Hcomp')> pytplot.options('nipr_mag_syo_1sec_x', 'color', 'blue')

ラベルが表示され、プロットの色が青になりました。

> tplot(['nipr_mag_syo_1sec_x', 'nipr_mag_syo_1sec_y','nipr_mag_syo_1sec_z'])25

tplot変数の保存、再読込み

pySPEDAS

pytplot.tplot_save('tplot変数名', filename='保存するファイル名')
pytplot.tplot_restore(filename='再読込みするファイル名')
後でまたそのtplot変数を使いたい場合に用います。

（例）> pytplot.tplot_save('nipr_mag_syo_1sec_x', filename='nipr_mag_syo_1sec_x.dat')
nipr_mag_syo_1sec_xをカレントディレクトリに保存します。
> pytplot.del_data('nipr_mag_syo_1sec_x')
tplot変数「nipr_mag_syo_1sec_x」を削除します。
> pytplot.tplot_names()
tplot変数「nipr_mag_syo_1sec_x」が削除されていることを確認します。
> pytplot.tplot_restore(filename='nipr_mag_syo_1sec_x.dat')
tplot変数「nipr_mag_syo_1sec_x」を再読み込みします。
> pytplot.tplot_names()
tplot変数「nipr_mag_syo_1sec_x」がロードされています。
26

tplot変数からデータを取り出す

pySPEDAS

data=pytplot.get_data('tplot変数名')
データ配列を入れる変数
ロードしたtplot変数を取り出して、pythonで自由に解析したい場合に使います。

（例）> data=pytplot.get_data('nipr_mag_syo_1sec')
tplot変数からデータを取り出し、変数dataに格納します。
> time=data[0]> ydata=data[1]配列の0番目は日時、1番目は地磁気データです。
> pyspedas.time_string(time)['2017-09-07 00:00:00.000000','2017-09-07 00:00:01.000000','2017-09-07 00:00:02.000000',> ydataarray([[ -69.85473633, -29.33502197, 85.81924438],[ -70.55664062, -28.90014648, 86.0824585 ],[ -71.15936279, -28.51486206, 86.24649048],...,
27

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

pySPEDAS

pytplot.store_data('新tplot変数名', data = {'x':time, 'y':data})
作成するtplot変数（構造体）の定義
計算した値を、tplot変数に格納するときに使います。

（例）> pytplot.store_data('newdata', data={'x':time, 'y':ydata})
変数time, ydataをtplot変数「newdata」に格納します。
> tplot ('newdata')28

フーリエスペクトル解析

pySPEDAS

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

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

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

（例）> pyspedas.tdpwrspc('nipr_mag_syo_1sec',nboxpoints=256,nshiftpoints=128)
成分ごとにスペクトルのtplot変数が生成されます> tplot('nipr_mag_syo_1sec_?_dpwrspc')?は任意の一文字のワイルドカードです*は任意の文字数のワイルドカードです29pyUDAS
ダウンロード元URL: https://github.com/iugonet/pyudas/tree/koshu2023
pyUDAS 講習会版に含まれているロード関数：※開発途中であり、まだバグを含んでいる可能性が高いことにご留意ください。
※今年度中に複数のロード関数を追加していきます。
No.

データの種類

ロード関数名1

極地研・全天イメージャデータ

asi_nipr2

極地研・全天イメージャ・ケオグラムデータ

ask_nipr3

極地研・フラックスゲート磁力計データ

gmag_nipr

4

極地研・誘導磁力計データ

gmag_nipr_induction

5

EISCATレーダーデータ

eiscat6

北大・誘導磁力計データ

elf_hokudai

7

京大WDC・地磁気・指数データ

gmag_wdc

8

九大・GCMシミュレーションデータ

kyushugcm

ERG-SCが開発しているERG-SC plug-in for pySPEDAS(ergspedas)を別途インストールすることで、以下の地上観測データも利用可能となります。

名大ISEEリオメター、名大ISEE OMTIカメラ、名大ISEE VLFアンテナ、名大ISEE/STEL・フラックスゲート磁力計、
名大ISEE/STEL・誘導磁力計、MAGDAS磁力計ネットワーク、210度磁気子午線磁力計ネットワーク、SuperDARN30