Task #7009 (closed)
BUG: Import 8kx8k.tif
Reported by: | ajpatterson | Owned by: | mlinkert |
---|---|---|---|
Priority: | major | Milestone: | OMERO-4.4 |
Component: | Bio-Formats | Version: | n.a. |
Keywords: | n.a. | Cc: | jburel, cxallan |
Resources: | n.a. | Referenced By: | n.a. |
References: | n.a. | Remaining Time: | 0.0d |
Sprint: | 2011-11-29 (3) |
Description
If you select the file 8kx8k.tif and hit [+] you get a Processing Files dialog that keeps going for a long time, at least 30 mins on my Vistual WinXP machine.
Change History (13)
comment:1 Changed 13 years ago by ajpatterson
comment:2 Changed 13 years ago by ajpatterson
After discussion with Chris these file have been moved out of the test-image-good/tif folder to a tiff-big-images folder as the very slow response is expected.
Leaving ticket open as cancelling the Processing Files should not cause "No importable found in this selection" problem
comment:3 follow-up: ↓ 11 Changed 13 years ago by jburel
- Cc jburel added
- Component changed from Bio-Formats to Import
- Milestone changed from OMERO-Beta4.3.3 to OME-5.0
- Sprint 2011-10-13 (1) deleted
Following discussion with Andrew, the fact that it takes a long time is something we cannot address now.
The import UI indicates that it is possible to cancel, The "processing" box is no longer displayed but actually the "processing" is still on-going. Nothing we can do at the moment.
comment:4 Changed 13 years ago by mlinkert
- Sprint set to 2011-11-10 (2)
comment:5 Changed 12 years ago by mlinkert
- Owner changed from mlinkert-x to cxallan
Re-assigning to Chris, as this looks to be a bug in the importer. Let me know if I need to investigate anything in Bio-Formats (or if you want help with testing etc.).
comment:6 Changed 12 years ago by cxallan
With default memory sizes being what they are and the image in question being just one large 8K by 8K block without tiling the Bio-Formats setId() time is incredibly slow with the reader stack we are using. What happens during "processing" is that the file is evaluated for its "candidates", for which metadata must be parsed. Especially on a machine with limited resources this can be a huge problem.
As we are using the ChannelFiller and ChannelSeparator wrapper classes (for which we may be able to avoid for the purposes of the above checks) we incur at least one full plane read for the above use case as ChannelFiller has in its setId() implementation:
... 265 // NB: For some formats, LUTs are plane-specific and will 266 // only be available after opening a particular image plane. 267 reader.openBytes(0, 0, 0, 1, 1); // read a single pixel, for performance ...
comment:7 Changed 12 years ago by cxallan
- Cc mlinkert-x added
comment:8 Changed 12 years ago by cxallan
- Remaining Time set to 0.25
comment:9 Changed 12 years ago by cxallan
- Status changed from new to accepted
comment:10 Changed 12 years ago by cxallan
- Cc cxallan added; mlinkert-x removed
- Component changed from Import to Bio-Formats
- Owner changed from cxallan to mlinkert-x
- Remaining Time changed from 0.25 to 1.0
- Sprint changed from 2011-11-10 (2) to 2011-11-24 (3)
Original commit where the openBytes() call was added: [59284f3840d9ad7c7824bf69f60b5b9edd218f7a/bioformats.git].
comment:11 in reply to: ↑ 3 Changed 12 years ago by cxallan
Replying to jburel:
Following discussion with Andrew, the fact that it takes a long time is something we cannot address now.
The import UI indicates that it is possible to cancel, The "processing" box is no longer displayed but actually the "processing" is still on-going. Nothing we can do at the moment.
The Importer actions, with respect to cancellation, will be handled as part of #7206.
comment:12 Changed 12 years ago by Melissa Linkert <melissa@…>
- Remaining Time changed from 1.0 to 0
- Resolution set to fixed
- Status changed from accepted to closed
(In [5e343246191e8cdee25e43993115bb9bf347277d/bioformats.git]) Ensure that a LUT is available once setId returns.
Previously, some readers for formats which stored one LUT per plane
would return null on calls to get*LookupTable?() that occurred prior to a
call to openBytes(...). Now, get*LookupTable?() will return the LUT of
the 0th plane when called immediately after setId(...).
Most importantly, this means that we can eliminate the call to openBytes
in ChannelFiller?.setId(...), the sole purpose of which was to ensure
that the LUT for plane #0 was available immediately.
Closes #7009.
comment:13 Changed 12 years ago by Melissa Linkert <melissa@…>
(In [5e343246191e8cdee25e43993115bb9bf347277d/bioformats.git]) Ensure that a LUT is available once setId returns.
Previously, some readers for formats which stored one LUT per plane
would return null on calls to get*LookupTable?() that occurred prior to a
call to openBytes(...). Now, get*LookupTable?() will return the LUT of
the 0th plane when called immediately after setId(...).
Most importantly, this means that we can eliminate the call to openBytes
in ChannelFiller?.setId(...), the sole purpose of which was to ensure
that the LUT for plane #0 was available immediately.
Closes #7009.
After cancelling the dialog any further adds get "No importable found in this selection"