单细胞测序学习笔记(二)——细胞注释
1.细胞鉴别
在上一步对各类细胞进行featureblot后,可以根据文献或者在线数据库来对细胞进行鉴别。此处我使用的是CellMarker网站。
对照起来进行鉴别,但是有些细胞簇有两个marker,有些细胞簇的marker有重合,所以鉴别这一步具有比较大的主观性,需要结合多个数据库或者文献进行判断。
在完成鉴别后,创建一个新的字符向量保存细胞名称,顺序从0-12一一对应。
以下是我自己的判断结果:
new.cluster.ids <- c("Memory T cell","CD14+ Mono", "CD8 T",
+ "NK", "CD8 T", "B", "B", "undefined", "Cytotoxic T", "NK","DC",
+"Megakaryocyte progenitor cell","CD1C+_B dendritic cell")
接下来,使用names()函数,将pbmc的levels和new.cluster.ids一一对应。
names<- 是通用替换函数。The default methods get and set the "names" attribute of a vector (including a list) or pairlist.用levels中的字符向量设置new.cluster.ids的names属性。
如果levels()比names()短,则会以NA填充names()。
names(new.cluster.ids) <- levels(pbmc)
> new.cluster.ids0 1 2 "Memory T cell" "CD14+ Mono" "CD8 T" 3 4 5 "NK" "CD8 T" "B" 6 7 8 "B" "undefined" "Cytotoxic T" 9 10 11 "NK" "DC" "Megakaryocyte progenitor cell" 12 "CD1C+_B dendritic cell"
可以看到对应关系
然后给pbmc中每个identity重命名
再次查看UMAP聚类图
DimPlot(pbmc, reduction = "umap", label = TRUE, pt.size = 0.5) + NoLegend()
设置NoLegend(),因为已经将名称添加到图上。
然后保存这一步结果
saveRDS(pbmc, file = "pbmc_final.rds")
关于save和saveRDS,参考R语言 save与saveRDS - JoAnna_L - 博客园:
Rda与Rdata,前者是后者格式的缩写,在R里加载同样使用load()。
save与saveRDS的区别在于,前者保存的数据文件格式为.Rda或Rdata,读入R使用load(),载入的数据名称为原数据名称,不可指定。
后者保存的数据文件格式为.rds,读入使用readRDS,读入的数据名称可指定:name<-readRDS('.rds')。因此当保存单个对象时,推荐使用后者。
save不仅可以保存数据,也可保存模型结果、函数等,可保存至.R文件中。
2. 使用SingleR进行注释
SingleR是针对scRNAseq的一种注释工具,给出具有已知标签的样本(single-cell or bulk)的参考数据集,它基于与参考集的相似性来标记来自测试数据集的新的细胞。
首先调用一下需要的包,这里用了pacman包调用
p_load(SingleR,reshape2,celldex)
接下来把pbmc的聚类结果单独储存为meta对象
meta <- pbmc@meta.data
获取标准化矩阵
关于GetAssayData()的用法# Get the data directly from an Assay object
GetAssayData(pbmc_small[["RNA"]], slot = "data")[1:5,1:5]
这一步是从Seurat对象的data槽中访问数据
pbmc_for_SingleR <- GetAssayData(pbmc, slot="data")
参考seurat对象结构 - 简书:使用GetAssayData
函数可以从Seurat对象访问数据。
可以使用SetAssayData
将数据添加到counts
,data
或scale.data
插槽中。新数据必须具有与当前数据相同顺序的相同细胞。添加到counts'或
data`中的数据必须具有与当前数据相同的features。
下一步,使用SingleR里celldex的HumanPrimaryCellAtlasData对pbmc_for_SingleR里的数据进行注释,加上label
问题:
由于SingleR的数据库是通过ExperimentHub服务器下载的,大陆网络无法连接,会报错如下:
Cannot connect to ExperimentHub server, using 'localHub=TRUE' instead
Error in .updateHubDB(hub_bfc, .class, url, proxy, localHub) :
Invalid Cache: sqlite file
Hub has not been added to cache
Run again with 'localHub=FALSE'
在此处使用SingleR的解决方法参考了jimmy老师推荐的第二种方法:singleR的7个数据库文件下载失败的解决方案 - 云+社区 - 腾讯云
下载《生信会客厅》上传的数据库文件
链接:https://pan.baidu.com/s/13EjK-66tZKRsSl9G80S7uw
提取码:8mfb
下载完成后里面有SingleR里的7个数据库的数据集合,我们在这里要用的 HumanPrimaryCellAtlasData在ref_Human_all的R.data文件当中
读取文件
pbmc.hesc <- SingleR(test = pbmc_for_SingleR, ref = refdata,
+ labels = refdata$label.main)
这里labels选项有label.main和label.fine,main大类注释,也可使用fine小类注释,不过小类注释准确性不好确定。
然后查看新注释的标签与seurat分类的结果的交叠情况
> table(pbmc.hesc[["labels"]],meta$seurat_clusters) 0 1 2 3 4 5 6 7 8 9 10 11 12B_cell 0 0 0 0 0 264 265 0 0 0 0 0 2CMP 0 0 0 3 0 0 0 0 0 0 0 0 0GMP 0 0 0 0 0 0 0 0 0 0 0 0 1Monocyte 2 922 0 0 0 1 0 0 0 104 51 0 12NK_cell 0 0 1 327 46 0 1 3 0 0 0 0 0Platelets 0 0 0 0 0 0 0 0 0 0 0 28 0Pre-B_cell_CD34- 2 4 0 0 0 0 0 0 0 1 0 0 11T_cells 1278 1 740 3 273 5 2 120 122 0 0 0 0
可以看出来跟我自己的主观判断还是有所出入的
然后将注释后的结果做热图并保存为pdf
> pdf("plotScoreHeatmap.pdf")
> print(plotScoreHeatmap(pbmc.hesc))
> dev.off()
这样做出来的图比较漂亮和直观,能看到T细胞占了pbmc中大部分,其次是单核细胞
向pbmc_fianl的meda.data数据中加上pbmc.hesc的label(中间在运行的时候R关闭过一次,之后拿pbmc_final继续的分析,后续代码应该是pbmc的地方都换为pbmc_final)
pbmc_final@meta.data$labels <-pbmc.hesc$labels
继续绘制DimPlot的对比图
print(DimPlot(pbmc_final, group.by = c("seurat_clusters", "labels"),
+ reduction = "umap", label = T))
(这里右图label叠在一起了,除了用label.size缩小label字号以外还可以怎么修改)
更加美观的绘图方法如下:
> aa=table(pbmc.hesc[["labels"]],meta$seurat_clusters)
将labels信息和cluster信息合为列表存为aa
aa= apply(aa,2,function(x) x/sum(x))
将aa值设置为百分比,apply()函数中2表示对aa中的数据按列(cell clusters)处理
df=as.data.frame(melt(aa))
将aa转化为数据框
df$Var2=as.factor(df$Var2)
把df中的Var2变量转化为因子(按照整数向量的形式储存类别值)
使用ggplot2绘制气泡图(上一步把Var2转化为因子)
> library(ggplot2)
> g <- ggplot(df, aes(Var2, Var1)) + geom_point(aes(size = value), colour = "green") + theme_bw()
> g
绘制热图
> library(pheatmap)
> pdf("heatmap.pdf",height=5,width=10)
> heatmap <- pheatmap(log2(aa+10), color=colorRampPalette(c("white", "blue"))(101))
> print(heatmap)
> dev.off()
单细胞测序学习笔记(二)——细胞注释相关推荐
- 单细胞测序学习笔记(一)——细胞聚类和鉴定
使用的是10X Genomics 5k Peripheral blood mononuclear cells (PBMCs) from a healthy donor (v3 chemistry) ...
- amazeui学习笔记二(进阶开发4)--JavaScript规范Rules
amazeui学习笔记二(进阶开发4)--JavaScript规范Rules 一.总结 1.注释规范总原则: As short as possible(如无必要,勿增注释):尽量提高代码本身的清晰性. ...
- pythonsze_python学习笔记二 数据类型(基础篇)
Python基础 对于Python,一切事物都是对象,对象基于类创建 不同类型的类可以创造出字符串,数字,列表这样的对象,比如"koka".24.['北京', '上海', '深圳' ...
- 二维码学习笔记(二) | 数据分析与数据编码
唠唠闲话 二维码笔记系列(原文地址): 『二维码学习笔记(一) | 二维码概述』 『二维码学习笔记(二) | 数据分析与数据编码』 『二维码学习笔记(三) | 纠错编码』 『二维码学习笔记(四) | ...
- 深度强化学习笔记(二)——Q-learning学习与二维寻路demo实现
深度强化学习笔记(二)--Q-learning学习与二维寻路demo实现 文章目录 深度强化学习笔记(二)--Q-learning学习与二维寻路demo实现 前言 理论 什么是Q-Learning 算 ...
- openCV4.0 C++ 快速入门30讲学习笔记(自用 代码+注释)详细版
课程来源:哔哩哔哩 环境:OpenCV4.5.1 + VS2019 目录 002.图像色彩空间转换 003.图像对象的创建与赋值 004.图像像素的读写操作 005.图像像素的算术操作(加减乘除4种不 ...
- GEE(Google Earth Engine) 最基础代码学习笔记二 —— JavaScript 语言
GEE(Google Earth Engine) 学习笔记二 Javascript 语言 1. 注释 print('Hello World!'); 如果要注释,则在代码前面加//,比如: // pri ...
- qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)
原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/7851 ...
- [转载]dorado学习笔记(二)
原文地址:dorado学习笔记(二)作者:傻掛 ·isFirst, isLast在什么情况下使用?在遍历dataset的时候会用到 ·dorado执行的顺序,首先由jsp发送请求,调用相关的ViewM ...
最新文章
- mysql中模糊查询的四种用法介绍
- lda 可以处理中文_LDA数学八卦索引及全文文档
- OpenCASCADE绘制测试线束:拓扑命令之拓扑和曲面创建
- 五大常用算法之五:分支限界法
- oracle 转换成csv文件,如何将csv转换为oracle中的表
- Bootstrap插件通过noConfllict 避免冲突
- 计算机程序设计vb怎么保存,VB编程:读取文本文件和保存文本文件的方法
- OPPO Find X5系列领衔OPPO春季新品发布会,多款产品亮相
- QListView当前页(可视范围)全选反选
- Python+vue设计并实现了宾馆酒店客房管理系统django flask
- 计算机原理74181芯片,计算机组成原理
- 小米冲高端?差了几口气
- 2021正睿csp7连day3
- python3 安卓_Android QPython3 调用 其他 Android App
- 数字逻辑实验|逻辑函数及其描述工具(Logisim)
- 抗疫得闲●流花湖(1)
- layui table重载闪烁(fixed: ‘right‘ 导致闪烁)
- 20220103英语学习
- 17天 GRE单词——实践日志(更新中)
- 计算一个圆的直径面积周长
热门文章
- 从psd图中找到对应图层,导出图片
- 参议院和众议院的区别
- 上海迪士尼乐拍通disney相片免费下载,含香港迪士尼处处拍相片下载
- mac上git clone报错:error: RPC failed; curl 92 HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (e
- Linux 开机时网络自动连接
- P3799 妖梦拼木棒
- 什么是GHO和ISO
- Java Swing C/S版本12306订票助手
- 基于nginx配置的WordPress网站防御17ce等测速网站攻击指南
- 什么摄像机能让1000多家系统服务商、设备商驻足?