DEGAS:将临床属性转移到细胞

news2024/9/22 1:39:02

DEGAS(单细胞诊断证据量表,Diagnostic Evidence GAuge of Single cells)是一种迁移学习框架,用于将疾病信息从患者转移到细胞。作者将这种可转移信息称为“印象-impressions”,它允许单细胞与疾病属性相关联,例如诊断、预后和对治疗的反应。

来自:Diagnostic Evidence GAuge of Single cells (DEGAS): a flexible deep transfer learning framework for prioritizing cells in relation to disease,Genome Medicine,2022
工程地址:https://github.com/tsteelejohnson91/DEGAS。

背景

  • DEGAS使用"疾病属性-disease attributes"作为广义术语,比如诊断信息,疾病亚型,疾病状态,生存,等等预后信息。对于seurat和类似方法,可以识别细胞类型(或者无监聚类),再将簇与疾病属性关联–这种方法无法识别与"疾病属性"相关的子集,尤其是当疾病相关细胞与非疾病相关细胞(同类型细胞)聚集在一起时。
  • bulkRNA-seq包含大量patient样本,scRNA-seq包含少量patient样本–但每个patient样本都包含大量的cell样本。
  • 过去的方法:直接建立疾病与scRNA-seq细胞类型的关联–关注给定细胞类型中与疾病属性相关的DEG的数量–它们将疾病关联分配给预定义的细胞类型,而不是单个细胞。

DEGAS原理
细胞和组织中基因的表达模式应带有部分相同的生物学模式,例如分子通路、信号级联和/或代谢过程,从而使从这部分基因表达模式中学到的信息可以在患者(bulk-seq)和细胞(sc-seq)之间转移。假设是,从这些共享基因表达模式中学到的潜在表征将同时预测患者的疾病属性和细胞亚型。

目录

  • 方法
    • 实验设计和数据集
    • DEGAS迁移学习
    • 特征选择和缩放
    • 疾病关联分数
  • 部分实验案例
    • 模拟数据上的DEGAS
    • 模拟数据上的结果

方法

实验设计和数据集

DEGAS需要一个 scRNA-seq 数据集、一个bulk数据集和患者样本标签(与bulk数据样本匹配)作为输入。在对原始输入表达数据进行特征选择和缩放后,应该有两个表达矩阵,行对应于样本/细胞,列对应于基因。此外,患者样本标签应进行one-hot编码,行对应于每个样本,列对应于每个标签类别。如果还有细胞标签,也应该对它们进行独热编码,每行对应一个细胞,每列对应一类标签。DEGAS 模型可以在这些格式化数据上进行训练和预测。

数据集包括模拟数据、GBM、AD(阿尔茨海默病)和MM(多发性骨髓瘤)的数据。这些数据被分为以下部分:

  1. 模拟数据:使用Splatter生成了5000个细胞,其中2000个用于生成模拟患者。模拟了三种情况:第一种情况下,细胞类型1与疾病相关;第二种情况下,细胞类型4的某个亚型与疾病相关;第三种情况下,细胞类型4的两个亚型都与疾病相关。

  2. GBM数据:使用了Patel等人的scRNA-seq数据,包含五个肿瘤的单细胞表达值。此外,还使用了来自TCGA GBM的微阵列数据,以及GBMs的亚型标签。

  3. AD数据:使用了Allen脑科学研究所脑细胞类型数据库的人类单细胞scRNA-seq数据,以及来自MSBB研究的AD患者RNA-seq数据。

  4. MM数据:包含了来自MMRF的患者基因组和临床数据,特别是关注PFS(无进展生存期)。还使用了Chen等人的scRNA-seq数据。

数据集的组织方式是将每个数据集中的特征选择出来,进行标准化处理后转换为适用于模型的格式。

DEGAS迁移学习

多种类型的标签,包括 Cox 比例风险、患者分类和细胞类型分类,以及最大均值差异 (MMD)(一种用于匹配不同数据集分布的技术 ),被组合在一起以创建深度多任务迁移学习框架 DEGAS。

第一步是找到一组基因表达特征,这些特征既能提供细胞类型信息,又能提供患者疾病属性(例如复发-recurrence)信息。在 scRNA-seq 和患者样本的bulk数据中发现的高方差基因的交集可用于进一步分析。该基因集的定义取决于用户,可以使用 Seurat-CCA 、LASSO 选择 ,甚至 t 检验和 f 检验等统计检验来定义基因集。由于这些特征在患者和单细胞之间是相同的,因此患者和细胞共享相同的输入层。这使得无论输入样本类型(患者或单细胞数据)如何,都可以预测比例风险-proportional hazard和细胞类型。

fig1

  • 图1:DEGAS 框架的工作流程图。A:DEGAS 并非旨在取代可用于加载、预处理、选择特征、聚类和可视化 scRNA-seq 数据的丰富软件包。它更旨在增强这些软件包以将疾病关联分配给细胞。B:scRNA-seq 和患者表达数据被预处理成表达矩阵。接下来,使用多任务学习神经网络,使用单细胞和患者疾病属性训练 DEGAS 模型,该网络学习潜在表示,使用最大平均差异 (MMD) 减少最终隐藏层中患者和单细胞之间的差异。C:该模型的输出层可用于同时推断单细胞中的疾病属性印象和患者的细胞组成印象(可迁移的信息称为印象)

本文中的所有实验均使用 five-bootstrap aggregated three-layer DenseNet-based DEGAS 实现,但 DEGAS 框架的最简单形式是单层网络。在整体架构描述中(如图 1B、C 所示),出于简单起见,只使用单层网络来呈现。首先,使用隐藏层通过 S 型激活函数将基因转换到较低维度。其中 X X X 表示输入表达矩阵, θ H i d d e n θ_{Hidden} θHidden 表示隐藏层权重:
eq1
接下来,为患者输出和单细胞输出添加输出层。对于sc,可以有分类输出或没有输出。没有输出意味着没有已知的单细胞标签可以匹配。同样,患者可以有 Cox 比例风险输出、分类输出或没有输出(意味着没有已知的患者标签)。

Cox 比例风险估计包括线性转换为单个输出,然后是 S 形激活函数:
eq2
其中变量 X X X 表示输入表达矩阵, θ C o x θ_{Cox} θCox 表示 Cox 比例风险层权重, b C o x b_{Cox} bCox 表示 Cox 比例风险层偏差。

分类输出包括使用 softmax 激活函数转换为与标签数量相同的输出数量,即患者亚型、细胞亚型:
eq3
为了训练 DEGAS 模型,需要分别为 Cox 比例风险输出、分类输出和 MMD 计算三种类型的损失函数。Cox 比例风险损失仅使用随访期 ( C C C) 和事件状态 ( t t t) 针对患者表达数据 ( X P a t X_{Pat} XPat) 计算:
eq4

同样,患者分类损失仅使用患者标签 ( Y P a t Y_{Pat} YPat) 针对患者数据 ( X P a t X_{Pat} XPat) 计算。或者,细胞分类损失仅针对单细胞表达数据 ( X C e l l X_{Cell} XCell) 和真实亚型标签 ( Y C e l l Y_{Cell} YCell) 计算:
eq5

MMD 损失是在患者表达数据 ( X P a t X_{Pat} XPat) 和单细胞表达数据 ( X C e l l X_{Cell} XCell) 之间计算的,这是映射单细胞和患者bulk tissue数据之间数据表示分布的关键:
eq6
减小MMD损失有助于对齐sc和bulk的latent space。

然后根据数据集提供的标签组合这些损失得到总的损失。

总之,DEGAS使用一个公共隐藏层来合并单细胞和患者数据。接下来,添加一个输出层来预测患者样本的比例风险或类别。对于每个患者,比例风险预测或患者分类的损失函数在两个层上反向传播。单细胞还有一个输出层,由 softmax 输出组成,用于预测每个细胞的细胞亚型。误差从每个细胞的标签输出反向传播到两个层。最后,DEGAS学习了一个可以同时模拟单细胞和患者的模型。为了完成这项任务,DEGAS利用 MMD 方法以低维表示减少患者和细胞之间的差异。将单细胞和患者bulk tissue数据合并为一个组,从而最小化患者bulk tissue数据和来自多个患者的单细胞数据之间的 MMD 损失。

为了保持分析的一致性,作者在所有实验中使用了相同的网络架构和超参数。具体来说,使用了三层 DenseNet,并进行了五次bootstrap聚合(训练了五个这样的模型)。


为何可以把疾病属性传递到细胞:

  • 细胞和patient被整合到同一个空间下,然后就能让细胞embedding通过patient分类分支输出细胞对应的疾病属性预测,patient通过细胞分类分支则能输出bulk tissue中的细胞组成成分。

特征选择和缩放

目前,各种通用统计软件包和 scRNA-seq 软件包中已经提供了多种特征选择技术。因此,DEGAS 并不主要关注特征选择、数据清理和 scRNA-seq 聚类,DEGAS关注的是将临床特征从患者转移到细胞,以便对这些细胞进行优先排序。因此,在应用 DEGAS 框架之前,可以使用多种特征选择技术。

scRNA-seq 的数据通常非常稀疏。因此,对于任何给定的细胞,只有很少的基因具有表达。因此,有必要进行特征选择以去除表达低或方差非常低的基因。当我们在大量表达数据中选择高方差和高表达的基因时,更多的基因会被过滤掉。在高表达和高方差基因这两组基因相交后,一般只剩下不到 1000 个基因。值得注意的是,这种基因特征数量与 Seurat 结果相当,Seurat 分析通常会选择数百到几千个高度可变的基因。由于数据稀疏性和方差彼此差异很大,因此特征选择步骤针对每个数据集进行了量身定制,因此量身定制的选择确保有足够的高变基因可供训练。特征选择步骤在模拟、GBM、AD 和 MM 实验部分中分别有描述。

对于每个实验,最终的特征缩放步骤是一致的。基因表达被转换为样本 z score,因为它允许基因在样本之间更具可比性(z score通过将不同量级的数据转化为统一量级的z score分值,使得数据标准统一化)。作为深度学习模型的输入,将这些 z score缩放到 [0,1] 范围。

疾病关联分数

最终的 DEGAS 输出是 S 型函数或 Softmax 激活函数的输出。出于这些原因,将 [0,1] 标签输出转换为关联分数-association score(可以解释为相关系数-correlation coefficient)会很有用。可以使用 DEGAS 包中的 toCorrCoeff 函数将 DEGAS 的输出概率矩阵转换为 [− 1,1] 值。此函数使用下面公式将具有 k k k 个标签的 [0,1] 输出值矩阵 P P P 转换为 [-1,1]:
eq12

部分实验案例

模拟数据上的DEGAS

首先,使用 Splatter 在四种细胞类型中生成了 5000 个单细胞,其中细胞类型 4 有两种亚型(细胞类型 4 疾病和细胞类型 4 正常:cell type 4 disease 和 cell type 4 normal)。作者将这些细胞随机分成两部分,其中 2000 个细胞用于生成患者bulk tissue数据,3000 个细胞直接用作单细胞数据。这 2000 个单细胞用于在三个不同的实验(指定为simulation 1、2 和 3)中生成 600 名患者,其中:

  • 在模拟 1 中cell type 1 与疾病相关;
  • 在模拟 2 中只有cell type 4 disease与疾病相关;
  • 在模拟 3 中整个cell type 4 都与疾病相关。

每个患者的bulk tissue数据都是通过按照下表中的比例随机组合 400 个单细胞生成的。
tab3

然后,通过使用细胞类型和疾病属性训练 DEGAS ClassClass 模型(patient和sc都是分类分支)来进行 10 倍交叉验证。训练期间总共使用了 1000 个基因特征。使用 PR-AUC 和 ROC-AUC 评估了模型将患者标签映射到患者上以及将细胞类型标签映射到单个细胞上的能力

模拟数据上的结果

fig2abcd

  • A:来自 Splatter 的 5000 个模拟细胞,具有 4 种细胞类型,其中一种细胞类型有两种亚型。细胞类型 4 由两种特定于疾病或正常患者的亚型组成。总共有 2000 个细胞用于生成 B-D 中的 600 名模拟患者,3000 个细胞用作 DEGAS 模型的细胞输入。

fig2efghi

  • E:基于未用于生成患者的 3000 个细胞的平均轮廓宽度的最佳簇数(4 个簇)。F:用作细胞输入的3000 个细胞按其簇着色。G:DEGAS 与模拟 1 中的 Augur 的比较。H:DEGAS 与模拟 2 中的 Augur 的比较。I:DEGAS 与模拟 3 中的 Augur 的比较。

fig2jkl

  • J-L:DEGAS 计算的来自每个模拟实验的疾病关联叠加到 3000 个细胞上。左下角的小提琴图是模拟 1 实验的patients中cell type 1 的细胞类型比例(疾病和normal,类型来自疾病关联得分)、模拟 2 实验的patients中cell type 4 的比例(K)以及模拟 3 实验的patients中cell type 4 的比例(L)

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

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

相关文章

【Python】使用库 -- 详解

库就是别人已经写好了的代码,可以让我们直接拿来用。 一个编程语言能不能流行起来,一方面取决于语法是否简单方便容易学习,一方面取决于生态是否完备。所谓的 “生态” 指的就是语言是否有足够丰富的库,来应对各种各样的场景。在…

动态路由协议 —— EIGRP 与 OSPF 的区别

EIGRP(增强内部网关路由协议)和 OSPF(开放式最短路径优先)是两种最常见的动态路由协议,主要是用来指定路由器或交换机之间如何通信。将其应用于不同的情况下,可提高速率、延迟等方面的性能。那么它们之间到…

【Python系列】Python 缓存机制

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【排序数组】python刷题记录

润到排序算法了。 顺便复习一下排序算法 easy work class Solution:def sortArray(self, nums: List[int]) -> List[int]:nums.sort()return nums 11种排序算法 # 选择排序 def selectsort(s):for i in range(0,len(s)-1):curmininfcuridx-1for j in range(i,len(s)):if …

【运维】软件运维方案(2024word完整版)

1. 文档介绍 2. 人员与责任 3. 运维过程内容 4. 运维资源 5. 运维服务规划保障 6. 事件处置 7. 质量改进 8. 运维边界及内容 获取方式: 本文末个人名片直接获取。

Leetcode1688. 比赛中的配对次数

问题描述: 给你一个整数 n ,表示比赛中的队伍数。比赛遵循一种独特的赛制: 如果当前队伍数是 偶数 ,那么每支队伍都会与另一支队伍配对。总共进行 n / 2 场比赛,且产生 n / 2 支队伍进入下一轮。如果当前队伍数为 奇…

【计算机视觉】siamfc论文复现实现目标追踪

什么是目标跟踪 使用视频序列第一帧的图像(包括bounding box的位置),来找出目标出现在后序帧位置的一种方法。 什么是孪生网络结构 孪生网络结构其思想是将一个训练样本(已知类别)和一个测试样本(未知类别)输入到两个CNN(这两个CNN往往是权值共享的)中&#xff0…

【SRC】小程序抓包巨详细配置,一个Burp就够了,但是可以更优雅!

小程序抓包配置 文章目录 小程序抓包配置0x00 前言0x01 直接使用BurpSuite抓包0x02 配合Proxifier 0x00 前言 其实在PC端抓微信小程序的包,只需要一个BurpSuite就足够了,但是为了避免抓一些没用的包,减少对小程序抓包测试过程中的干扰&#…

学生处分类型管理

在智慧校园学工管理系统中,"处分类型"功能扮演着至关重要的角色,它如同一座桥梁,连接着校园秩序与学生行为规范的两端。这一模块的核心精髓,在于它以精准的违规行为界定和适当的处分措施,巧妙地平衡了纪律的…

Qmi8658a姿态传感器使用心得(4)linux

1.FIFO 结构与大小 FIFO 数据可以包含陀螺仪和加速度计数据,通过 SPI/I2C/I3C 接口以突发读模式读取。FIFO 大小可配置为 16 样本、32 样本、64 样本或 128 样本(每个样本为 6 字节)。 2.FIFO 模式 Bypass 模式:禁用 FIFO 功能。…

SpringCloud03_loadbalancer的概述、负载均衡解析、切换、原理

文章目录 ①. Ribbon进入维护模式②. loadbalancer的概述③. loadbalancer负载均衡解析④. 负载均衡案例总结⑤. 负载均衡算法原理 ①. Ribbon进入维护模式 ①. Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。 ②. 维护模式不再介绍,了解即可 ③.…

大语言模型-Transformer-Attention Is All You Need

一、背景信息: Transformer是一种由谷歌在2017年提出的深度学习模型。 主要用于自然语言处理(NLP)任务,特别是序列到序列(Sequence-to-Sequence)的学习问题,如机器翻译、文本生成等。Transfor…

【python】Numpy运行报错分析:ValueError - 数组维度不一致

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

java中多态的用法

思维导图: 1. 多态的概念 多态通俗的讲就是多种形态,同一个动作,作用在不同对象上,所产生不同的形态。 例如下图: 2. 多态的实现条件 Java中,多态的实现必须满足以下几个条件: 1. 必须在继承…

动画革命:Lottie如何改变我们对移动应用交互的认知

在数字世界的浩瀚星空中,每一个像素都跃动着无限创意与想象的火花。当静态的界面遇上动态的魔法,一场视觉盛宴便悄然开启。今天,让我们一同揭开一位幕后英雄的神秘面纱——Lottie,这个在UI/UX设计界掀起波澜的动画利器&#xff0c…

[trick]使用生成器打破嵌套循环

原文 break用于结束循环。但是,如果有嵌套循环,如何跳出外层循环? def this_is_the_one(x):return x 3my_list [[1, 2], [3, 4], [5, 6]] for sublist in my_list:for element in sublist:print(f"Checking {element}")if this_…

农场驿站平台小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,农场资讯管理,卖家管理,用户分享管理,分享类型管理,商品信息管理,商品分类管理,系统管理,订单管…

天舟飞船可视化:直观体验太空任务全过程

利用图扑先进的 3D 可视化技术,实时展示天舟飞船的发射、对接和任务执行,为观众提供身临其境的太空探索体验。

奥比岛手游攻略:新手攻略大全!云手机辅助!

《奥比岛:梦想国度》是一款画风可爱的Q版休闲益智手游。在这个充满童话色彩的世界里,玩家们可以度过快乐的每一天,结交许多朋友,完成各种任务,体验丰富多彩的游戏玩法。下面将为大家带来详细的攻略大全。 游戏前瞻&…

Java 面试 | Redis

目录 1. 在项目中缓存是如何使用的?2. 为啥在项目中要用缓存?3. 缓存如果使用不当会造成什么后果?4. redis 和 memcached 有什么区别?5. redis 的线程模型是什么?6. 为什么单线程的 redis 比多线程的 memcached 效率要…