1伴挚、數(shù)據(jù)在不同環(huán)境中的兼容情況
目前V5版本的環(huán)境可以兼容V3版本的數(shù)據(jù),但是V3環(huán)境中導(dǎo)入V5環(huán)境會報(bào)錯(cuò)(缺依賴包)蜘醋。
目前有兩種方式新建R對象數(shù)據(jù)CreateSeuratObject
和CreateAssayObject/CreateAssay5Object
鞭缭,兩者的區(qū)別在于第一個(gè)是需要先options(Seurat.object.assay.version = "v3")
指定生成的數(shù)據(jù)版本俺猿,而后者是直接根據(jù)函數(shù)的不同來指定。
# create v3 assays
options(Seurat.object.assay.version = "v3")
pbmc.counts <- Read10X(data.dir = "/brahms/hartmana/vignette_data/pbmc3k/filtered_gene_bc_matrices/hg19/")
pbmc <- CreateSeuratObject(counts = pbmc.counts)
class(pbmc[["RNA"]])
# create v5 assays
options(Seurat.object.assay.version = "v5")
pbmc.counts <- Read10X(data.dir = "/brahms/hartmana/vignette_data/pbmc3k/filtered_gene_bc_matrices/hg19/")
pbmc <- CreateSeuratObject(counts = pbmc.counts)
class(pbmc[["RNA"]])
# CreateAssayObject() and CreateAssay5Object()
# create a v3 assay
assay.v3 <- CreateAssayObject(counts = pbmc.counts)
# create a v5 assay
assay.v5 <- CreateAssay5Object(counts = pbmc.counts)
同時(shí)seurat V5也提供了V3和V5版本數(shù)據(jù)相互轉(zhuǎn)換的方法:
# We can also convert (cast) between Assay and Assay5 objects with as().
# convert a v5 assay to a v3 assay
pbmc3k[["RNA3"]] <- as(object = pbmc3k[["RNA"]], Class = "Assay")
# convert a v3 assay to a v5 assay
pbmc3k[["RNA5"]] <- as(object = pbmc3k[["RNA3"]], Class = "Assay5")
2忘瓦、數(shù)據(jù)結(jié)構(gòu)變化
由于數(shù)據(jù)結(jié)構(gòu)的變化搁廓,v5中使用的是layers,因此v5版本之前使用的例如seurat.obj@assays
提取數(shù)據(jù)的時(shí)候會出現(xiàn)錯(cuò)誤。
這種報(bào)錯(cuò)的修改方式可以把從一層層數(shù)據(jù)結(jié)構(gòu)中提取數(shù)據(jù)改成使用現(xiàn)有函數(shù)來提取數(shù)據(jù)(這種方式舊版本和新版本都可以兼容)蝙场。
可以替換的數(shù)據(jù)結(jié)構(gòu)可以參考seurat官網(wǎng)的鏈接:https://satijalab.org/seurat/articles/essential_commands#seurat-object-data-access
# 比如在v3中的seurat.obj@assays$RNA@data,可改為
GetAssayData(object=seurat.obj, slot="data", assay=DefaultAssay(seurat.obj))
# 提取高變基因數(shù)據(jù)
# 比如v3中提取seurat.obj@assays$RNA@var.features粱年,可改為
VariableFeatures(object = seurat.obj, assay="RNA")
3售滤、分析結(jié)果變化
FindMarkers()
從seurat V4升級后就出現(xiàn)的一個(gè)結(jié)果變化,就是差異基因的分析結(jié)果表台诗,由avg_logFC
改成了avg_log2FC
完箩。因此如果后續(xù)代碼中有使用這列進(jìn)行過濾等操作,需要修改key值進(jìn)行兼容拉队。
除此之外弊知,如果分析中沒有找到marker基因,返回結(jié)果會是一個(gè)list氏仗,而不是NA吉捶。如果使用is.na(response)
進(jìn)行識別會報(bào)錯(cuò),可以改成all(is.na(response))
來識別皆尔,如下:
response <- FindMarkers(object = seurat.obj, ident.1 = "comparison", ident.2 = "control", verbose = FALSE, test.use = "wilcox", logfc.threshold = 0.25),
if(! all(is.na(response))){
...
}
FetchData()
新版本中提取umap數(shù)據(jù)的key值有變化呐舔,V3版本中是UMAP_1
、UMAP_2
,V5版本中改成了小寫。tSNE沒有變化蜻底。
AverageExpression()
V3版本中輸出的直接是一個(gè)data.frame
結(jié)構(gòu)单刁,但是V5中變成了dgCMatrix
的結(jié)構(gòu),因此署辉,如果想要data.frame,可以再加一層as.data.frame()
持續(xù)補(bǔ)充中......如有錯(cuò)誤,歡迎大家指出~