scVI与MultiVI

news2024/12/28 19:58:44

scVI:https://docs.scvi-tools.org/en/stable/user_guide/models/scvi.html
MultiVI:https://docs.scvi-tools.org/en/stable/user_guide/models/multivi.html

目录

  • scVI
    • 生成
    • 推理
    • 任务
  • MultiVI
    • 生成
    • 推理

scVI

single cell variational inference提出了一个灵活的scRNA-seq数据生成模型。scVI功能全面,可以扩展到大规模数据集(处理超过1万个细胞),局限性在于:1.需要GPU才能快速推理,2.与线性方法不同,潜在空间不可解释。

生成

scVI将包含细胞和基因的scRNA-seq基因表达矩阵 X X X作为输入( N N N个细胞, G G G个基因),此外,一个设计的矩阵 S S S包含 p p p个观测协变量,比如day,donor等等,这是可选的输入。虽然 S S S可以包含离散协变量和连续协变量,但在下文中,我们假设它仅包含一个具有 K K K个类别的离散协变量,这代表了具有多批次数据的常见情况。

对于细胞 n n n和基因 g g g,scVI用下面过程生成观测的UMI计数 x n g x_{ng} xng(其中, s n s_{n} sn为细胞 n n n的batch id): z n ∼ N o r m a l ( 0 , I ) l n ∼ l o g N o r m a l ( l μ ⊤ s n , l σ 2 ⊤ s n ) ρ n = f w ( z n , s n ) π n g = f h g ( z n , s n ) x n g ∼ O b s e r v a t i o n M o d e l ( l n ρ n , θ g , π n g ) z_{n}\sim Normal(0,I)\\ l_{n}\sim logNormal(l_{\mu}^{\top}s_{n},l_{\sigma^{2}}^{\top}s_{n})\\ \rho_{n}=f_{w}(z_{n},s_{n})\\ \pi_{ng}=f_{h}^{g}(z_{n},s_{n})\\ x_{ng}\sim ObservationModel(l_{n}\rho_{n},\theta_{g},\pi_{ng}) znNormal(0,I)lnlogNormal(lμsn,lσ2sn)ρn=fw(zn,sn)πng=fhg(zn,sn)xngObservationModel(lnρn,θg,πng)简而言之,每个基因的基因表达取决于细胞特异性的潜在变量 z n z_{n} zn。先验参数 l μ l_{\mu} lμ l σ 2 l_{\sigma^{2}} lσ2 是根据所有细胞的对数大小在不同批次之间计算得出的均值和方差。表达数据是从一个基于计数的似然分布生成的,这里称为 O b s e r v a t i o n M o d e l ObservationModel ObservationModel,默认为ZINB分布,也可以是更简单的NB分布。

生成过程使用两个神经网络: f w ( z n , s n ) : R d × { 0 , 1 } K → Δ G − 1 f h ( z n , s n ) : R d × { 0 , 1 } K → ( 0 , 1 ) ⊤ f_{w}(z_{n},s_{n}):\mathbb{R}^{d}\times\left\{0,1\right\}^{K}\rightarrow\Delta^{G-1}\\f_{h}(z_{n},s_{n}):\mathbb{R}^{d}\times\left\{0,1\right\}^{K}\rightarrow(0,1)^{\top} fw(zn,sn):Rd×{0,1}KΔG1fh(zn,sn):Rd×{0,1}K(0,1)分别解码去噪基因表达和ZINB概率。

下表为潜在变量以及描述:

潜在变量描述
z n ∈ R d z_{n}\in\mathbb{R}^{d} znRd细胞状态的低维表示
ρ n ∈ Δ G − 1 \rho_{n}\in\Delta^{G-1} ρnΔG1去噪的基因表达。这是一个cell内总和为1的向量
l n ∈ ( 0 , ∞ ) l_{n}\in(0,∞) ln(0,)RNA 文库大小。 这里它被建模为一个潜在变量,但 scVI 最近的默认设置是将文库大小视为观察到的,等于当前细胞 n n n的总 RNA UMI 计数
θ g ∈ ( 0 , ∞ ) \theta_{g}\in(0,∞) θg(0,)NB的Inverse dispersion。例如,可以通过在模型初始化期间传递dispersion=“gene-batch”来将其设置为特定于基因或批次

推理

scVI 使用变分推理来学习模型参数(神经网络参数、Inverse dispersion等)和具有以下分解的近似后验分布: q η ( z n , l n ∣ x n ) = q η ( z n ∣ x n , s n ) q η ( l n ∣ x n ) q_{\eta}(z_{n},l_{n}|x_{n})=q_{\eta}(z_{n}|x_{n},s_{n})q_{\eta}(l_{n}|x_{n}) qη(zn,lnxn)=qη(znxn,sn)qη(lnxn)这里 η \eta η是对应于推理神经网络(编码器)的一组参数。值得注意的是,默认情况下,scVI 仅接收表达数据作为输入(没有观测到的细胞水平协变量)。根据经验,通过让编码器将这些item的串联 q η ( z n , l n ∣ x n , s n ) q_{\eta}(z_{n},l_{n}|x_{n},s_{n}) qη(zn,lnxn,sn) 作为输入,我们并没有看到太大的差异。

任务

下面是scVI可以执行的任务。

降维:近似的后验 q η ( z n ∣ x n , s n ) q_{\eta}(z_{n}|x_{n},s_{n}) qη(znxn,sn)被返回获得低维表示。

transfer :scVI可以根据参考数据进行训练,然后将细胞水平协变量(比如细胞类型注释)转移到查询数据。

基因表达的插补:scVI返回近似后验下 ρ n \rho_{n} ρn的期望值。对于细胞 n n n,可以写成: E q η ( z n ∣ x n ) [ f w ( z n , s n ) ] \mathbb{E}_{q_{\eta}(z_{n}|x_{n})}[f_{w}(z_{n},s_{n})] Eqη(znxn)[fw(zn,sn)]

差异分析:scVI在估计后的插补数据上执行差异分析。

生成模拟数据:可以从 z n z_{n} zn进行采样,重新模拟生成新的细胞数据。

MultiVI

multiVI是一个多模态生成模型,能够整合多组学的scRNA-seq和scATAC-seq数据,训练后,可用于许多常见的下游任务,也可用于缺失模态的插补。
fig1

  • 图1:其中输入数据由ATAC、RNA两种数据类型组成(或者加上蛋白质模态)。变量 S S S表示实验协变量,如批次或实验条件( S S S是可选的输入)。每个数据模态被编码成模态无关的潜在表示,然后,这些表示被合并到一个联合潜在空间。

生成

MultiVI的输入为多模态单细胞矩阵 X m u l t X_{mult} Xmult,包含 N N N个细胞, G G G个基因,以及 M M M个基因区域(peaks),或者仅 X r n a X_{rna} Xrna N N N个细胞和 G G G个基因),或者仅 X a t a c X_{atac} Xatac N N N个细胞和 M M M个peaks,peaks可能是二值化的或者整数计数)。此外,一个设计的矩阵 S S S包含 p p p个观测协变量,比如day等,这是可选的输入。虽然 S S S可以包含离散协变量和连续协变量,但在下文中,我们假设它仅包含一个具有 K K K个类别的离散协变量,这代表了具有多批次数据的常见情况。

对于细胞 n n n和基因 g g g以及peaks j j j,MultiVI用下面过程生成观测的UMI计数 x n g x_{ng} xng y n j y_{nj} ynj z n ∼ N o r m a l ( 0 , I ) l n ∼ l o g N o r m a l ( l μ ⊤ s n , l σ 2 ⊤ s n ) ρ n = f w ( z n , s n ) π n g = f h g ( z n , s n ) x n g ∼ O b s e r v a t i o n M o d e l ( l n ρ n , θ g , π n g ) p n j = g z j ( z n , s n ) l n = f l ( y n ) y n j ∼ B e r n o u l l i ( p n j ⋅ l n ⋅ r j ) z_{n}\sim Normal(0,I)\\ l_{n}\sim logNormal(l_{\mu}^{\top}s_{n},l_{\sigma^{2}}^{\top}s_{n})\\ \rho_{n}=f_{w}(z_{n},s_{n})\\ \pi_{ng}=f_{h}^{g}(z_{n},s_{n})\\ x_{ng}\sim ObservationModel(l_{n}\rho_{n},\theta_{g},\pi_{ng})\\ p_{nj}=g_{z}^{j}(z_{n},s_{n})\\ l_{n}=f_{l}(y_{n})\\ y_{nj}\sim Bernoulli(p_{nj}\cdot l_{n}\cdot r_{j}) znNormal(0,I)lnlogNormal(lμsn,lσ2sn)ρn=fw(zn,sn)πng=fhg(zn,sn)xngObservationModel(lnρn,θg,πng)pnj=gzj(zn,sn)ln=fl(yn)ynjBernoulli(pnjlnrj)对于scRNA-seq,先验参数 l μ l_{\mu} lμ l σ 2 l_{\sigma^{2}} lσ2 是根据所有细胞的对数大小在不同批次之间计算得出的均值和方差。表达数据是从一个基于计数的似然分布生成的,这里称为 O b s e r v a t i o n M o d e l ObservationModel ObservationModel,默认为ZINB分布,也可以是更简单的NB分布。

对于scATAC-seq,检测可访问区域( y n j > 0 y_{nj}>0 ynj>0)是由伯努利随机变量生成的,该变量取决于细胞特异性潜在变量 z n z_{n} zn,该变量捕获生物异质性。另外有两个辅助的缩放因子 l n l_{n} ln r j r_{j} rj,分别考虑了特定于细胞和特定于region的批次效应。

MultiVI 的生成过程使用神经网络: f w ( z n , s n ) : R d × { 0 , 1 } K → Δ G − 1 f h ( z n , s n ) : R d × { 0 , 1 } K → ( 0 , 1 ) ⊤ g z ( z n , s n ) : R d × { 0 , 1 } K → [ 0 , 1 ] M f_{w}(z_{n},s_{n}):\mathbb{R}^{d}\times\left\{0,1\right\}^{K}\rightarrow\Delta^{G-1}\\f_{h}(z_{n},s_{n}):\mathbb{R}^{d}\times\left\{0,1\right\}^{K}\rightarrow(0,1)^{\top}\\ g_{z}(z_{n},s_{n}):\mathbb{R}^{d}\times\left\{0,1\right\}^{K}\rightarrow[0,1]^{M} fw(zn,sn):Rd×{0,1}KΔG1fh(zn,sn):Rd×{0,1}K(0,1)gz(zn,sn):Rd×{0,1}K[0,1]M分别解码去噪基因表达、非零膨胀概率(仅当使用 ZINB 时)并估计可访问区域的概率。

推理

MultiVI 使用变分推理来学习模型参数,并得到具有以下分解的近似后验分布: q η ( z n , l n ∣ x n ) = q η ( z n ∣ x n , y n , s n ) q η ( l n ∣ x n ) q_{\eta}(z_{n},l_{n}|x_{n})=q_{\eta}(z_{n}|x_{n},y_{n},s_{n})q_{\eta}(l_{n}|x_{n}) qη(zn,lnxn)=qη(znxn,yn,sn)qη(lnxn)其中, z n z_{n} zn被确定性地计算为变分近似 z n r n a z_{n}^{rna} znrna z n a t a c z_{n}^{atac} znatac的两个潜在变量的平均值。这两个变量是正态的,因此 z n z_{n} zn是正态的。

当获得隐变量后,使用生成模型即可完成不同模态的数据还原。

MultiVI的局限:因为 z n z_{n} zn需要获得两个模态的 z n r n a z_{n}^{rna} znrna z n a t a c z_{n}^{atac} znatac均值,MultiVI在非联合测量数据上的整合能力有限。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA实现文件上传至阿里云

注册阿里云账号后,开通好对象存储服务(OSS),三个月试用 阿里云登录页 (aliyun.com) 目录 一.创建Bucket 二.获取AccessKey(密钥) 三.参考官方SDK文件,编写入门程序 1.复制阿里云OSS依赖,粘贴…

山东名岳轩印刷包装携专业包装袋盛装亮相2024济南生物发酵展

山东名岳轩印刷包装有限公司盛装亮相2024第12届国际生物发酵展,3月5-7日山东国际会展中心与您相约! 展位号:1号馆F17 山东名岳轩印刷包装有限公司是一家拥有南北两个生产厂区,设计、制版、印刷,营销策划为一体的专业…

无法找到 WindowsKernelModeDriver10.0 的生成工具

无法找到 WindowsKernelModeDriver10.0 的生成工具(平台工具集 “WindowsKernelModeDriver10.0”)。若要使用 WindowsKernelModeDriver10.0 生成工具进行生成,请安装 WindowsKernelModeDriver10.0 生成工具。或者,可以升级到当前 Visual Studio 工具&…

ShardingSphere-JDBC初探

引言 为什么使用分库分表? 数据量太大单表放不下,并且公司不希望切换产品,可选的方案不多,ShardingSphere就是不错的选择。 切换产品指的是换成es、clickhouse、hbase这种支持大数据,试想一下切换产品对整个项目的改…

mysql进阶-视图

目录 1. 用途 2. 语法 2.1 创建或替换视图 2.2 修改视图 2.3 查看视图: 2.4 删除视图: 3. 其他 3.1 操作视图 3.2 迁移数据库 1. 用途 视图可以理解为一个复杂查询的简称,它可以帮助我们简化查询,主要用于报表查询:例如…

Halcon3D篇-3D预处理,滤波,点云筛选

前言 由于3D相机采集到的数据通常通过Tiff格式的深度图进行显示或者保存。 深度图与模型的互转可以访问另一篇博客:https://blog.csdn.net/m0_51559565/article/details/135362674 关于3D相机的数据采集,可以访问我们另一篇关于LMI3D相机SDK的二次开发…

【leetcode】力扣算法之两数相加【中等难度】

题目描述 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都…

书生·浦语大模型实战营第二次课堂笔记

文章目录 什么是大模型?pip,conda换源模型下载 什么是大模型? 人工智能领域中参数数量巨大、拥有庞大计算能力和参数规模的模型 特点及应用: 利用大量数据进行训练拥有数十亿甚至数千亿个参数模型在各种任务重展现出惊人的性能 …

鸿鹄电子招投标系统:企业战略布局下的采购寻源解决方案

在数字化采购领域,企业需要一个高效、透明和规范的管理系统。通过采用Spring Cloud、Spring Boot2、Mybatis等先进技术,我们打造了全过程数字化采购管理平台。该平台具备内外协同的能力,通过待办消息、招标公告、中标公告和信息发布等功能模块…

从私有Git仓库的搭建到命令的使用及部署再到分支管理

一、版本控制系统/版本控制器 1. 版本控制系统: git 分布式 —没有中心代码库,所有机器之间的地位同等(每台机器上都有相同的代码) svn 集中管理的 —有中心代码库,其他都是客户端 2.git与svn介绍 1.git属于分布…

力扣:18.四数之和

一、做题链接:18. 四数之和 - 力扣(LeetCode) 二、题目分析 1.做这一道题之前本博主建议先看上一篇《三数之和》 2.题目分析 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重…

vue+springboot+mybatis实现项目管理系统

项目前端:https://gitee.com/anxin-personal-project/project-management-front 项目后端:https://gitee.com/anxin-personal-project/project-management-behind 项目均可运行!!!有问题留言,如果看到了会…

自创C++题目——自掏腰包

预估难度 中等 题目描述 我今天特别开心,去了一家商场。有个商场,商场里有个商品,我要买个产品,每个商品元,去一家商场需要元(不包括第一次),那么我该怎么花钱,才能花…

网页内容任君采撷-右键无法复制

CSDN一年一度的博客之星评选活动已经结束,刚好点击来看看学习一下大佬们的博客。 发现绝大部分的博主对于知识的公开度都是非常高的,当然除了收费的专栏外。 其中少部分博主对自己的博文设定了一定的操作,无法直接使用博文中的内容。 现在大…

js highcharts图表控件

Highcharts是国外的一款功能强大、开源、美观、图表丰富、兼容绝大多数浏览器的纯js图表库 一、新建项目&#xff1a;HchartDemo 二、引入js <script src"~/lib/jquery/dist/jquery.min.js"></script> <script src"~/lib/hchart/highcharts.js…

Java后端开发——Mybatis实验

文章目录 Java后端开发——Mybatis实验一、MyBatis入门程序1.创建工程2.引入相关依赖3.数据库准备4.编写数据库连接信息配置文件5.创建POJO实体6.编写核心配置文件和映射文件 二、MyBatis案例&#xff1a;员工管理系统1.在mybatis数据库中创建employee表2.创建持久化类Employee…

The Sandbox 2024 Game Jam 启动|向博姆库斯博士证明你的游戏开发实力!

The Sandbox Game Jam 是面向所有游戏制作爱好者的创作比赛&#xff01;我们诚邀您加入 The Sandbox 的生态系统&#xff0c;这里充满活力&#xff0c;游戏与文化相融&#xff0c;创作者彼此切磋&#xff0c;共同实现梦想。唯一能限制您的只有想象力。The Sandbox 游戏由大家共…

Python中调用matplotlib库三维可视化图像像素曲面分布

为了更直观的从3D视角观察一副图像的像素分布&#xff0c;且拖动观察没一个像素细节&#xff0c;可以使用下面代码实现。 目录 一、代码二、效果展示 一、代码 使用代码修改修改的地方如下&#xff1a; 具体实现代码如下: import numpy as np import matplotlib.pyplot as …

Qt QProcess进程间调用及交互通信,完整示例

1. 概述 使用Qt进行应用程序开发&#xff0c;主要是通过QProcess类用于启动外部程序并与其进行通信. 1.1. 运行进程 要启动进程&#xff0c;需要运行的程序的名称和命令行参数作为参数传递给start()。参数以QStringList形式提供。 start()方法原型&#xff1a; void start(…

【C++】HP-Socket(二):框架介绍、功能说明

1、接口 1.1 接口模型 1.2 三类接口 HP-Socket 定义了三类接口 组件接口&#xff08;如&#xff1a;ITcpServer / IUdpClient&#xff09;&#xff1a;声明组件操作方法&#xff0c;应用程序创建组件对象后通过该接口来使用组件组件实现类&#xff08;如&#xff1a;CTcpSer…