[ome-users] bioformats and ITK

Mark Hiner hiner at wisc.edu
Tue Oct 16 17:00:58 BST 2012


Hi Kishore,

 I am sorry I wasn't able to get to your issue yesterday. Looking at it
today, I think there are a couple of things going on here.

 First of all: in your test class
- I consolidated a BioFormatsImageIO and the ImageIOBase.
- In the region updating loop, the wrong region (dim-3 instead of dim-2)
was being set, and only the index is set. I suspect both the index and size
need to be set.

 I attached an updated version of your test, where in the first iteration
it sets IndexT = 0, sizeT = 1. The second iteration sets IndexT = 1, sizeT
= 2.  I believe those regions will split the time points as you wanted.

But there is a second issue: although the Reader IORegion is correct (I
think) the Writer is not. It is defaulting to the ITK base 3D region. When
I tried setting the Writer's region to our desired region, it throws an
exception because the 5D region can't be contained by what it thinks is the
largest possible (3D) region. I am refreshing myself on the ITK API and
once we figure out how to set that region, I think it will write the images
correctly (or we can move on to the next problem).

In your test I changed the output format to ome.tiff because I know that
will use the itkBioFormatsImageIO writer code, which I know is capable of
handling 5D writing.

Also, in testing I found a couple of bugs in the ITKPipesBridge code. I
started a new branch to fix these and any other issues that may be
discovered. If you want to use the itkBioFormatsImageIO writer code you'll
have to use this new branch for now. You can find it here:
https://github.com/hinerm/bioformats/commits/bf-itk-fixes

As always, let me know if this isn't fully addressing your issue.
Otherwise, I'll let you know as soon as I have the Writer region setting
properly.

Thanks!
- Mark

On Fri, Oct 12, 2012 at 11:28 AM, Kishore Mosaliganti <kishoreraom at gmail.com
> wrote:

> Hi Mark,
>
> Thank you for the email and invaluable help. The bioformats-itk plugin is
> wonderful. I am attaching my script here to help you debug. Let me know if
> you have any questions on my script. I am starting with a 5D (XYZTC) image
> and trying to write out all the 3D timepoints for the first channel.
>
> Kishore
>
>
> On Fri, Oct 12, 2012 at 12:19 PM, Mark Hiner <hinerm at gmail.com> wrote:
>
>> Hi Kishore,
>>
>>  I helped develop the bf-itk-pipe plugin and am investigating your issue
>> right now.
>>
>>  What you're doing seems reasonable, so I'm trying to determine if
>> there's a bug in the plugin. My goal is to have some working example code
>> for you (and a fix if necessary) by the end of the day.
>>
>> Thank you for using our plugin! I hope we can get it working for you soon.
>>
>> - Mark
>>
>> On Fri, Oct 12, 2012 at 10:54 AM, Kishore Mosaliganti <
>> kishoreraom at gmail.com> wrote:
>>
>>> Dear ITK and OME users,
>>>
>>> To further elaborate, I figured that this has nothing to do with the
>>> itkStreamingImageFilter.
>>>
>>> Instead, the itkImageFileReader seems to be extracting the same image
>>> region although I update the requested region in the BioformatsImageIO
>>> class :;
>>>
>>>     itk::BioFormatsImageIO::Pointer io = itk::BioFormatsImageIO::New();
>>>     io->SetIORegion( region ); // doesn't make a difference in terms of
>>> image data extracted. Its always from the beginning.
>>>
>>>     ReaderType::Pointer reader = ReaderType::New();
>>>     reader->SetFileName(argv[1]);
>>>     reader->SetImageIO(io);
>>>     reader->Update();
>>>
>>> So, my general question is whether the BioformatsImageIO expects the
>>> whole LSM image to be loaded into memory before writing it out? I would
>>> like to specify small image regions since my LSM is too large to be fully
>>> loaded into memory. How else can I stream data from large LSM?
>>>
>>> Thanks,
>>>
>>> Kishore
>>>
>>>
>>> On Fri, Oct 12, 2012 at 8:53 AM, Kishore Mosaliganti <
>>> kishoreraom at gmail.com> wrote:
>>>
>>>> Hi all,
>>>>
>>>> I am trying to use bioformats and itk. I downloaded and compiled
>>>> bf-itk-pipe using cmake by linking against ITK 3.2:
>>>>
>>>>
>>>> https://github.com/openmicroscopy/bioformats/tree/develop/components/native/bf-itk-pipe
>>>>
>>>>
>>>> I tested out itkBFImageInfo and ./itkRGBBioFormatsImageIOTest on a few
>>>> simple LSM images. It works great and writes out all the associated
>>>> metadata and pixel data for the first timepoint.
>>>>
>>>> My LSM microscopy image is 5D. It is X-Y-Z-Time-Channel. I am
>>>> interested in extracting individual timepoints from the LSM file for
>>>> processing. The filter seems to be using itkStreamingImageFilter. I set the
>>>> NumberOfStreams to 10 but that still seems to still write out only the
>>>> first image.
>>>>
>>>> How do I set the output requestion region for an individual timepoint?
>>>>
>>>> Thank you,
>>>>
>>>> Kishore
>>>
>>>
>>>
>>> _______________________________________________
>>> ome-users mailing list
>>> ome-users at lists.openmicroscopy.org.uk
>>> http://lists.openmicroscopy.org.uk/mailman/listinfo/ome-users
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openmicroscopy.org.uk/pipermail/ome-users/attachments/20121016/8e2d8100/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: itkLSMBioFormatsImageIOTest.cxx
Type: application/octet-stream
Size: 4622 bytes
Desc: not available
URL: <http://lists.openmicroscopy.org.uk/pipermail/ome-users/attachments/20121016/8e2d8100/attachment.obj>


More information about the ome-users mailing list