【发布时间】:2018-09-03 05:33:26
【问题描述】:
我向 2 年前发布的类似帖子提问,但没有完整答案 (subset of prcomp object in R)。附:很抱歉评论它以获得答案..
基本上,我的问题是一样的。我使用 prcomp 生成了一个 PCA 表,该表具有 10000 多个基因和 1700 多个细胞,由 7 个时间点组成。将它们全部绘制在一个文件中会让人很难看清。
我想分别绘制每个时间点,使用相同的 PCA 结果表(即不重新运行 prcomp)。
感谢 Dean 给我发帖的提示。想出一种方法来描述我的数据集而不实际加载它,我相信需要一周的时间。我也试过了
dput(droplevels(head(object,2)))
选项,但信息太多了,因为我有这么大的数据集。简而言之,它是一个大型单细胞数据集矩阵,人们通常可以在 Seurat (https://satijalab.org/seurat/pbmc3k_tutorial_1_4.html) 等软件包上看到它。编辑:我在此处发布了我的矩阵子集的屏幕截图 ()。
抱歉,我不知道如何重新创建它,甚至不知道如何导出文本格式。但这是我可以提供的: 我的 TPM 矩阵有 16541 行(定义基因)和 1798 列(定义细胞)。
在其中,我根据时间点“重新标记”了我的列,使用的代码如下:
D0<-c(colnames(TPM[,grep("20180419-24837-1-*", colnames(TPM))])) #D0: 286 cells
D7<-c(colnames(TPM[,grep("20180419-24837-2-*", colnames(TPM))])) #D7: 237 cells
D10<-c(colnames(TPM[,grep("20180419-24947-5-*", colnames(TPM))])) #D10: 304 cells
……我继续标记每个时间点。
每个时间点也被赋予了特定的颜色。
rc<-rep("white", ncol(TPM))
rc<-[,grep("20180419-24837-1-*", colnames(TPM))]= "magenta"
……我继续给每个时间点上色。
我使用此代码执行了 PCA:
pcaRes<-prcomp(t(log(TPM+1)), center= TRUE, scale. = TRUE)
然后我开始使用以下方法绘制 PCA 图:
plot(pcaRes$x[,1], pcaRes$x[,2], xlab="PC1", ylab="PC2",
cex=1.0, col= rc, pch=16, main="")
然后,当我想仅使用 D0 绘制 PCA 图时,使用相同的 PCA 输出 (pcaRes).. 这就是我卡住的地方。
附:如果其他人有更简单的方法来建议如何从我的大矩阵中输入示例数据,我欢迎任何帮助。非常感谢!对不起,我是生物信息学的新手。
【问题讨论】:
-
嗨@MeganS92,感谢您的提问。与其描述你的矩阵是如何构成的,你能提供一个小的、独立的例子吗?要么使用内置的 R 数据集,要么复制粘贴一些代码来创建一个?这将帮助其他人复制/粘贴并提供解决方案。另请查看此链接以获取更多信息:stackoverflow.com/questions/5963269/…
-
嘿@MeganS92,如果您尝试做的事情不依赖于您的特定生物信息学数据。您可以输入
?princomp或?prcomp并查看帮助指南的示例部分。他们通常有一个内部 R 数据集,如USArrests或stackloss来展示这些功能。你能重现/伪造这些数据集吗?即编造一些虚假的时间点。 -
感谢院长。我已经查找了您建议的两个数据集,但我认为两者都不能完全描述我的数据集。我认为最简单的方法是查看一些虚假的单细胞数据集,例如 Seurat 教程中的单细胞数据集。不过话说回来,也可能是我的生物信息学水平太低,不知道怎么提供这个数据集。我很想重现这个数据集,这正是我试图做的,但老实说,我需要一天的时间才能弄清楚如何轻松地做到这一点。对不起。我希望我的数据截图能提供一些提示。
-
出于好奇,你有没有读过这里的数据:pbmc.data
-
嗨@ConradThiele,我需要先通过下载链接下载数据,然后解压缩,因为它是一个 zip 文件。之后,我几乎按照您的方式加载它。我能否澄清一下,如果这个问题与我关于 prcomp 的原始问题有关,这不是我正在使用的 ACTUAL 数据集。但是,它在某些方面已经足够接近了……
标签: r plot subset seurat prcomp