文献阅读:Viv:在 web 上多尺度可视化高分辨率多重生物成像数据
文献介绍
「文献题目」 Viv: multiscale visualization of high-resolution multiplexed bioimaging data on the web
「研究团队」 Nils Gehlenborg(美国哈佛医学院)
「发表时间」 2022-05-11
「发表期刊」 Nature Methods
「影响因子」 47.9
「DOI」 10.1038/s41592-022-01482-7
摘要
高度多重成像技术的进步使得能够对健康和患病状态下的复杂组织进行全面分析,从而促进了在空间分辨、亚细胞分辨率下对基础生物学和人类疾病的研究。尽管生物成像的快速创新带来了重大的科学价值,但没有统一的可交互操作标准的技术,限制了结果的分析和共享。采用社区设计的下一代文件格式 (next-generation file formats, NGFF) 是促进大规模生物成像交互操作性的拟解决方案。本文作者介绍了 Viv(https://github.com/hms-dbmi/viv),一个开源生物成像可视化库,直接在 web 上支持 OME-TIFF 和 OME-NGFF。Viv 通过消除对服务器端渲染的依赖,解决了大多数基于 web 的生物成像查看器的一个关键限制,提供了一个灵活的工具包,无需安装软件即可在移动和桌面设备上浏览多 TB 数据集。
研究结果
Viv 的功能与流行的桌面生物成像应用程序更相似,不同于相应的 web 替代品(Supplementary Note 1)。大多数 Web viewers 需要将大型二进制数据文件预先转换为渲染的图像(PNG 或 JPEG),以便在浏览器客户端中显示。两种现有方法执行此步骤(服务器端渲染),但在渲染发生时间以及一次转换多少二进制数据方面有所不同(Fig. 1)。离线选项在将应用程序部署给用户之前执行所有渲染,这意味着所有通道分组和数据转换都是固定的,无法通过用户界面进行调整。在线选项支持按需、用户定义的渲染,但在探索数据转换时会引入延迟,并且需要主动维护复杂的服务器基础设施。这两种方法都没有提供灵活的解决方案来直接查看大型公共数据存储库中以开放格式保存的数据集,并且服务器端渲染引入的瞬态数据表示抑制了与其他可视化和分析软件的互操作性。
DT 表示数据转换为图像的位置。右栏显示 Viv 灵活的客户端渲染的子集,包括 multiscale 2D pyramids、magic lenses、3D volumes via raycasting。
Viv 实现纯粹的客户端渲染,将浏览器与服务器解耦,同时仍然提供按需多通道渲染的灵活性。现有的 Web viewers 也利用图形处理单元 (GPU) 加速渲染,但通常针对单通道体积数据集进行定制,最重要的是,缺乏为现有或新颖应用程序重用和组合功能的能力。相比之下,Viv 的模块化允许重新调整和扩展核心功能。该库由两个主要组件组成:(i) OME-TIFF 和 OME-NGFF 的数据加载模块,以及 (ii) 可在用户设备上呈现全位深度主要数据的可配置 GPU 程序。
Viv 的数据加载组件负责通过 HTTP 从二进制文件中获取和解码压缩通道数据的原子“chunks”。Viv 以 OME-TIFF 和 OME-NGFF 为目标,以满足生物成像界的多样化需求,并促进可交互操作的开放标准的使用。尽管 OME-TIFF 更为普遍,但其二进制布局和 metadata 模型限制太大,无法有效表示大容量和高维数据集。OME-NGFF 旨在解决这些限制,并且由于底层的多维 Zarr 格式 (https://doi.org/10.5281/zenodo.3773450),可以从云本地访问。Zarr 提供对各个 chunks 的直接访问,而 TIFF 需要寻求从不同平面访问 chunks,在读取具有大 c、t 或 z 维度的数据集时会引入较长的延迟。与基因组学中流行的方法类似,作者建议对 OME-TIFF 建立索引以改善随机 chunks 检索时间。作者的方法 Indexed OME-TIFF 提高了读取效率,并作为 OME-TIFF 的可选扩展实现 (https://doi.org/10.6084/m9.figshare.19416344)。
Viv 的图像层协调获取数据 chunks 和 GPU 加速渲染。所有渲染都发生在客户端 GPU 上,允许连续即时更新颜色映射、不透明度、通道可见性和仿射坐标变换等属性,而无需额外的数据传输。库用户可以使用自定义 WebGL 着色器修改渲染,这是 Viv 用来实现应用本地数据转换的 'magic lenses' 的功能:例如,重新缩放亮度或过滤特定通道。
由于所有渲染都转移到浏览器,Viv 不像以前的 Web viewers 那样依赖服务器来获取高度复用和多尺度的图像,从而使其灵活且能够嵌入到各种应用程序中 (https://doi.org/10.6084/m9.figshare.19416401)。作者通过 Imjoy 将 Viv 集成到 Jupyter Notebooks (https://github.com/hms-dbmi/vizarr) 中,以实现远程人机交互多模式图像配准工作流程和直接浏览 OME-NGFF 图像。Viv 也是 Vitessce 单细胞可视化框架成像组件的基础,展示了其与包括成像模式在内的其他模块化工具集成并为其提供动力的能力。最后,作者开发了 Avivator (http://avivator.gehlenborglab.org), 这是一个独立的图像查看器,展示了 Viv 丰富的功能集。
凭借其可扩展性和最低的部署要求,Viv 提供了一个新颖的工具包,可用于构建各种可重复使用的生物成像应用程序。它最适合显示高度多重和多尺度数据集的 2D 可视化,但也支持通过光线投射进行 3D 可视化。作者并不期望 Viv 取代现有的基于 web 的查看器,而是引导新一代基于 web 的可视化和分析工具来补充同样围绕可交互操作标准构建的桌面软件。
注:本文为个人学习笔记,仅供大家参考学习,不得用于任何商业目的。如有侵权,请联系作者删除。
本文由 mdnice 多平台发布
相关文章:
文献阅读:Viv:在 web 上多尺度可视化高分辨率多重生物成像数据
文献介绍 「文献题目」 Viv: multiscale visualization of high-resolution multiplexed bioimaging data on the web 「研究团队」 Nils Gehlenborg(美国哈佛医学院) 「发表时间」 2022-05-11 「发表期刊」 Nature Methods 「影响因子」 47.9 「DOI…...
SpringBoot整合Logback日志框架
Logback 是一个灵活而高效的日志框架,它是由 Ceki Glc 开发的,也是 Log4j 的创建者之一。Logback 旨在成为 Log4j 的替代品,并提供了一系列强大的功能和性能改进。 以下是 Logback 的一些主要特点和功能: 模块化结构:…...
知识图谱与人工智能:携手共进
知识图谱与人工智能:携手共进 一、引言:知识图谱与人工智能的融合 在这个数据驱动的时代,知识图谱与人工智能(AI)之间的融合不仅是技术发展的必然趋势,也是推动各行各业创新的关键。知识图谱,作…...
全栈的自我修养 ———— react实现滑动验证
实现滑动验证 展示依赖实现不借助create-puzzle借助create-puzzle 展示 依赖 npm install rc-slider-captcha npm install create-puzzleapi地址 实现 不借助create-puzzle 需要准备两张图片一个是核验图形,一个是原图------> 这个方法小编试了后感觉比较麻烦…...
<<、>>和>>>
1.左移操作符(<<): 左移操作符将数字的二进制表示向左移动指定的位数。右侧空出的位用0填充。左移操作相当于乘以2的幂。 例如: int num 4; // 二进制表示为 0100 int shifted num << 1; // 结果为 8,二进制表示为 10002.带…...
【C++进阶】RAII思想&智能指针
智能指针 一,为什么要用智能指针(内存泄漏问题)内存泄漏 二,智能指针的原理2.1 RAII思想2.2 C智能指针发展历史 三,更靠谱的shared_ptr3.1 引用计数3.2 循环引用3.3 定制删除器 四,总结 上一节我们在讲抛异…...
探索量子计算:打开未来技术的大门
在科技领域,每一次技术革命都能开启新的可能性,推动人类社会进入一个新的时代。当前,量子计算作为一种前沿技术,正引领着下一轮科技革命的浪潮。本文将深入探索量子计算的奥秘,解析其工作原理,并通过一个简…...
C++11 设计模式2. 简单工厂模式
简单工厂(Simple Factory)模式 我们从实际例子出发,来看在什么情况下,应用简单工厂模式。 还是以一个游戏举例 //策划:亡灵类怪物,元素类怪物,机械类怪物:都有生命值࿰…...
RabbitMQ-死信队列常见用法
目录 一、什么是死信 二、什么是死信队列 编辑 三、第一种情景:消息被拒绝时 四、第二种场景:. 消费者发生异常,超过重试次数 。 其实spring框架调用的就是 basicNack 五、第三种场景: 消息的Expiration 过期时长或队列TTL…...
2024/4/14周报
文章目录 摘要Abstract文献阅读题目创新点CROSSFORMER架构跨尺度嵌入层(CEL)CROSSFORMER BLOCK长短距离注意(LSDA)动态位置偏置(DPB) 实验 深度学习CrossFormer背景维度分段嵌入(DSW)…...
MySQL 社区版 安装总结
很早就安装过MySQL,没有遇到过什么问题,直接next就行了,这次在新电脑上安装却遇到了一些问题,记录一下。 安装的是MySQL社区版,下载地址是www.mysql.com,进入后选择DOWNLOAD页面,选择MySQL Com…...
二叉排序树的增删改查(java版)
文章目录 1. 基本节点2. 二叉排序树2.1 增加节点2.2 查找(就是遍历)就一起写了吧2.3 广度优先遍历2.4 删除(这个有点意思)2.5 测试样例 最后的删除,目前我测试的是正确的 1. 基本节点 TreeNode: class TreeNode{pri…...
linux下coredump问题的定位分析方法
(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu) 参考:https://blog.csdn.net/m0_73698480/article/details/130077852 最近定位了一段时间linux下的崩溃问题,又收集了一些思路,特整理记录一下。 常见coredump定位方法是:…...
第十届蓝桥杯省赛真题(C/C++大学B组)
目录 试题 A: 组队 试题 B: 年号字串 试题 C: 数列求值 试题 D: 数的分解 试题 E: 迷宫 试题 F: 特别数的和 试题 G:完全二叉树的权值 试题 H:等差数列 试题 I:后缀表达式(不一定对) 试题 J:灵能…...
Scrapy 爬取m3u8视频
Scrapy 爬取m3u8视频 【一】效果展示 爬取ts文件样式 合成的MP4文件 【二】分析m3u8文件路径 视频地址:[在线播放我独自升级 第03集 - 高清资源](https://www.physkan.com/ph/175552-8-3.html) 【1】找到m3u8文件 这里任务目标很明确 就是找m3u8文件 打开浏览器…...
LVGL简单记录
1、 vs中代码旁边有个小锁删除git 2、Visual Studio 试图编译已删除的文件, 如果这个文件也是你不再需要编译的文件,且已经从文件系统中删除,你需要从 .vcxproj 文件中移除或者注释掉这一行,以停止Visual Studio尝试去编译一个不…...
计算机网络——ARP协议
前言 本博客是博主用于复习计算机网络的博客,如果疏忽出现错误,还望各位指正。 这篇博客是在B站掌芝士zzs这个UP主的视频的总结,讲的非常好。 可以先去看一篇视频,再来参考这篇笔记(或者说直接偷走)。 …...
【C++]C/C++的内存管理
这篇博客将会带着大家解决以下几个问题 1. C/C内存分布 2. C语言中动态内存管理方式 3. C中动态内存管理 4. operator new与operator delete函数 5. new和delete的实现原理 6. 定位new表达式(placement-new) 1. C/C内存分布 我们先来看下面的一段代码和相关问题 int global…...
深入理解计算机网络分层结构
一、 为什么要分层? 计算机网络分层的主要目的是将复杂的网络通信过程分解为多个相互独立的层次,每个层次负责特定的功能。这样做有以下几个好处: 模块化设计:每个层次都有清晰定义的功能和接口,使得网络系统更易于设…...
亚马逊云科技CTO带你学习云计算降本增效秘诀
2023亚马逊云科技一年一度的重磅春晚--Re:invent上有诸多不同话题的主题Keynote,这次小李哥带大家复盘来自亚马逊CTO: Wener博士的主题演讲: 云架构节俭之道1️⃣节俭对于云计算为什么重要? ▶️企业基础设施投入大,利用好降本策略可以减少巨…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散
前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说,在叠衣服的过程中,我会带着团队对比各种模型、方法、策略,毕竟针对各个场景始终寻找更优的解决方案,是我个人和我司「七月在线」的职责之一 且个人认为,…...
ZYNQ学习记录FPGA(一)ZYNQ简介
一、知识准备 1.一些术语,缩写和概念: 1)ZYNQ全称:ZYNQ7000 All Pgrammable SoC 2)SoC:system on chips(片上系统),对比集成电路的SoB(system on board) 3)ARM:处理器…...
大数据治理的常见方式
大数据治理的常见方式 大数据治理是确保数据质量、安全性和可用性的系统性方法,以下是几种常见的治理方式: 1. 数据质量管理 核心方法: 数据校验:建立数据校验规则(格式、范围、一致性等)数据清洗&…...
