2016-06-21 72 views
0

我想創建一個用於在PyMol中更改交互名稱的循環。但是在一個選擇循環之後,它崩潰並且不起作用。如何創建pymol重命名循環

def get_dists(interactions): # interactions=([1,2], [3,4]) 

    for i in interactions: 
     a = "////" + str(i[0]) + "/C2'" 
     b = "////" + str(i[1]) + "/C2'" 
     cmd.distance("(" + a + ")", "(" + b + ")") 

     for j in range(1, 599): 
      x = "dist" + "0" + str(j) 
      y = str(i[0]) + " " + str(i[1]) 
      cmd.set_name(str(x), str(y)) 

在PYMOL相互作用的默認名稱爲dist01,02,03

我想這些改變1_3,5_59,4_8,(殘基之間的相互作用)。

回答

0

除了一件事之外,你的代碼是完全正確的:如果PyMol沒有用set_name成功,那麼整個腳本就會中止。當你將其更改爲,它應該工作:

try: 
    cmd.set_name(str(x), str(y)) 
except: 
    print('failed to rename') 

一些補充意見:

  • y = str(i[0]) + " " + str(i[1])應該y = str(i[0]) + "_" + str(i[1])
  • 這條線是可能是填零x = "dist" + "0" + str(j)。此當j是一個單一的數字時,才需要的,否則的距離的對象的名稱是dist20dist123
  • cmd.set_name(str(x), str(y))可以自x被簡化爲cmd.set_name(x, y)y已經strings