YASARAのYanacondaマクロについて簡単に説明します.
YASARAのGUIから操作を行うと,コマンドコンソール(スペースキー押下で表示)に実行されたコマンドが出力されます.
例えば, File > Load > PDB file from Internet として表示されるダイアログでPDB IDを指定し(ここでは1crn),OKボタンを押し,続けて,Edit > Clean > Allを選択します.すると,メイン画面上に指定したPDB構造が表示され,水素付加などのクリーン処理が行われます.
この時,スペースキーを押すと,実行コマンドの履歴を確認することができます.
>LoadPDB 1crn,Download=latest - Model 1 loaded as object 1 (327 atoms)
>CleanAll
Cleaning up object 1. 315 atoms added.
>
キーボードの上下矢印キーを押すことで,以前実行したコマンドを再表示し,Enterキーを押して,そのコマンドを再実行することができます.
また,このコマンド(引数を含む)部分を,テキストファイルにコピー&ペーストして,拡張子. mcr としてファイル保存すると,Options > Macro & Movie > Play macroから実行することも可能です.なお,Options > Macro & Movie > Record macroから,ファイル(拡張子.mcr)を指定すると,操作を直接マクロファイルへ保存することもできます.
丸括弧()の機能とブロック定義のためのインデントは,最初は戸惑われるところと思います.
YASARAマクロで,丸括弧(parentheses)は,"explicit evaluators"と呼ばれ,括弧内の式を評価し,その結果に置き換える機能をもちます.
例えば,次のようにして使用します.
>Print (2**10)
1024
>Name = 'alchemist' - OK
>Print 'Hi I am (Name)!'
Hi I am alchemist!
>
マクロファイルの任意の場所で,明示的に,強制的に式を評価することから,「explicit evaluators」と名付けられたそうです.
この例のように,値を代入することでどこでも変数を作成できますが,数字や%から始まる変数名は使用できません.「ERROR - Variable names must not start with a number or a percent, please correct」とエラーになります.
インデントは,Pythonと同じようにブロック定義に利用しますが,YASARAの場合,空白スペース2文字の倍数で(段階的に)指定する必要があります.例えば,空白スペース3文字や最初から空白スペース4文字を指定すると,"ERROR - Unexpected indentation level in line"にエラーになります.
(良い例,インデントが空白スペース2文字)
a = 1
if a==1
Print "A equals 1"
else
Print "A does not equal 1"
(エラーとなる例,インデントが空白スペース4文字)
a = 1
if a==1
Print "A equals 1"
else
Print "A does not equal 1"
この他に左側の被演算子がデータ型を定義したり,文字列データのシングルクォート,ダブルクォートの指定方法の違いなどもユニークなところと思います.
>A=3.14 - OK
>B=2 - OK
>Print (a+b)
5.14
>Print (b+a)
5
>Print (a*b)
6.28
>Print (b*a)
6
>WeakString = '(a+b)' - OK
>StrongString = "(a+b)" - OK
>Print '(WeakString)'
5.14
>Print '(StrongString)'
"(a+b)"
>
Yanaconda マクロについては,ユーザーマニュアルのChapter 5で詳しく説明されているので,そちらもご参考になさってください.
なお,今回の内容は,次のセクションに記載されています.
5.5 Explicit evaluators modify the source code at run time
5.7 The four datatypes are integer, float, weak string and strong string
5.8 The left operand defines the datatype of the result
5.10 Indentation defines the program flow and must be a multiple of two spaces
一度に全部は大変ですので,少しずつYASARAのマクロに慣れていきましょう.