http://aflak.jp

aflak: 面分光データ視覚分析のためのビジュアルプログラミング環境
藤代 一成，Malik Olivier Boussejra, 打木 陸雄

慶應義塾大学理工学部情報工学科

Sociology

SportsMusicology

Astrophysics

Sparse modeling

Geology

Lifelog

Seismology
Medicine

Nuclear power engineering

Topological analysis

Quantum sciences

Forensics

2019/10/29 面分光研究会

Meteorology2天文学との出会い• 科研費新学術領域「スパースモデリング」（2013～2018）• A02-3：天文学班（代表：本間 希樹 先生）• C01-4：可視化班（代表：藤代）• 植村 誠 先生（ A02-3分担）との共同研究開始

ABC（非対称バイクラスタリング）
Type Ia超新星データの分類

TimeTubes
ブレーザー時系列特徴解析• 松林 和也 先生との共同研究開始（2017）• マルチスペクトルデータの視覚解析
2019/10/29 面分光研究会

3

発表内容
• 藤代：背景と設計指針（15分）• Malik（訪問研究員）：システム概要（15分）• 打木（M1）：応用例（20分）• 藤代：現状と課題（5分）• 全員：Q&A（5分）

2019/10/29 面分光研究会

4背景と設計指針
2019/10/29 面分光研究会

5天文学マルチスペクトルデータ

赤 経データ要素

波長
赤 緯
レギュラーボリュームデータ

2019/10/29 面分光研究会.fits (Flexible image transport system)6

天文学の標準的ワークフロー• リポジトリへのデータ問合せ
データ獲得 • ローカル環境からのデータ読込み

データセットの変更• 視覚分析コードの適用

分析手法の変更

視覚分析

アナライザを利用• 画像処理知見導出 • 画像観察

2019/10/29 面分光研究会

7天文学データ解析ツール:
IRAF/PYRAF/ASTROPY
例：IRAFによるバッチ処理
imcomb @file-off1.list off1-average.fits combine=average
imcomb @file-on.list on-average.fits combine=average
imcomb @file-off2.list off2-average.fits combine=average
imcomb off1-average.fits,off2-average.fits offaverage.fits ﹨combine=average weight=@scale-off.dat
imarith off-average.fits - on-average.fits off-onaverage.fits

2019/10/29 面分光研究会

8天文学データ解析ツール:
IRAF/PYRAF/ASTROPY
例：IRAFによるバッチ処理# Sub-datacube for each band
awk 'BEGIN{for (i = 3099; i < 3119; i++) {printf ("manga-8454-12703LINCUBE.fits[1][,,%d]¥n", i)}}' > file-off1.list
awk 'BEGIN{for (i = 3134; i < 3154; i++) {printf ("manga-8454-12703LINCUBE.fits[1][,,%d]¥n", i)}}' > file-on.list
awk 'BEGIN{for (i = 3174; i < 3194; i++) {printf ("manga-8454-12703LINCUBE.fits[1][,,%d]¥n", i)}}' > file-off2.list# Combine off-band images
echo "0.533333" > scale-off.dat
echo "0.466667" >> scale-off.dat
imcomb off1-average.fits,off2-average.fits
off-average.fits ﹨combine=average weight=@scale-off.dat# Make equivalent-width map# Then compute average on each bandimcomb @file-off1.list off1-average.fits
combine=average
imcomb @file-on.list on-average.fits
combine=average
imcomb @file-off2.list off2-average.fits
combine=average

2019/10/29 面分光研究会

imarith off-average.fits - on-average.fits offon-average.fits
imarith off-on-average.fits * 20 flux.fits
imarith flux.fits / off-average.fits
equivalent-width.fits9天文学の標準的ワークフロー• リポジトリへのデータ問合せ
データ獲得 • ローカル環境からのデータ読込み

データセットの変更• 視覚分析コードの適用

分析手法の変更

視覚分析• 画像処理ビューアを利用

知見導出 • 画像観察

2019/10/29 面分光研究会

10天文学データビューアの例:
DS9/QFITSVIEW/NIGHTLIGHT/MATPLOTLIB

DS9

2019/10/29 面分光研究会

11天文学の標準的ワークフロー• リポジトリへのデータ問合せ
データ獲得 • ローカル環境からのデータ読込み

データセットの変更• 視覚分析コードの適用

分析手法の変更

視覚分析統合できないか?

• 画像処理知見導出 • 画像観察

2019/10/29 面分光研究会

12

AFLAK–‫أفﻼك‬Advanced Framework forLearning Astrophysical Knowledge（“stars” in Arabic）

2019/10/29 面分光研究会

13

AFLAKの三大設計指針• ビジュアルプログラミングの採用• 可視化発見プロセスのサポート• 出自管理の実現

2019/10/29 面分光研究会

14データフローパラダイム[HABER&MCNABB:90]
data input
数値

filtering

可視化イディオム
あらゆる可視化プログラムは左図の4フェーズに分解可能

数値mapping
幾何rendering
画像2019/10/29 面分光研究会

ViSC Report [SIGGRAPH&NSF，

ACM Comput. Graph., 21(6)，1987]15モジュール型可視化環境（MVE）

AVS/Express screenshot, from H.-J. Bungartz, et al.,“Design and implementation of a modular environment for coupled systems.”

モジュール型ビジュアルプログラミング
 非手続き性/プラガビリティー（再利用性/拡張性）＞分野専用ソフトウェア
× 実効性能＜ プログラム性能チューニング
2019/10/29 面分光研究会

16

LOTUS ROOT ： AFLAKプログラミングメタファ

2019/10/29 面分光研究会

17可視化発見プロセスのサポート“Computational science now encompasses modeling andsimulation using data from many sources, requiring datamanagement, mining and interrogation.”

Human（astronomer）-in-the-loopの実現
出自（provenance）の管理：
視覚分析プロセスの記録，追跡，再利用→集合知2019/10/29 面分光研究会

18

AFLAKのフレームワーク

2019/10/29 面分光研究会

19システム概要
2019/10/29 面分光研究会

20

概要

2019/10/29 面分光研究会

http://aflak.jp

21

設計における目標• 使いやすさと応答性• 再利用可能性と拡張可能性• 協同開発の支援とコードの共有

2019/10/29 面分光研究会

22

RUST

https://www.rust-lang.org/
2019/10/29 面分光研究会

23

DEAR IMGUI（C++）

https://github.com/ocornut/imgui
最新版へアップデート済！
2019/10/29 面分光研究会

24ノードエディタ- リストからノードを追加- 各々のノードを配線- 出力ノードが作成・配線されると対応する出力窓が表示
2019/10/29 面分光研究会

25ノードプログラムのインポート / エクスポート

エディタの完全な状態を記録する
アドホックな形式でインポート / エクスポート

http://aflak.jp
2019/10/29 面分光研究会

26ノードエディタの変数と可視化結果の間の双方向バインディング

2019/10/29 面分光研究会

27

興味のある領域の選択↑興味のある領域を画素ごとに選択

2019/10/29 面分光研究会

28ワークフロー2019/10/29 面分光研究会29VO標準を利用したリポジトリへのデータ問合せ

2019/10/29 面分光研究会

30

SIA 実装（SIMPLE IMAGE ACCESS）
入力: SIA サーバURL，天空座標， 周波数，等．
HTTP GET + クエリパラメタ

SIA サーバ

クライアント
ObsCore (XML-based, VOTable)• 出力• obj_publisher_id: オブジェクトのユニークID• access_url: オブジェクトのダウンロードリンク• access_format: ダウンロードされるファイルのMIMEタイプ• ファイルをダウンロードし，解凍
2019/10/29 面分光研究会31高速なマクロ機能

2019/10/29 面分光研究会

32協同的なコードの共有と再利用性

2019/10/29 面分光研究会33

応用例2019/10/29 面分光研究会

34

ケーススタディ
三次元面分光データの応用三例・等価幅マップの生成・速度場マップの生成・任意スライシング

2019/10/29 面分光研究会

35ケーススタディ
三次元面分光データの応用三例
・等価幅マップの生成・速度場マップの生成・任意スライシング

2019/10/29 面分光研究会

36スペクトルから等価幅を計算

on-band 平均輝度

データ
データ
キューブ
データ
キューブ
データ
キューブ
データ
キューブ
データ
キューブ
キューブ

等価幅の計算AB
off-band 平均輝度

2019/10/29 面分光研究会

連続光の推定37

スペクトルから等価幅を計算（cont’d）①on-band と off-band （二箇所）における平均フラックスを計算（average ノード）
②on-bandにおける連続光の推定（ratio_from_bands ノード, linear_composition ノード）
③等価幅の計算（create_equivalent_width ノード）
その他
・定数（Constant ノード）
・データ中の最大値，最小値の取得（image_min_max ノード）・対数スケーリング（convert_to_logscale ノード）
2019/10/29 面分光研究会38

①平均フラックスの計算
average ノード
入力: 三次元画像
開始波⾧
終了波⾧
出力: 積分結果
中心波⾧波⾧幅

2019/10/29 面分光研究会

39

②on-band まわりの連続光推定
ratio_from_bands ノード
入力: on-band の中心波⾧
2つの off-band の中心波⾧()

出力: 2つの off-band の on-band に対する寄与,

2019/10/29 面分光研究会40

②on-band まわりの連続光推定（cont’d）
linear_composition ノード
入力: 次元イメージ
定数
出力:

2019/10/29 面分光研究会

41③等価幅の計算
create_equivalent_width ノード
入力: off-band の平均輝度
on-band の平均輝度
on-band の波⾧幅
輝度値の最大値
輝線か否かを判断する真理値
出力: 等価幅マップ（二次元イメージ）
等価幅 =2019/10/29 面分光研究会

𝑓𝑙𝑢𝑥_− 𝑓𝑙𝑢𝑥

𝑓𝑙𝑢𝑥_× 𝑟𝑎𝑛𝑔𝑒42定数
整数，浮動小数点数，文字列，パス，真理値などの定数を表すノード

2019/10/29 面分光研究会43画像中の最大値/最小値
image_min_max ノード
入力: 次元イメージ（各画素に値 をもつ）
出力: 画素の値の最大値

2019/10/29 面分光研究会

，最小値

44

対数スケールへの変換
convert_to_logscale ノード
入力: 次元イメージ（各画素に輝度値 をもつ）
各変数（ 定数）はイメージ中の値の最大値と最小値
出力: 次元イメージ（対数スケール）として，を計算
参考:How DS9 renders an image
http://ds9.si.edu/doc/ref/how.html（2019年10月27日アクセス）

2019/10/29 面分光研究会

45IRAFによる等価幅の計算例# Sub-datacube for each band
awk 'BEGIN{for (i = 3099; i < 3119; i++) {printf ("manga-8454-12703-LINCUBE.fits[1][,,%d]¥n", i)}}' > file-off1.list
awk 'BEGIN{for (i = 3134; i < 3154; i++) {printf ("manga-8454-12703-LINCUBE.fits[1][,,%d]¥n", i)}}' > file-on.list
awk 'BEGIN{for (i = 3174; i < 3194; i++) {printf ("manga-8454-12703-LINCUBE.fits[1][,,%d]¥n", i)}}' > file-off2.list# Then compute average on each band
imcomb @file-off1.list off1-average.fits combine=average
imcomb @file-on.list on-average.fits combine=average
imcomb @file-off2.list off2-average.fits combine=average
2019/10/29 面分光研究会

46IRAFによる等価幅の計算例（cont’d）# Combine off-band images
echo "0.533333" > scale-off.dat
echo "0.466667" >> scale-off.dat
imcomb off1-average.fits,off2-average.fits off-average.fits ﹨combine=average weight=@scale-off.dat# Make equivalent-width map
imarith off-average.fits - on-average.fits off-on-average.fits
imarith off-on-average.fits * 20 flux.fits
imarith flux.fits / off-average.fits equivalent-width.fits

2019/10/29 面分光研究会47

結果（等価幅マップ）

2019/10/29 面分光研究会48

評価（等価幅）松林（京都大学）
IRAFを使用して計算

aflak

差分
平均値:約

誤差は約
2019/10/29 面分光研究会

49等価幅計算のマクロ

2019/10/29 面分光研究会

52ケーススタディ
三次元面分光データの応用三例
・等価幅マップの生成・速度場マップの生成・任意スライシング

2019/10/29 面分光研究会

53スペクトルから速度場の計算
代表波⾧
代表波⾧

静止波⾧を光速として，その場における速度2019/10/29 面分光研究会が十分小さい場合の近似
54スペクトルから速度場の計算（cont’d）①代表波⾧の決定（extract_argmin_max_wavelength ノード，extract_centrobaric_wavelength ノード）
②速度場マップの生成（create_velocity_field_map ノード）
※基準波⾧はユーザ指定

2019/10/29 面分光研究会55

①代表波⾧の決定
extract_argmin_max_wavelength ノード
入力: 次元イメージ
開始波⾧
終了波⾧
最小値か否か
出力: indices and values ofextract_centrobaric_wavelength ノード
入力: 次元イメージ
開始波⾧
終了波⾧
出力:
2019/10/29 面分光研究会

56

②速度場マップの作成
create_velocity_field_map ノード
入力: 次元イメージ
基準波⾧
出力:

2019/10/29 面分光研究会57

結果（速度場マップ）

2019/10/29 面分光研究会58

評価（速度場）

Chen, et al.

2019/10/29 面分光研究会

aflak

59

ケーススタディ
三次元面分光データの応用三例
・等価幅マップの生成・速度場マップの生成・任意スライシング

2019/10/29 面分光研究会61

任意スライシング“draw path”オプションを選択

任意のパスを描く

以下のようなノードを使用して，描画されたパスの平面に垂直な軸に沿ってパスの形状をもつ平面を切出し
パス三次元イメージ2019/10/29 面分光研究会

切出し二次元イメージ
62

任意スライシングの計算手順①形状の描画（現在，直線に限定）（二次元プロット上に Line を描画）
②形状を通る画素の座標を（ROI: Region Of Interest）として取得③波⾧方向への切出し（現在，波⾧方向に限定）（extrude ノード）
※波⾧方向の範囲指定をするノードを別途用意（range_specification ノード）
2019/10/29 面分光研究会64

①形状の描画

複数の直線を描画可能
2019/10/29 面分光研究会

65

②画素情報の取得
直線上の画素の情報を（座標，フラックス値）のベクタとして保持

2019/10/29 面分光研究会66

③波⾧方向への切出し
extrude ノード
入力: 三次元イメージ
画素の情報
出力: 切り出された二次元イメージ2019/10/29 面分光研究会

67波⾧範囲の指定
range_specification ノード
入力: 次元イメージ
開始波⾧終了波⾧
出力:からまでに範囲指定されたイメージデータ

2019/10/29 面分光研究会

68結果（任意スライシング）

2019/10/29 面分光研究会

69現状と課題2019/10/29 面分光研究会

71主要な貢献• 多数のパラメタの手動による段階的な微調整が必要な分析過程を支援• Astronomer-in-the-loopの実現• End-to-endな出自管理2019/10/29 面分光研究会

72

今後の課題http://aflak.jp• https://github.com/aflak-vis/aflak/issues• バッチ処理• WCSの完全なサポート• Aladin / Topcat 等とやりとりするためのVO標準のサポート• Rust 以外の言語によるノードプリミティブ実装(Python, C等)• プリミティブノードの網羅性の確立• 1GB以上のデータセットへの対応
2019/10/29 面分光研究会73

謝辞• Aflak研究開発チーム• 松林 和也（京都大学）• 竹川 俊也（国立天文台）• 竹島 由里子（東京工科大）• 朱 立宇（慶應義塾大学）• 植村 誠（広島大学）• 科研費• 新学術領域計画研究25120014• 基盤(A)17H00737• 基盤(C)17K00173

2019/10/29 面分光研究会

74

公開文献
• M. O. Boussejra, R. Uchiki, S. Takekawa, K. Matsubayashi, Y. Takeshima, M. Uemura,
I. Fujishiro: “afak: Visual programming environment with macro support forcollaborative and exploratory astronomical analysis,” to appear in IIEEJ Trans. Image
Electronics and Visual Computing, vol. 7, no. 2, December 2019.
• M. O. Boussejra, R. Uchiki, Y. Takeshima, K. Matsubayashi, S. Takekawa, M. Uemura,
I. Fujishiro. “aflak: Visual programming environment enabling end-to-end provenancemanagement for the analysis of astronomical datasets,” Elsevier Journal of Visual
Informatics, vol. 3, no. 1, pp. 1–8, March 2019 [doi: 10.1016/j.visinf.2019.03.001].
• M. O. Boussejra, K. Matsubayashi, Y. Takeshima, S. Takekawa, R. Uchiki, M. Uemura,
I. Fujishiro: “aflak: Visual programming environment with quick feedback loop tuned for
multi-spectral astrophysical observations,” presented at ADASS2018, College Park,November 2018.
• M. O. Boussejra, K. Matsubayashi, Y. Takeshima, S. Takekawa, R. Uchiki, M. Uemura,
I. Fujishiro: “aflak: Pluggable visual programming environment with quick feedback
loop tuned for multi-spectral astrophysical observations,” in Proc. IEEE SciVis 2018, pp.
72-76, Berlin, October 2019 [doi: 10.1109/SciVis.2018.8823788].
2019/10/29 面分光研究会

75

Q&A
2019/10/29 面分光研究会

76