例えば、一番上にある入力画像の対数値を計算して、名前に_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ファイルを参照してください。
Scriptにすることで、計測・解析技術の自動化・高速化・ノウハウ化をすすめることができます。例えば研究者が行っている実験手順をscriptとして保存・メニュー化することにより、本人が操作するよりも高速で間違いなく行えることに加え、他の人も利用できるようになります。例えば著者は、STEM画像を2枚撮影してその間のドリフト量を計算して次の画像がどちら方向に動くか予想しその分イメージシフトして3枚目を自動的に取得、それを数百回繰り返す、ということをscriptを使って行っています(Ultramicroscopy 2010)。撮影した画像はひとまとめにし、撮影時間をファイル名にして観察条件をImage Tag情報に書き込むとともに、同じ条件で実験を繰り返せるようにGlobal Tagにも情報を書き込んでいます。
非常に多くのコマンドがあります。正直に申し上げれば、著者自身使いこなせているとは言えせん。下記は極く一例です。名称からおおよそ何をする関数なのかは予想できます。
関数名は分かるが引数の与え方がわからない場合(著者は頻繁にあります)でも、引数を空欄にして例えばGetNumber()とだけ入力して実行すれば、下記のようにoutput表示がされて使い方(A potential match is...)が分かります。関数名が間違っている場合には、Function not foundと表示されます。
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に関する記述の方が長くなってしまって、やりすぎを反省することが多々あります。