我试图从本质上将表型信息(pdata)添加到此数据集中的样本中。
library(BiocManager)
library(GEOquery)
library(plyr)
library(dplyr)
library(Matrix)
library(Seurat)
# Loading Raw Data into RStudio ----------------------------------
filePaths = getGEOSuppFiles("GSE118389")
tarF <- list.files(path = "./GSE118389/", pattern = "*.tar", full.names = TRUE)
untar(tarF, exdir = "./GSE118389/")
gzipF <- list.files(path = "./GSE118389/", pattern = "*.gz", full.names = TRUE)
ldply(.data = gzipF, .fun = gunzip)
list.files(path = "./GSE118389/", full.names = TRUE)
我以以下方式加载患者 39 (PT039) 的样本信息:
# Load in full matrix ----------------------------------------------------------
fullmat <- read.table(file = './GSE118389//GSE118389_counts_rsem.txt',
sep = '\t', header = TRUE, stringsAsFactors = FALSE)
# Load in PT039 matrix -----------------------------------------------------------
PT039mat <- grep(pattern =c("^PT039") , x = colnames(fullmat), value = TRUE)
PT039mat = fullmat[,grepl(c("^PT039"),colnames(fullmat))]
PT039mat[1:5,1:5]
然后我以以下方式添加关联的 pdata,本质上创建一个单独的数据框,除此之外PT039mat
,稍后将作为 pdata 添加到 Seurat 对象中:
PT039pdat <- data.frame("samples" = colnames(PT039mat),
"lymphovascular_invasion" = "no",
"nodal_involvement" = "no",
"BRCA_status" = "BRCA-")
我可能想错了,但我有以下信息,PT039 存在于多个批次中。我想基本上将这个确切的数据框重新创建为PT039pdat
:
Batch Patient ID
B1 PT039
B2 PT058
B3 PT039, PT081, PT089
B4 PT081
B5 PT084, PT089
B6 PT084, PT089
B7 PT126
B8 PT039, PT084
B9 PT039
我可以使用以下代码完全做到这一点:
PT039_batch <- list(c("B1", "B3", "B8", "B9"))
PT039pdat$batch <- PT039_batch
但是,当我尝试在 UMAP 上绘制不同批次时,它无法检测到单独的可能性,如果这有意义的话。
DimPlot(sobj, reduction = "umap", split.by = "batch")
Error in `[<-.data.frame`(`*tmp*`, , split.by, value = c(PT039_P11_A01_S1 = "B1", :
replacement has 3538 rows, data has 1325
我希望能够创建这个,但批次信息按 B1、B2、B3 等拆分。
抱歉,问题很长,但感谢您的阅读!