Giter VIP home page Giter VIP logo

hdf5_vibez's Introduction

developer chat Image.sc Forum

[ Fiji Is Just ImageJ ]

Fiji is a "batteries-included" distribution of ImageJ—a popular, free scientific image processing application—which includes a lot of plugins organized into a coherent menu structure. Fiji compares to ImageJ as Ubuntu compares to Linux.

The main focus of Fiji is to assist research in life sciences.

At the moment, the following platforms are supported:

  • Windows Intel 32-bit/64-bit
  • Linux Intel 32-bit/64-bit
  • MacOSX Intel 32-bit/64-bit (partial support for PowerPC 32-bit)
  • all platforms supporting Java and a POSIX shell, via bin/ImageJ.sh

The setup is as easy as unpacking the portable archive and double-clicking the ImageJ launcher.

Fiji is intended to be the most painless, easy, quick and convenient way to install ImageJ and plugins and keep everything up-to-date.

Usage

Fiji is meant to be distributed without source, to make the download as small as possible. In the basic version, Fiji is a portable application, i.e. it should run wherever you copy it.

The starting point is the ImageJ launcher, which will launch Java, set up the environment, and call ImageJ.

To pass arguments to ImageJ, just specify them on the command line.

To pass arguments to the Java Virtual Machine, specify them on the command line, separating them from the ImageJ arguments (if any) with a --. In other words, if you want to override the memory setting, call Fiji like this:

$ ./ImageJ-linux32 -Xmx128m --

Open Source

We are dedicated to open source. Not only does open source allow other developers to port the application to new platforms that the original authors did not begin to think of, it allows scientists to study the code to understand the inner workings of the algorithms used, and it permits others to use the program in totally new ways, and enhance it in all imaginable ways.

Therefore, the majority of Fiji is licensed under the GNU Public License version 2. Exceptions are listed in the LICENSES file.

Fiji's source code is split up into a main repository, containing the top-level project and support scripts, while all components live in their own repositories in the Fiji organization on GitHub. As a rule of thumb: the file name and the project name correspond pretty well, e.g. fiji-compat.jar is maintained in fiji-compat.

Participating

Pull Requests are very welcome!

See the Contributing page of the ImageJ wiki.

Authors

  • Fiji was created by Johannes Schindelin. It is currently maintained by Curtis Rueden of LOCI at the University of Wisconsin-Madison.
  • ImageJ 1.x was created and is maintained by Wayne Rasband.
  • ImageJ2 was created and is maintained and actively developed by Curtis Rueden.
  • For a list of most recent contributors, please refer to the Contributors page of the ImageJ wiki.

Thanks

We are very grateful to Wayne Rasband, who is not only a very dedicated developer of ImageJ 1.x; he also fosters an active and friendly community around ImageJ.

We are especially grateful to be part of an outstanding community who is active, friendly and helping to scientists understanding and analysing images every day.

Oh, and Fiji is also an island. We just wanted to let you know.

hdf5_vibez's People

Contributors

ctrueden avatar gfleishman avatar kmdouglass avatar matthiasch avatar rejsmont avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hdf5_vibez's Issues

Open API

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

Make it work with IJ2 data structures

It would be great to implement HDF5 as IJ2 plugin so one could work with Datasets 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?

int16 data sets not read properly

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
image

int16
image

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.

Support for reading from external links

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:

screen shot 2018-04-11 at 3 05 57 pm

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:

screen shot 2018-04-11 at 3 07 28 pm

So, I think the file is ok. FYI, I created the file using h5py:

`#!/usr/bin/env python3

-- coding: utf-8 --

import os
import h5py

get all paths, working directory and hdf5 file names

cwd = os.getcwd()
h5_files = os.listdir(cwd)
h5_files.sort()
h5_files = [s for s in h5_files if s.endswith('.h5')]

create container object to write external links to

container_name = 'container.h5'
container = h5py.File(container_name, 'w')

loop through h5py files and add them as external links

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.

Load hdf5 dataset > 2GB

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!!!

Apple M1 Support

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?

float(), uint8(), ... and object()

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

Juergen
hdf5_reader_vibez errors

zooming to selection fails

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.
Screenshot 2019-06-26 at 09 32 09

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.