基本的に、このデータセットのサンプルに表現型情報 (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 などで分割されています。
長い質問で申し訳ありませんが、読んでいただきありがとうございます!