【发布时间】:2019-11-26 14:52:17
【问题描述】:
我可能有比代码相关的更多技术问题。我尝试仅使用 PDB 文件执行 PCA(使用 MDAnalysis 包) - 此 pdb 文件包含 100 个对齐的结构(当然,它们是相同的 - 这意味着相同类型和数量的原子;它是在 PyMol 中完成的)。
我使用我之前为具有标准轨迹的 PCA 编写的代码,但它返回错误“无法从单个轨迹帧收集协方差信息。”
因此,我的假设是 PCA 不能仅使用 PDB 文件完成,或者可以,但我没有正确的 pdb 输入。我想知道是否有人曾经尝试过这样的事情或对 MDAnalysis 有很好的经验并且可以给我任何建议(我是计算化学的新手)。
我认为代码不是很需要,但我附上它:
import matplotlib.pyplot as plt
import MDAnalysis as mda
from MDAnalysis.analysis.pca import PCA
import numpy as np
u = mda.Universe("mypdb.pdb")
ca = u.select_atoms('name CA')
pca = PCA(u, select='name CA').run()
n_pcs = np.where(pca.cumulated_variance > 0.95)[0][0]
reduced_data = pca.transform(ca, n_components=n_pcs)
plt.plot(pca.variance, "-o")
【问题讨论】:
-
如果 PDB 文件包含“PDB 轨迹”(即具有多个 MODEL 条目的文件),那么这应该可以工作。查看
u.trajectory.n_frames是否显示大于 1 的数字。有关更多背景信息,请参阅 PDB structure files in MDAnalysis。 -
顺便说一句,大多数 MDAnalysis 用户在邮件列表 groups.google.com/group/mdnalysis-discussion 上提出问题
-
谢谢,我查看了邮件列表,但没有找到问题的答案。是的,我的文件是单帧,因为它不是由轨迹制成的。我从 100 个结构中制作了这个文件,这些结构是对齐的,这些结构最初是与 RCSB 分开的结构(但它总是具有相同数量的原子的相同蛋白质)。是否有可能将其制成多帧 PDB?
-
您是否按照@orbeckst 的建议打印了
u.trajectory.n_frames?很可能您的 .pdb 轨迹构造不正确。您是如何分隔 .pdb 中的帧的?分隔是否使用关键字MODEL?
标签: bioinformatics pca pymol cheminformatics mdanalysis