我一直试图找出这个过程,这是非常依赖于指控。然而,我发现,对于水,我得到一个不等于水分子电荷之和的值。为了研究这个问题,我想比较一下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()但我发现了错误:

那么,我将如何制作一个文件来显示哪个原子对应于哪个电荷呢?
指标不同吗?谢谢你的帮助!
发布于 2022-01-07 02:40:00
结果,这是以同样的方式编制索引的。我的问题是我把东西应用到每个原子上,而不是它的分子上。当我这么做的时候,我得到了一个有意义的答案。
因此,对于任何阅读这篇文章的人,您可以使用相同的索引来迭代您的位置和收费。
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这个代码是观察单个电荷,把它映射到一个相同离子的位置,然后在水分子完成后,取这个分子的电荷乘以它相对于盒子的平均位置。
https://stackoverflow.com/questions/70614452
复制相似问题