YASARA : 今日のマクロ 「convert3D.mcr」 v.20.10.28

2020年10月28日水曜日

【YASARA】

t f B! P L

 先日作成したマクロにもう少し手を加えて、v.20.10.28としました。

 
ファイル選択ダイアログに続けてカスタムダイアログを表示させ、pHと力場の指定、MOPACによる構造緩和の有無とAM1/PM3/MNDOの指定、分子の表示スタイルを変更できるようにしました。



それから、入力SDFファイル内で化合物名が定義されていない場合にエラーになっていましたが、オブジェクト名を割り当てるようにして回避しました。


その他にも細々とした修正を加えています。
(_文字_でアンダースコアをふっていますが、メインメニューと異なり、Alt + キーで選択できないようです)

マクロファイル「convert3D.mcr」 v.20.10.28

# YASARA MACRO
# TOPIC:       A contribution
# TITLE:       Convert SDF from 2D to 3D, with Experiment Minimization
# REQUIRES:    Dynamics
# AUTHOR:      Tomohiko Tasaka
# LICENSE:     GPL
# DESCRIPTION: This macro provides the ability to convert 2D SDF files to 3D SDF files v.20.10.28

Clear
Console off
start = SystemTime

files,filelist() =
  ShowWin Type=FileSelection,Title="Select 2D SDF files converting to 3D",
          MultipleSelections=Yes,Filename="*.sdf"

phval,selfofn,selfof,selatomstyle,dompac,selqmmethod =
  ShowWin Type=Custom,Title="Setting",Width=600,Height=400,
    Widget=NumberInput, X=20,Y=60, Text="p_H_",Default=7.4,Min= 0,Max=14,
    Widget=List, X=160,Y=60,Text="_F_orce Field",
        Width=200,Height=140,MultipleSelections=No,Options=13,
                Text="AMBER94",
                Text="AMBER96",
                Text="AMBER99",
                Text="AMBER03",
                Text="AMBER10",
                Text="AMBER11",
                Text="AMBER12",
                Text="AMBER14",
                Text="AMBER14IPQ",
                Text="NOVA",
                Text="YAMBER",
                Text="YAMBER2",
                Text="YAMBER3",
    Widget=Text, X=400,y=60,Text="Style atoms",
    Widget=RadioButtons,Options=3,Default=1,
                              X=400,Y=100,Text="_B_all",
                              X=400,Y=140,Text="_S_tick",
                              X=400,Y=180,Text="Ba_l_lStick",
    Widget=RadioButtons,Options=2,Default=1,
                              X=20,Y=240,Text="_O_ptimize with MOPAC",
                              X=20,Y=280,Text="_N_on-optimize with MOPAC",
    Widget=RadioButtons,Options=3,Default=1,
                              X=320,Y=240,Text="_A_M1",
                              X=320,Y=280,Text="_P_M3",
                              X=320,Y=320,Text="_M_NDO",
    Widget=Button,      X=540,Y=348,Text="O_K_"

atomstylelist='BallObj','StickObj','BallStickObj'
atomstyle=atomstylelist(selatomstyle)
qmmethodlist='am1','pm3','mndo'
qmmethod=qmmethodlist(selqmmethod)

for file in filelist
  LoadSDF (file)
  MacroTarget (file), Remove=Extension
  objlist() = ListObj all

  RemoveAll
  for i in objlist
    AddObj (i)
    (atomstyle) (i)
    name = CompoundMol all Obj (i)
    if name == ''
      name = NameObj (i)
    CompoundMol all Obj (i), '(name)'
    InflateObj (i)
    CleanObj (i)
    pH (phval),update=Yes
    # Display current pH
    txtobj=MakeTextObj Name=currentpH,Width=16,Height=2
    Font Times,Height=1,Color=(hex (255*(1.00-phval/15)))(00)(hex (16+255*phval/15)),Depth=1.0,DepthCol=303030
    PosText 50%,50%,Center
    Print pH:(1.0*phval)
    PosObj currentpH,0,-8,64
    Cell Auto,Extension=10
    ForceField (selfof),SetPar=yes
    Experiment Minimization
    Experiment On
    Wait ExpEnd
    # Optimize with MOPAC to fine-tune geometry
    if dompac == 1
      ShowMessage Running MOPAC (qmmethod)
      QuantumMechanics (qmmethod)
      OptimizeObj (i),Method=QM
      HideMessage
    DelObj currentpH
    RemoveObj (i)
  AddObj all
  SaveSDF (join objlist), (MacroTarget)_3D.sdf
end = SystemTime
ShowMessage Normal termination ! Elapsed time /msec : (end - start)
PrintCon
Print Normal termination ! Elapsed time /msec : (end - start)
Wait Button
Clear

# Exit YASARA if this macro was provided as command line argument in console mode and not included from another macro
if runWithMacro and ConsoleMode and !IndentationLevel
  Exit



今後、何か問題点が出てきたり、改善案を思いついたりしたら、適宜更新するようにします。

Hope this helps;-)





code-prettify

このブログを検索

ページビューの合計

人気の投稿

QooQ