1
我想知道pymol中某些原子的位置矢量。我可以計算距離,但我需要位置矢量。我怎樣才能得到關於一些定義座標系的原子座標?如何在pymol中定義座標系?
假設有兩個原子。我怎樣才能得到這兩個原子的座標(x,y,z)?必須有一個參考框架來計算相對於它的這些座標。 pymol中的參考框架是什麼?
我想知道pymol中某些原子的位置矢量。我可以計算距離,但我需要位置矢量。我怎樣才能得到關於一些定義座標系的原子座標?如何在pymol中定義座標系?
假設有兩個原子。我怎樣才能得到這兩個原子的座標(x,y,z)?必須有一個參考框架來計算相對於它的這些座標。 pymol中的參考框架是什麼?
這是一個簡單的Python函數,用於從pdb
文件中提取數據。它返回字典詞典的字典。外字典由型號鍵控和內字典由原子數在模型方向性的,然後,每行被讀入由感興趣的相應原子的記錄的字段鍵控詞典:
def parsePDB(fname):
f = open(fname)
lines = f.read().split('\n')
f.close()
modelNum = 1
multiModel = False
d = {1:{}}
for line in lines:
fields = line.split()
record = fields[0] if len(fields)> 0 else ''
if record == "MODEL":
if multiModel:
modelNum += 1
d[modelNum] = {}
else:
multiModel = True
elif record == "ATOM":
num = int(fields[1])
atomDict = {}
atomDict["atom"] = fields[2]
atomDict["amino"] = fields[3]
atomDict["chain"] = fields[4]
atomDict["residue"] = int(fields[5])
atomDict["xyz"] = (float(fields[6]),float(fields[7]),float(fields[8]))
d[modelNum][num] = atomDict
return d
一些測試代碼:
d = parsePDB("2HIU.pdb")
atom = d[3][358]
print("atom",358,"of model",3,"is the",atom["atom"], "atom of a", atom["amino"],"amino acid")
print("It is located on residue", atom["residue"], "of chain",atom["chain"])
print("Its coordinates are", atom["xyz"])
輸出:
atom 358 of model 3 is the OD1 atom of a ASN amino acid
It is located on residue 3 of chain B
Its coordinates are (13.093, 5.012, -5.549)
這是從文件2HIU.pdb。從測試代碼中使用的文件中的行看起來像:
ATOM 358 OD1 ASN B 3 6.882 2.397 -4.401 1.00 0.00 O
下面是對應的最裏面的字典的樣子:
>>> d[3][358]
{'atom': 'OD1', 'chain': 'B', 'amino': 'ASN', 'residue': 3, 'xyz': (13.093, 5.012, -5.549)}
有兩種併發症要記住:
1)並非所有這些文件都有多個模型。事實上,大多數不會,並且缺少開始MODEL
的行。如果len(d)
是1,那麼文件中只有一個模型。
2)HETATM
記錄對應的原子不是蛋白質本身的一部分,但與它有某種聯繫。我完全忽略了這些。您的目的可能需要您使用它們 - 在這種情況下,您需要調整代碼。
什麼文件格式?由於'pdb'文件很大程度上由座標組成,無論您是使用不同的文件類型,還是我不明白您的問題。 –
我對pymol完全陌生。文件格式是'pdb'。我怎樣才能得到這些座標?起源在哪裏? – MOON
我沒有用pymol做很多事情,除了幾次使用它來生成很酷的圖片,但是我去年春天爲一門課程做了一個項目來從pdb文件生成蛋白質接觸圖,並發現編寫Python函數來提取相當容易我需要的文件數據。請參閱以下說明:https://en.wikipedia.org/wiki/Protein_Data_Bank_(file_format)。另一方面,如果pymol沒有一些內置的解析工具,我會感到驚訝,所以我會在你自己解析之前多探索一下幫助。 –