scifio / scifio-ome-xml

SCIFIO plug-in providing support for the OME data model, including readers, writers and translators for OME-XML and OME-TIFF formats.
http://scif.io/
BSD 2-Clause "Simplified" License
2 stars 3 forks source link

OME Tiff file are not correctly opened #8

Closed hadim closed 10 years ago

hadim commented 10 years ago

(please tell me if I am not on the right place to report this issue)

OME Tiff files opened in ImageJ-dev (modern mode) using Open command are not correctly detected. All stacks are on the same dimensions (T).

I use both Bioformat 5 and Scifio-dev update sites. I got the same issue with data creating with micromanager and with data provided by openmicroscopy (http://www.openmicroscopy.org/Schemas/Samples/2013-06/bioformats-artificial/multi-channel-4D-series.ome.tif.zip).

Here is the log I got:

[INFO] Created service: org.scijava.log.StderrLogService
[INFO] Created service: org.scijava.thread.DefaultThreadService
[INFO] Created service: org.scijava.event.DefaultEventService
[INFO] Found 482 plugins.
[INFO] Created service: org.scijava.plugin.DefaultPluginService
[INFO] Created service: org.scijava.object.DefaultObjectService
[INFO] Created service: imagej.module.DefaultModuleService
[INFO] Created service: imagej.command.DefaultCommandService
[INFO] Created service: imagej.script.DefaultScriptService
[INFO] Created service: io.scif.services.DefaultFormatService
[INFO] Found 11 DataType plugins.
[INFO] Created service: imagej.data.types.DefaultDataTypeService
[INFO] Created service: imagej.data.DefaultDatasetService
[INFO] Created service: imagej.display.DefaultDisplayService
[INFO] Created service: imagej.data.display.DefaultImageDisplayService
[INFO] Created service: imagej.data.lut.DefaultLUTService
[INFO] Created service: imagej.text.DefaultTextService
[INFO] Created service: imagej.io.DefaultRecentFileService
[INFO] Created service: imagej.io.DefaultIOService
[INFO] Found 13 InputWidget plugins.
[INFO] Created service: imagej.widget.DefaultWidgetService
[INFO] Created service: imagej.menu.DefaultMenuService
[INFO] Found 3 applications.
[INFO] Created service: org.scijava.app.DefaultAppService
[INFO] Created service: org.scijava.app.DefaultStatusService
[INFO] Created service: imagej.tool.DefaultToolService
[INFO] Created service: imagej.plugins.commands.app.CoreAppEventService
[INFO] Found 1 Platform plugins.
[INFO] Configuring platform: imagej.platform.DefaultPlatform
[INFO] Created service: imagej.platform.DefaultPlatformService
[INFO] Created service: imagej.options.DefaultOptionsService
[INFO] Created service: imagej.console.DefaultConsoleService
[INFO] Created service: org.scijava.event.DefaultEventHistory
[INFO] Created service: imagej.updater.core.DefaultUploaderService
[INFO] Created service: net.imglib2.meta.units.DefaultUnitService
[INFO] Created service: imagej.data.DefaultImgPlusService
[INFO] Created service: imagej.data.autoscale.DefaultAutoscaleService
[INFO] Created service: imagej.data.operator.DefaultCalculatorService
[INFO] Created service: imagej.ui.common.awt.AWTRenderingService
[INFO] Created service: imagej.data.display.DefaultOverlayService
[INFO] Created service: imagej.data.display.DefaultInputService
[INFO] Created service: imagej.data.display.DefaultZoomService
[INFO] Created service: imagej.data.display.DefaultWindowService
[INFO] Created service: imagej.data.animation.DefaultAnimationService
[INFO] Created service: imagej.data.threshold.DefaultThresholdService
[INFO] Created service: imagej.data.measure.DefaultStatisticsService
[INFO] Created service: imagej.data.measure.DefaultMeasurementService
[INFO] Created service: imagej.data.sampler.DefaultSamplerService
[INFO] Created service: io.scif.codec.DefaultCodecService
[INFO] Created service: io.scif.DefaultMetadataService
[INFO] Created service: io.scif.formats.qt.DefaultQTJavaService
[INFO] Created service: io.scif.formats.tiff.DefaultTiffService
[INFO] Created service: io.scif.gui.DefaultGUIService
[INFO] Created service: io.scif.refs.DefaultRefManagerService
[INFO] Created service: io.scif.img.cell.cache.MapDBCache
[INFO] Created service: io.scif.img.converters.DefaultPlaneConverterService
[INFO] Created service: io.scif.img.DefaultImgUtilityService
[INFO] Created service: io.scif.io.DefaultNIOService
[INFO] Created service: io.scif.services.DefaultFilePatternService
[INFO] Created service: io.scif.services.DefaultLocationService
[INFO] Created service: io.scif.services.DefaultTranslatorService
[INFO] Created service: io.scif.services.JAIIIOServiceImpl
[INFO] Created service: io.scif.xml.DefaultXMLService
[INFO] Created service: imagej.ui.DefaultUIService
[INFO] Created service: imagej.ui.dnd.DefaultDragAndDropService
[INFO] Created service: imagej.plugins.uis.swing.overlay.JHotDrawService
[INFO] Created service: imagej.plugins.uis.swing.SwingIconService
[INFO] Created service: imagej.plugins.commands.restructure.SplitChannelsContextMonitor
[INFO] Created service: imagej.ui.common.awt.AWTScreenCaptureService
[WARNING] Ignoring non-existent scripts directory: /home/hadim/Downloads/bio/ImageJ.app/scripts
[INFO] Found 0 scripts
[WARNING] Overridden plugin ij.plugin.LutLoader("3-3-2 RGB") is blacklisted
[WARNING] Overridden plugin ij.plugin.AboutBox is blacklisted
[WARNING] Overridden plugin ij.plugin.Commands("quit") is blacklisted
[INFO] Found 258 legacy plugins (plus 145 ignored).
[INFO] Created service: imagej.legacy.DefaultLegacyService
[INFO] Created service: imagej.render.DummyRenderingService
[INFO] Created service: imagej.data.display.DummyScreenCaptureService
[INFO] Created service: io.scif.services.DefaultInitializeService
[INFO] Discovered user interface: imagej.plugins.uis.swing.sdi.SwingUI
[INFO] Discovered user interface: imagej.plugins.uis.swing.mdi.SwingMdiUI
[INFO] Launching user interface: imagej.plugins.uis.swing.sdi.SwingUI
[INFO] Found 25 Tool plugins.
[INFO] Found 6 ScriptLanguage plugins.
[INFO] Found 2 TextFormat plugins.
[INFO] Found 4 IOPlugin plugins.
[INFO] Found 19 OptionsPlugin plugins.
[INFO] Found 3 ConsoleArgument plugins.
[INFO] Found 2 AutoscaleMethod plugins.
[INFO] Found 13 CalculatorOp plugins.
[INFO] Found 17 ThresholdMethod plugins.
[INFO] Found 16 Codec plugins.
[INFO] Found 3 PlaneConverter plugins.
[INFO] Found 11 Translator plugins.
[INFO] Found 4 DragAndDropHandler plugins.
[WARNING] /home/hadim/metadata.txt not found - creating VirtualHandle.
[WARNING] /home/hadim/metadata.txt not found - creating VirtualHandle.
[WARNING] /home/hadim/metadata.txt not found - creating VirtualHandle.
[WARNING] /home/hadim/metadata.txt not found - creating VirtualHandle.
[WARNING] /home/hadim/metadata.txt not found - creating VirtualHandle.
[WARNING] /home/hadim/metadata.txt not found - creating VirtualHandle.
[WARNING] /home/hadim/metadata.txt not found - creating VirtualHandle.
[WARNING] /home/hadim/metadata.txt not found - creating VirtualHandle.
[INFO] Reading IFDs
[INFO] Populating metadata
[INFO] Checking comment style
[WARNING] Expected positive value for PhysicalSizeX; got Infinity
[WARNING] Expected positive value for PhysicalSizeY; got Infinity
[INFO] Found 9 JHotDraw adapters.

Thank you

hadim commented 10 years ago

Bonus questions 1 : are you planning to add a way to easily display the OME XML file (without using LOCI plugin).

Bonus questions 2 : will LOCI plugin be still relevant in future IJ2 and SCIFIO?

dscho commented 10 years ago

About the issue: I can reproduce. It is the same behavior as ImageJ 1.x' File>Open at the moment: a flat, 3d stack with 105 slices is displayed. In Fiji, File>Import>Bio-Formats opens it correctly as a 439x167x3x5x7 XYCZT stack.

I have no information about bonus question 1, but bonus answer 2: the LOCI plugin will be completely replaced by IJ2 and SCIFIO (at least for some time, parts of the LOCI Bio-Formats will still back SCIFIO for certain formats).

hadim commented 10 years ago

Ok. So at the moment IJ2 and SCIFIO does not detect OME Tiff format with File>Open. Do you know if this feature is far from being added ?

From what I saw on SCIFIO github branch, it has the capability to read OME Tiff natively (without scifio-bf-compat). So I guess the only missing part is to "discover" OME Tiff format during File>Open instead of simple Tiff and to load appropriate Reader (OME Tiff Reader here).

Am I correct ?

dscho commented 10 years ago

Sorry, that question has to wait for @hinerm or @ctrueden... I don't know! ;-)

hadim commented 10 years ago

No problem. Thanks !

hinerm commented 10 years ago

@hadim This is certainly an appropriate place to discuss displaying OME-XML and opening OME-Tiffs in ImageJ2.

Ok. So at the moment IJ2 and SCIFIO does not detect OME Tiff format with File>Open. Do you know if this feature is far from being added ?

Just to clarify, SCIFIO can only open OME-Tiffs as vanilla Tiffs. The OME-Formats project, as a plugin for SCIFIO, does add an OMETIFFReader that reads the full OME-XML.

Can you clarify how you are running IJ2? Since you referenced "modern mode" and update sites, I am assuming you are using an installation of Fiji and used Help > Switch to modern mode. If so, the OME-XML support is indeed broken right now, due to an issue with how classes are loaded when switching to modern mode. This is a known issue with the IJ2 legacy layer, and I believe it is close to being resolved! It is certainly one of our top priorities right now.

Fiji does ship with the ome-formats library, so as soon as the class loading issue is resolved, you should be able to File > Open OME-Tiffs in IJ2 (and actually any Bio-Formats format) - with no need for additional update sites.

If you wanted to work with OME-Tiffs in IJ2 in the mean time, the only option right now is to run pure IJ2 and ensure OME-Formats + its dependencies are on the classpath. If this is something that interests you, please let me know and I can post instructions on how to do this e.g. from Eclipse.

Additionally, on Monday I intend to do my own verification that pure IJ2 + OME-Formats works as intended.

Bonus questions 1 : are you planning to add a way to easily display the OME XML file (without using LOCI plugin).

There is actually a plugin for the SCIFIO command line tools to do this right now. In IJ2 we will definitely be supporting everything that was possible in the LOCI importer.

hinerm commented 10 years ago

P.S. Thank you @hadim for using SCIFIO and IJ2, and for taking the extra effort to report an issue! It is always great to know people are using our software, and I'm deeply sorry that we do not have this class loading issue resolved yet, as it will really help show how awesome IJ2 can be.

hadim commented 10 years ago

About the PS : you're welcome and it's a pleasure to contribute. Thanks to you to have switched to github which is wonderfull for collaborative development (beside the fact it's free as beer and not as a speech...). I still use FIJI/IJ1 for my daily work but I am excited about IJ2 and I follow how things progress regulary.

hadim commented 10 years ago

When I use SCIFIO I mean SCIFIO and its plugins (so including ome-formats ).


For my daily work I use Fiji and I sometime try modern mode to see what's going on with IJ2. But I also have a pure IJ2 git clone to try very new features.

No problem about IJ2 legacy layer issue I can wait. But I will be glade to test it. However I don't use Eclipse, I rather prefer command line and basic text editor :-).

I have a working pure IJ2 git clone which build successfully. So I guess I only need to copy some jars to app/ImageJ.app/plugins to add ome-formats plugin. Note that I also have ome-formats git clone so I guess I can use ome/target/ome-formats-0.6.2-SNAPSHOT.jar.


SCIFIO command line tools does not display the pure OME XML.

$ ./scifio info /home/hadim/local/data/multi-channel-4D-series.ome.tif
[INFO] Created service: org.scijava.log.StderrLogService
[INFO] Created service: io.scif.io.DefaultNIOService
[INFO] Created service: org.scijava.thread.DefaultThreadService
[INFO] Created service: org.scijava.event.DefaultEventService
[INFO] Found 104 plugins.
[INFO] Created service: org.scijava.plugin.DefaultPluginService
[INFO] Created service: org.scijava.object.DefaultObjectService
[INFO] Created service: io.scif.services.DefaultTranslatorService
[INFO] Created service: io.scif.services.DefaultFormatService
[INFO] Created service: io.scif.services.JAIIIOServiceImpl
[INFO] Created service: io.scif.services.DefaultLocationService
[INFO] Created service: io.scif.services.DefaultFilePatternService
[INFO] Created service: io.scif.gui.DefaultGUIService
[INFO] Created service: io.scif.xml.DefaultXMLService
[INFO] Created service: io.scif.codec.DefaultCodecService
[INFO] Created service: io.scif.DefaultMetadataService
[INFO] Created service: io.scif.refs.DefaultRefManagerService
[INFO] Created service: io.scif.img.cell.cache.MapDBCache
[INFO] Created service: io.scif.img.converters.DefaultPlaneConverterService
[INFO] Created service: io.scif.img.DefaultImgUtilityService
[INFO] Created service: io.scif.formats.tiff.DefaultTiffService
[INFO] Created service: io.scif.formats.qt.DefaultQTJavaService
[INFO] Created service: io.scif.services.DefaultInitializeService
[INFO] Found 2 applications.
[INFO] Created service: org.scijava.app.DefaultAppService
[INFO] Created service: org.scijava.app.DefaultStatusService
[WARNING] /home/hadim/local/data/metadata.txt not found - creating VirtualHandle.
[INFO] Reading IFDs
[INFO] Populating metadata
[INFO] Checking comment style
[WARNING] Expected positive value for PhysicalSizeX; got Infinity
[WARNING] Expected positive value for PhysicalSizeY; got Infinity
[INFO] 
[INFO] Dataset: /home/hadim/local/data/multi-channel-4D-series.ome.tif
[INFO] Dataset size: 7697865
[INFO] Image count: 1
[INFO] Reading dataset metdata
[INFO] Software: OME Bio-Formats
[INFO] Model: -1
[INFO] TileLength: -1
[INFO] CellLength: -1
[INFO] InkNames: -1
[INFO] JPEGACTables: -1
[INFO] JPEGDCTables: -1
[INFO] ExtraSamples: -1
[INFO] BitsPerSample: 8
[INFO] YResolution: 0
[INFO] JPEGRestartInterval: -1
[INFO] PageNumber: -1
[INFO] CellWidth: -1
[INFO] JPEGQTables: -1
[INFO] ImageLength: 167
[INFO] XResolution: 0
[INFO] MaxSampleValue: -1
[INFO] TransferFunction: -1
[INFO] PrimaryChromacities: -1
[INFO] TransferRange: -1
[INFO] JPEGPointTransforms: -1
[INFO] SamplesPerPixel: 1
[INFO] PhotometricInterpretation: BlackIsZero
[INFO] ResolutionUnit: Centimeter
[INFO] Make: -1
[INFO] MinSampleValue: -1
[INFO] JPEGLosslessPredictors: -1
[INFO] NumberOfChannels: 1
[INFO] GrayResponseCurve: -1
[INFO] TileByteCounts: -1
[INFO] FreeOffsets: -1
[INFO] XPosition: -1
[INFO] SMinSampleValue: -1
[INFO] DotRange: -1
[INFO] YCbCrCoefficients: -1
[INFO] ImageWidth: 439
[INFO] TileOffsets: -1
[INFO] YPosition: -1
[INFO] PlanarConfiguration: Chunky
[INFO] T6Options: -1
[INFO] SMaxSampleValue: -1
[INFO] GrayResponseUnit: -1
[INFO] NumberOfInks: -1
[INFO] T4Options: -1
[INFO] MetaMorph: no
[INFO] WhitePoint: -1
[INFO] JPEGInterchangeFormat: -1
[INFO] YCbCrPositioning: -1
[INFO] Compression: Uncompressed
[INFO] FreeByteCounts: -1
[INFO] TileWidth: -1
[INFO] ReferenceBlackWhite: -1
[INFO] SampleFormat: two's complement signed integer
[INFO] MetaDataPhotometricInterpretation: Monochrome
[INFO] HalftoneHints: -1
[INFO] 
[INFO] Reading image metdata
[INFO] Image: 1
[INFO] Image size: 7697865
[INFO] Plane size: 73313
[INFO] Plane count: 105
[INFO] Planar axes: X,Y
[INFO] Planar lengths: 439,167
[INFO] Non-planar axes: Time
[INFO] Non-planar lengths: 105
[INFO] Axis calibration: y = (0.0) + (1.0)*x um,y = (0.0) + (1.0)*x um,y = (0.0) + (1.0)*x um
[INFO] Pixel type: int8
[INFO] Bits per pixel: 8
[INFO] Interleaved axes: 0
[INFO] Thumbnail width: 128
[INFO] Thumbnail height: 48
[INFO] False color: true
[INFO] Indexed: false
[INFO] Little endian: false
[INFO] Metadata complete: true
[INFO] Order certain: false
[INFO] Thumbnail: false
hadim commented 10 years ago

Bonus questions : Is there an easy way to find against which imagej commit is built fiji ? I guess this informations is in one of the pom.xml files in https://github.com/fiji/fiji but I didn't find it. I know I can have the information form Help>About ImageJ and looking the build number but I would like to be able to access it from command line or github fiji repo browser.

hadim commented 10 years ago

I tried to launch last IJ2 build from git clone. I then added some jars files to app/ImageJ.app/plugins:

IJ2 loads well. Standard Tiff from File>Open sample works well. But I have an issue trying to load OME Tiff file :

[WARNING] /home/hadim/local/data/metadata.txt not found - creating VirtualHandle.
[ERROR] Exception during event handling:
    [Event] imagej.ui.dnd.event.DropEvent
    context = org.scijava.Context@3f88b952
    consumed = false
    display = null
    modifiers = null
    x = 347
    y = 19
    data = imagej.ui.common.awt.AWTDragAndDropData@270143a7
    successful = false
    [Subscriber] imagej.ui.dnd.DefaultDragAndDropService [priority = 0.0]
    [Method] protected void imagej.ui.dnd.DefaultDragAndDropService.onEvent(imagej.ui.dnd.event.DropEvent)
java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
    at ome.xml.model.OMEModelImpl.<clinit>(OMEModelImpl.java:67)
    at io.scif.ome.xml.services.OMEXMLServiceImpl.createRoot(OMEXMLServiceImpl.java:747)
    at io.scif.ome.xml.services.OMEXMLServiceImpl.createOMEXMLMetadata(OMEXMLServiceImpl.java:326)
    at io.scif.ome.xml.services.OMEXMLServiceImpl.createOMEXMLMetadata(OMEXMLServiceImpl.java:316)
    at io.scif.ome.xml.meta.OMETIFFFormat$Checker.isFormat(OMETIFFFormat.java:497)
    at io.scif.AbstractChecker.isFormat(AbstractChecker.java:93)
    at io.scif.services.DefaultFormatService.getFormatList(DefaultFormatService.java:288)
    at io.scif.services.DefaultFormatService.getFormat(DefaultFormatService.java:270)
    at imagej.data.DefaultDatasetService.canOpen(DefaultDatasetService.java:214)
    at imagej.data.io.DatasetIOPlugin.supportsOpen(DatasetIOPlugin.java:66)
    at imagej.io.DefaultIOService.getOpener(DefaultIOService.java:64)
    at imagej.ui.dnd.FileDragAndDropHandler.supports(FileDragAndDropHandler.java:74)
    at imagej.ui.dnd.FileDragAndDropHandler.supports(FileDragAndDropHandler.java:52)
    at imagej.ui.dnd.AbstractDragAndDropHandler.supportsObject(AbstractDragAndDropHandler.java:68)
    at imagej.ui.dnd.AbstractDragAndDropHandler.supportsObject(AbstractDragAndDropHandler.java:74)
    at imagej.ui.dnd.DefaultDragAndDropService.getHandler(DefaultDragAndDropService.java:107)
    at imagej.ui.dnd.DefaultDragAndDropService.supports(DefaultDragAndDropService.java:75)
    at imagej.ui.dnd.ListDragAndDropHandler.supports(ListDragAndDropHandler.java:66)
    at imagej.ui.dnd.ListDragAndDropHandler.supports(ListDragAndDropHandler.java:47)
    at imagej.ui.dnd.AbstractDragAndDropHandler.check(AbstractDragAndDropHandler.java:125)
    at imagej.ui.dnd.ListDragAndDropHandler.drop(ListDragAndDropHandler.java:74)
    at imagej.ui.dnd.ListDragAndDropHandler.drop(ListDragAndDropHandler.java:47)
    at imagej.ui.dnd.AbstractDragAndDropHandler.dropData(AbstractDragAndDropHandler.java:101)
    at imagej.ui.dnd.DefaultDragAndDropService.drop(DefaultDragAndDropService.java:82)
    at imagej.ui.dnd.DefaultDragAndDropService.onEvent(DefaultDragAndDropService.java:157)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.scijava.event.DefaultEventService$ProxySubscriber.onEvent(DefaultEventService.java:278)
    at org.scijava.event.DefaultEventService$ProxySubscriber.onEvent(DefaultEventService.java:252)
    at org.bushe.swing.event.ThreadSafeEventService.publish(ThreadSafeEventService.java:971)
    at org.scijava.event.DefaultEventBus.access$101(DefaultEventBus.java:56)
    at org.scijava.event.DefaultEventBus$1.run(DefaultEventBus.java:197)
    at org.scijava.thread.DefaultThreadService.invoke(DefaultThreadService.java:91)
    at org.scijava.event.DefaultEventBus.publishNow(DefaultEventBus.java:191)
    at org.scijava.event.DefaultEventBus.publishNow(DefaultEventBus.java:82)
    at org.scijava.event.DefaultEventService.publish(DefaultEventService.java:91)
    at imagej.ui.common.awt.AWTDropTargetEventDispatcher.drop(AWTDropTargetEventDispatcher.java:134)
    at java.awt.dnd.DropTarget.drop(DropTarget.java:450)
    at sun.awt.dnd.SunDropTargetContextPeer.processDropMessage(SunDropTargetContextPeer.java:537)
    at sun.awt.X11.XDropTargetContextPeer.processDropMessage(XDropTargetContextPeer.java:184)
    at sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher.dispatchDropEvent(SunDropTargetContextPeer.java:851)
    at sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher.dispatchEvent(SunDropTargetContextPeer.java:775)
    at sun.awt.dnd.SunDropTargetEvent.dispatch(SunDropTargetEvent.java:48)
    at java.awt.Component.dispatchEventImpl(Component.java:4716)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processDropTargetEvent(Container.java:4566)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4417)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:708)
    at java.awt.EventQueue$4.run(EventQueue.java:706)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    ... 72 more

I can't tell wether the issue come from a missing dependency or from the code itself.

hadim commented 10 years ago

I just noticed the issue is different when I use File>Open (I was using drag and drop the first time):

[WARNING] /home/hadim/local/data/metadata.txt not found - creating VirtualHandle.
[ERROR] Module threw error
java.lang.NoClassDefFoundError: Could not initialize class ome.xml.model.OMEModelImpl
    at io.scif.ome.xml.services.OMEXMLServiceImpl.createRoot(OMEXMLServiceImpl.java:747)
    at io.scif.ome.xml.services.OMEXMLServiceImpl.createOMEXMLMetadata(OMEXMLServiceImpl.java:326)
    at io.scif.ome.xml.services.OMEXMLServiceImpl.createOMEXMLMetadata(OMEXMLServiceImpl.java:316)
    at io.scif.ome.xml.meta.OMETIFFFormat$Checker.isFormat(OMETIFFFormat.java:497)
    at io.scif.AbstractChecker.isFormat(AbstractChecker.java:93)
    at io.scif.services.DefaultFormatService.getFormatList(DefaultFormatService.java:288)
    at io.scif.services.DefaultFormatService.getFormat(DefaultFormatService.java:270)
    at imagej.data.DefaultDatasetService.canOpen(DefaultDatasetService.java:214)
    at imagej.data.io.DatasetIOPlugin.supportsOpen(DatasetIOPlugin.java:66)
    at imagej.io.DefaultIOService.getOpener(DefaultIOService.java:64)
    at imagej.io.DefaultIOService.open(DefaultIOService.java:83)
    at imagej.plugins.commands.io.OpenFile.run(OpenFile.java:81)
    at imagej.command.CommandModule.run(CommandModule.java:193)
    at imagej.module.ModuleRunner.run(ModuleRunner.java:166)
    at imagej.module.ModuleRunner.call(ModuleRunner.java:127)
    at imagej.module.ModuleRunner.call(ModuleRunner.java:66)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
hadim commented 10 years ago

Actually both issues are not so different I guess. The additional logs are mainly because of the drag and drop action.

hadim commented 10 years ago

Ok I got it.

I was using last bioformats develop branch and so bioformats v5 which seems to have broken compatibility with v4.4.

I rebuild bioformats from branch dev_4_4 and use the following jars :

And I can load multi-channel-4D-series.ome.tif successfully.

Now two questions remain :

[ERROR] Module threw exception
java.lang.ArrayIndexOutOfBoundsException
    at java.lang.System.arraycopy(Native Method)
    at io.scif.img.ImgSaver.writePlanes(ImgSaver.java:584)
    at io.scif.img.ImgSaver.saveImg(ImgSaver.java:438)
    at io.scif.img.ImgSaver.saveImg(ImgSaver.java:157)
    at io.scif.img.ImgSaver.saveImg(ImgSaver.java:139)
    at io.scif.img.ImgSaver.saveImg(ImgSaver.java:109)
    at imagej.data.DefaultDatasetService.save(DefaultDatasetService.java:307)
    at imagej.data.DefaultDatasetService.save(DefaultDatasetService.java:280)
    at imagej.plugins.commands.io.SaveAsImage.run(SaveAsImage.java:99)
    at imagej.command.CommandModule.run(CommandModule.java:193)
    at imagej.module.ModuleRunner.run(ModuleRunner.java:166)
    at imagej.module.ModuleRunner.call(ModuleRunner.java:127)
    at imagej.module.ModuleRunner.call(ModuleRunner.java:66)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
hadim commented 10 years ago

Since this issue is becoming very long. I am closing it and I open two new issues regarding my previous message.

hinerm commented 10 years ago

Bonus questions : Is there an easy way to find against which imagej commit is built fiji ?

The Help > about ImageJ command only displays information about ImageJ1.

In Fiji, do the following: 1) Help > Update Fiji 2) Go to Advanced Mode 3) Under View Options you can select View all files (or other filters, as desired) 4) Now you can click on individual plugins/ or jars/. I expect what you're interested in to be primarily in jars/. You can filter this list using the Search box at the top. When you click on a jar, under the details pane on the right you will see it's actual version (and dependencies!). This isn't super helpful if the jars don't follow good versioning practices, but we try to do so for all our software :) e.g. for SCIFIO and IJ2 and Fiji you should see definitive release versions for pretty much everything.

Note: these versions may vary between a downloaded Fiji user installation, and the Fiji source (i.e. the pom.xml). We strive to keep them synchronized, but they can definitely drift.

I will answer your other questions on their own tickets.

hadim commented 10 years ago

Thanks !

ctrueden commented 10 years ago

(please tell me if I am not on the right place to report this issue)

GitHub issue trackers are great for reporting bugs and making feature requests. I personally feel they are less appropriate for more philosophical or "project vision" questions such as your second "bonus" question. Better to use the mailing list for that.

Bonus questions 1 : are you planning to add a way to easily display the OME XML file (without using LOCI plugin).

Yes. SCIFIO already attaches the relevant metadata to the image—we just need a way to display it via the ImageJ UI. I filed an issue for it: https://github.com/imagej/imagej/issues/34

Bonus questions 2 : will LOCI plugin be still relevant in future IJ2 and SCIFIO?

Firstly, I presume you mean "OME Bio-Formats plugins" rather than "LOCI plugin" (which is a very old name indeed for the plugins back when they were bundled with all other LOCI ImageJ plugins in a single package, which has not been the case for many years now).

The answer is yes: Bio-Formats will still be relevant, although the functionality currently provided by the Bio-Formats ImageJ plugins will all be part of ImageJ2 directly. The eventual plan is for Bio-Formats to be an extension of SCIFIO for the life sciences, rendering the scifio-lifesci component obsolete. However, we are in the midst of a long transition period See the SCIFIO FAQ for further details.