R语言处理单细胞表达矩阵合并拟细胞(pseudocell)对表达矩阵进行压缩
更新函数pseudo_cell可以处理更大的数据集合(100w以上)
R-scripts-for-task/pseudo_cell func.r at main · Nh-code/R-scripts-for-task (github.com)
以下方法对小型数据集(<10w细胞)的Seurat对象对表达矩阵进行分组合并细胞,返回拟细胞seurat对象。
library(Seurat);library(dplyr);set.seed(123)
#define a pseudo_cell func
pseudocell <- function(object,group="orig.ident",group_n=10){object@meta.data <- object@meta.data %>% mutate(cellN=colnames(object)) %>% group_by(get(group)) %>% mutate( bins.no = rep(1:ceiling(n()/group_n), each=group_n, length.out=n()) ) %>% mutate(pseudo_label=paste0(get(group),"_N.",bins.no)) %>% tibble::column_to_rownames('cellN') %>% data.frame()object_mini <- AverageExpression(object = object,group.by = "pseudo_label",slot = 'counts',return.seurat = TRUE)return(object_mini)
}
##object:seurat对象;group:指定metadata表细胞类型列,group_n:指定每种细胞类型内合并多少个细胞为一个pseudo_cell
scRNA <- readRDS("seurat.rds")
scRNA@meta.data$celltype <- sample(LETTERS[1:5],size = ncol(scRNA),replace = T) #random add a cellType column
sc_mini <- pseudocell(scRNA,group = "celltype",group_n = 20)
##测试数据
#新建一个简单表达矩阵
counts <- data.frame(cell.1=c(2,6,1,8),cell.2=c(4,4,2,9),cell.3=c(3,3,3,3),row.names = paste0("gene.",seq(4)))
> counts cell.1 cell.2 cell.3
gene.1 2 4 3
gene.2 6 4 3
gene.3 1 2 3
gene.4 8 9 3mini.sc <- CreateSeuratObject(counts = counts) #创建一个Seurat对象
mini.sc.condense <- pseudocell(mini.sc,group_n = 2) #压缩两个细胞> mini.sc.condense@assays$RNA@counts #压缩后的counts表达量,计算的是平均值
4 x 2 sparse Matrix of class "dgCMatrix"SeuratProject_N.1 SeuratProject_N.2
gene.1 3.0 3
gene.2 5.0 3
gene.3 1.5 3
gene.4 8.5 3counts <- as.matrix(mini.sc.condense@assays$RNA@counts)
R语言处理单细胞表达矩阵合并拟细胞(pseudocell)对表达矩阵进行压缩相关推荐
- R语言系统教程(三):多维数组和矩阵
R语言系统教程(三):多维数组和矩阵 3.1 生成数组或矩阵 3.1.1 将向量定义为数组 3.1.2 用array()函数构造多维数组 3.1.3 用matrix()函数构造矩阵 3.2 数组下标 ...
- R语言构建logistic回归模型并评估模型:计算混淆矩阵、并基于混淆矩阵计算Accuray、Precision、Recall(sensitivity)、F1、Specificity指标
R语言构建logistic回归模型并评估模型:计算混淆矩阵.并基于混淆矩阵计算Accuray.Precision.Recall(sensitivity).F1.Specificity指标 目录
- R语言两个dataframe纵向合并或者为dataframe添加数据行实战
R语言两个dataframe纵向合并或者为dataframe添加数据行实战 目录 R语言两个dataframe纵向合并或者为dataframe添加数据行实战
- r语言把多个图合并在一张图_SAS 绘制亚组分析森林图
背景介绍 随着循证医学(evidence-based medicine)的兴起,森林图(forest plot)已经为人所广泛认识.当前,几乎所有的临床工作者都知道什么是森林图以及如何解读森林图的含义 ...
- R语言导入单细胞测序数据并分析
我可以建议您使用 Bioconductor 包来导入和分析单细胞测序数据.Bioconductor 是一个开源软件包,专门用于生物信息学中的数据挖掘和分析.它可以与 R 语言紧密集成,可以轻松处理大量 ...
- r语言把多个图合并在一张图_R语言绘图 | 折线图画法,如何画出你满意的图?
作者:丁点helper 来源:丁点帮你 上篇文章中,我们用世界银行的例子给大家介绍了散点图怎么画,那折线图呢? 绘制折线图 如果将散点图上的点从左往右连接起来,就会得到一个折线图.今天我们以R中自带的 ...
- R语言分析单细胞数据Day1——下载Seurat包并进行预处理(一)
Task.1 安装Seurat,准备处理single cell data 安装Seurat时,只能安装3.2.3以下的版本,太高就不兼容! install.packages('remotes') %安 ...
- r语言用行名称提取数据框信息显示na_用R语言提取数据框中日期对应年份(列表转矩阵)...
[Fine原创]JMeter分布式测试中踩过的那些坑 最近因为项目需要,研究了性能测试的相关内容,并且最终选用了jmeter这一轻量级开源工具.因为一直使用jmeter的GUI模式进行脚本设计,到测试 ...
- R语言中的横向数据合并merge及纵向数据合并rbind的使用
转载自:https://www.cnblogs.com/awishfullyway/p/6677006.html 我们经常会遇到两个数据框拥有相同的时间或观测值,但这些列却不尽相同.处理的办法就是使用 ...
最新文章
- 彻底给你讲清楚分布式事务原理
- 华盛顿大学《生成模型》2020秋季课程完结,课件、讲义全部放出
- Android内核开发:系统编译输出的镜像文件
- swfupload简单使用
- win10 WSL windows subsystem for linux update setup wizard ended prematurely
- Windows7无损分区
- 音视频技术开发周刊 | 225
- nginx 优化(突破十万并发)
- node.js中使用https请求报CERT_UNTRUSTED的问题解决
- 哪些程序员在围观 996.ICU?Python 爬取 40000 条 GitHub 数据告诉你!
- https:浏览器如何验证数字证书
- truffle unbox react 初始化踩坑
- JavaScript趣味编程--仿微信飞机大战游戏--1.画飞机
- Android——安卓卡片样式——CardView使用、CardView失效等
- Cg语言学习笔记(1)
- RRDTool中文手册
- 老铁啊,我同你讲, 这年头不会点 Git 真不行!!!
- java中几种读取配置文件的方法
- 众链网络-慧景区项目建设方案1(票务系统)
- XShell 还是 FinalShell?
热门文章
- 波特、波特率、比特率
- 浅析业务流程改进步骤
- 留住核心员工:蓄水池式还是河流式?
- 帮你学英文的网站:VOA助你增强英文听力与阅读能力
- 苹果怎样清理手机内存空间_苹果手机也变卡?教你正确清理方式,让手机瞬间流畅如初...
- 求123456789-23456789-3456789-456789-...-9的值
- Python 爬虫逆向
- 锐龙r7 5700x参数r7 5700x相当于英特尔什么级别
- Apple 2020年第一场发布会启示录
- html转word出现小插插,记录利用phpword插件实现word文档转html的方法示例