DM入門 Home>

IV. DigitalMicrographのScriptの概要

Ver. 1.3: 2025.3.27
木本浩司

1. DigitalMicrographにおけるScriptの特徴

2. 簡単な使い方

Fig2.1 Fig2.1

例えば、一番上にある入力画像の対数値を計算して、名前に_logを付けて出力画像として表示する場合、次のようになります。

image img  := GetFrontImage()      // 入力画像imgを選択。  
image img2 := ImageClone(img)      // 出力画像img2を、入力画像のクローンとして定義。
img2 = log(img)                    // logを計算。
SetName(img2, GetName(img)+"_log") // 元の名前をGetName()、新しい名前をSetName()。
ShowImage(img2)                    // 処理画像を出力。

DigitalMicrographのhelp情報は充実しています。HelpのScriptingには分野ごとに分けられた解説があり、その下のExample Scriptsにはそのまま使えるscript例が豊富に記載されているため、ここで例を示すことが憚られるほどです。是非helpファイルを御参照ください。

3. 主要な用途と命令文

Scriptの用途

Scriptにすることで、計測・解析技術の自動化・高速化・ノウハウ化をすすめることができます。例えば研究者が行っている実験手順をscriptとして保存・メニュー化することにより、本人が操作するよりも高速で間違いなく行えることに加え、他の人も利用できるようになります。例えば著者は、STEM画像を2枚撮影してその間のドリフト量を計算して次の画像がどちら方向に動くか予想しその分イメージシフトして3枚目を自動的に取得、それを数百回繰り返す、ということをscriptを使って行っています(Ultramicroscopy 2010)。撮影した画像はひとまとめにし、撮影時間をファイル名にして観察条件をImage Tag情報に書き込むとともに、同じ条件で実験を繰り返せるようにGlobal Tagにも情報を書き込んでいます。

様々な科学研究分野で、自動自律実験あるいはさらに進んだself-driving labがキーワードになっています。DM scriptはあくまで装置制御・データ解析ツールですが、計測データを直ちに評価しその場で装置制御を最適化して実験を継続すれば、より進んだ自動化になります。現状の電子顕微鏡技術は他の装置(たとえば製膜装置)との融合も難しく、自動自律実験からはかけ離れていると思いますが、Operand技術がさらに進歩すれば不可能ではありません。自動自律計測研究を進めるツールの一つがscriptであるとも言えます。

多彩な命令文

非常に多くのコマンドがあります。正直に申し上げれば、著者自身使いこなせているとは言えせん。下記は極く一例です。名称からおおよそ何をする関数なのかは予想できます。

a) 基本的な関数と制御

b) 装置の制御

c) その他

関数名は分かるが引数の与え方がわからない場合(著者は頻繁にあります)でも、引数を空欄にして例えばGetNumber()とだけ入力して実行すれば、下記のようにoutput表示がされて使い方(A potential match is...)が分かります。関数名が間違っている場合には、Function not foundと表示されます。

Fig2.1

4. 電子顕微鏡用ソフトウエアとしての特長と利用の仕方

DigitalMicrographは画像データの解析に適した特性を持っています。2次元データを2重ループを回すことなく演算したり、icol, irow, iradiusなどを使って1行で画像データを生成・処理できます。DigitalMicrographだけが持っている特長とは言えませんが、Tert(), Warp(), SliceN() 等の多彩な関数や、"&変数"や":="による参照渡しと値渡しの使い分け、充実したhelp fileなどは、長所としてあげられると思います。計算結果をすぐに画像やグラフとして表示でき、その場で強度プロファイルやFFTが計算できるため、著者は他のソフトウエアによる計算結果を確認することにも使っています。
Gatan社の製品は、多くの電子顕微鏡装置に設置されています。したがって異なる電子顕微鏡メーカーの装置でもDigitalMicrographが設置されていれば、同じように使える可能性があります。例えば、EMChangefocus()とすれば、Focusノブがどれかわからなくても焦点を変えることができます。著者は、JEOL(2020, Triple-C project, ARM, Grand ARM)やHitachi High-Tech (HF-2000, HF-3000, HD-2300C, HF5000), Thermo Fisher Scientific(Polara, Titan, Titan-cubed, ThemisZ)の装置をDitigalMicrographのscriptを通して使ってきました。

その場しのぎで数行の使い捨てのscirptを書くこともありますが、あとから利用するためにはscript file(拡張子.s)で保存しておきます。繰り返し使ったり、自分以外の方にも使ってもらうためには、scriptをDMのメニューに登録します。DMのメニュー登録は簡単で、File>Install Script...として、Menuに登録するかLibraryとするか、メニューのcommand名をどうするかなどが決められます。
Package化することにより、codeを公開せずに配布することもできます。

著者はDMを1993年から使っています。筆者にとっては研究(実験・可視化・各種解析)する際の基本的なツールとなっています。当時のscriptは現在も基本的には使えますが、新しい便利なcommandが現在も増えつづけています。ただし最近のコマンドは長いので、年寄りには覚えづらいという難点はあります。Scriptを書くことは有効ですが、個人的についついやりすぎてしまう点には注意しています。Dialogを出して使いやすくしようとすると、dialogに関する記述の方が長くなってしまって、やりすぎを反省することが多々あります。

5. Python-Spyderでscriptingすべきか否か (new)

科学データ解析は、最近ではPython Spyderで行われることが多いと思います。一方DMには画像・データ解析や可視化のための基本的なツールがそろっていますので、著者はほとんどDM scriptで済ませています。Scikit-learn(非負値行列因子分解)やMatPlotLib(Dendrogram描画)を使うためだけにPython on DMを利用しています。標準的なSpyder/Jupiter NotebookではなくDM上で使っている主たる理由は、慣れ親しんだ環境で解析したいためです。

Pythonを取り巻く環境は急速に改善しており、現在の生成AIは完全に動くpython codeを書いてもらえるようです。一方DM-script codeは、GPT-4になって良くなってきたもののまだ改善の余地があります。その観点からはPythonの方が研究効率は高く、また発表した際のインパクトも大きいと思います。

Python on DMの機能強化は現在も進んでいます。ただしPythonが頻繁にupdateされていることを考えると、装置メーカーでもあるGatan Inc.がDM-scriptを廃止してPython on DMに完全移行するのは難しいのではと著者は推測します。なお計測とデータ解析を同時に行うためには、Pythonのcodeを書くとしてもDM上で書いた方が良いと思います。

DMのデータ(e.g., *.dm4)ではImageTagに実験条件などのざまざまなメタデータが記録されています。ImageTagは参照できるだけでなく、画像処理条件などの解析解歴を残せる利点があります。HyperSpyなど他の優れたツールはありますが、解析する上でもDM scriptあるいはPython on DMは利用価値があると思います。

以上の理由からDigitalMicrographおよびDM scriptingは当面有益なツールであり、このwebsiteを更新する意味もあると信じています。

6. Scriptに関する情報