fiji / hdf5_vibez Goto Github PK
View Code? Open in Web Editor NEWHDF5 plugin for ImageJ and Fiji.
Home Page: https://imagej.net/HDF5_Vibez
License: GNU General Public License v2.0
HDF5 plugin for ImageJ and Fiji.
Home Page: https://imagej.net/HDF5_Vibez
License: GNU General Public License v2.0
Hi,
I've been trying to get this plugin working with Fiji on an M1 MacBook. While Fiji is running natively it seems that there are no native HDF5 libraries available for this plugin. Is there any chance that this will be updated in the future?
I have not been able to do any debugging myself (I'm very new to programming and I mainly work with Python), so I don't know what exactly is causing this error. I'm running all the latest updates on an ubuntu 16.04 machine. Please let me know any necessary info I have left out.
Hi guys,
I know that this project needs serious reworking to become Scifio compatible, but could you please make reading and writing methods from HDF5ImageJ
public? Using IJ.run()
always shows the image which is pretty annoying in scripts...
Cheers,
Radek
Dear team,
Could I ask for the support to load dataset larger than 2GB? Because I think that hdf5 is chosen for much larger data, which has performances better than stack tiff.
Thanks!!!
Expected behavior: loads correctly
Actual behavior: displays error message and closes
It would be great to implement HDF5 as IJ2 plugin so one could work with Dataset
s directly. This could be implemented quite quickly... Of course SCIFIO would be the next step, but this would require some architecture decisions.
For example, IOService.open(String source)
only takes one argument, yet HDF5 requires both filename and dataset name. One could return some kind of lazily-loaded Dataset pointing to separate HDF5 datasets, but yeah... This really needs architecture decisions...
@ctrueden your thoughts on this?
As far as I can tell, HDF5_Vibez does not support reading from external links. I would like to add this functionality. I've forked the repo, will do my best, and submit a pull request when/if I come up with something that works. Any pointers from existing contributors on this matter would be a big help (e.g. which file, which section of which file, would be most appropriate to begin looking at). Some documentation of the issue:
Suppose I have a .h5 file which contains only external links; when I attempt to open such a file in Fiji with File --> import --> hdf5, I see the following:
So, HDF5_Vibez knows the external links are there, but does not make them available for reading.
On the other hand, HDF5 compass can traverse the links in the same file no problem:
So, I think the file is ok. FYI, I created the file using h5py:
`#!/usr/bin/env python3
import os
import h5py
cwd = os.getcwd()
h5_files = os.listdir(cwd)
h5_files.sort()
h5_files = [s for s in h5_files if s.endswith('.h5')]
container_name = 'container.h5'
container = h5py.File(container_name, 'w')
for i, h5_file in enumerate(h5_files):
key = 'timepoint{}_extlink.h5'.format(i)
container[key] = h5py.ExternalLink(cwd+'/'+h5_file, '/default')
`
Use case:
I have thousands of separate .h5 files, each a separate time point from the same time series experiment. I don't want to build a new .h5 file, rewriting the separate time points as groups, as this will take forever and the file will be huge. So, creating container files with external links to just the subset of time points that I want, and then using that to access those time points, seems like a crafty solution... but I need to be able to load and view the results.
We are working with highly asymmetric datasets (100 px x 40,000 px). Here an example. Zooming to an arbitrary selection fails.
Image --> Zoom --> To Selection
The action zooms out totally, instead of to the selected region (yellow box in screenshot). Could you please explain how to zoom asymmetrically i.e. with different factors in x and y direction? Thanks.
I work for a large microscopy center which is starting to generate data written in HDF5 format (FEI's EMD format). Your HDF5 vibez plugin for Fiji is extremely useful for users who are not able to read the data using any other GUI based software. However, signed integer 16-bit data is not being properly read. It looks like there is an issue between converting from HDF5 int16 and ImageJ's int16 format.
I had a similar issue writing a Jython plugin for Fiji. The solution was to read unsigned and signed data as signed. Then everything worked when creating a ImagePlus.
The issue is probably in this part of the Vibez plugin
As per information from my issue posted to the ImageJ Forum linked above:
short in Java is always signed (-32,768 to 32,767)
a ShortProcessor in ImageJ1 is always unsigned
I am not a Java developer and not setup to compile/test this in ImageJ. Do you have anytime to look into this issue?
I can send a small test H5 file with int16 and uint16 datasets to show the problem. It's easy to create this using the following Python code
import h5py
import numpy as np
int1 = np.linspace(-32768,32767,100,dtype=np.int16)
uint1 = np.linspace(0,65535,100,dtype=np.uint16)
YY,XX = np.meshgrid(int1,int1)
YYu,XXu = np.meshgrid(uint1,uint1)
with h5py.File('integers.h5','w') as f1:
f1.create_dataset('int16',data=XX.astype(np.int16),compression='gzip')
f1.create_dataset('uint16',data=XXu.astype(np.uint16),compression='gzip')
f1.create_dataset('XX',data=XX.astype(np.float32),compression='gzip')
f1.create_dataset('XXu',data=XXu.astype(np.float32),compression='gzip')
Here is the data read into Fiji using your plugin:
uint16
PS Thank you very much for all your work on this plugin. Its extremely useful and will see a lot more use as HDF5 data sets become more ubiquitous.
Hello,
I'm about to set up a project in Eclipse, that uses scifio and HDF5_Vibez.
It's fine so far, all imports are resolved, the only issues are with float(), uint8(), ... and object() in HDF5_Reader_Vibez, HDF5ImageJ and Vibez_Validate (see attached screenshot of HDF5_Reader_Vibez).
What jar or java files are missing to solve these compilation problems? What needs to be done?
Thanks
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.