2018年2月17日 星期六

讓PyMOL完成先前指令 才繼續後續指令

在PyMOL script,會依序執行下面的指令:
  • command 1
  • command 2
  • command 3
一般來說,這樣跑是不會出問題的。但command 2需要一段時間,那上述的script在跑完command 2之後會直接接續著跑command 3。若command 3需要command 2的結果,那樣就會造成這個script執行出現問題。解法是 Sync,上述的指令寫成如下:
  • command 1
  • command 2; sync
  • command 3
或是下面這樣變成兩行也可以:
  • command 1
  • command 2
  • sync
  • command 3
sync這個指令會強迫所有現在正在執行的指令都執行完畢後,才讓後續的指令繼續執行
_EOF_

3 則留言:

  1. 您好,我在使用pymol時需要多次存取圖檔,但遇到您文中所說的未執行完就接續後續動作,導致於存取的圖檔並非我所需要的樣貌,可我於指令之間加入sync,卻得到以下之錯誤指令:"NameError: name 'sync' is not defined",想請教您該怎麼解決,非常感謝^^

    回覆刪除
    回覆
    1. [script如下]
      enable A
      png ~C:\Desktop\A.png, width=900px, height=900px, dpi=600, ray=0
      sync
      disable A
      enable B
      png ~C:\Desktop\B.png, width=900px, height=900px, dpi=600, ray=0
      sync
      disable B

      刪除
  2. 已解決,原來是用錯語法(汗),但謝謝您分享,對初學者很有幫助

    回覆刪除