生物图像处理的新进展,如目标分割,跟踪1机器学习框架使研究人员能够提取更多的信息,并对图像数据提出更多的问题。这些创新越来越多地用Python编程语言编写,利用其广泛的软件库(例如NumPy2和SciPy3.),以及对不同编程熟练程度的研究人员的易用性。随着Python软件库多年来不断发展以满足新的图像处理需求,ImageJ也是如此——一个基于java的开源软件包和平台,广泛用于科学图像分析。ImageJ允许研究人员执行各种图像处理和分析任务,如边缘检测、平铺图像拼接、物体和细胞谱系跟踪;骨骼化等形态学操作;以及各种数据预测。所有这些操作都可以组合在一起,以宏和脚本的形式构建复杂的工作流。此外,ImageJ的功能通过使用插件得到了扩展——这些新功能是用Java编写的,可以直接从ImageJ访问,能够将尖端技术引入ImageJ平台。ImageJ支持一个活跃的软件开发人员社区,他们生产和维护这三种扩展类型,近年来这些扩展类型包含了深度学习功能4.
不幸的是,基于java和基于python的程序不能一起工作或无缝共享数据。如果无法在Python和ImageJ之间轻松交换数据,则必须在各自的环境中重新实现特性或构建目标包装器;这是不可扩展的。跨两种语言的社区需要一个桥梁,以实现无缝的功能集成,而无需重复工作。
为了满足这一需求,我们在这里提出了PyImageJ,这是一个基于python的包,构建在ImageJ2(参考。5),它提供了Python和基于ImageJ的软件之间的基本互操作性,包括原始ImageJ, ImageJ2和ImageJ的斐济发行版6.通过PyImageJ,我们的目标是支持想要将ImageJ及其插件库与基于python的例程结合起来的软件开发人员,以及想要在分析工作流中做同样事情的科学家。PyImageJ是跨平台的,可以在Linux、macOS和Windows操作系统上运行,可以从PyPI和conda-forge安装。PyImageJ通过将Java初始化为Python的子进程来实现ImageJ和Python之间的双向通信,这样任何基于Java的功能都可以从Python程序中使用,并且可以编写新的基于Python的例程来增强Java程序。另一种范例是将Python初始化为Java的子进程,在某些场景中也很有用,目前正在开发中。ImageJ2的体系结构由构建在两个关键层上的库组成:https://scijava.org/),提供基本的基础设施,不以图像为特定对象;和ImgLib2(参考。7),提供核心图像数据模型(图;1).因此,PyImageJ是建立在两个基本的Python包上的——scyjava (https://github.com/scijava/scyjava)和imglyb (https://github.com/imglib/imglyb)——它们分别作为基于java的SciJava和ImgLib2包的基于python的集成层。
蓝色显示Python环境和示例Python应用程序。红色显示了ImageJ2软件堆栈和运行在特殊的python集成Java虚拟机(JVM)中的示例插件。在Python环境中,PyImageJ使用jype(来自scyjava层)来创建与Python集成的JVM,该JVM将运行ImageJ2软件堆栈。在Java环境中,这个封装的JVM包含了所有用户请求的Java库,包括ImageJ、ImageJ2和其他插件——例如,来自Fiji和/或其他ImageJ更新站点的插件。Python顶层PyImageJ提供了对ImageJ2网关和Python便利函数的访问。python端imglyb与java端ImgLib2接口。最后,Python scyjava层提供了基本组件,如JVM配置和类型转换。
第一层,scyjava,利用jgo项目(https://github.com/scijava/jgo)检索ImageJ2 Java库,以及jpy (https://jpype.readthedocs.io/en/latest/)来创建一个特殊的与python集成的Java环境,其中包含这些库。这种设计使scyjava能够透明地下载和缓存从远程在线存储库打包的Java库,将Java环境作为包含这些库的子进程启动,将Java类包装为具有所有相同函数的动态生成的Python类,并在Java和Python之间转换常见数据结构,如列表、集和字典或映射。值得注意的是,scyjava包对于任何基于java的库到Python程序的进程内集成都很有用,并且可以独立于PyImageJ使用。
Python和ImageJ之间的图像数据交换是通过imglyb层完成的,imglyb层通过共享内存提供了对NumPy数组和元数据丰富的xarray数据的零拷贝访问。使用共享内存存储图像数据不仅减少了内存使用和处理时间,而且使用户能够立即看到基于python的图像上ImageJ处理的结果。已转换为适当的Python类型(即NumPy或xarray)的ImageJ图像可以由基于Python的图像处理工具(如napari)访问8,一个快速和交互式多维图像查看器,或CellProfiler9,这是一个工作流工具,可重复地将分析扩展到大量数据。RunImageJScript CellProfiler插件已经显示了性能的提高,例如,它允许用户应用来自可训练的Weka Segmentation的模型10(一个ImageJ插件)作为他们特征分类工作流程中的一个步骤。PyImageJ为用户提供了对完整的ImageJ2应用程序编程接口(API)的交互式访问,包括ImageJ2的所有功能和插件,以及原始的ImageJ API,可通过ImageJ2的向后兼容遗留层访问。PyImageJ还支持没有图形用户界面(GUI)元素的无头模式,在没有计算机监视器的系统上支持工作流程(例如,远程服务器)——所有ImageJ2命令都可以在无头模式下使用,尽管原始ImageJ的功能受到其对GUI元素的潜在依赖的限制。
总而言之,PyImageJ通过从根本上集成两个软件生态系统,让用户可以访问Python和ImageJ的优点。PyImageJ支持Python和ImageJ之间健壮的数据互操作性,使用户能够创建包含Python和ImageJ元素的工作流。
数据可用性
PyImageJ用例中使用的所有数据都可以在https://github.com/imagej/pyimagej/tree/master/doc/sample-data.
代码的可用性
PyImageJ的源代码、文档、教程和用例可以在开源Apache软件许可下在线找到https://github.com/imagej/pyimagej.
参考文献
Tinevez J.-Y。et al。方法115, 80-90(2017)。
哈里斯,C. R.等。自然585, 357-362(2020)。
维尔塔宁等人。Nat方法。17, 261-272(2020)。
Gómez-de-Mariscal, E.等。Nat方法。18, 1192-1195(2021)。
鲁登,c.t.等人。BMC生物信息学18, 529(2017)。
Schindelin, J.等。Nat方法。9, 676-682(2012)。
皮茨施,普里比施,S, Tomančák, P. & Saalfeld, S。生物信息学28, 3009-3011(2012)。
sofronview, N.等人。napari / napari: 0.4.15rc1(Zenodo, 2022);https://doi.org/10.5281/zenodo.6325333
斯特林,D. R.等。BMC生物信息学22, 433(2021)。
阿甘达-卡雷拉斯等人。生物信息学33, 2424-2426(2017)。
确认
这个包只有通过jgo和SciJava插件框架才能实现。我们感谢P. Hanslovsky的贡献,他是imglyb的架构师和jgo的共同作者。作者还感谢一些人的各种贡献和建议,包括e.t. A Dobson, J. Eglinger, S. Griffin, R. Haase, Y. Liu, H. Mary和L. Yang。我们也感谢PyImageJ用户社区的大量输入和反馈。这项工作得到了美国国立卫生研究院的支持(P41GM135019 to A.E.C, B.A.C.和k.w.e;T32CA009206到M.A.P.;T32GM008349到M.A.P.);陈·扎克伯格倡议向B.A.C、c.t.r和k.w.e提供资金;国家科学基金(1429045 to k.w.e);以及光学和计算仪器实验室和莫格里奇研究所提供的额外内部资金。
作者信息
作者及隶属关系
贡献
PyImageJ由C.T.R、M.H.和e.l.e共同完成编码的开发和实现;个案工作由C.T.R M.C.H, E.L.E, M.A.P, A.M.L, b.a.c。K.W.E.;由C.T.R, M.C.H, E.L.E,M.A.P.整理稿件, A.M.L, A.E.C, B.A.C.和k.w.e;以及由A.E.C、B.A.C.和k.w.e提供资金和项目管理
相应的作者
道德声明
相互竞争的利益
作者声明没有利益竞争。
同行评审
同行评审信息
自然方法感谢Guillaume Jacquemet、Juan Nunez-Iglesias和Daniel Sage对这项工作的同行评审所作的贡献。
权利和权限
关于本文
引用本文
鲁登,ct,希纳,M.C,埃文斯,E.L.et al。PyImageJ:用于集成ImageJ和Python的库。Nat方法(2022)。https://doi.org/10.1038/s41592-022-01655-4
发表:
DOI:https://doi.org/10.1038/s41592-022-01655-4