fiji / SPIM_Registration

Deprecated, instead check out: https://github.com/preibischLab/multiview-reconstruction & https://github.com/PreibischLab/BigStitcher
GNU General Public License v2.0
23 stars 22 forks source link

runtime exception opening czi in Multiview Registration #41

Closed emmenlau closed 9 years ago

emmenlau commented 9 years ago

I'm using Multiview Registration, trying to fuse a large czi series. It opens the file with Bio-Formats, which at first works fine, and the XML gets created. But when I start interest point detection, I get (attached) error about a RuntimeException in spim.fiji.spimdata.imgloaders.LightSheetZ1ImgLoader.getFloatImage().

ZeissCZIReader initializing L:\MarioEmmenlauer\Datasets\drlGFP-lmo2Red-7ss..\drlGFP lmo2Red 7ss.czi [WARN] Unknown AcquisitionMode value 'SPIM' will be stored as "Other" [WARN] Unknown AcquisitionMode value 'SPIM' will be stored as "Other" [WARN] Unknown DetectorType value 'Camera' will be stored as "Other" [WARN] Unknown DetectorType value 'Camera' will be stored as "Other" java.lang.RuntimeException: Could not load 'L:\MarioEmmenlauer\Datasets\drlGFP-lmo2Red-7ss..\drlGFP lmo2Red 7ss.czi' viewId=0, tpId=0: java.lang.RuntimeException: Could not load 'L:\MarioEmmenlauer\Datasets\drlGFP-lmo2Red-7ss..\drlGFP lmo2Red 7ss.czi' viewId=0, tpId=0 at spim.fiji.spimdata.imgloaders.LightSheetZ1ImgLoader.getFloatImage(LightSheetZ1ImgLoader.java:86) at spim.fiji.plugin.interestpointdetection.DifferenceOf.openAndDownsample(DifferenceOf.java:422) at spim.fiji.plugin.interestpointdetection.DifferenceOfGaussian.findInterestPoints(DifferenceOfGaussian.java:97) at spim.fiji.plugin.Interest_Point_Detection.detectInterestPoints(Interest_Point_Detection.java:167) at spim.fiji.plugin.Interest_Point_Detection.detectInterestPoints(Interest_Point_Detection.java:86) at spim.fiji.spimdata.explorer.popup.DetectInterestPointsPopup$MyActionListener$1.run(DetectInterestPointsPopup.java:55) at java.lang.Thread.run(Unknown Source)

Using spimdata version: 0.9-revision Using spimreconstruction version: 2.3.4 angles selected: 0, 90, 180, 270 channels selected: Laser 561, Laser 488 illuminations selected: 0, 1 Timepoints selected: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46 Closing czi: L:\MarioEmmenlauer\Datasets\drlGFP-lmo2Red-7ss..\drlGFP lmo2Red 7ss.czi Cannot load CUDA JNA library. (Tue May 05 14:21:23 GMT+02:00 2015): Requesting Img from ImgLoader (tp=0, setup=0) Investigating file 'L:\MarioEmmenlauer\Datasets\drlGFP-lmo2Red-7ss..\drlGFP lmo2Red 7ss.czi'. An error occured parsing the main meta data: java.lang.NullPointerException . Stopping. Failed to analyze file: 'L:\MarioEmmenlauer\Datasets\drlGFP-lmo2Red-7ss..\drlGFP lmo2Red 7ss.czi'. An error occured (DOG): java.lang.RuntimeException: Could not load 'L:\MarioEmmenlauer\Datasets\drlGFP-lmo2Red-7ss..\drlGFP lmo2Red 7ss.czi' viewId=0, tpId=0: java.lang.RuntimeException: Could not load 'L:\MarioEmmenlauer\Datasets\drlGFP-lmo2Red-7ss..\drlGFP lmo2Red 7ss.czi' viewId=0, tpId=0 Failed to segment angleId: 0 channelId: 0 illumId: 0. Continuing with next one. Opening of files took: 0 sec. Detecting interest points took: 0 sec. (Tue May 05 16:10:03 GMT+02:00 2015): Updating metadata ...

StephanPreibisch commented 9 years ago

Hi @emmenlau,

can you please send me the error with the newest build that you can download from here: http://jenkins.imagej.net/view/BigDataViewer/job/SPIM_Registration/ ?

Thanks!

emmenlau commented 9 years ago

Test is currently running, I will report more tomorrow! Happy evening...

StephanPreibisch commented 9 years ago

Great

emmenlau commented 9 years ago

Slightly different error:

ZeissCZIReader initializing L:\MarioEmmenlauer\Datasets\drlGFP-lmo2Red-7ss..\drlGFP lmo2Red 7ss.czi [WARN] Unknown AcquisitionMode value 'SPIM' will be stored as "Other" [WARN] Unknown AcquisitionMode value 'SPIM' will be stored as "Other" [WARN] Unknown DetectorType value 'Camera' will be stored as "Other" [WARN] Unknown DetectorType value 'Camera' will be stored as "Other" java.lang.NullPointerException at spim.fiji.datasetmanager.LightSheetZ1MetaData.loadMetaData(LightSheetZ1MetaData.java:143) at spim.fiji.spimdata.imgloaders.LightSheetZ1ImgLoader.openCZI(LightSheetZ1ImgLoader.java:162) at spim.fiji.spimdata.imgloaders.LightSheetZ1ImgLoader.getFloatImage(LightSheetZ1ImgLoader.java:67) at spim.fiji.plugin.interestpointdetection.DifferenceOf.openAndDownsample(DifferenceOf.java:422) at spim.fiji.plugin.interestpointdetection.DifferenceOfGaussian.findInterestPoints(DifferenceOfGaussian.java:97) at spim.fiji.plugin.Interest_Point_Detection.detectInterestPoints(Interest_Point_Detection.java:167) at spim.fiji.plugin.Interest_Point_Detection.detectInterestPoints(Interest_Point_Detection.java:86) at spim.fiji.spimdata.explorer.popup.DetectInterestPointsPopup$MyActionListener$1.run(DetectInterestPointsPopup.java:55) at java.lang.Thread.run(Unknown Source) java.lang.RuntimeException: Could not load 'L:\MarioEmmenlauer\Datasets\drlGFP-lmo2Red-7ss..\drlGFP lmo2Red 7ss.czi' viewId=0, tpId=0: java.lang.RuntimeException: Could not load 'L:\MarioEmmenlauer\Datasets\drlGFP-lmo2Red-7ss..\drlGFP lmo2Red 7ss.czi' viewId=0, tpId=0 at spim.fiji.spimdata.imgloaders.LightSheetZ1ImgLoader.getFloatImage(LightSheetZ1ImgLoader.java:86) at spim.fiji.plugin.interestpointdetection.DifferenceOf.openAndDownsample(DifferenceOf.java:422) at spim.fiji.plugin.interestpointdetection.DifferenceOfGaussian.findInterestPoints(DifferenceOfGaussian.java:97) at spim.fiji.plugin.Interest_Point_Detection.detectInterestPoints(Interest_Point_Detection.java:167) at spim.fiji.plugin.Interest_Point_Detection.detectInterestPoints(Interest_Point_Detection.java:86) at spim.fiji.spimdata.explorer.popup.DetectInterestPointsPopup$MyActionListener$1.run(DetectInterestPointsPopup.java:55) at java.lang.Thread.run(Unknown Source)

Using spimdata version: 0.9-revision Using spimreconstruction version: 2.3.5-SNAPSHOT angles selected: 0, 90, 180, 270 channels selected: Laser 561, Laser 488 illuminations selected: 0, 1 Timepoints selected: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46 (Tue May 05 22:39:19 GMT+02:00 2015): Requesting Img from ImgLoader (tp=0, setup=0) Investigating file 'L:\MarioEmmenlauer\Datasets\drlGFP-lmo2Red-7ss..\drlGFP lmo2Red 7ss.czi'. Closing czi: L:\MarioEmmenlauer\Datasets\drlGFP-lmo2Red-7ss..\drlGFP lmo2Red 7ss.czi An error occured parsing the main meta data: java.lang.NullPointerException. Stopping. Failed to analyze file: 'L:\MarioEmmenlauer\Datasets\drlGFP-lmo2Red-7ss..\drlGFP lmo2Red 7ss.czi'. An error occured (DOG): java.lang.RuntimeException: Could not load 'L:\MarioEmmenlauer\Datasets\drlGFP-lmo2Red-7ss..\drlGFP lmo2Red 7ss.czi' viewId=0, tpId=0: java.lang.RuntimeException: Could not load 'L:\MarioEmmenlauer\Datasets\drlGFP-lmo2Red-7ss..\drlGFP lmo2Red 7ss.czi' viewId=0, tpId=0 Failed to segment angleId: 0 channelId: 0 illumId: 0. Continuing with next one. Opening of files took: 0 sec. Detecting interest points took: 0 sec. (Wed May 06 00:30:19 GMT+02:00 2015): Updating metadata ...

emmenlau commented 9 years ago

I tried a bunch of other CZI datasets from the same Z.1, they all show consistently the same error.

dscho commented 9 years ago

It appears that there is either no global metadata or the particular metadata is missing when trying to parse the z extent of the image.

Probably a good idea to introduce a bit of defensive programming here... Instead of:

                int d = (int)Math.round( Double.parseDouble( metaData.get( "Information|Image|V|View|SizeZ #" + (a+1) ).toString() ) );

it might make sense to do something like this:

        private static double getDouble( final Hashtable< String, Object > metadata,
                final String key ) {
            if ( metadata == null )
                throw new RuntimeException( "Missing metadata while looking for: " +
                    key );
            final Object o = metadata.get( key );
            if (o == null) {
                final StringBuilder builder = new StringBuilder();
                for ( final String candidate : metadata.keySet() )
                    builder.append( "\n" + candidate );
                throw new RuntimeException( "Missing key " + key +
                    " in metadata; Available keys:" + builder );
            }

            return Double.parseDouble( o.toString() );
        }
...
                int d = (int)Math.round( getDouble( metaData, 
                    "Information|Image|V|View|SizeZ #" + (a+1) );

The disadvantage is that it looks like more code. The advantages are that this function can be used broadly, without copy-editing, and that the users have a better chance to help improving the code immediately by including the (now useful) error message in their bug reports.

emmenlau commented 9 years ago

Just to verify, the initially created XML contains:

        <size>1920 1920 787</size>
        <voxelSize>
          <unit>um</unit>
          <size>0.642966091632843 0.642966091632843 1.2771568298339844</size>
        </voxelSize>

Is this not the correct z extent?

StephanPreibisch commented 9 years ago

This is extremely weird. I am not sure why it reads the metadata correctly the first time (when defining the dataset) and not the second time (when opening one of the stacks). Is there any chance you can get this dataset to me @emmenlau when I give you access to my fileserver? Otherwise it is really time-intensive to debug ...

@dscho ... I agree, this should not crash like this, it should show a more meaningful message for the user and the developer. I will fix that, thanks for the hints (I actually did a better job on non-essential metadata like calibration, channel names, rotation axis, etc. ). As this part of the metadata is absolutely essential - without the dimensions of the image, I cannot load it - I left it that horrible.

dscho commented 9 years ago

As this part of the metadata is absolutely essential - without the dimensions of the image, I cannot load it - I left it that horrible.

Especially in such a case you want any error message users might paste into their bug reports to be as helpful as possible, correct? In such critical code I would always pay particular attention to be more defensive rather than less.

StephanPreibisch commented 9 years ago

Yes, I absolutely agree ... it will be fixed.

StephanPreibisch commented 9 years ago

@emmenlau I sent you the login information, would be great if you could upload it. I will of course treat it confidential.

StephanPreibisch commented 9 years ago

@dscho https://github.com/bigdataviewer/SPIM_Registration/commit/30e3636204043b4a809e00bbf4abc5863ec3a192 Thanks!

emmenlau commented 9 years ago

@StephanPreibisch I forwarded your request to the corresponding author of the data, and hope to get a response today. The smallest I could find is a 30GB czi. I will let you know when I performed to upload (or got a decline).

StephanPreibisch commented 9 years ago

30GB would be fine ... meanwhile, can you try again with the newest build please?

emmenlau commented 9 years ago

With Last build (#216), from 15 min ago, I get the following Log when trying to define the dataset XML:

ZeissCZIReader initializing D:\MarioEmmenlauer\Datasets\zebrafish_beads0.5_4views\zebrafish_beads0.5_4views.czi
[WARN] Unknown AcquisitionMode value 'SPIM' will be stored as "Other"
[WARN] Unknown AcquisitionMode value 'SPIM' will be stored as "Other"
[WARN] Unknown DetectorType value 'Camera' will be stored as "Other"
[WARN] Unknown DetectorType value 'Camera' will be stored as "Other"
Available keys:
OffsetX|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
Type|Detector|Instrument|Information #2
Type|Detector|Instrument|Information #1
SizeZ|View|V|Image|Information #4
PositionX|View|V|Image|Information #4
SizeZ|View|V|Image|Information #3
PositionX|View|V|Image|Information #3
SizeZ|View|V|Image|Information #2
PositionX|View|V|Image|Information #2
Position|PositionGroup|TilesSetup|AcquisitionBlock|Experiment|Y #4
SizeZ|View|V|Image|Information #1
HdrImagingMode|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
PositionX|View|V|Image|Information #1
Position|PositionGroup|TilesSetup|AcquisitionBlock|Experiment|Y #3
Position|PositionGroup|TilesSetup|AcquisitionBlock|Experiment|Y #2
EmissionFilterRef|FilterSet|Instrument|Information|Id #2
Position|PositionGroup|TilesSetup|AcquisitionBlock|Experiment|Y #1
EmissionFilterRef|FilterSet|Instrument|Information|Id #1
CameraIntegrationTime|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
Model|Manufacturer|Detector|Instrument|Information #2
Model|Manufacturer|Detector|Instrument|Information #1
AxisOfRotation|V|Image|Information #1
CameraSuperSampling|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
ExcitationIntensity|Attenuator|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #2
ExcitationIntensity|Attenuator|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
StageOrientation|Calibration|ShuttleAndFindData|Data|Appliance|Y #1
TrackMultiplexType|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
CameraFrameHeight|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
AutoFocusMode|PositionGroup|TilesSetup|AcquisitionBlock|Experiment #4
AutoFocusMode|PositionGroup|TilesSetup|AcquisitionBlock|Experiment #3
AutoFocusMode|PositionGroup|TilesSetup|AcquisitionBlock|Experiment #2
SimGratingPeriod|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
AutoFocusMode|PositionGroup|TilesSetup|AcquisitionBlock|Experiment #1
Start|Interval|I|Image|Information #1
IncrementZ|View|V|Image|Information #4
IncrementZ|View|V|Image|Information #3
Gain|Detector|Instrument|Information #2
IncrementZ|View|V|Image|Information #2
Gain|Detector|Instrument|Information #1
IncrementZ|View|V|Image|Information #1
CenterWavelength|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
UseRois|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
Instrument|Information|Id #1
Zoom|Detector|Instrument|Information #2
Zoom|Detector|Instrument|Information #1
LsmTag #13
LsmTag #12
LsmTag #11
LsmTag #10
Offset|Channel|Image|Information #2
Offset|Channel|Image|Information #1
CondensorAperture|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
Detector|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment|Name #2
Detector|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment|Name #1
AmplificationGain|Detector|Instrument|Information #2
LsmTag #09
AmplificationGain|Detector|Instrument|Information #1
ScalingZ|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
LsmTag #08
LsmTag #07
LsmTag #06
LsmTag #05
LsmTag #04
LsmTag #03
Position|PositionGroup|TilesSetup|AcquisitionBlock|Experiment|Z #4
LsmTag #02
Position|PositionGroup|TilesSetup|AcquisitionBlock|Experiment|Z #3
LsmTag #01
Position|PositionGroup|TilesSetup|AcquisitionBlock|Experiment|Z #2
LightSource|Channel|Image|Information|Id #4
Position|PositionGroup|TilesSetup|AcquisitionBlock|Experiment|Z #1
LightSource|Channel|Image|Information|Id #3
LightSource|Channel|Image|Information|Id #2
SinglePeak|IlluminationWavelength|Channel|Image|Information #2
LightSource|Channel|Image|Information|Id #1
SinglePeak|IlluminationWavelength|Channel|Image|Information #1
Wavelength|Attenuator|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #2
FilterSamplingNumber|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
Wavelength|Attenuator|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
DigitalOffset|Detector|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #2
DigitalOffset|Detector|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
Offset|View|V|Image|Information #4
Offset|View|V|Image|Information #3
PositionY|View|V|Image|Information #4
CameraFrameOffsetX|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
Offset|View|V|Image|Information #2
PositionY|View|V|Image|Information #3
Offset|View|V|Image|Information #1
PositionY|View|V|Image|Information #2
PositionY|View|V|Image|Information #1
DimensionX|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
LensNA|Objective|Instrument|Information #1
Position|Scene|S|Image|Information|X #1
Objective|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
Detector|Channel|Image|Information|Id #2
Detector|Channel|Image|Information|Id #1
SizeX|Image|Information #1
EmissionWavelength|Channel|Image|Information #2
EmissionWavelength|Channel|Image|Information #1
TileAcquisitionOverlap|PositionGroup|TilesSetup|AcquisitionBlock|Experiment #4
FitFramesizeToRoi|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
TileAcquisitionOverlap|PositionGroup|TilesSetup|AcquisitionBlock|Experiment #3
TileAcquisitionOverlap|PositionGroup|TilesSetup|AcquisitionBlock|Experiment #2
Name|Document|Information #1
TileAcquisitionOverlap|PositionGroup|TilesSetup|AcquisitionBlock|Experiment #1
RtRegionWidth|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
SimRotations|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
Color|Detector|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #2
Color|Detector|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
Binning|Channel|Image|Information #2
Binning|Channel|Image|Information #1
MicroscopeRef|Image|Information|Id #1
BiDirectionalZ|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
OriginalScanData|Image|Information #1
FilterSet|Instrument|Information|Id #2
FilterSet|Instrument|Information|Id #1
TilesY|PositionGroup|TilesSetup|AcquisitionBlock|Experiment #4
RtRegionHeight|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
TilesY|PositionGroup|TilesSetup|AcquisitionBlock|Experiment #3
TilesY|PositionGroup|TilesSetup|AcquisitionBlock|Experiment #2
TilesY|PositionGroup|TilesSetup|AcquisitionBlock|Experiment #1
PureRatioSource|Detector|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #2
PureRatioSource|Detector|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
AcquisitionMode|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
IlluminationType|Channel|Image|Information #2
IlluminationType|Channel|Image|Information #1
Marker|Calibration|ShuttleAndFindData|Data|Appliance|StageYPosition #3
Marker|Calibration|ShuttleAndFindData|Data|Appliance|StageYPosition #2
Marker|Calibration|ShuttleAndFindData|Data|Appliance|StageYPosition #1
OffsetY|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
RtSuperSampling|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
NominalMagnification|Objective|Instrument|Information #1
ObjectiveRef|Image|Information|Id #1
SubType|Document|Information #1
Appliance|Id #1
Filter|Instrument|Information|Id #2
Filter|Instrument|Information|Id #1
PositionZ|View|V|Image|Information #4
PositionZ|View|V|Image|Information #3
Marker|Calibration|ShuttleAndFindData|Data|Appliance|Id #3
ScalingX|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
PositionZ|View|V|Image|Information #2
Marker|Calibration|ShuttleAndFindData|Data|Appliance|Id #2
DimensionT|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
PositionZ|View|V|Image|Information #1
Marker|Calibration|ShuttleAndFindData|Data|Appliance|Id #1
StackBrightnessCorrection|ZStackSetup|AcquisitionBlock|Experiment #1
Position|Scene|S|Image|Information|Y #1
Rotation|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
Scene|S|Image|Information|Index #1
Extrapolate|ZStackSetup|AcquisitionBlock|Experiment #1
Amplitude|Channel|Image|Information #2
Amplitude|Channel|Image|Information #1
DigitalGain|Detector|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #2
DigitalGain|Detector|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
SizeC|Image|Information #1
Medium|Image|Information #1
View|V|Image|Information|V #4
View|V|Image|Information|V #3
View|V|Image|Information|V #2
FocusStabilizer|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
View|V|Image|Information|V #1
SinglePeak|DetectionWavelength|Channel|Image|Information #2
DigitalGain|Channel|Image|Information #2
SinglePeak|DetectionWavelength|Channel|Image|Information #1
DigitalGain|Channel|Image|Information #1
Filterset|Detector|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #2
Filterset|Detector|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
Attenuation|Channel|Image|Information #4
Attenuation|Channel|Image|Information #3
FilterTransmission|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
Attenuation|Channel|Image|Information #2
HdrNumFrames|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
Attenuation|Channel|Image|Information #1
HdrEnabled|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
DetectorMode|Detector|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #2
DetectorMode|Detector|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
TransmittedLightLampIntensity|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
TirfAngle|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
RtOffsetX|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
SpectralScanChannels|Detector|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #2
SpectralScanChannels|Detector|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
Model|Manufacturer|Objective|Instrument|Information #1
Immersion|Objective|Instrument|Information #1
DisplayName|User|Information #1
LsmTag|Type #13
Rating|Document|Information #1
LsmTag|Type #12
LsmTag|Type #11
LsmTag|Type #10
DeviceMode|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
DetectorIdentifier|Detector|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #2
DetectorIdentifier|Detector|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
Wavelength|Channel|Image|Information #4
Wavelength|Channel|Image|Information #3
Wavelength|Channel|Image|Information #2
Wavelength|Channel|Image|Information #1
Detector|Instrument|Information|Id #2
LsmTag|Type #09
RtLinePeriod|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
Detector|Instrument|Information|Id #1
LsmTag|Type #08
LsmTag|Type #07
LsmTag|Type #06
LsmTag|Type #05
LsmTag|Type #04
LsmTag|Type #03
LsmTag|Type #02
LsmTag|Type #01
Increment|Interval|View|MultiView|Z|Image|Information #4
Increment|Interval|View|MultiView|Z|Image|Information #3
Position|Scene|S|Image|Information|Z #1
View|MultiView|Z|Image|Information|V #4
Increment|Interval|View|MultiView|Z|Image|Information #2
View|MultiView|Z|Image|Information|V #3
Increment|Interval|View|MultiView|Z|Image|Information #1
View|MultiView|Z|Image|Information|V #2
View|MultiView|Z|Image|Information|V #1
CameraFrameOffsetY|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
ZoomX|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
Track|Image|Information|Id #1
StartPosition|I|Image|Information #1
StartPosition|V|Image|Information #1
DimensionY|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
LaserPower|Laser|AcquisitionBlock|Experiment #3
LaserPower|Laser|AcquisitionBlock|Experiment #2
Start|Interval|View|MultiView|Z|Image|Information #4
LaserPower|Laser|AcquisitionBlock|Experiment #1
Start|Interval|View|MultiView|Z|Image|Information #3
PixelPeriod|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
Start|Interval|View|MultiView|Z|Image|Information #2
Channel|Image|Information|Id #2
Start|Interval|View|MultiView|Z|Image|Information #1
Channel|Image|Information|Id #1
Name|Application|Information #1
TileAcquisitionMode|PositionGroup|TilesSetup|AcquisitionBlock|Experiment #4
TileAcquisitionMode|PositionGroup|TilesSetup|AcquisitionBlock|Experiment #3
TileAcquisitionMode|PositionGroup|TilesSetup|AcquisitionBlock|Experiment #2
TimeSeries|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
ContrastMethod|Channel|Image|Information #2
RtFrameWidth|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
TileAcquisitionMode|PositionGroup|TilesSetup|AcquisitionBlock|Experiment #1
ContrastMethod|Channel|Image|Information #1
MicroscopeType|Calibration|ShuttleAndFindData|Data|Appliance #1
FilterMethod|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
CreationDate|Document|Information #1
SizeZ|Image|Information #1
StartPosition|Z|Image|Information #1
CameraBinning|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
PixelType|Image|Information #1
LaserSuppression|Detector|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #2
LaserSuppression|Detector|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
AmplifierOffset|Detector|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #2
Distance|Scaling|Id #3
AmplifierOffset|Detector|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
Distance|Scaling|Id #2
Distance|Scaling|Id #1
RefractiveIndex|Image|Information #1
AmplifierGain|Detector|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #2
AmplifierGain|Detector|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
ExperimentBlockIndex|Experiment #1
NALightSheet|Channel|Image|Information #2
NALightSheet|Channel|Image|Information #1
FieldStopPosition|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
Objective|Instrument|Information|Id #1
ReflectedLightLampIntensity|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
Filter|BeamSplitter|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #2
TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment|Name #1
Filter|BeamSplitter|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
OffsetZ|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
CondensorFrontlensPosition|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
UserName|Document|Information #1
Channel|Image|Information|Name #2
Channel|Image|Information|Name #1
Voltage|Detector|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #2
Voltage|Detector|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
HdrIntensity|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
Filter|Instrument|Information|Name #2
ScalingY|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
Filter|Instrument|Information|Name #1
LsmTag|Name #13
LsmTag|Name #12
ComponentBitCount|Image|Information #1
LsmTag|Name #11
LsmTag|Name #10
AcquisitionMode|Channel|Image|Information #2
Version|Application|Information #1
AcquisitionMode|Channel|Image|Information #1
PalmSlider|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
InterpolationY|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
LaserSuppressionMode|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
LsmTag|Name #09
LsmTag|Name #08
Interpolation|ZStackSetup|AcquisitionBlock|Experiment #1
LsmTag|Name #07
LsmTag|Name #06
LsmTag|Name #05
LsmTag|Name #04
LsmTag|Name #03
Increment|Interval|I|Image|Information #1
LsmTag|Name #02
LsmTag|Name #01
RtBinning|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
LaserName|Laser|AcquisitionBlock|Experiment #3
LaserName|Laser|AcquisitionBlock|Experiment #2
LaserName|Laser|AcquisitionBlock|Experiment #1
Position|PositionGroup|TilesSetup|AcquisitionBlock|Experiment|X #4
PinholeDiameter|Detector|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #2
Position|PositionGroup|TilesSetup|AcquisitionBlock|Experiment|X #3
PinholeDiameter|Detector|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
RtZoom|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
Position|PositionGroup|TilesSetup|AcquisitionBlock|Experiment|X #2
Position|PositionGroup|TilesSetup|AcquisitionBlock|Experiment|X #1
PreScan|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
Value|Distance|Scaling #3
Microscope|Instrument|Information|Id #1
Value|Distance|Scaling #2
Value|Distance|Scaling #1
LaserSuppression|Attenuator|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #2
LaserSuppression|Attenuator|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
Laser|Attenuator|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #2
Laser|Attenuator|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
RtFrameHeight|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
SizeV|Image|Information #1
StageOrientation|Calibration|ShuttleAndFindData|Data|Appliance|X #1
RtOffsetY|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
CameraFrameWidth|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
AutoFocusOffset|PositionGroup|TilesSetup|AcquisitionBlock|Experiment #4
AutoFocusOffset|PositionGroup|TilesSetup|AcquisitionBlock|Experiment #3
AutoFocusOffset|PositionGroup|TilesSetup|AcquisitionBlock|Experiment #2
AutoFocusOffset|PositionGroup|TilesSetup|AcquisitionBlock|Experiment #1
Gain|Channel|Image|Information #2
Gain|Channel|Image|Information #1
Marker|Calibration|ShuttleAndFindData|Data|Appliance|FocusPosition #3
Marker|Calibration|ShuttleAndFindData|Data|Appliance|FocusPosition #2
Version #1
Marker|Calibration|ShuttleAndFindData|Data|Appliance|FocusPosition #1
Palette|Detector|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #2
Palette|Detector|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
AttachmentName|BinaryList|T|Image|Information #1
ChannelRef|Track|Image|Information|Id #2
ChannelRef|Track|Image|Information|Id #1
Identifier|BeamSplitter|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #3
Transmission|Attenuator|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #2
Identifier|BeamSplitter|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #2
Transmission|Attenuator|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
Identifier|BeamSplitter|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
BitsPerSample|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
System|Microscope|Instrument|Information #1
BiDirectional|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
CenterPosition|V|Image|Information #1
SizeY|Image|Information #1
ZoomY|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
BeamSplitterServoPosition|BeamSplitter|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #3
BeamSplitterServoPosition|BeamSplitter|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #2
BeamSplitterServoPosition|BeamSplitter|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
Marker|Calibration|ShuttleAndFindData|Data|Appliance|StageXPosition #3
Marker|Calibration|ShuttleAndFindData|Data|Appliance|StageXPosition #2
Marker|Calibration|ShuttleAndFindData|Data|Appliance|StageXPosition #1
DimensionZ|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
TilesX|PositionGroup|TilesSetup|AcquisitionBlock|Experiment #4
TilesX|PositionGroup|TilesSetup|AcquisitionBlock|Experiment #3
TilesX|PositionGroup|TilesSetup|AcquisitionBlock|Experiment #2
TilesX|PositionGroup|TilesSetup|AcquisitionBlock|Experiment #1
Title|Document|Information #1
PhotonConversionFactor|Channel|Image|Information #2
PhotonConversionFactor|Channel|Image|Information #1
FilterMode|AcquisitionModeSetup|AcquisitionBlock|Experiment #1
ImageChannelName|Detector|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #2
FilterSet|Channel|Image|Information|Id #2
ImageChannelName|Detector|TrackSetup|MultiTrackSetup|AcquisitionBlock|Experiment #1
FilterSet|Channel|Image|Information|Id #1
java.lang.RuntimeException: Missing key Information|Image|V|View|SizeZ #1 in LZ1 metadata
    at spim.fiji.datasetmanager.LightSheetZ1MetaData.getDouble(LightSheetZ1MetaData.java:368)
    at spim.fiji.datasetmanager.LightSheetZ1MetaData.loadMetaData(LightSheetZ1MetaData.java:143)
    at spim.fiji.datasetmanager.LightSheetZ1MetaData.loadMetaData(LightSheetZ1MetaData.java:78)
    at spim.fiji.datasetmanager.LightSheetZ1.createDataset(LightSheetZ1.java:74)
    at spim.fiji.plugin.Define_Multi_View_Dataset.defineDataset(Define_Multi_View_Dataset.java:105)
    at spim.fiji.plugin.Data_Explorer.run(Data_Explorer.java:53)
    at ij.IJ.runUserPlugIn(IJ.java:199)
    at ij.IJ.runPlugIn(IJ.java:163)
    at ij.Executer.runCommand(Executer.java:131)
    at ij.Executer.run(Executer.java:64)
    at java.lang.Thread.run(Unknown Source)
```
StephanPreibisch commented 9 years ago

How can this key vanish? Mmh ... well, having the file would solve it very quickly :) Let's wait for that instead of wasting time now.

What is your workflow? Maybe I can reproduce the error with my LZ1 files ... I wasn't able so fart

StephanPreibisch commented 9 years ago

Oh I think I know what might have happened. When did you define this dataset?

emmenlau commented 9 years ago

The original error I reported beginning of this week was from a dataset that I defined a few weeks back. Then yesterday I assumed that maybe the (old) XML was not compatible anymore, so I tried to define the dataset anew, and also tried to define new, previously unused (smaller) czi files. The error I received was very similar (I assumed it is the same). Was it a different error? I.e. the last error I just posted 5 minutes ago was from defining the dataset anew, whereas the sizes I posted a few hours back where from the old definition.

StephanPreibisch commented 9 years ago

I am completely puzzled. I tried with my own LZ1 file, twice. First time it worked, then I got the same error.

StephanPreibisch commented 9 years ago

OK, I got it. It fails within Fiji, but works when I call it from Eclipse. Different versions of Bioformats seem to create different key names for the same information. I will implement a work-around ...

emmenlau commented 9 years ago

Two thumbs up for spotting the problem! Looking forward to a test!

StephanPreibisch commented 9 years ago

This commit https://github.com/bigdataviewer/SPIM_Registration/commit/d10db40f989c20ec07b3d615f4a2965e20c573d2 fixes it for my LZ1 czi files. Can you please try again with the newest build @emmenlau?

StephanPreibisch commented 9 years ago

I also filed an issue for bioformats regarding this issue https://github.com/openmicroscopy/bioformats/issues/1782

emmenlau commented 9 years ago

With Last build (#217), from 4 min 35 sec ago, my mileage is quite good, I can progress beyond the previous error. I will try to test more and then report back again, but my (preliminary) first impression is positive...

StephanPreibisch commented 9 years ago

I think that should be it and I will close this issue for now. Thanks so much for reporting @emmenlau and thanks for the help @dscho! I will draft a new release so everybody will have this bugfix.

ctrueden commented 9 years ago

Different versions of Bioformats seem to create different key names for the same information.

Yep, the key names should not be considered stable, and are not supposed to be used for extracting metadata. You may have more breakages in the future.

The original idea was that there would always be (ideally format-agnostic, but also format-specific as needed) type-safe accessor methods for that stuff. But Bio-Formats often does not provide such methods—SCIFIO is making a really serious concerted effort to be better about that (right @hinerm? ;-).

StephanPreibisch commented 9 years ago

Unfortunately, it seems the API does have no way to extract this kind of metadata right now ... but now that I know it will be easy to fix in the future

dscho commented 9 years ago

I wasn't able so fart

Nice Freudian... :blush:

dscho commented 9 years ago

SCIFIO is making a really serious concerted effort to be better about that (right @hinerm? ;-).

And a much appreciated effort at that. I just wish more scientists would support that effort actively.