NBT:单细胞转录组新降维可视化方法PHATE

新降维可视化

NGS系列文章包括NGS基础、转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这)、ChIP-seq分析 (ChIP-seq基本分析流程)、单细胞测序分析 (重磅综述:三万字长文读懂单细胞RNA测序分析的最佳实践教程 (原理、代码和评述))、DNA甲基化分析、重测序分析、GEO数据挖掘(典型医学设计实验GEO数据分析 (step-by-step) - Limma差异分析、火山图、功能富集)等内容。

2019年12月3日,美国耶鲁大学Smita发表题为Visualizing structure and transitions in high-dimensional biological data的研究内容,提出PHATE(https://github.com/KrishnaswamyLab/phateR),一种降维可视化方法,使用数据点之间的几何距离信息(即:样品表达谱之间的距离)来捕获局部和全局非线性结构。

PHATE除了可以应用于单细胞分析,还适用于很多数据类型,如质谱数据、Hi-C数据和肠道菌群数据等。

PHATE算法主要为三个步骤

  1. 通过局部相似性对局部数据信息进行编码;

  2. 使用潜在距离在数据中编码全局关系;

  3. 将潜在距离信息嵌入低维度以进行可视化;

图片

优点与创新点

用于可视化的降维方法很多,其中最常用的是主成分分析(PCA)和t分布随机邻居嵌入(t-SNE)。但是,这些方法对于探索高维生物学数据而言并不是最佳方法:

  • 首先,这些方法对噪声敏感。

    生物医学数据通常非常嘈杂,例如PCAIsomap之类的方法无法显著消除噪声以进行可视化,从而导致无法识别细颗粒度的局部结构。

  • 其次,非线性可视化方法(例如t-SNE)通常会扰乱数据中的全局结构。

  • 第三,许多降维方法(例如,PCA和diffusion maps)无法针对二维(2D)可视化进行优化,因为它们不是专门为可视化设计的。

PHATE生成专门用于可视化的低维嵌入,该嵌入可在所需数量的维度中提供数据的局部和全局结构的精确而去噪,无需对数据的结构施加任何假设。

将PHATE与各种人工和生物学数据集上的其他工具进行了比较,发现与其他工具相比,PHATE能够始终如一地保留数据的固有模式,包括连续性过程、分支模式分析和聚类分析。

看文章中的一个小栗子:

图片

其实从图中就可以看出PATHE能反映局部和全局结构,并且并没有像umap在一定情况下会出现图像的变形。

运行示例

为了在R中使用PHATE,还必须安装Python解释器和包管理工具。建议使用Miniconda3一起安装Python和pip,或者可以从https://pip.pypa.io/en/stable/installing/安装pip。

安装软件包

# 先安装Python包
pip install --user phate# 再安装R包
install.packages("phateR")
if (!require(viridis)) install.packages("viridis")
if (!require(ggplot2)) install.packages("ggplot2")
if (!require(readr)) install.packages("readr")
if (!require(Rmagic)) install.packages("Rmagic")

如果从未使用过MAGIC,则还应该从命令行安装MAGIC,如下所示:

pip install --user magic-impute

加载软件包

library(phateR)
library(ggplot2)
library(readr)
library(viridis)
library(Rmagic)

加载数据

在本教程中,我们将按照Paul等人的描述(2015年)分析小鼠骨髓中的髓样和红系细胞。您可以通过下载https://raw.githubusercontent.com/KrishnaswamyLab/phateR/master/inst/examples/bonemarrow_tutorial.Rmd,在RStudio中将其打开并运行本教程。示例数据位于PHATE GitHub存储库中,可以直接从Web上加载它们。

# 加载数据
bmmsc <-read_csv("https://github.com/KrishnaswamyLab/PHATE/raw/master/data/BMMC_myeloid.csv.gz")
## Warning: Missing column names filled in: 'X1' [1]
## Parsed with column specification:
## cols(
##   .default = col_double(),
##   X1 = col_character()
## )

与之前数据不同的是,这个数据的每一行是一个样品,每一列是一个基因。如果自己的数据格式不符,记得转换下。

bmmsc <- bmmsc[,2:ncol(bmmsc)]
bmmsc[1:5,1:10]

图片

过滤数据

删除低表达的基因和细胞。

# 至少在10个细胞内表达基因
keep_cols <- colSums(bmmsc > 0) > 10
bmmsc <- bmmsc[,keep_cols]
# look at the distribution of library sizes
ggplot() +geom_histogram(aes(x=rowSums(bmmsc)), bins=50) +geom_vline(xintercept = 1000, color='red')

图片

# 保证细胞至少检测到1000UMI
keep_rows <- rowSums(bmmsc) > 1000
bmmsc <- bmmsc[keep_rows,]

Normalizing data

在使用PHATE之前将文库大小归一化并转换数据, 这里作者取平方根 (因为Log转换时需要加一个”pseudocount”以避免log(0),而开方则不需要考虑这一点):

bmmsc <- library.size.normalize(bmmsc)
bmmsc <- sqrt(bmmsc)

运行PCA

bmmsc_PCA <- as.data.frame(prcomp(bmmsc)$x)

使用ggplot2绘制结果。通过髓样标记基因Mpo为图上色:

ggplot(bmmsc_PCA) +geom_point(aes(PC1, PC2, color=bmmsc$Mpo)) +labs(color="Mpo") +scale_color_viridis(option="B")

图片

ggsave('BMMSC_data_R_PCA.png', width=5, height=5)

由于数据自身结构复杂,而PCA又致力于保存全局差异,样品并不能区分太开 ——但我们可以看到,这些数据沿第一主成分被髓样红细胞广泛分隔开来。

运行PHATE

# run PHATE
bmmsc_PHATE <- phate(bmmsc)

使用ggplot2绘制结果。

ggplot(bmmsc_PHATE) +geom_point(aes(PHATE1, PHATE2, color=bmmsc$Mpo)) +labs(color="Mpo") +scale_color_viridis(option="B")

图片

使用新参数重新运行PHATE

bmmsc_PHATE <- phate(bmmsc, knn=4, decay=100, t=10, init=bmmsc_PHATE)
ggplot(bmmsc_PHATE) +geom_point(aes(PHATE1, PHATE2, color=bmmsc$Mpo)) +labs(color="Mpo") +scale_color_viridis(option="B")

图片

用MAGIC可视化PHATE上的基因

许多基因都受到dropout的困扰,以致无法检测到其表达。以髓系干细胞标记Ifitm1为例。

ggplot(bmmsc_PHATE) +geom_point(aes(PHATE1, PHATE2, color=bmmsc$Ifitm1)) +labs(color="Ifitm1") +scale_color_viridis(option="B")

图片

即使我们期望中间亚群完全是干细胞,但这些细胞中许多仍不表达Ifitm1。让我们运行MAGIC(是一种用于去除高维数据噪声的算法,该算法最常应用于单细胞RNA测序数据),然后again。

获取更多有关MAGIC的内容:https://github.com/KrishnaswamyLab/MAGIC

bmmsc_MAGIC <- magic(bmmsc, t=4, genes="Ifitm1")
ggplot(bmmsc_PHATE) +geom_point(aes(x=PHATE1, y=PHATE2, color=bmmsc_MAGIC$result$Ifitm1)) +scale_color_viridis(option="B") +labs(color="Ifitm1")

这样看起来合理多了,有时候图像显示表达程度并不明显,这时我们可以通过调整colorbar的参数,帮助显示更为合理。

撰文:Tiger
编辑:生信宝典

参考文献:

Moon KR, van Dijk D, Wang Z, Gigante S, Burkhardt DB, Chen WS, Yim K, Elzen AVD,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/396502.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue 日期控件 100天内的时间禁用不允许选择

vue 日期控件 100天内的时间禁用不允许选择&#xff0c;可以从101天选起 比如&#xff0c;2024年8月9号开始&#xff0c;100天内禁止选择&#xff0c;第101天之后的日期可以选&#xff0c;效果如图所示 // 日期控件代码 加上 :picker-options"pickerOptions" <…

nestjs 全栈进阶--windows安装docker desktop

一. 下载软件 https://docs.docker.com/desktop/install/windows-install/ 根据你自己的电脑选择 二. 安装 双击下载的exe 点击ok 安装好后 桌面会有个这样的图标 三. 配置环境 因为docker desktop 是可以部署在windows 上来运行docker的应用服务的&#xff0c;其基于windo…

SOPHGO算能科技BM1684盒子占用空间满的问题解决

目录 1 问题由来 2 问题排查与解决 1 问题由来 安装软件的时候发现&#xff0c;软件根本安装不上了&#xff0c;用df -h看到根目录已经满了 rootbm1684:~# df -h Filesystem Size Used Avail Use% Mounted on overlay 5.8G 5.7G 0 100% / devtmpfs …

openfeign本地试用

目的&#xff1a;在本地搭建一个简单的openfeign使用场景&#xff0c;测试查询、新增等功能 平台&#xff1a;win10 技术栈&#xff1a;Springboot, SpringCloud, Nacos, Mybatis, MySql, Logback 框架作用说明&#xff1a; Nacos用于服务注册&#xff0c;将provider应用注…

Redis 的6种回收策略(淘汰策略)详解

Redis 的6种回收策略&#xff08;淘汰策略&#xff09;详解 1、Redis的六种淘汰策略1. volatile-lru2. volatile-ttl3. volatile-random4. allkeys-lru5. allkeys-random6. no-eviction 2、使用策略规则 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&am…

将电脑打造成私人网盘,支持外网访问之详细操作教程

你想过把自己电脑打造成随时随地访问的网盘吗&#xff1f;就是那种拥有一个属于自己的影音库&#xff0c;不用担心被和谐&#xff0c;随时可以登录访问电脑上的各种文件&#xff0c;相比传统网盘省心又安全。 使用Everything和节点小宝将电脑搭建成私人网盘&#xff0c;可以实现…

FFmpeg For Android入门NDK打印版本号

本文用到的FFmpeg for Android 的开发库&#xff0c;需要先在Ubuntu上完成编译&#xff0c;关于编译的过程参见我的上一篇文章。 Android Studio版本为Android Studio Dolphin | 2021.3.1 Patch 1 1.打开Android Studio&#xff0c;新建工程&#xff0c;选择Native C 最小API…

深耕编程语言18年,对话 Rust、TypeScript、Nushell 核心贡献者 Sophia Turner | Open AGI Forum

作者 | Annie Xu 采访 | 卢威 责编 | Echo Tang 出品丨GOSIM 开源创新汇 编程语言的种类令人眼花缭乱&#xff0c;但成功的、常用的编程语言却是凤毛麟角。在深耕编程语言研发 18 年的 Sophia June Turner 看来&#xff0c;编程语言成功的关键在于其研发团队的透明度和机制建…

【多线程基础】指令、进程调度、了解计算机是如何进行工作的

Hi~&#xff01;这里是奋斗的明志&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f331;&#x1f331;个人主页&#xff1a;奋斗的明志 &#x1f331;&#x1f331;所属专栏&#xff1a;数据结构、LeetCode专栏 &#x1f4da;本系…

Qt QML 使用QPainterPath绘制弧形曲线和弧形文本

Qt并没有相关api直接绘制弧形文字&#xff0c;但提供了曲线绘制相关类&#xff0c;所以只能另辟蹊径&#xff0c;使用QPainterPath先生成曲线&#xff0c;然后通过曲线上的点来定位每个文字并draw出来。 QML具体做法为从QQuickPaintedItem继承&#xff0c;在派生类中实现paint…

8–9月,​Sui Move智能合约工作坊将在台北+线上举行

你对区块链和去中心化应用感兴趣吗&#xff1f;想深入学习Sui Move编程语言吗&#xff1f; 从8月10日到9月28日&#xff0c;Sui Mover社区将在每周六下午13:00–17:00举办精彩的工作坊&#xff0c;为期两个月&#xff0c;带你从零基础入门到高级进阶&#xff0c;全面掌握Sui M…

ARM 架构硬件新趋势:嵌入式领域的未来

目录 目录 一、ARM 架构概述 二、新趋势一&#xff1a;AI 加速器集成 三、新趋势二&#xff1a;更高效的电源管理 四、新趋势三&#xff1a;安全性增强 五、结语 随着物联网 (IoT) 和边缘计算的发展&#xff0c;ARM 架构在嵌入式系统中的应用越来越广泛。从智能手机到智能…

element table表格树形数据展示

element table表格树形数据展示 1、效果 2、代码 <el-table ref"pointMultipleTable" border class"table-box" :data"[damActiveObj]"row-key"id" :tree-props"{ children: children }" :expand-row-keys"expand…

入门 PyQt6 看过来(项目)在线购物项目说明

本文我们利用pyqt6制作一个在线售卖商品的系统&#xff0c;页面大致如下图效果&#xff1a; ​ 1 项目分析 本项目分为四个模块&#xff1a;主窗口&#xff0c;商品选购&#xff0c;下单结算&#xff0c;销售分析。&#xff08;本文暂不涉及登录&#xff09; 主窗口包含&…

JAVA—正则表达式

关于正则表达式的了解学习&#xff0c;以及用于校验格式&#xff0c;信息查找和替换分割内容。 目录 1.概述 2.书写规则 3.应用案例 4.用于信息查找 5.用于搜索替换&#xff0c;分割内容 1.概述 由一些特定的字符组成&#xff0c;代表一个规则 作用&#xff1a; 1.校验数据…

深度学习 —— 个人学习笔记17(锚框、多尺度锚框)

声明 本文章为个人学习使用&#xff0c;版面观感若有不适请谅解&#xff0c;文中知识仅代表个人观点&#xff0c;若出现错误&#xff0c;欢迎各位批评指正。 三十四、锚框 import torch import matplotlib.pyplot as plt from matplotlib_inline import backend_inlinetorch.…

RuoYi-Vue新建模块

一、环境准备 附:RuoYi-Vue下载与运行 二、新建模块 在RuoYi-Vue下新建模块ruoyi-test。 三、父pom文件添加子模块 在RuoYi-Vue的pom.xml中,引入子模块。 <dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-test</artifactId>&…

小程序背景图片无法通过 WXSS 获取

问题&#xff1a;pages/index/index.wxss 中的本地资源图片无法通过 WXSS 获取 可以使用网络图片&#xff0c;或者 base64&#xff0c;或者使用标签。 将图片转换为base64&#xff0c;地址 base64图片在线转换工具 - 站长工具 在这里把要使用的图片转换一把&#xff0c;然后将得…

JDBC连接Mysql数据库超详细讲解

JDBC连接Mysql数据库 如何导入驱动jar包 进入mysql官网 – https://www.mysql.com/ 点击下载找到方框内选项 点击 在项目文件夹创建lib文件 , 将下载好的驱动器导入 , 再添加到项目即可 步骤一&#xff1a;注册JDBC驱动 在Java中&#xff0c;要与数据库进行交互&…

HarmonyOS应用一之登录页面案例

目录&#xff1a; 1、代码示例2、代码分析3、注解分析 1、代码示例 实现效果&#xff1a; /** Copyright (c) 2023 Huawei Device Co., Ltd.* Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance w…