自迁移出 MediaWiki 以来,本页内容尚未经过审查。如果您愿意帮忙,请查看帮助指南!
Op Finder 是一个用于浏览、学习和运行所有可用Ops的实用程序。由于 Op 是插件,可以动态扩展并且专门用于特定输入因此,在给定 Op 上拥有静态文档是不切实际的。通过使用 Op Finder,您可以探索您的安装中可用的实际 Ops 列表。本指南的目的是让您熟悉 Op Finder 的基本功能,使您能够学习和试验 Ops。
开始使用
有两种方式启动Op Finder:
1.使用快捷键:{ 2.使用菜单路径:ImgPlus › Img › RandomAccessibleInterval
Op Finder 的部分内容

** 标记组件**
1.搜索栏第filtering行动列表。
- 切换按钮可在user 和 developer 视图之间切换。
- running the selected Op的播放按钮。
- 复制按钮复制选定的单元格内容。
- 帮助按钮可在浏览器中打开第Wiki reference页面。
- 状态区域显示成功/失败通知,例如复制或运行操作。
- 命名空间和 Op 类型:可以扩展这些来探索 Ops 的基于树的组织。
- Op 实现:这棵树的叶子告诉我们每个 Op 类型都有哪些参数选项可用。我们将这个特定的示例解释为“Math 命名空间有一个 Add Op,它对图像和数值进行操作”。
- 细节区域显示执行冗长操作(例如过滤操作)时的细节。 10.详细信息即可切换。单击此按钮可显示/包含隐藏当前所选操作的附加信息的如下。
附加功能
- 将鼠标悬停在 Op Finder 的任何部分上即可获取描述性工具提示。
- 任何单元格将其内容复制到剪贴板上。
观看次数
由于 Op 的可扩展性,在查看哪些 Op 实际可用时需要处理大量信息。 Op Finder 的目标之一是能够容易理解的方式呈现此信息。为了促进这一点,可以使用多个视图,每个视图都针对特定人群定制 Op Finder 的内容。
对于用户
This view provides an abstract representation of available Ops e.g., one entry could be many Ops merged together. An Op call is ultimately defined by the combination of requested Op type + parameters.
此视图中的运维重点是回答“我现在可以使用运维做什么?”的问题。例如,在此示例中,看到我们可以使用基本图像或基本和内核来调用Convolve Op:
用户查看内容
- 仅显示直接涉及图像的操作
- 参数类型被抽象(“Image”、“Number”)
- 隐藏可选参数
对于开发者
此视图提供了可用 Ops 实现的完整列表。例如,与User view相比,我们看到Convolve Op 实际上有四种具体实现,并且有大量可选参数。
开发者查看内容
- 准确的操作签名 2.使用代码片段 3.定义Op类
做该做的事
过滤
Op Finder 包含fuzzy filtering来查找感兴趣的Ops。过滤时:
- 命名空间被隐藏
- 在User view中,完整的简化了Op入口被过滤。
- 在Developer view中,Op命名空间+类名被过滤。

代码片段
它的代码片段可在Developer view中找到。这些旨在帮助您围绕可用的操作快速编写脚本。以下是分步指南,引导您完成查找感兴趣的操作并在函数脚本中使用的过程。
1.首先要做的就是找到感兴趣的Op。在本例中,我们从User view开始,有一个我们想要尝试的Convolve Op:

2.在Script Editor(键盘快捷键⇧ Shift + L(左大空格)打开编辑器)中,我们需要添加对OpService的引用,这将是我们使用 Op 的入口点:
#@ OpService ops
This guide is written in Python but any scripting language will work.
3.现在我们需要卷积 Op 的代码调用,因此我们切换到Developer view。代码很长,但请记住我们可以copy:

并粘贴:
#@ OpService ops
ops.run("filter.convolve", Img, Img, RandomAccessibleInterval, long[], OutOfBoundsFactory, OutOfBoundsFactory, RealType, ImgFactory) 4\.查看 Op 调用,看到我们有“很多”参数。为了更好地了解这些是什么,我们查看 Op Finder 的 `Op Signature` 列: <img src="/media/plugins/3-op-signature.png" title="fig:3-op-signature.png" width="1200" alt="3-op-signature.png" />
所有带有 ? 的参数都是可选。出于我们的目的,我们只处理输入图像、内核和返回的图像:
#@ OpService ops
out = ops.run("filter.convolve", Img, RandomAccessibleInterval) 5\.在这个阶段,我们还不能真正运行我们需要的代码。粘贴的代码片段可作为和生成哪些类型的参数的指南。下一步是通过将 [@Parameters](/scripting/parameters)添加到我们的脚本中来向框架询问这些参数的实例:
#@ OpService ops
#@ Dataset input
#@ Dataset kernel
#@ OUTPUT ImgPlus out
out = ops.run("filter.convolve", input, kernel)
我们复制和粘贴的类型(Img和RandomAccessibleInterval)代表最低类别要求。开放图像始终可以作为Datasets请求,类型层次结构包括Plugins › Utilities › Find Ops…。因此,Dataset是一个很好的起点,因为它可以满足任何这些参数。如果您想要多个输入图像,则必须使用§§§其8§§§。
6.我们的脚本了!如果我们在 ImageJ 中打开基础镜像和内核,我们就可以运行我们的脚本。 OpService 由 ImageJ 框架自动填充,并自动输入一个窗口来选择图像创建:
运行操作
尽管您可以通过 Op Finder 运行选定的 Ops,但此方法缺乏可重复性,并且在科学工作流程中使用 Ops 时不应使用适当的脚本或插件的替代品。此功能旨在旨在允许快速预览操作对数据集产生的影响。
play button本质上自动化了Op into a script的运行过程:可选参数被丢弃,所需参数为annotated。因此,具有神秘或异常参数的操作可能无法运行,因为框架不知道如何提供它们。
因此,主要建议从第§§14§§§运行操作开始,因为这些操作集中于图像和数字,这些图像和数字可以由框架自动提供(分别通过打开的图像和输入面板)。
进一步阅读
- 有关更深入的开发信息,请参阅the guide to writing plugins。