如何将多个相同类型的pdata身份添加到一个样本中,并在绘图时能够通过这些身份进行区分
How to add multiple pdata identities of same type to one sample, and be able to distinguish by those identities when plotting
我正在尝试将表型信息 (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 等拆分。
对不起,问题很长,但感谢您的阅读!
参见 https://github.com/satijalab/seurat/issues/4650。如果我想按照我现在的方式绘制它,看起来我需要每个单元格的批次信息。
我正在尝试将表型信息 (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 等拆分。
对不起,问题很长,但感谢您的阅读!
参见 https://github.com/satijalab/seurat/issues/4650。如果我想按照我现在的方式绘制它,看起来我需要每个单元格的批次信息。