-2

我看到这个错误,需要帮助!

warnings.warn("无法猜测以下原子类型的质量:{}".format(atom_type)) Traceback(最近一次调用最后一次):文件“traj_residue-z.py”,第 48 行,in protein_z=protein。质心() [2] IndexError:索引 2 超出轴 0 的范围,大小为 0

4

1 回答 1

1

该问题已通过邮件列表线程https://groups.google.com/g/mdnalysis-discussion/c/J8oJ0M9Rjb4/m/kSD2jURODQAJ中的讨论解决

简而言之:traj_residue-z.py脚本包含以下行

protein=u.select_atoms('resid 1-%d' % (nprotein_res))

事实证明,选择'resid 1-%d' % (nprotein_res)不会选择任何内容,因为输入的 GRO 文件以 resid 1327 开头

 1327LEU      N    1   2.013   3.349   8.848  0.4933 -0.2510  0.2982
 1327LEU     H1    2   1.953   3.277   8.893  0.0174  0.1791  0.3637
 1327LEU     H2    3   1.960   3.377   8.762  0.6275 -0.5669  0.1094
 ...

因此从 1 开始的残基选择不匹配任何东西。这产生了一个空的 AtomGroup protein

随后的质心计算

protein_z=protein.centroid()[2]

失败,因为对于一个空的 AtomGroup,protein.centroid()返回一个空数组,因此试图获取索引 2 处的元素 raises IndexError

解决方案(感谢@IAlibay)是

  • 更改选择字符串'resid 1-%d'以适应开始和停止残基,或
  • 只需通过切片 ResiduesGroup来选择第一个nprotein_res残基。protein = u.residues[:nprotein_res].atoms
于 2021-12-22T17:20:04.473 回答