从2017年12月4日星期一到2017年12月15日星期五,§§0§§§在德国斯顿的§§0§§§中接待了约50名开发人员,进行hackathon开发ImageJ2和Fiji核心基础设施和plugins。
https://gitter.im/fiji/hackathon_dd_2017
自愿马拉松日历
黑客马拉松谷歌文档
https://docs.google.com/document/d/1h4uCt4PAEdeGQQwwVZC73o_Anq6-AI2KZiSzxY8kWng/edit
Twitter 上的黑客马拉松 (#hackdd17)
https://x.com/hashtag/hackdd17?vertical=default&src=hash
技术讨论
N5,不是HDF5
有关N5的更多信息,请查看github存储库here。
- 感觉像 HDF5,但将块存储在文件系统中的单独文件中。
- 是一个Java库,但Constantin Pape已经编写了它的C++/python版本:z5(也匹配“zarr”库),https://github.com/constantinpape/z5
- 属性存储 额外的 JSON 文件中
- 讨论:我们现在是否应该定义数据如何存储的标准,以防止出现HDF5那样的不同风格的动物园?
- how to do time series where each timestep / angle could have different image size
- if we want a general “N5 viewer” for images, we’d have to add calibration data
- put this information around the N5 dataset, because it behaves more like a dataset within an H5 file.
- Perhaps make it versioned? Because a duck is not always a duck… -为什么是另一种文件格式?
- parallel writes (awesome for clusters with shared filesystem)
- there is a special type for label blocks
- blocks can have a halo
- the block grid does not need to be filled dense, some blocks could be missing
- couldn’t this just be another flavor of HDF5?
- 对同一块的工件写入是否被某种锁定阻止?
- HDF5团队应该参与讨论,从他们的错误中汲取教训 - 有很多关于写入HDF5文件的信息
- 尝试将N5数据集写入FUSE文件系统/文件???这可以解决许多小文件问题吗?
大数据查看器
- BigDataViewer 有一个用于 JavaFx 的分支。 [1]
- BigDataViewer 将被拆分为 UI 独立部分,以及 Swing UI。这使得合并 BigDataViewer 的 JavaFx 和 Swing 版本成为可能。
我们讨论了 Bdv 设计的改进机会:
- Professionalbdv的核心,制定不那么智能,更可预测。
- 使用不同UI工具包的Bdv句柄,
- 使用属性模式进行设置,例如活动源…
- 主动添加/删除视图
- 更新视图(强制存储删除) - 用于BDV添加/删除视图
- 访问颜色设置、重叠渲染…
- 允许地形(外部可以)
- 考虑使用ARGBType之外的类型的累加器/复合器
- 轻松取消或替换对话框
- 轻松移至覆盖层
- BdvVistools 显示转换器/易失性函数
矩阵和维护库
- 讨论笔记:https://docs.google.com/document/d/12a_9AhFMJywm7y-SfZHuWB5cXwEkpCGt03Sxq8JVfMI/edit
- 比较不同的矩阵和支持库:https://github.com/imglib/imglib2-matrix-shootout
-结论:
- use ojAlgo for N-D matrix operations
- vector3 and vector4 is a complicated conclusion. probably use mastodon and JOML
ImageJ/Fiji 家具化
- 最初关注的令人尴尬的数据玩具
- 具体的资源(集群)实现将被抽象
- 从系统架构的角度来看,设计灵感可以来自于搜索栏功能的实现
- 开始示例定义
黑客马拉松进展
ilastik - (多米尼克·库特拉,卡斯滕·豪博尔德)
- 开发了一个 ImageJ2 插件,允许从发射的工作 ilastik 处理接收流式传输原始数据和预测:https://github.com/ilastik/org.ilastik.bdvsource
- 与 Philipp Hanslovsky 讨论使用 N5 格式进行通信的好处
- the label block format together with the fact that datasets can be stored sparse could be a great foundation for label storage / communication
- played around with Constantin Pape’s C++/Python N5 reader as available format on the ilastik server
- noticed that the only thing needed to serve a N5 dataset on the web is to serve the directory contents. Philipp wrote a N5 REST reader for BigCAT to talk to the ilastik server that way
- 解决了 ilastik server 中的一些服务器问题
- 讨论了 Matthias Arzt 的 LabKit 和 ilastik-backend 之间可能的接口,用于在 ImageJ/plugins/bdv 中进行爱情分割
SciView -(凯尔·哈林顿、乌尔里克·冈瑟、柯蒂斯·鲁登)
- 适用于设置于所有网络的斐济更新站点的自动配置
- imglib2 图像作为 3D 对象的纹理
- imagej2 风格的日志记录
- SciView 插件的公开可用性
ImageJ服务器-(Curtis Rueden、Petr Bainar)
- 讨论了 ImageJ/Fiji 架构的设计及其未来的示例
- 确定最紧迫的问题,在GitHub上提出,并集思广益可能的解决方案
- 利用 Angular 框架开发具有增强 UI 的新 JavaScript 客户端
- 向社区演示新客户端
- 鼓励社区成员使用注释来指定 SciJava 插件可以是否无头运行
SciJava - (Curtis Rueden)
- 向 pom-scijava-base 添加了最低 Java 构建版本功能 (scijava/scijava-common@d9dce68b)。
- 实施了
#@script指令(scijava/pom-scijava-base@54bf6664、scijava/scijava-common@195878b7)。 - 针对Robert Haase的问题,清理了
PrefService并修复了相关参数持久性错误(scijava/scijava-common#294)。 - 通过Klim Kolyvanov和Kyle Harrington,开发了基于文本搜索的
SearchServiceAPI (scijava/scijava-common@13e4ec32)的可扩展。最初支持搜索SciJava模块(例如命令和脚本)和ImageJ Web资源。还提供了一个代码片段执行器,如Deborah Schmidt所建议的。 - 为了回答Gabriel Selzer的问题,修复了
DynamicCommand验证器方法回调的错误(scijava/scijava-search)。 - 针对Vladimír Ulman的问题,针对无法通过
CommandService#run(imagej/imagej-ops#515)执行DynamicCommand这一事实添加了短期解决方法。
ImageJ Ops - (Curtis Rueden)
- 合并了Richard Domander对间隔变换命名空间的改进(scijava/scijava-common@753dd703)。
- 合并Richard Domander的Gabor和bigauss滤波器(imagej/imagej-ops#525)。
- 合并了Brian Northan的Frangi容器过滤器(imagej/imagej-ops#485)。
- 将Gabriel Selzer的错误修复合并到IFFT操作中(imagej/imagej-ops#530)。
- 合并Kyle Harrington基于导电的内核,可用于生成用于解绑柔性的PSF(imagej/imagej-ops#529)。
- 合并了Brian Northan的形态细化操作,从KNIME(imagej/imagej-ops#349)移植。
- 合并Gabriel Einsdorf的Sobel和Hessian过滤器(imagej/imagej-ops#317)。
- 与Eike Heinz一起,融合作业重叠的RAI(ctrueden/sandbox@b5518112)。PR在合并的下关闭,但RAI融合的动作已经到了我的沙箱(imagej/imagej-ops#230)。
- 为了回答Stefan Helfrich的问题,在上迭代操作的示例中推出了一个使用切片操作的示例(imagej/imagej-legacy@e89ce40e)。
ImageJ 遗产 - (Curtis Rueden)
- 为了回答Christian Tischer的问题,修复了参数可见性的错误(ctrueden/sandbox@753dd703)。
ImageJ 启动器 - (Curtis Rueden)
- 合并了 AppVeyor 和 Travis CI 的 Klim Kolyvanov 的 CI 配置 (imagej/imagej-launcher@e501d695)。
- 对启动器与 Java 9 配备使用所需的最小更改进行了修改(imagej/imagej-launcher#49)。
生物格式 - (Curtis Rueden)
- 为了回答 Klim Kolyvanov 和 Ulrik Günther 的问题,提交了 PR,促进高级 Bio-Formats API 能够直接接受文件模式 (imglib/imglib2-ij#12)。
- 修复了 Fiji 的新和现有的 Java-8 安装,很快与 Bio-Formats 正常工作(1)。这需要一个脚本,指示 Java 6 版本 Fiji 的用户启用 Fiji-Legacy 更新站点,并指示新的 Java 8 版本 Fiji 的用户启用 Java-8 更新站点。
ClearControl / ClearVolume / ClearCL(罗伯特·哈斯,卢瓦克·罗耶)
- Royer 等人进行图像质量/焦点测量。纳特。生物技术。 (2016) 在初步更新网站上以 Fiji plugin 形式提供
- 增加了对区域、组织深度(环)或平铺在整个图像上的图像质量测量的支持
- 修复了有关发现使用 ClearCLs分发机制的 OpenCL 文件的错误
- 改编ClearControl软件在另一台工作站上运行
- 恢复了控制滤光轮和变形镜的代码
- 合并从Max到ClearControl-lightsheet的更改,准备他的时间步进程序
ImgLib2 IJ - (马蒂亚斯·阿兹特)
- 添加基于 imglib2-caches 的 IJ1 VirtualStack 包装器,以支持大型虚拟堆栈。 (openmicroscopy/bioformats#3019)
- 重构,ImagePlus的包装器(maarzt/imglib2-labkit)
Labkit - (马蒂亚斯·阿兹特)
- 改进了 Labkit 插件的可用性。 (imglib/imglib2-ij#11)
- 不同稀疏 ROI 实施的基准。
ImgLib2 ROI -(Alison Walter、Tobias Pietzsch、Curtis Rueden)
- 与以下内容相关的变更:imagej/imagej-omero#69
- Improved transform operation for ROIs
- Fixed boundary computation for transformed ROIs
- Added knownConstant to ROIs for determining if a ROI will always return
falseortrue - Removed
typeparameter for wrappers inMasksstatic methods,BoolTypeby defaultImageJ-OMERO -(艾莉森·沃尔·特、乔什·摩尔)
-添加了集成测试结构(imglib/imglib2-roi#29)
- 开始添加集成测试(kivy/pyjnius#316)
- 讨论了 ROI 支持和 ROI 转换
BigCAT(菲利普·汉斯洛夫斯基)
- relevant bigcat branch
- 当地绘画功能
- Multi-scale WIP
- Used for dense annotations but can be used for label creation for classifier training
- 添加了 N5 和 HDF5 的打开对话框
- Auto-discovery
- Channels
- Time series
- multi-scale
- User guidance in case of invalid input
- 创建了一个模拟服务器以通过http Rest api访问本地文件系统
- 确认的时间序列和多通道功能
- 连接到 ilastik (Dominik Kutra、Carsten Haubold)
- 尝试重新引入 3D 渲染场景以及David Hörl(WIP)
scyjava 和 imglyb(Philipp Hanslovsky、Curtis Rueden)
- 计划在 imglyb 中分离 Java 和 Python 代码
- 围绕pyjnius创建了scyjava Python包装器,以允许运行时解析尚未位于类路径上的jar/类。
- For now: Facilitiate groovy grape, might switch to more generic scijava-grab library later on.
- Removes fat jar requirement of imglyb and will make it easier to distribute
- Currently WIP as jnius.autoclass does not accept custom class loaders as parameter: (imagej/imagej-omero#70)
图像序列配准插件 (Christian Tischer)
- 编写了一个用于图像序列注册的ImageJ2插件
- github上的来源代码
- 通过新的斐济更新站点EMBL-CBA安装
- 编写代码方便添加其他注册方式
- 当前功能
- Accepts N-dimensional input, allowing the user to select which axes to register
- Translational registration using phase-correlation
- Translational and rotational registration, using phase-correlation for translation and “brute-force” testing of all rotations within user specified range
- Region of interest selection
乳齿象(Jean-Yves Tinevez、Tobias Pietzsch)
- 用户指定的标签
- 可编辑的TrackScheme图表
- 修改了动作处理以允许切换键盘映射
- 导航到分支/父/操作兄弟
- 首选项对话框
- Render settings for BDV view
- Keymap configuration
- 代码清理