之前Monocle2直接输入Seurat object只适用于Seuratv2.0版本的Seurat object。官方也在github上的issue处表明暂时还未有直接将Seurat3.0的Seurat object直接转换为Monocle2的CDS的function。
所以需要从头构建CDS:
一般monocle构建CDS需要3个矩阵:expr.matrix、pd、fd
expr.matrix :基因-细胞表达矩阵
pd :细胞-细胞特征注释矩阵
fd :基因-基因特征注释矩阵
这里Seurat object是RA.integrated
#Seurat object中的@assay中的@counts会存放单细胞测序的raw data,所以选择将@counts转换为expression matrix
RA_matrix<-as(as.matrix(RA.integrated@assays$RNA@data), 'sparseMatrix')
#构建featuredata,一般featuredata需要两个col,一个是gene_id,一个是gene_short_name,row对应counts的rownames
feature_ann<-data.frame(gene_id=rownames(RA_matrix),gene_short_name=rownames(RA_matrix))
rownames(feature_ann)<-rownames(RA_matrix)
RA_fd<-new("AnnotatedDataFrame", data = feature_ann)
#Seurat object中的@meta.data一般会存放表型相关的信息如cluster、sample的来源、group等,所以选择将metadata转换为phenodata
sample_ann<-RA.integrated@meta.data
rownames(sample_ann)<-colnames(RA_matrix)
RA_pd<-new("AnnotatedDataFrame", data =sample_ann)
RA.cds<-newCellDataSet(RA_matrix,phenoData =RA_pd,featureData =RA_fd,expressionFamily=negbinomial.size())
#查看phenodata、featuredata
head(pData(RA.cds))
head(fData(RA.cds))
由于这里导入的expression matrix 是raw data,所以后续还需要进行normalized。