前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >不仅仅是新的单细胞相关R包层出不穷,旧的R包也会更新用法

不仅仅是新的单细胞相关R包层出不穷,旧的R包也会更新用法

作者头像
生信技能树jimmy
发布2020-03-30 14:59:58
9840
发布2020-03-30 14:59:58
举报
文章被收录于专栏:单细胞天地单细胞天地

两年前我们介绍的用米氏方程解决单细胞转录组dropout现象的文章提出的那个算法,被包装到了R包,是:M3Drop , 文章最开始 2017年发表在biorxiv,是:Modelling dropouts for feature selection in scRNASeq experiments 后来(2019)published in Bioinformatics doi: 10.1093/bioinformatics/bty1044 ,而且整个包的使用方法发生了变化,值得记录和分享一下。

首先回顾一下单细胞流程

单细胞R包如过江之卿,入门的话我推荐大家学习5个R包,分别是: scater,monocle,Seurat,scran,M3Drop 需要熟练掌握它们的对象,:一些单细胞转录组R包的对象 而且分析流程也大同小异:

  • step1: 创建对象
  • step2: 质量控制
  • step3: 表达量的标准化和归一化
  • step4: 去除干扰因素(多个样本整合)
  • step5: 判断重要的基因
  • step6: 多种降维算法
  • step7: 可视化降维结果
  • step8: 多种聚类算法
  • step9: 聚类后找每个细胞亚群的标志基因
  • step10: 继续分类

其中一个步骤是判断重要的基因,我分享过:比较5种scRNA鉴定HVGs方法 里面就提到了 M3Drop::BrenneckeGetVariableGenes 函数,但是如果大家看到的是我早期教程,会发现很多函数用不了了。有必要更新一下教程。

认识测试数据

代码语言:javascript
复制
library(M3Drop)
library(M3DExampleData) 
counts <- Mmus_example_list$data
labels <- Mmus_example_list$labels
total_features <- colSums(counts >= 0)
counts <- counts[,total_features >= 2000]
labels <- labels[total_features >= 2000]

是5个分组,133个细胞

代码语言:javascript
复制
> table(labels)
labels
early2cell earlyblast  late2cell   mid2cell   midblast 
         8         43         10         12         60 
> dim(counts)
[1] 17706   133

首先,它提供3种判断重要的基因的方法

代码语言:javascript
复制
norm <- M3DropConvertData(counts, is.counts=TRUE)
# norm <- M3DropConvertData(log2(norm+1), is.log=TRUE, pseudocount=1)
###################################################
M3Drop_genes <- M3DropFeatureSelection(norm, mt_method="fdr", mt_threshold=0.01)

count_mat <- NBumiConvertData(Mmus_example_list$data, is.counts=TRUE)
DANB_fit <- NBumiFitModel(count_mat)
NBDropFS <- NBumiFeatureSelectionCombinedDrop(DANB_fit, method="fdr", qval.thres=0.01, suppress.plot=FALSE)

HVG <- BrenneckeGetVariableGenes(norm)

require(UpSetR)
input <- fromList(list(M3Drop_genes=M3Drop_genes$Gene, NBDropFS=NBDropFS$Gene,
                       HVG=HVG$Gene ))
upset(input)

可以看到3种方法的一致性还可以

肯定是不能选择NBDropFS这个结果啦,就是来源于NBumiFeatureSelectionCombinedDrop 函数的,因为基因实在是太多了,而且跟另外两个方法冲突的比较多 。

分组,找差异,可视化marker基因

标准的3个衔接起来的函数:M3DropExpressionHeatmap, M3DropGetHeatmapClusters, M3DropGetMarkers

代码语言:javascript
复制
heat_out <- M3DropExpressionHeatmap(M3Drop_genes$Gene, norm, 
                                    cell_labels = labels) 
cell_populations <- M3DropGetHeatmapClusters(heat_out, k=4, type="cell")
library("ROCR") 
marker_genes <- M3DropGetMarkers(norm, cell_populations)   
marker_genes$Gene=rownames(marker_genes)
library(dplyr)
top20 <- marker_genes %>% group_by(Group) %>% top_n(n = -20, wt = pval) 
heat_out <- M3DropExpressionHeatmap(M3Drop_genes$Gene, norm, 
                                    cell_labels = cell_populations) 

轻轻松松就把细胞分类了,而且可以可视化那些排名比较靠前的marker基因。

以前的用法

是 M3Drop流程,主要是分组及找差异的3个函数:

  • M3DropCleanData,M3DropDropoutModels,M3DropDifferentialExpression

加上可视化的一些函数,代表是:

  • M3DropExpressionHeatmap,M3DropGetHeatmapCellClusters,M3DropGetMarkers
代码语言:javascript
复制
    library(M3Drop) 
    dim(counts);dim(meta)
    Normalized_data <- M3DropCleanData(counts, 
                                       labels = meta, 
                                       is.counts=TRUE, 
                                       min_detected_genes=2000)
    par(mar=c(1,1,1,1)) 
    dev.new()
    fits <- M3DropDropoutModels(Normalized_data$data)
    DE_genes <- M3DropDifferentialExpression(Normalized_data$data, 
                                             mt_method="fdr", mt_threshold=0.01)
    par(mar=c(1,1,1,1)) 
    dev.new()
    heat_out <- M3DropExpressionHeatmap(DE_genes$Gene, Normalized_data$data, 
                                        cell_labels = Normalized_data$labels$mouseID)
    par(mar=c(1,1,1,1)) 
    dev.new()
    cell_populations <- M3DropGetHeatmapCellClusters(heat_out, k=i)
    library("ROCR") 
    marker_genes <- M3DropGetMarkers(Normalized_data$data, cell_populations)
    sigM = with(marker_genes,subset(marker_genes,AUC>0.7 & pval<0.05))
    dim(counts)
    dat=log2(edgeR::cpm(counts+1)) 
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 单细胞天地 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 首先回顾一下单细胞流程
  • 认识测试数据
  • 首先,它提供3种判断重要的基因的方法
  • 分组,找差异,可视化marker基因
  • 以前的用法
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档