我可能有比代码相关的更多技术问题。我尝试仅使用 PDB 文件执行 PCA(使用 MDAnalysis 包)——这个 pdb 文件包含 100 个对齐的结构(当然,它们是相同的——这意味着相同类型和数量的原子;它是在 PyMol 中完成的)。
我使用我之前制作的带有标准轨迹的 PCA 代码,但它返回错误“ No covariance information can be collect from asingle track frame ”。
因此,我的假设是 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")