近年来,单细胞技术日益火热,并且有着愈演愈烈的趋势。在2015年至2017年,甚至对某细胞群体或组织进行单细胞测序,解析其细胞成分就能发一篇CNS级别的文章。近两三年,单细胞技术从最开始的基因组,转录组测序,发展成现在的单细胞DNA甲基化,单细胞ATAC-seq等等。测序手段也从早期的10X Genomics、 Drop-seq等,发展为现在的多种多样个性化的方法。研究内容更不仅仅局限于解析细胞群体的成分,而是向研究细胞功能和生物学特性发展。今天小编向大家简单一个实用并且易上手的单细胞数据分析软件——Seurat,大家躺在床上为国家做贡献的同时也能get新技能。

介绍一下今天的主角,Seurat是由New York Genome Center, Satija Lab开发的单细胞数据分析集成软件包。其功能不仅包含基本的数据分析流程,如质控,细胞筛选,细胞类型鉴定,特征基因选择,差异表达分析,数据可视化等等。同时也包括一些高级功能,如时序单细胞数据分析,不同组学单细胞数据整合分析等。今天,小编以官网中提供的单细胞基因表达数据为例,为大家简单介绍一下Seurat软件包中的基础分析流程,希望能够抛砖引玉,祝大家在科研的道路上越走越远。

第一步,数据集导入

在本教程中,我们将分析从10X基因组学免费获得的外周血单个核细胞(PBMC)数据集,来源于Illumina NextSeq 500测得的2700个单细胞转录组数据。首先,我们需要把数据集存储成Seurat可识别的数据格式,

读入的数据可以是一个矩阵,行代表基因,列代表细胞。

library(dplyr)library(Seurat)# Load the PBMC datasetpbmc.data # Initialize the Seurat object with the raw (non-normalized data).pbmc pbmc## An object of class Seurat ## 13714 features across 2700 samples within 1 assay## Active assay: RNA (13714 features)

数据导入成功以后,我们可以看到pbmc对象中包含了一个13714(基因数)X  2700(细胞数)的矩阵,其实在数据导入的时候,数据集中测到的少于200个基因的细胞(min.features = 200),和少于3个细胞覆盖的基因(min.cells = 3),就已经被过滤掉了。

第二步,数据质控

质控的参数主要有两个:1.每个细胞测到的unique feature数目(unique feature代表一个细胞检测到的基因的数目,可以根据数据的质量进行调整)2.每个细胞检测到的线粒体基因的比例,理论上线粒体基因组与核基因组相比,只占很小一部分。所以线粒体基因表达比例过高的细胞会被过滤。

在质控前,我们需要目测一下数据集的基本情况。

# The [[ operator can add columns to object metadata. This is a great place to stash QC statspbmc[["percent.mt"]] # Visualize QC metrics as a violin plotVlnPlot(pbmc, features = c("nFeature_RNA", "nCount_RNA", "percent.mt"), ncol = 3)

代码运行后会得到下图所示结果,nFeature_RNA代表每个细胞测到的基因数目,nCount代表每个细胞测到所有基因的表达量之和,percent.mt代表测到的线粒体基因的比例。

这里,我们过滤掉上图所示的离群点,并对基因的表达量进行log转换。

第三步,鉴定细胞间表达量高变的基因(feature selection)

这一步的目的是鉴定出细胞与细胞之间表达量相差很大的基因,用于后续鉴定细胞类型,我们使用默认参数,即“vst”方法选取2000个高变基因。

pbmc # Identify the 10 most highly variable genestop10 # plot variable features with and without labelsplot1 plot2 CombinePlots(plots = list(plot1, plot2))

代码运行后会得到下图所示的结果。

第四步,细胞分类

1) 分类前首先要对数据集进行降维

#Scaling the dataall.genes pbmc all.genes)#Perform linear dimensional reductionpbmc # Examine and visualize PCA results a few different waysprint(pbmc[["pca"]], dims = 1:5, nfeatures = 5)
## PC_ 1 ## Positive:  CST3, TYROBP, LST1, AIF1, FTL ## Negative:  MALAT1, LTB, IL32, IL7R, CD2 ## PC_ 2 ## Positive:  CD79A, MS4A1, TCL1A, HLA-DQA1, HLA-DQB1 ## Negative:  NKG7, PRF1, CST7, GZMB, GZMA ## PC_ 3 ## Positive:  HLA-DQA1, CD79A, CD79B, HLA-DQB1, HLA-DPB1 ## Negative:  PPBP, PF4, SDPR, SPARC, GNG11 ## PC_ 4 ## Positive:  HLA-DQA1, CD79B, CD79A, MS4A1, HLA-DQB1 ## Negative:  VIM, IL7R, S100A6, IL32, S100A8 ## PC_ 5 ## Positive:  GZMB, NKG7, S100A8, FGFBP2, GNLY ## Negative:  LTB, IL7R, CKB, VIM, MS4A7

官网中提供了不同的方法可视化降维的结果,此处不再赘述。感兴趣的读者可以自行探索降维的结果,代码如下。

VizDimLoadings(pbmc, dims = 1:2, reduction = "pca")DimPlot(pbmc, reduction = "pca")DimHeatmap(pbmc, dims = 1, cells = 500, balanced = TRUE)

2) 定义数据集的“维度”

这个小步骤就比较关键了,我们需要选择出主成分的数目,用于后续细胞分类。值得注意的是,这里定义的“维度”并不代表细胞类型的数目,而是对细胞分类时需要用到的一个参数。

# NOTE: This process can take a long time for big datasets, comment out for expediency. More# approximate techniques such as those implemented in ElbowPlot() can be used to reduce# computation timepbmc pbmc JackStrawPlot(pbmc, dims = 1:15)ElbowPlot(pbmc)

JackStraw(左图)和Elbow(右图)都可以决定数据的“维度”。但是Elbow比较直观,我们选择Elbow结果进行解读。可以看到,主成分(PC)7到10之间,数据的标准差基本不在下降。所以我们需要在7到10之间进行选择,为了尊重官网的建议,我们选取10,即前10个主成分用于细胞的分类。

3) 细胞分类

pbmc pbmc ## Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck## ## Number of nodes: 2638## Number of edges: 96033## ## Running Louvain algorithm...## Maximum modularity in 10 random starts: 0.8720## Number of communities: 9## Elapsed time: 0 seconds

这里我们设置了dims = 1:10 即选取前10个主成分来分类细胞。分类的结果如下,可以看到,细胞被分为9个类别。

# Look at cluster IDs of the first 5 cellshead(Idents(pbmc), 5)## AAACATACAACCAC AAACATTGAGCTAC AAACATTGATCAGC AAACCGTGCTTCCG AAACCGTGTATGCG## 1 3 1 2 6## Levels: 0 1 2 3 4 5 6 7 8

4) 可视化分类结果

TSNE和UMAP两种方法经常被用于可视化细胞类别。

# If you haven't installed UMAP, you can do so via reticulate::py_install(packages = 'umap-learn')pbmc # note that you can set `label = TRUE` or use the LabelClusters function to help label individual clustersDimPlot(pbmc, reduction = "umap")saveRDS(pbmc, file = "../output/pbmc_tutorial.rds")

第五步,提取各个细胞类型的marker gene

利用 FindMarkers 命令,可以找到找到各个细胞类型中于其他类别的差异表达基因,作为该细胞类型的生物学标记基因。其中ident.1参数设置待分析的细胞类别,min.pct表示该基因表达数目占该类细胞总数的比例

# find all markers of cluster 1cluster1.markers head(cluster1.markers, n = 5)

利用 DoHeatmap 命令可以可视化marker基因的表达

top10 % group_by(cluster) %>% top_n(n = 10, wt = avg_logFC)DoHeatmap(pbmc, features = top10$gene) + NoLegend()

第六步,探索感兴趣的基因

Seurat提供了小提琴图和散点图两种方法,使我们能够方便的探索感兴趣的基因在各个细胞类型中的表达情况

VlnPlot(pbmc, features = c("MS4A1", "CD79A"))

我们能够看到,MS4A1和CD79A两个基因在细胞群体3中特异性表达。

FeaturePlot(pbmc, features = c("MS4A1", "GNLY", "CD3E", "CD14", "FCER1A", "FCGR3A", "LYZ", "PPBP", "CD8A"))

这种展示方法把基因表达量映射到UMAP结果中,同样可以直观的看到基因表达的特异性。

第七步,利用先验知识定义细胞类型

通过对比我们鉴定的marker gene与已发表的细胞类型特意的基因表达marker,可以定义我们划分出来的细胞类群。

最后,给我们定义好的细胞类群加上名称

new.cluster.ids     "NK", "DC", "Platelet")names(new.cluster.ids) pbmc DimPlot(pbmc, reduction = "umap", label = TRUE, pt.size = 0.5) + NoLegend()

以上就是小编学习到的基本的单细胞转录组数据分析流程,整理出来供大家参考,本文主要参考了Seurat官网给出的单细胞转录组数据分析教程,若文中有小编解读错误之处,还请广大读者批评指正。

Seurat官网地址

https://satijalab.org/seurat/v3.1/pbmc3k_tutorial.html

欢迎关注生信人转录组 | 甲基化 | 重测序 | 单细胞 | m6A|多组学 cytoscape| limma| WGCNA|水熊虫传奇|linux电泳 | PCR | 测序简史 | 核型 | NIPT | 基础实验 基因| 2019-nCoV| 富集分析| 联合分析 |微环境瘟疫追凶| 思路汇总| 学者| 科研 | 撤稿 | 读博|基因

seurat提取表达矩阵_单细胞数据分析神器——Seurat相关推荐

  1. seurat提取表达矩阵_单细胞分析实录(5): Seurat标准流程

    前面我们已经学习了单细胞转录组分析的:使用Cell Ranger得到表达矩阵和doublet检测,今天我们开始Seurat标准流程的学习.这一部分的内容,网上有很多帖子,基本上都是把Seurat官网P ...

  2. seurat提取表达矩阵_如何改造Seurat包的DoHeatmap函数?

    刘小泽写于19.12.4 分析过单细胞数据的小伙伴应该都使用过Seurat包,其中有个函数叫DoHeatmap,具体操作可以看: 单细胞转录组学习笔记-17-用Seurat包分析文章数据 前言 走完S ...

  3. seurat提取表达矩阵_本周最新文献速递20200719

    本周最新文献速递 一 (将不完全相似的表型进行荟萃分析,找出新的遗传位点,这是我第二次见到文献进行这种操作,一个新思路,值得借鉴) 文献题目: Multivariate genomic scan im ...

  4. seurat提取表达矩阵_Hemberg-lab单细胞转录组数据分析

    单细胞RNA-seq简介 混合RNA-seq2000年末的重大技术突破,取代微阵列表达芯片被广泛使用 通过混合大量细胞获取足够RNA用于建库测序,来定量每个基因的平均表达水平 用于比较转录组,例如比较 ...

  5. seurat提取表达矩阵_什么,你一定要基于FPKM标准化表达矩阵做单细胞差异分析...

    学徒和学员已经陆续出师,是时候把生信技能树的舞台交给后辈了!下面是<生信入门第7期>学员的分享最近看到有一个简单的数据挖掘文章,就做了一个单细胞表达矩阵的差异分析,然后强行解释一波.而且使 ...

  6. seurat提取表达矩阵_10X scRNA免疫治疗学习笔记-3-走Seurat标准流程

    刘小泽写于19.10.15 笔记目的:根据生信技能树的单细胞转录组课程探索10X Genomics技术相关的分析 课程链接在:http://jm.grazy.cn/index/mulitcourse/ ...

  7. seurat提取表达矩阵_Seurat

    library(dplyr) library(Seurat) # 10X的数据可以使用Read10X这个函数,会返回一个UMI count矩阵,其中的每个值表示每个基因(行)在每个细胞(列)的分子数量 ...

  8. seurat提取表达矩阵_GPL17586、GPL19251和GPL16686平台芯片ID转换

    芯片分析中经常会遇到Affymetrix Human Transcriptome Array 2.0芯片,由于目前还没有现成的R包可以用,因此分析方法也不统一.见生信技能树Jimmy老师HTA2.0芯 ...

  9. powerbi使用说明_商业数据分析神器powerBI功能介绍及使用导引,数据分析必备工具...

    Power BI分为四大组件,分别是power query.powerPivot.power View.power Map,同时微软正对power BI提供了不同的使用场景,你可以选择power BI ...

最新文章

  1. OSChina 周六乱弹 ——生日快乐 @落落酱
  2. Linux 中断之中断处理浅析
  3. SCI论文写作中的注意事项
  4. JZOJ 1220. Pla
  5. java判断当前时间距离第二天凌晨的秒数
  6. java判断两个日期相差天数
  7. Spark的输出提交控制器OutputCommitCoordinator
  8. Android中TableLayout如何让列自动换行
  9. RocketMQ使用mmap - TODO
  10. java字符串型断言消息_Java断言
  11. python处理识别图片验证码
  12. 数字图像处理期末复习题
  13. 一键将知网CAJ文件转换成带书签的PDF
  14. 程序员多数性功能不行_1024,节日快乐!南京程序员绝不认输!
  15. 随机中文姓名 php,PHP生成随机中文姓名 阿星小栈
  16. safair下html换行产生的间距设置font-size:0无效
  17. 修改Pycharm for Mac背景色为黑灰配色
  18. UiPath之数据透视表
  19. 互联网快讯:华为正式开启二手机业务;法院审理认定阿卡索赔猿辅导20万;极米高性能投影产品获用户青睐;谷歌Pixel 6 Pro首次放弃使用高通基带
  20. 怎样才能掘金知识付费项目?

热门文章

  1. Python zipfile 文件名称编码 file_name.encode(‘cp437‘).decode(‘gbk‘)
  2. 本科学计算机研究生读哲学,计算机专业本科生创新思维培养及其哲学思考
  3. python调用其他文件中的函数或者类
  4. Python创建一个循环链表、双向循环链表
  5. 3分钟教你用python制作一个简单词云
  6. php 检测密码,php如何检测账号密码是否匹配
  7. python 从字符串中提取数字 re.findall()
  8. windows下如何查看设备的idVendor(厂商标识)和idProduct(产品标识)?
  9. Python学习笔记(基础知识点二)开更了~
  10. 分布式系统——zabbix监控tomcat