グラフデータベースとしてのObsidian
はじめに
Obsidian、ご存じですか?私もメモアプリとして使っています。整理が苦手な私にとって、書くことに注力できる機能はとても魅力的です。
Obsidianはメモアプリとして人気ですが、実はグラフデータベースとしても活用できることをご存知ですか?今回記事にするのはメモアプリとしてのObsidianではなく、関係データの可視化ツールとしての使い方です。グラフデータベースには専門のツールがいくつかありますが、それらに慣れていなくてもファイルベースの取り扱いで可視化出来ればいいという需要にはピッタリかなと思います。今回は私の利用例をもとに紹介していこうと思います。
使用するデータ
私の研究対象である無機物質には様々な大規模データベースがあります。これらの紹介は別の記事でいつか行いたいと思いますが、今回はFIZ-karlsruheの製品であるInorganic Crystal Structure Database(ICSD)のデータから、化学組成とプロトタイプ構造名を使います。
プロトタイプ構造はICSD内で定められている代表的な結晶構造の型です。例えば私たちの分野では、MgOやNaClは岩塩型と一般に分類します。岩塩型構造は陽イオンと陰イオンがFace Centered Cubic(FCC)の副格子をとり、それらが組み合わさった構造になっています。構成元素や格子定数や内部座標がちょっと違っていても、似た構造であれば岩塩型と分類しましょう、ということをシステマティックに行ったのがプロトタイプ構造です。ちなみに岩塩型構造はICSDではプロトタイプ構造名としてNaClになっています。
今回はA2B2O7という組成式で表される物質群に限定してデータベースを作っていきたいと思います。
データの形式
ObsidianではVault(保管庫)という名前で親フォルダを作ることができます。ここに化学組成のマークダウンファイル(例:Ca2Ta2O7.md)とプロトタイプ構造のマークダウンファイル(例:Struct_Pyrochlore_Ca2Nb2O7.md)を配置します。
CaTa2O7.mdの中身は以下のようになっています。Pyroxhlore_Ca2Nb2O7がプロトタイプ構造名で、パッと見でプロトタイプ構造のファイルだとわかるように、先頭にStruct_をつけています。
[[Struct_Pyrochlore_Ca2Nb2O7]]
#II-V
また、対応するプロトタイプ構造のファイルStruct_Pyrochlore_Ca2Nb2O7.mdの中身は以下のようになっています。一部だけを示していますが、実際には489の化学組成が書かれています。
[[Ca2_Nb2_O7]]
[[Ca2_O7_Ru2]]
[[Ca2_O7_Sb2]]
[[Ca2_O7_Ta2]]
二重かぎかっこ"[[]]"はリンクで、シャープ”#”で始まる文字列がタグです。知りたい情報、表現したい情報によってここを変えたり追加することになります。今回は、どの化学組成がどの結晶構造型と結びついているのかを表現したいのでこれで十分です。
ちなみに今回タグもつけています。酸化物のような比較的イオン性の強い結晶では、構成元素の電荷で分類出来ることもよくあるため、陽イオンの電荷の組み合わせをタグにしています。化学組成A2B2O7の化学組成では、酸化物イオンの形式電荷を2-とすると、電荷中性条件を満たすような陽イオンAとBの形式電荷の組み合わせは[1,6], [2,5], [3,4]になります。Ca₂Ta₂O₇ではCaが形式電荷2、Taが5なので、#II-Vとなります。タグではなく、化学組成やプロトタイプ構造のようにファイルにしても構いませんが、後で説明する可視化の方法の一つとして例示するためにタグにしています。
いよいよ可視化
準備が整ったので、化学組成とプロトタイプ構造の関係を可視化しましょう。まずObsidianのメニューからグラフビューを選びます。
Vaultができてすぐはインデックス化の作業がありますが、それが終わると以下のようにファイル同士が結び付いていることがわかります。点はグラフデータベースではノードと呼ばれ、各ファイルやタグが該当します。線はエッジと呼ばれ、リンクの有無を表しています。
最初はタブもノードとして表現されますが、これが邪魔な時はグラフビュー内の設定欄でタブのチェックを外すことで、化学組成とプロトタイプ構造のつながりを可視化することができます。

試しに真ん中の大きな点にマウスオーバーすると、「Struct_Pyrochlore_Ca2Nb2O7」と表示されました。このように、いくつかの中心的なプロトタイプ構造があり、いくつかの化学組成は複数のプロトタイプ構造を結びつけていることがわかります。

ここから情報を見やすくしていきましょう。まず、化学組成とプロトタイプ構造の点を視認しやすくしたいですよね。そのために、グラフビューのメニューにグループという項目を使います。

ここに「file: Struct_」と入力すると、Vault内にある「Struct_」を含むファイル、つまりプロトタイプ構造の色が指定した赤色になります。

「file: Pyrochlore」とすることで、構造名にPyrochloreを含むものだけに色を付けることもできます。「tag:#II-V」のようにすることで、このタグだけを含む化学組成に色を付けることもできます。これがタグのメリットです。
注意するのは、グループのルールは上から適用されるということです。「file: Struct_」と「file: Pyrochlore」をこの順で書いても、前者が優先されるのでPyrochlore構造に色を付けることはできません。
まとめ
今回は、化学組成と結晶構造型という関係データを集めたグラフデータベースの可視化にObsidianを使いました。通常、こういうデータから定量的な情報を抽出するのは専門的な知識とツールが必要ですが、可視化して人間が見るだけでも勉強になることや、解析の糸口を発見するのに大いに役に立ちます。
様々なデータベースを可視化する、別のデータベース同士をつなげてみる、といった今回紹介した方法に沿った使い方以外にも、実験データの保存にObsidianのVaultを活用するなど、メモや執筆以外にも様々な場面でObsidianは活躍しています。
おまけ
このグラフビューですが、生成過程をアニメーションにする機能もあります。今回、以下のようなグループでその様をGIFにしてみました。

N倍速です。陽イオンの価数ペアによって色分けされた化学組成が最初に表示されていき、途中からプロトタイプ構造の赤い点が出現します。一番グループの大きいPyrochlore構造の点が出てくる瞬間が一番の見せ場です。
