论文模型设置与实验数据:scBERT

Yang, F., Wang, W., Wang, F. et al. scBERT as a large-scale pretrained deep language model for cell type annotation of single-cell RNA-seq data. Nat Mach Intell 4, 852–866 (2022). https://doi.org/10.1038/s42256-022-00534-z

论文地址:scBERT as a large-scale pretrained deep language model for cell type annotation of single-cell RNA-seq data | Nature Machine Intelligence

论文代码:https://github.com/TencentAILabHealthcare/scBERT


目录

摘要

scBERT 模型概述

a. 无标签数据的自监督学习与任务特定数据的微调

b. scBERT 嵌入示意图

数据集

代码细节


摘要


基于单细胞RNA测序(scRNA-seq)数据对细胞类型进行注释是研究疾病进展和肿瘤微环境的前提。现有的注释方法通常存在缺乏精心整理的标记基因列表、处理批次效应不当以及难以利用潜在基因-基因交互信息的问题,削弱了这些方法的泛化性和鲁棒性。作者开发了一种基于预训练深度神经网络的模型,即单细胞双向编码表示转换器(scBERT),以克服这些挑战。遵循BERT的预训练和微调方法,scBERT通过在大量未标记的scRNA-seq数据上进行预训练,获得了对基因-基因交互的通用理解;然后将其转移到未知和用户特定的scRNA-seq数据的细胞类型注释任务中进行有监督的微调。广泛而严格的基准研究验证了scBERT在细胞类型注释、新型细胞类型发现、对批次效应的鲁棒性和模型解释性方面的卓越表现。

scBERT 模型概述

a. 无标签数据的自监督学习与任务特定数据的微调

在自监督预训练阶段,无标签数据来自于 PanglaoDB。将掩码表达嵌入和基因嵌入作为输入并输入到 Performer 模块中。通过重构器生成输出,对被掩码的基因的输出用以计算重构损失。在监督微调阶段,将任务特定的 scRNA-seq 数据输入到预训练的编码器中。输出表示经过一维卷积层和分类器,生成细胞类型预测结果。符号 "⊕" 表示逐元素加法。
Performer 编码器 是在预训练和微调阶段共享的组件,而重构器和分类器在预训练和微调阶段分别独立使用。

b. scBERT 嵌入示意图

预处理后的 scRNA-seq 数据首先被转换为离散化表达值,非零表达值会被随机掩码。以第一个基因为例,其基因嵌入 EG1(通过 gene2vec 得到的基因身份嵌入,归入第一分箱)和表达嵌入 EB2(基因表达值归入第二分箱并被转换为与 EG1 相同的维度)被求和后输入到 scBERT 中,生成基因的表示。
这些表示随后用于预训练或微调阶段。

BERT 的启发


最初的 BERT 模型提出了一种革命性的技术,通过预训练生成通用的语言知识,并利用微调将知识迁移到不同配置的下游任务中。受此启发,我们开发了一种新颖且统一的架构——scBERT(如图 1),专注于 scRNA-seq 数据。scBERT 在多种来源的数百万无标签 scRNA-seq 数据上进行预训练,学习通用的 scRNA-seq 知识,然后通过简单地接入分类器并基于参考数据集监督微调参数,完成细胞类型的分配。

模型优势

  • 预训练:帮助模型学习基因-基因相互作用的一般语法,从而消除数据集间的批次效应,提高模型的泛化能力(扩展数据图 1a)。
  • 微调:确保每个基因的输出嵌入能够编码与参考数据集转录组特征更相关的上下文信息。通过挖掘高级隐式模式,scBERT 为查询细胞计算其属于参考数据集中任何细胞类型的概率(扩展数据图 1b)。如果没有细胞类型能被高置信度分配,查询细胞会被标记为“未分配”,以避免错误标注并支持发现新的细胞类型。

创新设计


相比于原始 BERT 模型,scBERT 引入了一些创新设计,以增强其在细胞类型注释任务中的表现:

  1. 嵌入设计

    • BERT 的嵌入包括 token 嵌入位置嵌入,而 scBERT 的嵌入设计在借鉴 BERT 的基础上结合了基因领域的特点。
    • token 嵌入:BERT 中的 token 是离散变量(代表单词),而 scBERT 的输入是连续变量(代表单细胞中基因的表达值),并伴有生物学和技术噪声。我们借鉴 NLP 中的词袋技术,将基因表达值分箱为离散值,不仅减少了数据噪声,还保留了基因表达频率的信息。
    • 基因嵌入:由于基因的绝对位置无意义,scBERT 使用 gene2vec 生成的嵌入作为基因身份的相对嵌入,捕获基因的共表达关系。共表达的基因会具有更相似的嵌入表示,这种分布式表示有助于描述基因-基因相互作用(扩展数据图 1c)。
  2. 去除数据预处理的依赖

    • 当前的大多数单细胞方法需要在原始数据上进行预处理(如高变基因选择、手动标记基因选择或 PCA),由于这些方法无法高效建模高维数据,不可避免地引入人工偏差或过拟合问题,严重影响模型的泛化能力。
    • scBERT 通过 Transformer 的大感受野高效利用 scRNA-seq 数据中的全局信息,捕获长距离基因-基因相互作用,从而学习细胞的综合全局表示。
    • 为克服 Transformer 输入序列长度(512)的限制,scBERT 使用 Performer 替代原始 BERT 中的 Transformer 编码器,从而扩展模型至超过 16,000 个基因输入。这种设计允许全基因水平的解释,无需使用高变基因或降维操作,让具有判别力的基因和交互关系自然显现(扩展数据图 1d)。


通过以上设计,scBERT 实现了基因表达模式和长程依赖的无偏数据驱动发现,并提供了稳定且鲁棒的性能,而无需依赖超参数调节(扩展数据图 1e)。这种特性使得 scBERT 成为细胞类型注释任务中的强大工具,同时支持探索新的细胞类型。

数据集

由于模型训练分为两个阶段:无标签数据的自监督学习特定任务数据的微调,因此这两个阶段使用的数据集来源不同,以避免数据泄漏。在第一阶段,大量无标注数据用于学习通用模式;而在第二阶段,则需要带有高质量标注的细胞标签的特定任务数据,以系统评估 scBERT 和其他 SOTA 方法的性能。

为此,我们选择了以下数据集:

  • 提供高度可信的细胞类型标注,
  • 且已被大多数细胞类型标注方法广泛引用,用于性能评估的 scRNA-seq 数据集。
Panglao 数据集

Panglao 数据集来自 PanglaoDB 网站 (https://panglaodb.se/)。PanglaoDB 集成了 209 个来源于不同实验平台的人类单细胞数据集,覆盖 74 种组织,共计 1,126,580 个细胞。本研究中,在第一阶段预训练时使用了 PanglaoDB 的 scRNA-seq 数据。由于采用自监督学习策略,此阶段未使用任何标注或细胞标签,模型输入仅需基因及其表达水平数据。

Zheng68k 数据集

Zheng68k 是一个经典的 PBMC 数据集,由 10X CHROMIUM 平台生成,广泛用于细胞类型注释性能评估。该数据集包含约 68,450 个细胞,分为 11 种亚型,包括:

  • CD8+ 细胞毒性 T 细胞 (30.3%)
  • CD8+/CD45RA+ 初始细胞毒性细胞 (24.3%)
  • CD56+ NK 细胞 (12.8%)
  • CD4+/CD25 调节性 T 细胞 (9.0%)
  • CD19+ B 细胞 (8.6%)
  • 其他稀有类型细胞。

该数据集中细胞类型分布不均,部分细胞类型间高度相关,使区分变得困难。

胰腺数据集

胰腺数据集包括 Baron、Muraro、Segerstolpe 和 Xin 数据集,统一了细胞类型标签,包含四种细胞类型。具体来源:

  • Baron 数据集:从 GEO 下载 (GSE84133),实验方法为 inDrop
  • Muraro 数据集:从 GEO 下载 (GSE85241),实验方法为 CEL-Seq2
  • Segerstolpe 数据集:从 ArrayExpress 下载 (E-MTAB-5061),实验方法为 Smart-Seq2
  • Xin 数据集:从 GEO 下载 (GSE81608),实验方法为 SMARTer

这些数据集基于不同实验平台生成 (补充表 1)。

MacParland 数据集

MacParland 数据集来自人类肝组织,包含 20 种肝细胞类型,由 10X CHROMIUM 平台对 8,444 个细胞进行转录组测序生成。数据从 GEO 下载 (GSE115469),并根据作者提供的方法生成细胞类型注释。

心脏数据集

心脏数据集包括两个部分:

  • 大规模心脏数据集 (用于预训练):含 451,513 个细胞,来自四个平台 (Harvard-Nuclei、Sanger-Nuclei 等),从 HCA 数据门户 下载。
  • Tucker 数据集 (用于评估):含 287,269 个细胞,从 Broad Institute 下载。
肺部数据集

该数据集来自人类肺组织,分析与 COVID-19 相关的疾病机制。包含来自 12 位供体的样本,由 10X Genomics 测序生成,数据量为 39,778 个细胞 (九种细胞类型)。数据下载自 Figshare。

人类细胞图谱数据集

人类细胞图谱数据集包含 15 个主要器官 (如皮肤、心脏、肝脏) 中的 27 种细胞类型,共计 84,363 个细胞,由 HiSeq X Ten 测序生成。数据下载自 GEO (GSE159929)。


本研究中使用的所有数据均为公开数据,其使用方法在方法部分有详细说明。

  • Panglao 数据集:从 PanglaoDB 下载。
  • Zheng68k 数据集:从 10x Genomics 官网的“Fresh 68K PBMCs”部分 下载(编号:SRP073767)。
  • 胰腺数据集:从 Hemberg Lab 的 GitHub 页面 下载,包括以下数据:
    • Baron 数据集(编号:GSE84133)
    • Muraro 数据集(编号:GSE85241)
    • Segerstolpe 数据集(编号:E-MTAB-5061)
    • Xin 数据集(编号:GSE81608)。
  • MacParland 数据集:从 NCBI GEO 数据库 下载(编号:GSE115469)。
  • 心脏数据集:从以下链接下载:
    • Human Cell Atlas 数据库
    • Broad Institute 数据库。
  • COVID-19 肺部数据集:从 Figshare 下载。
  • 成人 Human Cell Atlas 数据集(包含15个主要器官):从 NCBI GEO 数据库 下载(编号:GSE159929)。

数据预处理

对于以基因表达矩阵形式提供的数据:

  1. 进行了 log 归一化 (大小因子为 10,000)。
  2. 质量控制:过滤表达基因少于 200 的细胞异常值。

对于 scBERT 的输入,未进行维度缩减或高变基因选择,scBERT 可处理超过 20,000 个基因并保持完整基因级解释能力。


对比方法

基准测试实现了三类注释方法的 SOTA 算法:

  1. 基于标记基因:SCINA、Garnett 和 scSorter。
  2. 基于相关性:Seurat、SingleR、CellID 和 scmap。
  3. 监督学习:scNym 和 SciBet。

以下为部分算法简述:

  • scNym:半监督方法,利用目标数据进行领域适配,性能优异但需重新训练。
  • SciBet:监督学习方法,通过 E 检验筛选基因,构建多项式模型进行分类。
  • Seurat:流行的单细胞分析管道,通过参考数据集进行样本映射。
  • SingleR:基于参考数据集,迭代计算 Spearman 系数以区分细胞类型。
  • CellID:无聚类方法,提取细胞基因特征。
  • scmap:通过余弦和欧几里得距离映射细胞类型。
  • SCINA:假设标记基因的双峰分布以注释细胞类型。
  • Garnett:基于用户定义的细胞层次结构和标记基因,通过弹性网络回归注释。
  • scSorter:结合标记基因与 HVG 聚类,注释细胞类型。

后续将复现实验并执行模型代码。

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

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

相关文章

Jenkins的环境部署

day22 回顾 Jenkins 简介 官网Jenkins Jenkins Build great things at any scale The leading open source automation server, Jenkins provides hundreds of plugins to support building, deploying and automating any project. 用来构建一切 其实就是用Java写的一个项目…

怎么编译OpenWrt镜像?-基于Widora开发板

1.准备相应的环境,我使用的环境是VMware16ubuntu20.04,如图1所示安装编译所需的依赖包; sudo apt-get install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 unzip zlib1g-…

拉格朗日乘子(Lagrange Multiplier)是数学分析中用于解决带有约束条件的优化问题的一种重要方法,特别是SVM

拉格朗日乘子(Lagrange Multiplier)是数学分析中用于解决带有约束条件的优化问题的一种重要方法,也称为拉格朗日乘数法。 例如之前博文写的2月7日 SVM&线性回归&逻辑回归在支持向量机(SVM)中,为了…

Python 获取微博用户信息及作品(完整版)

在当今的社交媒体时代,微博作为一个热门的社交平台,蕴含着海量的用户信息和丰富多样的内容。今天,我将带大家深入了解一段 Python 代码,它能够帮助我们获取微博用户的基本信息以及下载其微博中的相关素材,比如图片等。…

# linux 清理指定目录下,指定时间的历史文件

如何使用这个脚本 1、创建脚本 cleanup.sh #!/bin/bash# 默认值 DEFAULT_DIR"/path/to/default/directory" DEFAULT_DAYS7# 使用方法提示 usage() {echo "Usage: $0 [-d directory] [-t days]"echo " -d 目标目录 (默认为: ${DEFAULT_DIR})"…

MySQL的DELETE(删除数据)详解

MySQL的DELETE语句用于从数据库表中删除记录。与UPDATE语句类似,DELETE语句也非常强大,支持多种用法和选项。本文将详细介绍DELETE语句的基本语法、高级用法、性能优化策略以及注意事项。 1. 基本语法 单表删除 单表删除的基本语法如下: …

C#里怎么样实现多播委托?

C#里怎么样实现多播委托? 如果你想实现一次通知,就可以让多个地方同步执行, 这时候就可以使用多播。 在这里使用委托来实现多播的功能。delegate void dele(int a, int b); 先定义一个委托的形式。 dele del = new dele(Oper.Add); del += new dele(Oper.Sub); 这里添加…

MySQL底层概述—1.InnoDB内存结构

大纲 1.InnoDB引擎架构 2.Buffer Pool 3.Page管理机制之Page页分类 4.Page管理机制之Page页管理 5.Change Buffer 6.Log Buffer 1.InnoDB引擎架构 (1)InnoDB引擎架构图 (2)InnoDB内存结构 (1)InnoDB引擎架构图 下面是InnoDB引擎架构图,主要分为内存结构和磁…

Linux---ps命令

​​​​​​Linux ps 命令 | 菜鸟教程 (runoob.com) process status 用于显示进程的状态 USER: 用户名,运行此进程的用户名。PID: 进程ID(Process ID),每个进程的唯一标识号%CPU: 进程当前使用的CPU百分比%MEM: 进程当前使用的…

企业OA管理系统:Spring Boot技术实现与案例研究

摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了企业OA管理系统的开发全过程。通过分析企业OA管理系统管理的不足,创建了一个计算机管理企业OA管理系统的方案。文章介绍了企业OA管理系统的系统分析部…

Charles抓包工具-笔记

摘要 概念: Charles是一款基于 HTTP 协议的代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果来达到分析抓包的目的。 功能: Charles 是一个功能全面的抓包工具,适用于各种网络调试和优化场景。 它…

vue2面试题10|[2024-11-24]

问题1:vue设置代理 如果你的前端应用和后端API服务器没有运行在同一个主机上,你需要在开发环境下将API请求代理到API服务器。这个问题可以通过vue.config.js中的devServer.proxy选项来配置。 1.devServer.proxy可以是一个指向开发环境API服务器的字符串&…

Apache Maven 标准文件目录布局

Apache Maven 采用了一套标准的目录布局来组织项目文件。这种布局提供了一种结构化和一致的方式来管理项目资源,使得开发者更容易导航和维护项目。理解和使用标准目录布局对于有效的Maven项目管理至关重要。本文将探讨Maven标准目录布局的关键组成部分,并…

数据结构(顺序队列——c语言实现)

队列的概念: 队列是限制在两端进行插入和删除操作的线性表,允许进行存入的一端称为“队尾”,允许进行删除操作的一端称为“队头”。当线性表中没有元素时,称为“空队”。特点:先进先出(FIFO)。 …

Vulnhub靶场 Jangow: 1.0.1 练习

目录 0x00 准备0x01 主机信息收集0x02 站点信息收集0x03 漏洞查找与利用1. 命令执行2. 反弹shell3. 提权4. 补充4.1 其他思路4.2 问题 0x04 总结 0x00 准备 下载链接:https://download.vulnhub.com/jangow/jangow-01-1.0.1.ova 介绍: Difficulty: easy…

Fakelocation Server服务器/专业版 Centos7

前言:需要Centos7系统 Fakelocation开源文件系统需求 Centos7 | Fakelocation | 任务一 更新Centos7 (安装下载不再赘述) sudo yum makecache fastsudo yum update -ysudo yum install -y kernelsudo reboot//如果遇到错误提示为 Another app is curre…

【Ubuntu24.04】服务部署(虚拟机)

目录 0 背景1 安装虚拟机1.1 下载虚拟机软件1.2 安装虚拟机软件1.2 安装虚拟电脑 2 配置虚拟机2.1 配置虚拟机网络及运行初始化脚本2.2 配置服务运行环境2.2.1 安装并配置JDK172.2.2 安装并配置MySQL8.42.2.3 安装并配置Redis 3 部署服务4 总结 0 背景 你的服务部署在了你的计算…

持续集成与持续部署:CI/CD实现教程

以下是一个基于常见工具实现 CI/CD 的基本教程示例,这里以 Git、Jenkins、Maven(用于 Java 项目构建和管理依赖,其他语言项目可替换为对应构建工具)以及 Docker(用于容器化部署,非必需但很常用)…

深入解析 EasyExcel 组件原理与应用

✨深入解析 EasyExcel 组件原理与应用✨ 官方:EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel 官网 在日常的 Java 开发工作中,处理 Excel 文件的导入导出是极为常见的需求。 今天,咱们就一起来深入了解一款非常实用的操作 Exce…

JavaScript中的箭头函数以及编写优化

箭头函数 1.1.1 箭头函数的概念 箭头函数时ES 6之后增加一种编写函数的方法,并且它比函数的表达式要更加简洁 箭头函数不会绑定this,arguments属性箭头函数不能作为构造函数来使用(不能和new一起来使用,会出现错误) //1.之前的方…