Hi David,

The Meta Image IO can currently stream write, so it may be helpful to
look at it, too.

Hope this helps,
Matt

On Mon, Dec 30, 2013 at 8:05 AM, Bradley Lowekamp
<[email protected]> wrote:
> This article  may be of some use too:
> http://www.insight-journal.org/browse/publication/729
> On Dec 30, 2013, at 1:40 AM, David Froger <[email protected]> wrote:
>
>> Hi all,
>>
>> I would like to add writer streaming support to the HDF5 module. Writer
>> streaming would includes:
>>
>> 1) Write a whole array in a new HDF5 file by iteration on subregion writting.
>> For example: write NZ times an array of dimension (NY*NX) in a new HDF5 file
>> that will finally store an array of dimensions (NZ*NY*NX).
>>
>> 2) Paste (override) a subregion in an existing HDF5 file. (This require to
>> open the file in a different mode).
>>
>> I know how to do it in HDF5, I've looked at the source code of the HDF5 ITK
>> module, and have some questions on how to patch the HDF5 module.
>>
>> To support reading and writing subregion, HDF5 manipulates simple arrays
>> defining the start and the size of the region to read/write. These arrays are
>> 'HDFSize' and 'offset' in the method HDF5ImageIO::SetupStreaming of the file
>> itkHDF5ImageIO.cxx, and their values are set according to the size and index
>> of the region 'this->GetIORegion()':
>>
>>   void
>>   HDF5ImageIO
>>   ::SetupStreaming(H5::DataSpace *imageSpace, H5::DataSpace *slabSpace)
>>   {
>>     ImageIORegion            regionToRead = this->GetIORegion();
>>     ImageIORegion::SizeType  size = regionToRead.GetSize();
>>     ImageIORegion::IndexType start = regionToRead.GetIndex();
>>     //
>>     int numComponents = this->GetNumberOfComponents();
>>
>>     const int HDFDim(this->GetNumberOfDimensions() +
>>                      (numComponents > 1 ? 1 : 0));
>>     hsize_t *offset = new hsize_t[HDFDim];
>>     hsize_t *HDFSize = new hsize_t[HDFDim];
>>     int limit;
>>     //
>>     // fastest moving dimension is intra-voxel
>>     // index
>>     if(numComponents > 1)
>>       {
>>       limit = HDFDim - 1;
>>       offset[limit] = 0;
>>       HDFSize[limit] = numComponents;
>>       }
>>     else
>>       {
>>       limit = HDFDim;
>>       }
>>     for(int i=0; i < limit; i++)
>>       {
>>       offset[limit - i - 1] = start[i];
>>       HDFSize[limit - i - 1] = size[i];
>>       }
>>     slabSpace->setExtentSimple(HDFDim,HDFSize);
>>     imageSpace->selectHyperslab(H5S_SELECT_SET,HDFSize,offset);
>>     delete[] HDFSize;
>>     delete[] offset;
>>   }
>>
>> When reading a file, 'this->GetIORegion()' can be modified by calling
>>   reader->GetOutput()->SetRequestedRegion(requestedRegion);
>> which enables input streaming.
>>
>> But how to modifiy 'this->GetIORegion()' when writing in a file, for case 1)
>> and 2)?
>>
>> Which example / source code can I look to get started with writer streaming?
>>
>> Thanks for your help!
>>
>> David
>> _______________________________________________
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>>
>> Kitware offers ITK Training Courses, for more information visit:
>> http://kitware.com/products/protraining.php
>>
>> Please keep messages on-topic and check the ITK FAQ at:
>> http://www.itk.org/Wiki/ITK_FAQ
>>
>> Follow this link to subscribe/unsubscribe:
>> http://www.itk.org/mailman/listinfo/insight-developers
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Kitware offers ITK Training Courses, for more information visit:
> http://kitware.com/products/protraining.php
>
> Please keep messages on-topic and check the ITK FAQ at:
> http://www.itk.org/Wiki/ITK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.itk.org/mailman/listinfo/insight-developers
> _______________________________________________
> Community mailing list
> [email protected]
> http://public.kitware.com/cgi-bin/mailman/listinfo/community
_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html

Kitware offers ITK Training Courses, for more information visit:
http://kitware.com/products/protraining.php

Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ

Follow this link to subscribe/unsubscribe:
http://www.itk.org/mailman/listinfo/insight-developers

Reply via email to