当前位置: 首页 > news >正文

Monocle 3 | 太牛了!单细胞必学R包!~(二)(寻找marker及注释细胞)

1写在前面

昨天又是不睡觉的一天,晚上还被家属讲了一通,理由是我去急诊了,没有在办公室待着,他老公疼没人去看。🫠

我的解释是只有我一个值班医生,不可能那么及时,而且也不是什么急症啊。😂

好的,说完家属就暴雷了,“这么大的医院就安排一个大夫值班吗!?”😡

我也是懒得跟她battle,这个世界不是谁生病就谁有理吧!~😂

今天继续接上一次monocle3的教程吧。🧐

2用到的包

library(tidyverse)
library(monocle3)
library(garnett)

3示例数据

还是上一次运行完的结果哦,不知道大家有没有保存。😂

cds
alt

4寻找marker genes

完成细胞聚类后,我们就可以使用top_markers()来选中marker genes。😘

marker_test_res <- top_markers(cds, group_cells_by="partition", 
reference_cells=1000, cores=8)

接着我们就可以根据cluster,partition或者colData(cds)来确定top n的基因表达量。🤩

top_specific_markers <- marker_test_res %>%
filter(fraction_expressing >= 0.10) %>%
group_by(cell_group) %>%
top_n(1, pseudo_R2)

top_specific_marker_ids <- unique(top_specific_markers %>% pull(gene_id))

可视化!~🤪

plot_genes_by_group(cds,
top_specific_marker_ids,
group_cells_by="partition",
ordering_type="maximal_on_diag",
max.size=3)
alt

我们再试试看看top 3的基因。😘

top_specific_markers <- marker_test_res %>%
filter(fraction_expressing >= 0.10) %>%
group_by(cell_group) %>%
top_n(3, pseudo_R2)

top_specific_marker_ids <- unique(top_specific_markers %>% pull(gene_id))

plot_genes_by_group(cds,
top_specific_marker_ids,
group_cells_by="partition",
ordering_type="cluster_row_col",
max.size=3)
alt

5注释细胞类型

确定每个cluster的类型对许多下游分析至关重要。😋

常用的方法是首先对细胞进行聚类,然后根据其基因表达谱为每个cluster注释一个细胞类型。😜

我们先创建一列新的colData。🤓

colData(cds)$assigned_cell_type <- as.character(partitions(cds))

然后我们进行一下手动注释,其实手动注释是最准的。🧐

colData(cds)$assigned_cell_type <- dplyr::recode(colData(cds)$assigned_cell_type,
"1"="Body wall muscle",
"2"="Germline",
"3"="Motor neurons",
"4"="Seam cells",
"5"="Sex myoblasts",
"6"="Socket cells",
"7"="Marginal_cell",
"8"="Coelomocyte",
"9"="Am/PH sheath cells",
"10"="Ciliated neurons",
"11"="Intestinal/rectal muscle",
"12"="Excretory gland",
"13"="Chemosensory neurons",
"14"="Interneurons",
"15"="Unclassified eurons",
"16"="Ciliated neurons",
"17"="Pharyngeal gland cells",
"18"="Unclassified neurons",
"19"="Chemosensory neurons",
"20"="Ciliated neurons",
"21"="Ciliated neurons",
"22"="Inner labial neuron",
"23"="Ciliated neurons",
"24"="Ciliated neurons",
"25"="Ciliated neurons",
"26"="Hypodermal cells",
"27"="Mesodermal cells",
"28"="Motor neurons",
"29"="Pharyngeal gland cells",
"30"="Ciliated neurons",
"31"="Excretory cells",
"32"="Amphid neuron",
"33"="Pharyngeal muscle")

可视化咯!~🤣

plot_cells(cds, group_cells_by="partition", color_cells_by="assigned_cell_type")
alt

我们可以利用choose_cells深入解析某个cluster中的亚群。😍

手动选择就行了,非常简单。🤣

cds_subset <- choose_cells(cds)

这个时候我们需要用到graph_test()取了解亚群之间的表达差异。🥸

pr_graph_test_res <- graph_test(cds_subset, 
neighbor_graph= "knn", #"knn", "principal_graph",
cores=8)

pr_deg_ids <- row.names(subset(pr_graph_test_res, morans_I > 0.01 & q_value < 0.05))

我们甚至可以把其中表达相似的基因归为一个module。😌

gene_module_df <- find_gene_modules(cds_subset[pr_deg_ids,], resolution=1e-3)

可视化module表达。🤩

plot_cells(cds_subset, 
genes=gene_module_df,
show_trajectory_graph=F,
label_cell_groups=F)
alt

我们试试把分辨率再提高一些!~🧐

cds_subset <- cluster_cells(cds_subset, resolution=1e-2)

plot_cells(cds_subset, color_cells_by="cluster")
alt

colData(cds_subset)$assigned_cell_type <- as.character(clusters(cds_subset)[colnames(cds_subset)])
colData(cds_subset)$assigned_cell_type <- dplyr::recode(colData(cds_subset)$assigned_cell_type,
"1"="Sex myoblasts",
"2"="Somatic gonad precursors",
"3"="Vulval precursors",
"4"="Sex myoblasts",
"5"="Vulval precursors",
"6"="Somatic gonad precursors",
"7"="Sex myoblasts",
"8"="Sex myoblasts",
"9"="Ciliated neurons",
"10"="Vulval precursors",
"11"="Somatic gonad precursor",
"12"="Distal tip cells",
"13"="Somatic gonad precursor",
"14"="Sex myoblasts",
"15"="Vulval precursors")

plot_cells(cds_subset, group_cells_by="cluster", color_cells_by="assigned_cell_type")

colData(cds)[colnames(cds_subset),]$assigned_cell_type <- colData(cds_subset)$assigned_cell_type
cds <- cds[,colData(cds)$assigned_cell_type != "Failed QC" | is.na(colData(cds)$assigned_cell_type )]
plot_cells(cds, group_cells_by="partition",
color_cells_by="assigned_cell_type",
labels_per_group=5)
alt

6自动注释

这里我们用到的是Garnett。😀

首先我们需要确定top_markers。🥸

assigned_type_marker_test_res <- top_markers(cds,
group_cells_by="assigned_cell_type",
reference_cells=1000,
cores=8)

接着过滤一下marker genes。😚

过滤条件:👇

1️⃣ JS specificty score > 0.5;
2️⃣ logistic test 有意义;
3️⃣ 不是多个细胞类型的marker

garnett_markers <- assigned_type_marker_test_res %>%
filter(marker_test_q_value < 0.01 & specificity >= 0.5) %>%
group_by(cell_group) %>%
top_n(5, marker_score)

garnett_markers <- garnett_markers %>%
group_by(gene_short_name) %>%
filter(n() == 1)

然后会生成一个marker文件。😏

这个文件你也可以进一步的加工一下,根据你的生物学背景等。😋

generate_garnett_marker_file(garnett_markers, file="./marker_file.txt")
alt

现在可以注释咯,我们先训练一下classifier。🥸

colData(cds)$garnett_cluster <- clusters(cds)

worm_classifier <- train_cell_classifier(cds = cds,
marker_file = "./marker_file.txt",
db= org.Ce.eg.db::org.Ce.eg.db,
cds_gene_id_type = "ENSEMBL",
num_unknown = 50,
marker_file_gene_id_type = "SYMBOL",
cores=8)
alt

现在可以使用前面训练好的worm_classifier了。😅

cds <- classify_cells(cds, worm_classifier,
db = org.Ce.eg.db::org.Ce.eg.db,
cluster_extend = TRUE,
cds_gene_id_type = "ENSEMBL")

可视化一下,果然还是挺适合我等懒🐶的!~🫠

plot_cells(cds,
group_cells_by="partition",
color_cells_by="cluster_ext_type")
alt

线虫的现成模型,不需要自己训练了:👇

ceWhole <- readRDS(url("https://cole-trapnell-lab.github.io/garnett/classifiers/ceWhole_20191017.RDS"))
cds <- classify_cells(cds, ceWhole,
db = org.Ce.eg.db,
cluster_extend = TRUE,
cds_gene_id_type = "ENSEMBL")

alt
最后祝大家早日不卷!~

点个在看吧各位~ ✐.ɴɪᴄᴇ ᴅᴀʏ 〰

📍 往期精彩

📍 🤩 LASSO | 不来看看怎么美化你的LASSO结果吗!?
📍 🤣 chatPDF | 别再自己读文献了!让chatGPT来帮你读吧!~
📍 🤩 WGCNA | 值得你深入学习的生信分析方法!~
📍 🤩 ComplexHeatmap | 颜狗写的高颜值热图代码!
📍 🤥 ComplexHeatmap | 你的热图注释还挤在一起看不清吗!?
📍 🤨 Google | 谷歌翻译崩了我们怎么办!?(附完美解决方案)
📍 🤩 scRNA-seq | 吐血整理的单细胞入门教程
📍 🤣 NetworkD3 | 让我们一起画个动态的桑基图吧~
📍 🤩 RColorBrewer | 再多的配色也能轻松搞定!~
📍 🧐 rms | 批量完成你的线性回归
📍 🤩 CMplot | 完美复刻Nature上的曼哈顿图
📍 🤠 Network | 高颜值动态网络可视化工具
📍 🤗 boxjitter | 完美复刻Nature上的高颜值统计图
📍 🤫 linkET | 完美解决ggcor安装失败方案(附教程)
📍 ......

alt

alt

alt

本文由 mdnice 多平台发布

相关文章:

Monocle 3 | 太牛了!单细胞必学R包!~(二)(寻找marker及注释细胞)

1写在前面 昨天又是不睡觉的一天&#xff0c;晚上还被家属讲了一通&#xff0c;理由是我去急诊了&#xff0c;没有在办公室待着&#xff0c;他老公疼没人去看。&#x1fae0; 我的解释是只有我一个值班医生&#xff0c;不可能那么及时&#xff0c;而且也不是什么急症啊。&#…...

简述JVM

文章目录 JVM简介JVM运行时数据区堆(线程共享)方法区/元空间/元数据区(线程共享)栈程序计数器 JVM类加载类加载过程双亲委派模型 垃圾回收机制(GC)判断对象是否为垃圾判断是否被引用指向 如何清理垃圾, 释放对象? JVM简介 JVM 是 Java Virtual Machine 的简称, 意为Java虚拟机…...

【多线程面试题 六】、 如何实现线程同步?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a; 如何实现线程同步&…...

地面文物古迹保护方案,用科技为文物古迹撑起“智慧伞”

一、行业背景 当前&#xff0c;文物保护单位的安防系统现状存在各种管理弊端&#xff0c;安防系统没有统一的平台&#xff0c;系统功能不足、建设标准不同&#xff0c;产品和技术多样&#xff0c;导致各系统独立&#xff0c;无法联动&#xff0c;形成了“信息孤岛”。地面文物…...

k8s之Flannel网络插件安装提示forbidden无权限

一、问题描述 在安装k8s的网络插件时&#xff0c;提示如下信息&#xff0c;各种forbidden无权限 [rootzzyk8s01 scripts]# kubectl apply -f kube-flannel.yml Error from server (Forbidden): error when retrieving current configuration of: Resource: "policy/v1b…...

在微信小程序云开发中引入Vant Weapp组件库

介绍 Vant 是一个轻量、可靠的移动端组件库&#xff0c;于 2017 年开源。 目前 Vant 官方提供了 Vue 2 版本、Vue 3 版本和微信小程序版本&#xff0c;并由社区团队维护 React 版本和支付宝小程序版本。 介绍 - Vant Weapp (youzan.github.io) Vant Weapp需要安装 node.js&…...

Vue+ElementUI项目打包部署到Ubuntu服务器中

1、修改config/index.js中的assetsPublicPath: /,修改为assetsPublicPath: ./ assetsPublicPath: ./2、在build/utils.js中增加publicPath: ../../ publicPath: ../../3、打开终端&#xff0c;在根目录下执行npm run build进行打包&#xff0c;打包成功后会生成dist npm run…...

面试题收集——Java基础部分(一)

1、一个".java"源文件中是否可以包括多个类&#xff08;不是内部类&#xff09;&#xff1f;有什么限制&#xff1f;   可以有多个类&#xff0c;但只能有一个public的类&#xff0c;并且public的类名必须与文件名相一致。 2、Java有没有goto?   java中的保留字…...

Vue中this指向问题

文章目录 1 由Vue管理的函数2 不被Vue管理的函数3 总结 1 由Vue管理的函数 computed 计算属性watch 监视属性filters (Vue3中已弃用且不再支持) 过滤器methods 上述属性里配置的函数this指向Vue实例&#xff0c;不要采用箭头函数写法&#xff0c;因为箭头函数没有自己的this对…...

【iPad已停用】解锁教程

iPad多次输错密码时&#xff0c;会自动锁定并停用&#xff0c;这时候你可以使用iTuens或Tenorshare进行解锁。 一、使用iTunes解锁 下载并安装iTunes 使用数据线将iPad连接上电脑 让iPad进入恢复模式&#xff0c;同时安装iPad电源键和Home键&#xff0c;直到Logo出现也不要松…...

python不调用heapq库 实现大顶堆,小顶堆

参考了博客&#xff0c;并对其进行了堆的push() 和 降序排序的补充 【精选】图解堆排序及其Python实现_python 实现小顶堆-CSDN博客 目录 大顶堆 调用结果展示&#xff1a; 小顶堆&#xff1a; 调用结果展示&#xff1a; 此结果与调用heapq库中的heapify(arr)函数等效 …...

STM32F4X SDIO(二) SDIO协议

上一节简单介绍了SD卡的分类&#xff0c;本节将会介绍SD卡的通信协议&#xff0c;也就是SDIO协议。 STM32F4X SDIO&#xff08;二&#xff09;SDIO协议 SD 卡管脚和寄存器SD卡管脚分布SD卡通信协议SD卡寄存器SD卡内部结构 SDIO总线SDIO总线拓扑SDIO总线协议SDIO协议的基本结构…...

设计模式--7个原则

单一职责原则&#xff1a;一个类负责一项职责。 里氏替换原则&#xff1a;继承与派生的规则。 依赖倒置原则&#xff1a;高层模块不应该依赖基层模块&#xff0c;二者都应该依赖其抽象&#xff1b;抽象不应该依赖细节&#xff1b;细节应该依赖抽象。即针对接口编程&#xff0…...

AltiumDesigner原理图编译错误报告信息解释

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、ViolationsAssociated with Buses 有关总线电⽓错误的各类型&#xff08;共 12 项&#xff09;二、ViolationsAssociated Components 有关元件符号电⽓错误…...

使用 Visual Studio Code 编写 TypeScript程序

安装 TypeScript 首先&#xff0c;确保你已经安装了 TypeScript&#xff0c;如果没有安装&#xff0c;请参考https://blog.csdn.net/David_house/article/details/134077973?spm1001.2014.3001.5502进行安装 创建 新建一个文件夹&#xff0c;用vs code打开&#xff0c;在文…...

科大讯飞发布讯飞星火 3.0;开源AI的现状

&#x1f680; 科大讯飞发布讯飞星火 3.0&#xff0c;综合能力超越ChatGPT&#xff08;非GPT-4版&#xff09; 摘要&#xff1a;科大讯飞在2023全球1024开发者节上宣布讯飞星火 3.0正式发布&#xff0c;号称综合能力已超越ChatGPT。据介绍&#xff0c;星火认知大模型 V3.0在文…...

公网远程访问macOS本地web服务器

# 公网访问macOS本地web服务器【内网穿透】 文章目录 1. 启动Apache服务器2. 公网访问本地web服务2.1 本地安装配置cpolar2.2 创建隧道2.3 测试访问公网地址3. 配置固定二级子域名3.1 保留一个二级子域名3.2 配置二级子域名4. 测试访问公网固定二级子域名 以macOS自带的Apache…...

windows 安装小乌龟

这是什么 这里简单描述一下在windows上如何安装GIT代码管理工具和使用小乌龟版本来调用GIT&#xff0c;并且配置一下git相关信息&#xff0c;可以使用小乌龟来操作代码。也有一些常规git使用方法。 需要的资源 Git-2.42.0-64-bit.exe&#xff08;这个是git代码管理工具&…...

toon boom harmony基础

以下都是tbh快捷键使用&#xff0c;或者一些常用功能介绍 1、在节点视图中&#xff0c;按回车可直接弹出节点库搜索框 2、中心线编辑器 只能编辑用笔刷画出来的线条&#xff0c;铅笔画出来的线条无法编辑。 3、镜头标记 1 右键箭头方向&#xff0c;可弹出下拉&#xff0c;&am…...

JPA联合主键

​ 在实际工作中&#xff0c;我们会经常遇到联合主键的情况&#xff0c;所以我用简单例子列举JPA两种实现联合主键的方式。 1、如何通过IdClass 实现联合主键 第一步:新建一个UserInfoID类&#xff0c;里面是联合主键 Data Builder NoArgsConstructor AllArgsConstructor pu…...

健身行业AI Agent部署失败率高达68%?(2024真实数据复盘与5步合规上线法)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;健身行业AI Agent部署失败率高达68%&#xff1f;——2024真实数据复盘与5步合规上线法 2024年Q2《中国智能健身系统落地白皮书》抽样调研覆盖全国137家连锁健身房及SaaS服务商&#xff0c;结果显示&…...

量子态编码:从指数级瓶颈到线性复杂度的高效实现

1. 量子态编码&#xff1a;从理论瓶颈到工程实践在量子计算领域&#xff0c;尤其是量子机器学习和量子优化算法中&#xff0c;我们常常面临一个看似基础却至关重要的挑战&#xff1a;如何将经典数据高效地“加载”到量子态中&#xff1f;这个过程被称为量子态编码或数据加载。对…...

开源工具链一览 评测 观测 安全 编排 哪些值得押注

2024开源DevOps工具链全景指南&#xff1a;评测/观测/安全/编排四大领域&#xff0c;哪些值得长期押注&#xff1f; 副标题&#xff1a;从落地成本、社区活跃度、兼容性、ROI多维度实测&#xff0c;帮你避开90%的工具选型坑&#xff0c;让DevOps转型成功率提升80% 摘要/引言 你…...

DPmoire:为莫尔超晶格定制高精度机器学习力场的自动化方案

1. 项目概述&#xff1a;当莫尔物理遇上机器学习力场 在凝聚态物理和计算材料科学的前沿&#xff0c;莫尔&#xff08;Moir&#xff09;超晶格系统正以其丰富而奇特的物理现象吸引着全球研究者的目光。通过简单地扭转两层二维材料&#xff08;如石墨烯或过渡金属硫族化合物&…...

CoQMoE:面向FPGA的MoE-ViT量化与硬件协同设计实践

1. 项目概述&#xff1a;当视觉Transformer遇上FPGA&#xff0c;为何需要“协同设计”&#xff1f;最近几年&#xff0c;视觉Transformer&#xff08;ViT&#xff09;在图像识别、目标检测等任务上展现出了不输甚至超越传统卷积神经网络&#xff08;CNN&#xff09;的性能。但随…...

Win11已加密?统信UOS 1060双系统安装后数据盘共享踩坑实录与解决方案

Win11与统信UOS 1060双系统数据共享难题&#xff1a;从加密隔离到无缝互通当Windows 11的BitLocker加密遇上统信UOS的文件系统支持&#xff0c;双系统用户常常陷入一个尴尬境地——明明两块硬盘物理相连&#xff0c;数据却像隔着一道无形的墙。这不是简单的权限问题&#xff0c…...

EasyMLServe:一键部署机器学习模型,自动生成REST API与GUI界面

1. 项目概述与核心痛点做机器学习项目&#xff0c;尤其是搞科研的同行们&#xff0c;肯定都经历过这个阶段&#xff1a;模型在Jupyter Notebook里跑得挺好&#xff0c;准确率也达标了&#xff0c;论文也发了&#xff0c;但接下来呢&#xff1f;怎么让隔壁生物实验室的同事、或者…...

从线性智能到多维能力光谱:重新理解AI的“陌生性”与工程实践

1. 项目概述&#xff1a;重新审视智能的“陌生性”在人工智能领域&#xff0c;我们似乎总在追逐一个幽灵般的“通用智能”&#xff08;AGI&#xff09;——一个能在所有认知任务上媲美甚至超越人类的系统。这种想象往往基于一个根深蒂固的线性模型&#xff1a;智能是一个单一的…...

分布式系统测试:验证分布式系统的正确性和性能

分布式系统测试&#xff1a;验证分布式系统的正确性和性能 一、分布式系统测试概述 1.1 分布式系统测试的定义 分布式系统测试是指对分布式系统进行验证和评估的过程&#xff0c;包括功能测试、性能测试、可靠性测试和安全性测试等方面。它确保分布式系统在各种场景下都能正确、…...

书匠策AI深度拆解:2025年毕业论文竟然能这样“无痛通关“?|论文科普必看

各位正在被毕业论文反复折磨的同学们&#xff0c;今天这篇文章&#xff0c;我要用最接地气的方式&#xff0c;给你们拆解一个让我直呼"早该有了"的工具——书匠策AI&#xff08; 官网直达&#xff1a;www.shujiangce.com&#xff09;。 先说句大实话&#xff1a;写毕…...