GEOdatabase下載了一個.loom文件点待,想要用一下這個數(shù)據(jù)允乐,折磨了一周,終于成功的將它轉(zhuǎn)換成了seurat對象滑臊,現(xiàn)記錄如下:
數(shù)據(jù)為GSE162183,地址:https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE162183
關于loomR的簡介:
隨著單細胞數(shù)據(jù)量的增長箍铲,計算要求成指數(shù)增長雇卷,當數(shù)據(jù)量大于10萬個細胞的時候,seurat包分析就顯得非常有壓力了颠猴,因為在實時內(nèi)存中儲存數(shù)據(jù)就變得非常困難关划,HDF5數(shù)據(jù)格式提供了高效的磁盤存儲,而不是在內(nèi)存中存儲數(shù)據(jù)翘瓮,這就將分析擴展到大規(guī)模數(shù)據(jù)集贮折,甚至可以達到大于100萬細胞的級別 ,Linnarson實驗室開發(fā)了一種基于hdf5的數(shù)據(jù)結(jié)構(gòu)资盅,loom脱货,可以方便地存儲單細胞基因組數(shù)據(jù)集和元數(shù)據(jù)。他們還發(fā)布了一個名為loompy的Python API來與loom文件交互律姨,而loomR為基于R的與loom交互的R包,詳細的信息可以參考:https://satijalab.org/loomr/loomr_tutorial
安裝并加載loomR包
devtools::install_github(repo = "hhoeflin/hdf5r")
devtools::install_github(repo = "mojaveazure/loomR", ref = "develop")
library(loomR)
loomR包基于R6對象與seurat基于R4對象不同臼疫,R6對象用$而不是@來取值
與loom建立連接
與將包含在其內(nèi)部的所有數(shù)據(jù)加載到內(nèi)存中的標準R對象不同择份,loom對象僅僅是到磁盤上的一個文件的連接,這使得可以在低內(nèi)存消耗的情況下擴展到大量數(shù)據(jù)集烫堤∪俑希可以通過 connect 連接到一個現(xiàn)有的loom文件,使用loom::create從表達式矩陣創(chuàng)建您自己的文件鸽斟,或者使用Convert從現(xiàn)有的Seurat對象創(chuàng)建一個loom文件拔创。
>hc.2=connect('D:/Google/GSE162183_Raw_gene_counts_matrix_LoomFile.loom/GSE162183_Raw_gene_counts_matrix_LoomFile.loom',mode = 'r+',skip.validate = TRUE)
Warning message:
In initialize(...) :
Skipping validation step, some fields are not populated
> hc.2
Class: loom
Filename: D:\Google\GSE162183_Raw_gene_counts_matrix_LoomFile.loom\GSE162183_Raw_gene_counts_matrix_LoomFile.loom
Access type: H5F_ACC_RDWR
Attributes: last_modified, version
Listing:
name obj_type dataset.dims
attrs H5I_GROUP <NA>
col_attrs H5I_GROUP <NA>
col_graphs H5I_GROUP <NA>
layers H5I_GROUP <NA>
matrix H5I_DATASET 24234 x 19968
row_attrs H5I_GROUP <NA>
row_graphs H5I_GROUP <NA>
dataset.type_class
<NA>
<NA>
<NA>
<NA>
H5T_INTEGER
<NA>
<NA>
在沒加參數(shù)skip.validate之前,我遇到了一個error(Error in validateLoom(object = self) :
There can only be 5 groups in the loom file: 'row_attrs', 'col_attrs', 'layers', 'row_graphs', 'col_graphs')富蓄,github上找到了解決方法剩燥,貌似是版本的問題,加上那個參數(shù)設置便可以了
接下來創(chuàng)建成Seurat對象立倍,實際上灭红,loom文件也可以支持seurat的基本函數(shù)(詳見函數(shù)介紹),但還是seurat對象比較熟悉口注,所以想轉(zhuǎn)換成seurat對象变擒,在seurat4.0.3官網(wǎng)所示方法如下:
但是我直接as.seurat之后,顯示error如下:
hc.2=as.Seurat(hc.2)
Error in UseMethod(generic = "as.Seurat", object = x) :
"as.Seurat"沒有適用于"c('loom', 'H5File', 'H5RefClass', 'R6')"目標對象的方法
仍然不行寝志,觀察.loom文件中的matrix即為創(chuàng)建seurat對象中的單細胞表達矩陣娇斑,因此考慮將matrix提取出來策添,再將barcode和feature提出來,即可創(chuàng)建seurat對象毫缆,如下所示:
psoriasis=hc.2[["matrix"]][,] #提取.loom文件的matrix
psoriasis=t(psoriasis) #發(fā)現(xiàn)那個matrix的gene和barcode顛倒了唯竹,換過來才符合seurat對象中的矩陣行為基因,列為barcode
dim(psoriasis)
[1] 19968 24234
gene=hc.2$row.attrs$Gene[] #提取基因名
barcode=hc.2$col.attrs$CellID[]# 提取barcode
length(gene)
[1] 19968
length(barcode)
[1] 24234
colnames(psoriasis)= barcode
row.names(psoriasis)= gene
dim(psoriasis)
[1] 19968 24234
####創(chuàng)建seurat對象####
psoriasis=CreateSeuratObject(counts = psoriasis,project = 'psoriasis',min.cells = 3, min.features = 200)
psoriasis
An object of class Seurat
18642 features across 24234 samples within 1 assay
Active assay: RNA (18642 features, 0 variable features)
hc.2$close_all()# Always remember to close loom files when done
至此悔醋,loom文件轉(zhuǎn)換成了seurat對象摩窃,可以開心的進行下游分析啦,完結(jié)芬骄,撒花猾愿!