scRNA挖掘 |只有矩阵如何构建单细胞对象?meta信息如何利用?

简介: scRNA挖掘 |只有矩阵如何构建单细胞对象?meta信息如何利用?

本文首发于“生信补给站”公众号  https://mp.weixin.qq.com/s/WJQkN_jtYg19yGz0uq8tyg


前面在scRNA分析|多样本merge 和 harmony去批次提到单细胞的数据形式有很多种。如果提供的是标准的10X的三个文件就可以直接read10X读取,那如果只有矩阵文件如何进行下游分析呢?

如果额外给了细胞水平的meta文件,如何利用呢?


本文以2021年12月发表在nature cancer上的文献数据为例,读取提供的GSE179994中的矩阵和meta数据。

一 载入数据,R包

文章https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE179994只提供了矩阵文件,不能使用Read10X函数的形式,但是也可以很简单的读取。

1.1 读取下载的数据

1) 读取矩阵文件

注意区分rds 和 RData文件的读取方式 。如果是文本文件的话直接read.table 或者 readMM 读取。

library(tidyverse)
library(Seurat)
data <- readRDS("GSE179994_all.Tcell.rawCounts.rds")
data[1:4,1:4]
4 x 4 sparse Matrix of class "dgCMatrix"
       P1.ut.AAACCTGAGGCACATG-1 P1.ut.AAACCTGGTGGTACAG-1 P1.ut.AAACCTGTCACGGTTA-1 P1.ut.AAACCTGTCCGCTGTT-1
OR4F5                         .                        .                        .                        .
OR4F29                        .                        .                        .                        .
OR4F16                        .                        .                        .                        .
SAMD11                 

2)读取meta文件

meta <- read.table("GSE179994_Tcell.metadata.tsv",header = T )
head(meta)
                    cellid patient sample celltype        cluster
1 P1.ut.AAACCTGAGGCACATG-1      P1 P1.pre     <NA>           <NA>
2 P1.ut.AAACCTGGTGGTACAG-1      P1 P1.pre      CD4    CD4_C8-Treg
3 P1.ut.AAACCTGTCACGGTTA-1      P1 P1.pre      CD4    CD4_C8-Treg
4 P1.ut.AAACCTGTCCGCTGTT-1      P1 P1.pre      CD4 CD4_C9-Prolif.
5 P1.ut.AAACCTGTCTGGTATG-1      P1 P1.pre     <NA>           <NA>
6 P1.ut.AAACCTGTCTTGAGAC-1      P1 P1.pre      CD4    CD4_C8-Treg

可以看到提供了cell level的注释信息。

1.2 创建seurat对象

依然使用CreateSeuratObject 函数,此处count 为读取的矩阵文件。

sce0 <- CreateSeuratObject(counts = data)
sce0
head(sce0@meta.data)
An object of class Seurat  19790 features across 150849 samples within 1 assay  Active assay: RNA (19790 features, 0 variable features)
                            orig.ident nCount_RNA nFeature_RNA
P1.ut.AAACCTGAGGCACATG-1 SeuratProject       3265         1241
P1.ut.AAACCTGGTGGTACAG-1 SeuratProject       3871         1783
P1.ut.AAACCTGTCACGGTTA-1 SeuratProject       3945         1816
P1.ut.AAACCTGTCCGCTGTT-1 SeuratProject      21848         4426
P1.ut.AAACCTGTCTGGTATG-1 SeuratProject       2959         1376
P1.ut.AAACCTGTCTTGAGAC-1 SeuratProject       1809         1024

之后就可以进行标准的seurat流程,然后进行个性化挖掘分析了。

二 添加meta信息

文献提供的metadata文件中含有每个细胞的patient ,sample ,celltype 以及 cluster ,是很有利用价值的 。

之前在scRNA分析|Marker gene 可视化 以及 细胞亚群注释--你是如何人工注释的?中提到了如何添加亚群注释(cluster level)结果到metadata的方式,这里介绍下如何添加每个细胞(cell level)的metadata。

1,CreateSeuratObject中的meta.data参数

CreateSeuratObject函数除了简单的过滤条件外 ,还有一个重要的meta.data参数,可以输入提供的meta信息。


sce1 <- CreateSeuratObject(counts = data, 
                             meta.data =meta,
                             min.cells = 3,  # 可以注释掉 
                             min.features = 200,  # 可以注释掉
                             project = "GSE179994")c
head(sce1@meta.data)
sce1 <- CreateSeuratObject(counts = data, 
                             meta.data =meta,
                             min.cells = 3,  # 可以注释掉 
                             min.features = 200,  # 可以注释掉
                             project = "GSE179994")c
head(sce1@meta.data)

可以看到虽然添加上了meta的信息列,但是全是NA,这是什么原因呢?

检索之后https://github.com/satijalab/seurat/issues/2715 发现 ,是因为CreateSeuratObject要求meta文件中rownames是count文件的colnames

其实 ??CreateSeuratObject函数的帮助文档中也很明确的提到了该点要求。

发现问题后,只需要将meta文件的cellid列转为rownames即可。

meta2 <- meta %>% column_to_rownames("cellid")
sce2 <- CreateSeuratObject(counts = data, 
                          meta.data =meta2,
                          min.cells = 3, 
                          min.features = 200, 
                          project = "GSE179994")
head(sce2@meta.data)

2,AddMetaData函数

也可以在sce0的基础上,使用AddMetaData函数进行添加

sce3 <- AddMetaData(
       object = sce0,
       metadata = meta2
   )
head(sce3@meta.data)

3,矩阵添加

建议优先使用上述两种单细胞特有的方式进行添加。


sce4 <- sce0
sce4@meta.data <- sce4@meta.data %>% 
  rownames_to_column("cellid") %>% 
  inner_join(meta) %>% 
  column_to_rownames("cellid")  #一定要转回来
head(sce4@meta.data)

注意一定要把cell barcode的列转为rowname !

OK,搞定!以上三种方式结果是一致的。

建议可以先自行注释,然后参照文献注释结果修正自己的marker库,或者找到一些手动注释的思路。


相关文章
|
8月前
|
存储 数据可视化 数据挖掘
单细胞分析(Signac): PBMC scATAC-seq 基因组区域可视化
单细胞分析(Signac): PBMC scATAC-seq 基因组区域可视化
55 0
|
8月前
|
存储 数据采集 数据可视化
R语言估计时变VAR模型时间序列的实证研究分析案例
R语言估计时变VAR模型时间序列的实证研究分析案例
R语言估计时变VAR模型时间序列的实证研究分析案例
|
8月前
|
数据可视化 数据挖掘 索引
R语言层次聚类、多维缩放MDS分类RNA测序(RNA-seq)乳腺发育基因数据可视化|附数据代码2
R语言层次聚类、多维缩放MDS分类RNA测序(RNA-seq)乳腺发育基因数据可视化|附数据代码
|
8月前
|
存储 数据可视化 数据挖掘
R语言层次聚类、多维缩放MDS分类RNA测序(RNA-seq)乳腺发育基因数据可视化|附数据代码1
R语言层次聚类、多维缩放MDS分类RNA测序(RNA-seq)乳腺发育基因数据可视化|附数据代码
|
8月前
|
数据可视化
R语言KNN模型分类信贷用户信用等级数据参数调优和预测可视化|数据分享
R语言KNN模型分类信贷用户信用等级数据参数调优和预测可视化|数据分享
|
8月前
|
数据可视化 Python
R语言分析糖尿病数据:多元线性模型、MANOVA、决策树、典型判别分析、HE图、Box's M检验可视化
R语言分析糖尿病数据:多元线性模型、MANOVA、决策树、典型判别分析、HE图、Box's M检验可视化
|
8月前
|
机器学习/深度学习 算法 计算机视觉
人工神经网络ANN中的前向传播和R语言分析学生成绩数据案例
人工神经网络ANN中的前向传播和R语言分析学生成绩数据案例
|
8月前
|
vr&ar
R语言用向量自回归(VAR)进行经济数据脉冲响应研究分析
R语言用向量自回归(VAR)进行经济数据脉冲响应研究分析
|
8月前
R语言估计多元标记的潜过程混合效应模型(lcmm)分析心理测试的认知过程
R语言估计多元标记的潜过程混合效应模型(lcmm)分析心理测试的认知过程
|
8月前
|
机器学习/深度学习 数据挖掘 BI
【数据挖掘】回归分析定义、概念、分类、过程讲解(图文解释 超详细)
【数据挖掘】回归分析定义、概念、分类、过程讲解(图文解释 超详细)
362 0