我一直在试图弄清楚这个非常依赖于收费的过程。但是,我发现,对于水,我得到的水分子电荷总和的值不等于 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()
但我得到了错误:
那么我将如何制作一个文件来显示哪个原子对应于哪个电荷?
指标不一样吗?谢谢你的帮助!