首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Nature Methods | OmiCLIP:整合组织病理学与空间转录组学的AI模型

Nature Methods | OmiCLIP:整合组织病理学与空间转录组学的AI模型

原创
作者头像
阔跃生物
发布于 2025-06-05 09:42:40
发布于 2025-06-05 09:42:40
3071
举报

在生物医学研究领域,组织病理学图像和组学数据的整合一直是重大挑战。传统计算方法往往将这两类数据分开分析,导致宝贵的空间分子信息难以被充分利用。随着空间转录组学和单细胞RNA测序技术的发展,研究人员能够获得组织切片中基因表达的空间分布信息,但如何将这些分子数据与传统的染色图像关联起来,仍缺乏系统性的解决方案。目前的计算模型要么专注于组学数据,要么专注于图像分析,缺乏将两者整合的统一多模态AI模型。

针对这一关键问题,来自休斯顿卫理公会研究所等机构的研究团队开发了名为OmiCLIP的视觉-组学基础模型,并构建了Loki分析平台。这项研究于2025年5月29日发表在《Nature Methods》上,通过创新的跨模态学习方法,成功搭建了连接组织形态学与分子特征的桥梁,为多模态组织分析提供了全新工具。

【文章核心方法】

  • OmiCLIP模型开发:这是一个视觉-转录组学基础模型,通过组织切片将H&E图像和转录组学联系起来。研究者们将转录组学数据转换为“句子”,通过连接每个切片中高表达基因的符号来实现。
  • ST-bank数据集的构建:研究者们策划了一个包含220万对组织图像和转录组学数据的数据集,涵盖了32个器官,用于训练OmiCLIP模型,整合组织学和转录组学。
  • Loki平台的开发:基于OmiCLIP模型构建的一个多模态分析平台,旨在整合组织病理学图像(H&E染色图像)和转录组学数据,为生物医学研究提供强大的分析工具,它提供了五个关键功能:组织对齐、通过批量RNA测序或标记基因进行组织注释、细胞类型分解、图像-转录组学检索和从H&E染色图像预测空间转录组学基因表达。

一、OmiCLIP模型框架

  • 数据集构建:研究者们构建了一个名为ST-bank的数据集,包含220万对组织图像和转录组学数据,涵盖了32种器官类型。这些数据来自113项研究,包括健康、癌症、心力衰竭和阿尔茨海默病等多种病理状态。
  • 数据预处理:为了消除批次效应,研究者采用了基于排名的策略,而不是直接使用原始读数计数或标准化的基因表达值。将Ensembl基因ID转换为基因符号,并去除了管家基因。然后,将基因符号按表达水平从高到低排序,并构造成句子,用于文本编码器。
  • 模型架构:OmiCLIP模型基于CoCa框架,包含一个图像编码器、一个文本编码器和一个多模态融合解码器。通过对比学习,将图像和转录组学模态对齐到一个共同的表示空间中,使得配对的图像和转录组学嵌入向量在该空间中尽可能相似。
  • 模型训练:使用ST-bank数据集对OmiCLIP进行训练,通过最大化配对的H&E图像和转录组学数据之间的相似性,优化模型参数。

图1 通过对比学习使用配对图像-转录组学数据集预训练OmiCLIP模型的工作流程
图1 通过对比学习使用配对图像-转录组学数据集预训练OmiCLIP模型的工作流程

二、Loki多模态平台

  • Loki Align:用于多节段组织对齐,包括ST-to-ST对齐、H&E图像-to-H&E图像对齐和H&E图像-to-ST数据对齐。
  • Loki Annotate:用于通过批量RNA-seq数据或标记基因对组织H&E图像进行注释。
  • Loki Decompose:用于从转录组学或组织学中分解细胞类型,参考单细胞RNA-seq数据。
  • Loki Retrieve:用于从H&E染色图像中检索转录组学数据。
  • Loki PredEx:用于从H&E染色图像预测空间转录组学基因表达。

图2 Loki平台的功能模块
图2 Loki平台的功能模块

三、验证结果与性能优势

  • OmiCLIP模型鲁棒性

(1)抗图像干扰:添加高斯噪声后,图像-转录组相似度仅下降8%(PLIP下降23%)。

(2)抗测序深度差异:在低测序深度(615 UMI)下仍保持高对齐精度(相似度>0.7)。

  •  Loki平台性能对比

Loki平台提供多种类型功能,其组织对齐功能与现有工具如PASTE、GPSA比较,PCC提升40%(肠组织数据达0.83),解决空间扭曲问题(图3)。

在组织注释功能方面,Loki可结合基因标记与语言描述,F1分数达0.96(CRC7K数据集),与现有方法如OpenAI CLIP, PLIP相比,召回率提升至93%。

图3 Loki平台组织对齐功能的性能评估
图3 Loki平台组织对齐功能的性能评估
  • 模型关键性能指标评估结果

(1)跨模态检索功能:Recall@5%达0.186,比OpenAI CLIP高3.2倍(图4)

图4 使用 Loki、OpenAI CLIP 和 PLIP 对四个验证数据集和一个测试数据集进行图像到转录组学检索评估
图4 使用 Loki、OpenAI CLIP 和 PLIP 对四个验证数据集和一个测试数据集进行图像到转录组学检索评估

(2)细胞分解功能:在结直肠癌全切片中准确预测6种细胞空间分布(图5)。

图5 全玻片人结直肠癌细胞型分解
图5 全玻片人结直肠癌细胞型分解

四、资源可用性

代码:https://github.com/GuangyuWangLab2021/Loki

模型:https://huggingface.co/WangGuangyulab/Loki

数据:ST-bank开放访问,部分临床数据需遵循TCGA/GTEx使用协议。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
1 条评论
热度
最新
在骁龙888处理器的板子上,识别效果很差。慢,丢字儿,落字儿。 在骁龙680的手机上效果还不错。 内部都是8GB以上的。奇怪了。
在骁龙888处理器的板子上,识别效果很差。慢,丢字儿,落字儿。 在骁龙680的手机上效果还不错。 内部都是8GB以上的。奇怪了。
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
JavaWeb(七)之详解JavaWeb路径
前言   在我们的实际开发中,经常要写路径,不管是链接,重定向还是转发,这都是需要路径的。那这一篇我给大家详细的分享一下Web中的各种路径问题。   世界上一切东西都是相对的,对于这点而言,相信大家并不陌生,由于这篇文章是针对于WEB阶段来讲的,所以以下绝对路径和相对路径都是针对于整个互联网而言的。   在JavaWeb中需要写的路径大概分为四大类:     1)客户端路径       超链接、表单、重定向     2)服务端路径       转发、包含     3)获取资源路径       servlet
用户1195962
2018/01/18
2K0
JavaWeb(七)之详解JavaWeb路径
JavaWeb项目(四)
(1)在用户模块下的\WEB-INF\pages\system\user\list.jsp页面中找到角色按钮,对应的点击事件和函数的绑定都已完成,roleList方法中向后台UserServelt发送请求,执行userRoleList方法,传递参数用户id
楠羽
2022/11/18
6440
JavaWeb项目(四)
【愚公系列】2023年04月 Java面面刷题系统-004.登录和权限校验
1、找到项目webapp/login.jsp登陆页面,修改form表单提交的action路径
愚公搬代码
2023/04/06
5070
Servlet注解的使用,简化配置 以及,使用模板方法设计模式优化oa项目
Servlet注解的使用,简化配置 以及,使用模板方法设计模式优化oa项目 图片 每博一文案 有句谚语说:“一怒之下踢石头,只有痛着脚趾头。” 比一件糟糕的事情更可拍的,是你用糟糕的态度去面对它。看过一个很有意思的故事: 有个男人清早洗漱的时候,把自己的手表放在了桌子上。他的儿子不小心把手表碰倒地上摔坏了,男人 气得儿子揍了一顿,还埋怨妻子没看好儿子,两个人吵了起来。 男人气急败坏地摔门出去,路上想起有一份重要文件忘记带了,他匆忙回家取。可没有人在家, 他只得打电话让妻子回来送钥匙。妻子赶回家时,不小心撞翻
RainbowSea
2023/04/10
4370
request对象详解
请求对象:封装了请求头信息,请求体信息等 .1:特点:类型:HttpServletRequest 2:生命周期: 诞生:客户端浏览器每次发出请求,都会创建一个响应对象。 销毁:服务方法执行完毕就会销毁 .3:请求对象的作用: a:作为域对象使用 .b:能够获得请求头信息 .c:获得其他的信息的API方法 .d:获得请求参数: e:请求转发和请求包含: 作用:
全栈程序员站长
2022/09/06
5320
request对象详解
Servlet学习笔记6(request请求对象、response响应对象2)
重定向的特点: <1>浏览器地址栏发生变化 <2>发送了两次请求,都是由浏览器发送的请求 重定向的路径:由于是浏览器发送的请求,所以路径必须要带项目名称, 比如:/chapter04/welcome.html; 3.HttpServletRequest请求对象 HttpServletRequest它是一个接口,它的父接口ServletRequest,在开发中,常用 的是带协议的请求对象。 请求消息:请求行、请求头、请求参数 <1>获取请求行消息的相关方法: 常用的请求行方法: [1]获取请求提交的方式:getMethod(); [2]获取请求的协议:getProtocol(); [3]获取项目名称:getContentPath(); [4]获取servlet路径:getServletPath(); [5]获取请求路径:getRequestURI(),getRequestURL(); 例如:
别团等shy哥发育
2023/02/27
5610
Servlet学习笔记6(request请求对象、response响应对象2)
重定向和转发区别[通俗易懂]
浏览器的请求发送给组件1, 组件1经过一些处理之后, 将request和response对象“传递”给组件2,由组件2继续处理, 然后输出响应(当然,也可以继续向其他组件“传递”), 这个传递的过程称之为“转发”。整个过程只涉及一次浏览器和服务器之间的“请求-响应”,转发过程中的组件共享同一个请求(request)和响应(response)对象。 转发的意义在于可以实现组件的**“分工”。**在基于MVC,多层结构的Web应用中,经常需要多个组件协同完成一次“请求-响应”工作,
全栈程序员站长
2022/10/04
1K0
重定向和转发区别[通俗易懂]
JavaWeb——HTTP响应协议及Response对象使用方法一点通及案例实战(重定向、输出字符/字节数据到浏览器、验证码实现)
HTTP协议,请求消息是客户端发送给服务器的数据,响应消息是服务器端发送给客户端的数据,其数据格式为:
Winter_world
2020/09/25
1.2K0
JavaWeb——HTTP响应协议及Response对象使用方法一点通及案例实战(重定向、输出字符/字节数据到浏览器、验证码实现)
HttpServletResponse
web服务器接收到客户端的http请求,针对这个请求,分别创建一个代表请求的HttpServletRequest对象、代表响应的一个 HttpServletResponse对象;
Albert_xiong
2021/06/21
5840
HttpServletResponse
Java Web学习总结(八)——HttpServletResponse对象(二)
请求重定向指:一个web资源收到客户端请求后,通知客户端去访问另外一个web资源,这称之为请求重定向。
Java团长
2018/08/03
8270
JavaWeb核心篇(2)——Request和Response
上篇文章中提及到了Servlet,在Servlet中我们主要继承了HTTPServlet类,在HTTPServlet类中我们会接触到两个对象
秋落雨微凉
2022/10/25
6310
JavaWeb核心篇(2)——Request和Response
HttpServletResponse对象
Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的 request 对象和代表响应的 response 对象。
用户9615083
2022/12/25
8090
HttpServletResponse对象
[Java拾遗四]JavaWeb基础之Servlet_Request&&Response
今天来回顾下之前学过Servle的Resquest以及Response的知识. 1,Request和Response技术: rr的作用:         request是请求,封装用户的请求信息.若想获取请求信息,找request就行了         response是响应,封装服务器的响应信息,若想往页面写东西,找response就可以了 rr的体系结构:         request         在servlet中有一个service(ServletRequest,ServletRespon
一枝花算不算浪漫
2018/05/18
7280
`request.getScheme()` 使用方法详解
在 Java 的 Web 开发中,我们常常需要处理用户的请求,并获取请求的相关信息。request.getScheme() 是 Java Servlet 中用于获取请求协议的方法,它能够帮助我们判断请求是通过 HTTP 还是 HTTPS 传输的。在构建安全性检查或动态配置时,这一方法显得尤为重要。
默 语
2024/11/26
4150
JavaWeb day8 Request和Response快速入门(下)Response
介绍完Response的相关体系结构后,接下来对于Response我们需要学习如下内容:
小小程序员
2023/02/22
7841
JavaWeb day8 Request和Response快速入门(下)Response
SpringBoot实现同域SSO
个人理解:当用户登录访问demo1.lzmvlog.top时,同时具有访问demo2.lzmvlog.top的能力,即认证完成一次,可以访问所有系统。
是小张啊喂
2021/03/25
4700
servlet--response、request
/* String s = "Hello outputStream"; byte[] bytes = s.getBytes(); response.getOutputStream().write(bytes); */ /** * 演示响应字节数据 */ // 把一张图片读取到字节数组中 String path = "F:/F/白冰.jpg"; FileInputStream in = new FileInputStream(path); // byte[] bytes = IOUtils.toByteArray(in);//读取输入流内容的字节到字节数组中。 // response.getOutputStream().write(bytes); IOUtils.copy(in, response.getOutputStream()); 3 设置响应头信息   可以使用response对象的setHeader()方法来设置响应头!使用该方法设置的响应头最终会发送给客户端浏览器! l response.setHeader(“content-type”, “text/html;charset=utf-8”):设置content-type响应头,该头的作用是告诉浏览器响应内容为html类型,编码为utf-8。而且同时会设置response的字符流编码为utf-8,即response.setCharaceterEncoding(“utf-8”); l response.setHeader("Refresh","5; URL=http://www.itcast.cn"):5秒后自动跳转到传智主页。 /* * 下面是用来发送响应体! */ PrintWriter writer = response.getWriter(); writer.print("欢迎XXX登录!5秒钟后会自动跳转到主页!您看到的一定是乱码!"); /* * 设置名为Refresh的响应头 */ response.setHeader("Refresh", "5;URL=/day10_1/EServlet"); 4 设置状态码及其他方法 l response.setContentType("text/html;charset=utf-8"):等同与调用response.setHeader(“content-type”, “text/html;charset=utf-8”); l response.setCharacterEncoding(“utf-8”):设置字符响应流的字符编码为utf-8; l response.setStatus(200):设置状态码; l response.sendError(404, “您要查找的资源不存在”):当发送错误状态码时,Tomcat会跳转到固定的错误页面去,但可以显示错误信息。 5 重定向 5.1 什么是重定向 当你访问http://www.sun.com时,你会发现浏览器地址栏中的URL会变成http://www.oracle.com/us/sun/index.htm,这就是重定向了。 重定向是服务器通知浏览器去访问另一个地址,即再发出另一个请求。
eadela
2019/09/29
8390
servlet--response、request
讲讲session是怎么工作的,session的用法?
马克-to-win:到现在为止,我们学会了一次单独的请求和响应之间传递参数。但是如何跨越几次请求响应之间传递参数呢?比如我以马克的身份登录,这是 一次请求响应。之后买书又是一次请求响应。如何买书的时候还记得买书的人是马克,而不是张三呢?马克这个参数存在哪呢?这是跨越两次访问。Sun公司为我 们提供了HttpSession这个接口。HttpSession session = request.getSession();通过这句话,你可以得到一个与你的浏览器绑定的session对象,存在Tomcat里。这 个session对象只认你这个浏览器,之后只要是你这个浏览器发出的请求,无论跨越多少次请求响应,这个session对象就对它开放,其它浏览器不能 访问。通过session.setAttribute()可以往session里面存值,session.getAttribute可以取值。问题是 session是如何识别你的浏览器呢?初学者可忽略:靠Cookie或者URL改写:如果浏览器支持Cookie,则使用Cookie;如果浏览器不支持Cookie或者Cookie功能被关闭,则自动使用URL改写方法。拿cookie来说(通常客户很少见关闭cookie,即使你关了,我也可以发现,之后提醒你打开或编程序重写URL),服务器往客户端写东西时,cookie会带上sessionid。当客户端再次访问服务器时,同一path下,会自动在html请求头中带上cookie信息,服务器可以在_COOKIE域中得取到想要的sessionid。
马克java社区
2021/07/07
7320
ServletRequest&ServletResponse
服务器将服务封装成一个servlet服务对象,那么客户的请求携带的数据也可以封装成一个ServletRequest服务请求对象,本质是一个接口,由不同的客户端发送进行实现,并将发送的数据封装至对应对象发送给服务器端
张哥编程
2024/12/13
1850
JavaWeb——HTTP请求协议及request对象使用方法一点通与request登录实战案例(含BeanUtils类的使用)
HTTP,Hyper Text Transfer Protocol,超文本传输协议,定义了客户端和服务器通信时,发送数据的格式。其特点是:
Winter_world
2020/09/25
1.3K0
JavaWeb——HTTP请求协议及request对象使用方法一点通与request登录实战案例(含BeanUtils类的使用)
推荐阅读
相关推荐
JavaWeb(七)之详解JavaWeb路径
更多 >
交个朋友
加入腾讯云技术交流站
前端技术前沿探索 云开发实战案例分享
加入前端工作实战群
前端工程化实践 组件库开发经验分享
加入前端趋势交流群
追踪前端新趋势 交流学习心得
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档