簡體   English   中英

MDAnalysis如何索引收費?

[英]MDAnalysis how to index the charge?

我一直在試圖弄清楚這個非常依賴於收費的過程。 但是,我發現,對於水,我得到的水分子電荷總和的值不等於 0。 為了調查這個問題,我想比較 MDAnalysis 和我的拓撲文件使用的費用值,看看問題可能出在哪里。

在我的初始代碼中,我可以使用以下方法來收取費用:

    for ts in u.trajectory[ini_frames:]:
    count += 1
    membrane = u.select_atoms('segid PROA or segid PROB or segid MEMB')
    COM = membrane.atoms.center_of_mass()[2]
    q_prof = CLAs.atoms.charges * (CLAs.positions[:,2] + (Lz/2 - COM))/Lz
    Q_instant = np.sum(q_prof)
    Q_sum += Q_instant
Q_av = Q_sum / n_frames

這對我有用

CLAs = u.select_atoms("segid HETA or segid PROA or segid PROB or segid MEMB or segid IONS")

因此,為了查看這種差異可能來自哪里,我嘗試了:

def Q_code(dcd, topo):
Lz = u.dimensions[2]
Q_sum = 0
count = 0
CLAs = u.select_atoms('segid TIP3')
ini_frames = -20
n_frames = len(u.trajectory[ini_frames:])
for ts in u.trajectory[ini_frames:]:
    for i in CLAs:
        with open('Q_atom_temp.csv', 'a') as f:
            new_line = [s, i, i.charges, CV1_dict[s], CV2_dict[s]]
            writes = csv.writer(f)
            writes.writerow(new_line)
            f.close()
fields = ['Window', 'Atom', 'Charge', 'CV1', 'CV2'] with
 open('Q_atom_temp.csv', 'a') as f:
      writer = csv.writer(f)
      writer.writerow(fields) f.close()

但我收到錯誤: 在此處輸入圖像描述 那么我將如何 go 制作一個文件來顯示哪個原子對應於哪個電荷?

指標不一樣嗎? 謝謝你的幫助!

事實證明,這是以相同的方式索引的。 我的問題是我將事物應用於每個單獨的原子而不是其分子。 當我這樣做時,我得到了一個有意義的答案。

因此,對於閱讀本文的其他人,您可以使用相同的索引來遍歷您的頭寸和費用。

for i in range(len(CLAs.positions[:,2])):
        #print(CLAs.atoms.charges[i], CLAs.atoms.names[i], CLAs.positions[i,2])
        total_charge += CLAs.atoms.charges[i]
        count += 1
        position += CLAs.positions[i,2]
        if count == 5:
            count = 0
            av_position = (position / 5)
            q_prof += total_charge * (av_position + (Lz/2 - COM))/Lz
            position = 0
            total_charge = 0

此代碼查看單個電荷,將其映射到相同離子的 position,然后在水分子完成后,獲取分子的電荷並將其乘以相對於盒子的平均 position。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM