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库,或者找到一些手动注释的思路。


相关文章
|
6月前
|
自然语言处理 数据可视化 数据挖掘
基于词云图+Kmeans聚类+LDA主题分析+社会网络语义分析对大唐不夜城用户评论进行分析(下)
基于词云图+Kmeans聚类+LDA主题分析+社会网络语义分析对大唐不夜城用户评论进行分析
258 0
|
6月前
|
存储 自然语言处理 数据可视化
基于词云图+Kmeans聚类+LDA主题分析+社会网络语义分析对大唐不夜城用户评论进行分析(上)
基于词云图+Kmeans聚类+LDA主题分析+社会网络语义分析对大唐不夜城用户评论进行分析
237 0
|
6月前
|
存储 数据采集 数据可视化
R语言估计时变VAR模型时间序列的实证研究分析案例
R语言估计时变VAR模型时间序列的实证研究分析案例
R语言估计时变VAR模型时间序列的实证研究分析案例
|
6月前
|
数据可视化 数据挖掘 索引
R语言层次聚类、多维缩放MDS分类RNA测序(RNA-seq)乳腺发育基因数据可视化|附数据代码2
R语言层次聚类、多维缩放MDS分类RNA测序(RNA-seq)乳腺发育基因数据可视化|附数据代码
|
6月前
|
数据可视化 数据挖掘
singleCellNet(代码开源)|单细胞层面对细胞分类进行评估,褒贬不一,有胜于无
`singleCellNet`是一款用于单细胞数据分析的R包,主要功能是进行细胞分类评估。它支持多物种和多分组分析,并提供了一个名为`CellNet`的类似工具的示例数据集。用户可以通过安装R包并下载测试数据来运行demo。在demo中,首先加载查询和测试数据,然后训练分类器,接着进行评估,包括查看准确率和召回率的曲线图、分类热图和比例堆积图等。此外,`singleCellNet`还支持跨物种评估,将人类基因映射到小鼠直系同源物进行分析。整体而言,`singleCellNet`是一个用于单细胞分类评估的综合工具,适用于相关领域的研究。
90 6
|
6月前
|
数据可视化
R语言Copula模型分析股票市场板块相关性结构
R语言Copula模型分析股票市场板块相关性结构
|
6月前
|
存储 数据可视化 数据挖掘
R语言层次聚类、多维缩放MDS分类RNA测序(RNA-seq)乳腺发育基因数据可视化|附数据代码1
R语言层次聚类、多维缩放MDS分类RNA测序(RNA-seq)乳腺发育基因数据可视化|附数据代码
|
6月前
|
vr&ar
R语言用向量自回归(VAR)进行经济数据脉冲响应研究分析
R语言用向量自回归(VAR)进行经济数据脉冲响应研究分析
|
11月前
|
机器学习/深度学习 人工智能 算法
AI Earth有没有相关文档或论文介绍平台地物分类、目标提取、变化检测等算法的原理呢?
AI Earth有没有相关文档或论文介绍平台地物分类、目标提取、变化检测等算法的原理呢?
337 1
|
6月前
|
机器学习/深度学习 数据挖掘 BI
【数据挖掘】回归分析定义、概念、分类、过程讲解(图文解释 超详细)
【数据挖掘】回归分析定义、概念、分类、过程讲解(图文解释 超详细)
299 0