首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MDAnalysis如何索引收费?

MDAnalysis如何索引收费?
EN

Stack Overflow用户
提问于 2022-01-06 22:36:27
回答 1查看 36关注 0票数 0

我一直试图找出这个过程,这是非常依赖于指控。然而,我发现,对于水,我得到一个不等于水分子电荷之和的值。为了研究这个问题,我想比较一下MDAnalysis和我的拓扑文件所使用的费用的值,看看问题在哪里。

在我的初始代码中,我可以通过以下方式调用收费:

代码语言:javascript
复制
    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

这对我起作用的地方

代码语言:javascript
复制
CLAs = u.select_atoms("segid HETA or segid PROA or segid PROB or segid MEMB or segid IONS")

因此,为了看看这种差异可能来自哪里,我试图:

代码语言:javascript
复制
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()

但我发现了错误:

那么,我将如何制作一个文件来显示哪个原子对应于哪个电荷呢?

指标不同吗?谢谢你的帮助!

EN

回答 1

Stack Overflow用户

发布于 2022-01-07 02:40:00

结果,这是以同样的方式编制索引的。我的问题是我把东西应用到每个原子上,而不是它的分子上。当我这么做的时候,我得到了一个有意义的答案。

因此,对于任何阅读这篇文章的人,您可以使用相同的索引来迭代您的位置和收费。

代码语言:javascript
复制
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

这个代码是观察单个电荷,把它映射到一个相同离子的位置,然后在水分子完成后,取这个分子的电荷乘以它相对于盒子的平均位置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70614452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档