DGtal 1.4.0
Loading...
Searching...
No Matches
testImageFactoryFromHDF5.cpp File Reference

A test file for ImageFactoryFromHDF5. More...

#include <iostream>
#include "DGtal/base/Common.h"
#include "DGtal/helpers/StdDefs.h"
#include "DGtal/images/ImageSelector.h"
#include "DGtal/images/ImageFactoryFromHDF5.h"
#include "DGtal/images/ImageCache.h"
#include "DGtal/images/TiledImage.h"
#include "ConfigTest.h"
Include dependency graph for testImageFactoryFromHDF5.cpp:

Go to the source code of this file.

Macros

#define H5FILE_NAME   "testImageFactoryFromHDF5.h5"
 
#define DATASETNAME_2D   "Int32Array2D"
 
#define NX_2D   6
 
#define NY_2D   5
 
#define RANK_2D   2
 
#define DATASETNAME_2D_TILED   "Int64Array2D"
 
#define RANK_2D_TILED   2
 
#define _NX_2D_TILED   16
 
#define _NY_2D_TILED   16
 
#define H5FILE_NAME_3D_TILED_EASY_READING   "testImageFactoryFromHDF5_TILED_3D_for_easy_reading.h5"
 
#define H5FILE_NAME_3D_TILED   "testImageFactoryFromHDF5_TILED_3D.h5"
 
#define DATASETNAME_3D_TILED   "DoubleArray3D"
 
#define NX_3D_TILED   10
 
#define NY_3D_TILED   8
 
#define NZ_3D_TILED   6
 
#define RANK_3D_TILED   3
 

Functions

bool writeHDF5_2D ()
 
bool writeHDF5_2D_TILED (const std::string &_H5FILE_NAME_2D_TILED)
 
bool writeHDF5_3D_TILED_for_easy_reading ()
 
bool writeHDF5_3D_TILED ()
 
bool test2D_int32 ()
 
bool testTiledImage2D_int64 ()
 
bool testTiledImage3D_double ()
 
int main (int argc, char **argv)
 

Detailed Description

A test file for ImageFactoryFromHDF5.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Author
Martial Tola (marti.nosp@m.al.t.nosp@m.ola@l.nosp@m.iris.nosp@m..cnrs.nosp@m..fr ) Laboratoire d'InfoRmatique en Image et Systèmes d'information - LIRIS (CNRS, UMR 5205), CNRS, France
Date
2013/05/16

This file is part of the DGtal library.

Definition in file testImageFactoryFromHDF5.cpp.

Macro Definition Documentation

◆ _NX_2D_TILED

#define _NX_2D_TILED   16

Definition at line 121 of file testImageFactoryFromHDF5.cpp.

Referenced by writeHDF5_2D_TILED().

◆ _NY_2D_TILED

#define _NY_2D_TILED   16

Definition at line 122 of file testImageFactoryFromHDF5.cpp.

Referenced by writeHDF5_2D_TILED().

◆ DATASETNAME_2D

#define DATASETNAME_2D   "Int32Array2D"

Definition at line 51 of file testImageFactoryFromHDF5.cpp.

Referenced by test2D_int32(), and writeHDF5_2D().

◆ DATASETNAME_2D_TILED

#define DATASETNAME_2D_TILED   "Int64Array2D"

Definition at line 119 of file testImageFactoryFromHDF5.cpp.

Referenced by testTiledImage2D_int64(), and writeHDF5_2D_TILED().

◆ DATASETNAME_3D_TILED

#define DATASETNAME_3D_TILED   "DoubleArray3D"

◆ H5FILE_NAME

#define H5FILE_NAME   "testImageFactoryFromHDF5.h5"

Definition at line 49 of file testImageFactoryFromHDF5.cpp.

Referenced by test2D_int32(), and writeHDF5_2D().

◆ H5FILE_NAME_3D_TILED

#define H5FILE_NAME_3D_TILED   "testImageFactoryFromHDF5_TILED_3D.h5"

◆ H5FILE_NAME_3D_TILED_EASY_READING

#define H5FILE_NAME_3D_TILED_EASY_READING   "testImageFactoryFromHDF5_TILED_3D_for_easy_reading.h5"

Definition at line 181 of file testImageFactoryFromHDF5.cpp.

Referenced by writeHDF5_3D_TILED_for_easy_reading().

◆ NX_2D

#define NX_2D   6

Definition at line 52 of file testImageFactoryFromHDF5.cpp.

Referenced by writeHDF5_2D().

◆ NX_3D_TILED

#define NX_3D_TILED   10

◆ NY_2D

#define NY_2D   5

Definition at line 53 of file testImageFactoryFromHDF5.cpp.

Referenced by writeHDF5_2D().

◆ NY_3D_TILED

#define NY_3D_TILED   8

◆ NZ_3D_TILED

#define NZ_3D_TILED   6

◆ RANK_2D

#define RANK_2D   2

Definition at line 54 of file testImageFactoryFromHDF5.cpp.

Referenced by writeHDF5_2D().

◆ RANK_2D_TILED

#define RANK_2D_TILED   2

Definition at line 120 of file testImageFactoryFromHDF5.cpp.

Referenced by writeHDF5_2D_TILED().

◆ RANK_3D_TILED

#define RANK_3D_TILED   3

Function Documentation

◆ main()

int main ( int argc,
char ** argv )

Definition at line 588 of file testImageFactoryFromHDF5.cpp.

589{
590 trace.beginBlock ( "Testing class ImageFactoryFromHDF5" );
591 trace.info() << "Args:";
592 for ( int i = 0; i < argc; ++i )
593 trace.info() << " " << argv[ i ];
594 trace.info() << endl;
595
596 bool res = true;
597 res = res && writeHDF5_2D() && test2D_int32();
598
599 res = res && writeHDF5_2D_TILED("testImageFactoryFromHDF5_TILED_2D.h5") && testTiledImage2D_int64();
600
602 res = res && writeHDF5_3D_TILED();
603 res = res && testTiledImage3D_double();
604
605 trace.emphase() << ( res ? "Passed." : "Error." ) << endl;
606 trace.endBlock();
607 return res ? 0 : 1;
608}
void beginBlock(const std::string &keyword="")
std::ostream & emphase()
std::ostream & info()
double endBlock()
Trace trace
Definition Common.h:153
bool writeHDF5_3D_TILED_for_easy_reading()
bool writeHDF5_2D_TILED(const std::string &_H5FILE_NAME_2D_TILED)
bool writeHDF5_3D_TILED()
bool testTiledImage2D_int64()
bool testTiledImage3D_double()
bool writeHDF5_2D()
bool test2D_int32()

References DGtal::Trace::beginBlock(), DGtal::Trace::emphase(), DGtal::Trace::endBlock(), DGtal::Trace::info(), test2D_int32(), testTiledImage2D_int64(), testTiledImage3D_double(), DGtal::trace, writeHDF5_2D(), writeHDF5_2D_TILED(), writeHDF5_3D_TILED(), and writeHDF5_3D_TILED_for_easy_reading().

◆ test2D_int32()

bool test2D_int32 ( )

Definition at line 308 of file testImageFactoryFromHDF5.cpp.

309{
310 unsigned int nbok = 0;
311 unsigned int nb = 0;
312
313 trace.beginBlock("Testing ImageFactoryFromHDF5 (2D)");
314
316
317 // 1) ImageFactoryFromHDF5
318 typedef ImageFactoryFromHDF5<Image> MyImageFactoryFromHDF5;
319 MyImageFactoryFromHDF5 factImage(H5FILE_NAME, DATASETNAME_2D);
320
321 typedef MyImageFactoryFromHDF5::OutputImage OutputImage;
322
323 Z2i::Domain domain1(Z2i::Point(0,0), Z2i::Point(1,1));
324 OutputImage *image1 = factImage.requestImage(domain1);
325 OutputImage::ConstRange r1 = image1->constRange();
326 cout << "image1: "; std::copy( r1.begin(), r1.end(), std::ostream_iterator<int>(cout,", ") ); cout << endl;
327
328 Z2i::Domain domain1b(Z2i::Point(0,0), Z2i::Point(2,2));
329 OutputImage *image1b = factImage.requestImage(domain1b);
330 OutputImage::ConstRange r1b = image1b->constRange();
331 cout << "image1b: "; std::copy( r1b.begin(), r1b.end(), std::ostream_iterator<int>(cout,", ") ); cout << endl;
332
333 Z2i::Domain domain2(Z2i::Point(2,0), Z2i::Point(3,1));
334 OutputImage *image2 = factImage.requestImage(domain2);
335 OutputImage::ConstRange r2 = image2->constRange();
336 cout << "image2: "; std::copy( r2.begin(), r2.end(), std::ostream_iterator<int>(cout,", ") ); cout << endl;
337
338 Z2i::Domain domain3(Z2i::Point(0,2), Z2i::Point(1,3));
339 OutputImage *image3 = factImage.requestImage(domain3);
340 OutputImage::ConstRange r3 = image3->constRange();
341 cout << "image3: "; std::copy( r3.begin(), r3.end(), std::ostream_iterator<int>(cout,", ") ); cout << endl;
342
343 Z2i::Domain domain4(Z2i::Point(2,2), Z2i::Point(3,3));
344 OutputImage *image4 = factImage.requestImage(domain4);
345 OutputImage::ConstRange r4 = image4->constRange();
346 cout << "image4: "; std::copy( r4.begin(), r4.end(), std::ostream_iterator<int>(cout,", ") ); cout << endl;
347
348 Z2i::Domain domain5(Z2i::Point(3,2), Z2i::Point(5,4));
349 OutputImage *image5 = factImage.requestImage(domain5);
350 OutputImage::ConstRange r5 = image5->constRange();
351 cout << "image5: "; std::copy( r5.begin(), r5.end(), std::ostream_iterator<int>(cout,", ") ); cout << endl;
352
353 // 2) ImageCache with DGtal::CACHE_READ_POLICY_LAST, DGtal::CACHE_WRITE_POLICY_WT
354 trace.info() << endl << "ImageCache with DGtal::CACHE_READ_POLICY_LAST, DGtal::CACHE_WRITE_POLICY_WT" << endl;
355
356 typedef ImageCacheReadPolicyLAST<OutputImage, MyImageFactoryFromHDF5> MyImageCacheReadPolicyLAST;
357 typedef ImageCacheWritePolicyWT<OutputImage, MyImageFactoryFromHDF5> MyImageCacheWritePolicyWT;
358 MyImageCacheReadPolicyLAST imageCacheReadPolicyLAST(factImage);
359 MyImageCacheWritePolicyWT imageCacheWritePolicyWT(factImage);
360
362 MyImageCache imageCache(factImage, imageCacheReadPolicyLAST, imageCacheWritePolicyWT);
363 OutputImage::Value aValue;
364
365 trace.info() << "READING from cache (empty cache): " << imageCache << endl;
366 if (imageCache.read(Z2i::Point(2,2), aValue))
367 trace.info() << "READ: Point 2,2 is in an image from cache, value: " << aValue << endl;
368 else
369 trace.info() << "READ: Point 2,2 is not in an image from cache." << endl;
370 nbok += (imageCache.read(Z2i::Point(2,2), aValue) == false) ? 1 : 0;
371 nb++;
372
373 trace.info() << "(" << nbok << "/" << nb << ") " << endl;
374
375 imageCache.update(domain1); // image1
376
377 trace.info() << "READING from cache (not empty but wrong domain): " << imageCache << endl;
378 if (imageCache.read(Z2i::Point(2,2), aValue))
379 trace.info() << "READ: Point 2,2 is in an image from cache, value: " << aValue << endl;
380 else
381 trace.info() << "READ: Point 2,2 is not in an image from cache." << endl;
382 nbok += (imageCache.read(Z2i::Point(2,2), aValue) == false) ? 1 : 0;
383 nb++;
384
385 trace.info() << "(" << nbok << "/" << nb << ") " << endl;
386
387 imageCache.update(domain4); // image4
388
389 trace.info() << "READING from cache (not empty but good domain): " << imageCache << endl;
390 if (imageCache.read(Z2i::Point(2,2), aValue))
391 trace.info() << "READ: Point 2,2 is in an image from cache, value: " << aValue << endl;
392 else
393 trace.info() << "READ: Point 2,2 is not in an image from cache." << endl;
394 nbok += ( (imageCache.read(Z2i::Point(2,2), aValue) && (aValue == 4)) == true ) ? 1 : 0;
395 nb++;
396
397 trace.info() << "(" << nbok << "/" << nb << ") " << endl;
398
399 trace.info() << "WRITING from cache (not empty but good domain): " << imageCache << endl;
400 aValue = 22;
401 if (imageCache.write(Z2i::Point(2,2), aValue))
402 trace.info() << "WRITE: Point 2,2 is in an image from cache, value: " << aValue << endl;
403 else
404 trace.info() << "WRITE: Point 2,2 is not in an image from cache." << endl;
405 nbok += ( (imageCache.read(Z2i::Point(2,2), aValue) && (aValue == 22)) == true ) ? 1 : 0;
406 nb++;
407
408 trace.info() << "(" << nbok << "/" << nb << ") " << endl;
409
410 imageCache.update(domain3); // image3
411
412 trace.info() << "WRITING from cache (not empty but wrong domain): " << imageCache << endl;
413 aValue = 22;
414 if (imageCache.write(Z2i::Point(2,2), aValue))
415 trace.info() << "WRITE: Point 2,2 is in an image from cache, value: " << aValue << endl;
416 else
417 trace.info() << "WRITE: Point 2,2 is not in an image from cache." << endl;
418 nbok += (imageCache.read(Z2i::Point(2,2), aValue) == false) ? 1 : 0;
419 nb++;
420
421 trace.info() << "(" << nbok << "/" << nb << ") " << endl;
422
423 imageCache.update(domain1); // image1
424
425 trace.info() << "WRITING from cache (not empty but good domain): " << imageCache << endl;
426 aValue = 7;
427 if (imageCache.write(Z2i::Point(0,0), aValue))
428 trace.info() << "WRITE: Point 0,0 is in an image from cache, value: " << aValue << endl;
429 else
430 trace.info() << "WRITE: Point 0,0 is not in an image from cache." << endl;
431 nbok += ( (imageCache.read(Z2i::Point(0,0), aValue) && (aValue == 7)) == true ) ? 1 : 0;
432 nb++;
433
434 trace.info() << "(" << nbok << "/" << nb << ") " << endl;
435
436 trace.endBlock();
437
438 return nbok == nb;
439}
Aim: implements a 'LAST' read policy cache.
Aim: implements a 'WT (Write-through)' write policy cache.
Aim: implements an images cache with 'read and write' policies.
Definition ImageCache.h:78
Aim: implements a factory from an HDF5 file.
#define DATASETNAME_2D
#define H5FILE_NAME
ImageContainerBySTLVector< Domain, Value > Image

References DGtal::Trace::beginBlock(), DATASETNAME_2D, DGtal::Trace::endBlock(), H5FILE_NAME, DGtal::Trace::info(), and DGtal::trace.

Referenced by main().

◆ testTiledImage2D_int64()

bool testTiledImage2D_int64 ( )

Definition at line 441 of file testImageFactoryFromHDF5.cpp.

442{
443 unsigned int nbok = 0;
444 unsigned int nb = 0;
445
446 trace.beginBlock("Testing TiledImage with ImageFactoryFromHDF5 (2D)");
447
449
450 typedef ImageFactoryFromHDF5<Image> MyImageFactoryFromHDF5;
451 MyImageFactoryFromHDF5 factImage("testImageFactoryFromHDF5_TILED_2D.h5", DATASETNAME_2D_TILED);
452
453 typedef MyImageFactoryFromHDF5::OutputImage OutputImage;
454
455 typedef ImageCacheReadPolicyFIFO<OutputImage, MyImageFactoryFromHDF5> MyImageCacheReadPolicyFIFO;
456 typedef ImageCacheWritePolicyWT<OutputImage, MyImageFactoryFromHDF5> MyImageCacheWritePolicyWT;
457 MyImageCacheReadPolicyFIFO imageCacheReadPolicyFIFO(factImage, 2);
458 MyImageCacheWritePolicyWT imageCacheWritePolicyWT(factImage);
459
461 BOOST_CONCEPT_ASSERT(( concepts::CImage< MyTiledImage > ));
462 MyTiledImage tiledImage(factImage, imageCacheReadPolicyFIFO, imageCacheWritePolicyWT, 4);
463
464 typedef MyTiledImage::OutputImage OutputImage;
465 OutputImage::Value aValue;
466
467 trace.info() << "Read value for Point 3,1: " << tiledImage(Z2i::Point(3,1)) << endl;
468 nbok += (tiledImage(Z2i::Point(3,1)) == 20) ? 1 : 0;
469 nb++;
470
471 trace.info() << "(" << nbok << "/" << nb << ") " << endl;
472
473 trace.info() << "Read value for Point 9,5: " << tiledImage(Z2i::Point(9,5)) << endl;
474 nbok += (tiledImage(Z2i::Point(9,5)) == 90) ? 1 : 0;
475 nb++;
476
477 trace.info() << "(" << nbok << "/" << nb << ") " << endl;
478
479 aValue = 1; tiledImage.setValue(Z2i::Point(10,6), aValue);
480 trace.info() << "Write value for Point 10,6: " << aValue << endl;
481 nbok += (tiledImage(Z2i::Point(10,6)) == 1) ? 1 : 0;
482 nb++;
483
484 trace.info() << "(" << nbok << "/" << nb << ") " << endl;
485
486 trace.info() << "Read value for Point 1,2: " << tiledImage(Z2i::Point(1,2)) << endl;
487 nbok += (tiledImage(Z2i::Point(1,2)) == 34) ? 1 : 0;
488 nb++;
489
490 trace.info() << "(" << nbok << "/" << nb << ") " << endl;
491
492 trace.info() << "Read value for Point 15,0: " << tiledImage(Z2i::Point(15,0)) << endl;
493 nbok += (tiledImage(Z2i::Point(15,0)) == 16) ? 1 : 0;
494 nb++;
495
496 trace.info() << "(" << nbok << "/" << nb << ") " << endl;
497
498 aValue = 128; tiledImage.setValue(Z2i::Point(15,0), aValue);
499 trace.info() << "Write value for Point 15,0: " << aValue << endl;
500 nbok += (tiledImage(Z2i::Point(15,0)) == 128) ? 1 : 0;
501 nb++;
502
503 trace.info() << "(" << nbok << "/" << nb << ") " << endl;
504
505 trace.endBlock();
506
507 return nbok == nb;
508}
Aim: implements a 'FIFO' read policy cache.
Aim: implements a tiled image from a "bigger/original" one from an ImageFactory.
Definition TiledImage.h:77
Aim: Defines the concept describing a read/write image, having an output iterator.
Definition CImage.h:103
#define DATASETNAME_2D_TILED

References DGtal::Trace::beginBlock(), DATASETNAME_2D_TILED, DGtal::Trace::endBlock(), DGtal::Trace::info(), and DGtal::trace.

Referenced by main().

◆ testTiledImage3D_double()

bool testTiledImage3D_double ( )

Definition at line 510 of file testImageFactoryFromHDF5.cpp.

511{
512 unsigned int nbok = 0;
513 unsigned int nb = 0;
514
515 trace.beginBlock("Testing TiledImage with ImageFactoryFromHDF5 (3D)");
516
518
519 typedef ImageFactoryFromHDF5<Image> MyImageFactoryFromHDF5;
520 MyImageFactoryFromHDF5 factImage(H5FILE_NAME_3D_TILED, DATASETNAME_3D_TILED);
521
522 typedef MyImageFactoryFromHDF5::OutputImage OutputImage;
523
524 typedef ImageCacheReadPolicyFIFO<OutputImage, MyImageFactoryFromHDF5> MyImageCacheReadPolicyFIFO;
525 typedef ImageCacheWritePolicyWT<OutputImage, MyImageFactoryFromHDF5> MyImageCacheWritePolicyWT;
526 MyImageCacheReadPolicyFIFO imageCacheReadPolicyFIFO(factImage, 2);
527 MyImageCacheWritePolicyWT imageCacheWritePolicyWT(factImage);
528
530 BOOST_CONCEPT_ASSERT(( concepts::CImage< MyTiledImage > ));
531 MyTiledImage tiledImage(factImage, imageCacheReadPolicyFIFO, imageCacheWritePolicyWT, 2);
532
533 typedef MyTiledImage::OutputImage OutputImage;
534 OutputImage::Value aValue;
535
536 trace.info() << "Read value for Point 0,0,0: " << tiledImage(Z3i::Point(0,0,0)) << endl;
537 nbok += (tiledImage(Z3i::Point(0,0,0)) == 1) ? 1 : 0;
538 nb++;
539
540 trace.info() << "(" << nbok << "/" << nb << ") " << endl;
541
542 trace.info() << "Read value for Point 3,1,0: " << tiledImage(Z3i::Point(3,1,0)) << endl;
543 nbok += (tiledImage(Z3i::Point(3,1,0)) == 14) ? 1 : 0;
544 nb++;
545
546 trace.info() << "(" << nbok << "/" << nb << ") " << endl;
547
548 trace.info() << "Read value for Point 9,5,2: " << tiledImage(Z3i::Point(9,5,2)) << endl;
549 nbok += (tiledImage(Z3i::Point(9,5,2)) == 220) ? 1 : 0;
550 nb++;
551
552 trace.info() << "(" << nbok << "/" << nb << ") " << endl;
553
554 aValue = 1.1; tiledImage.setValue(Z3i::Point(3,6,5), aValue);
555 trace.info() << "Write value for Point 3,6,5: " << aValue << endl;
556 nbok += (tiledImage(Z3i::Point(3,6,5)) == 1.1) ? 1 : 0;
557 nb++;
558
559 trace.info() << "(" << nbok << "/" << nb << ") " << endl;
560
561 trace.info() << "Read value for Point 1,2,4: " << tiledImage(Z3i::Point(1,2,4)) << endl;
562 nbok += (tiledImage(Z3i::Point(1,2,4)) == 342) ? 1 : 0;
563 nb++;
564
565 trace.info() << "(" << nbok << "/" << nb << ") " << endl;
566
567 trace.info() << "Read value for Point 8,6,3: " << tiledImage(Z3i::Point(8,6,3)) << endl;
568 nbok += (tiledImage(Z3i::Point(8,6,3)) == 309) ? 1 : 0;
569 nb++;
570
571 trace.info() << "(" << nbok << "/" << nb << ") " << endl;
572
573 aValue = 125.5; tiledImage.setValue(Z3i::Point(8,6,3), aValue);
574 trace.info() << "Write value for Point 8,6,3: " << aValue << endl;
575 nbok += (tiledImage(Z3i::Point(8,6,3)) == 125.5) ? 1 : 0;
576 nb++;
577
578 trace.info() << "(" << nbok << "/" << nb << ") " << endl;
579
580 trace.endBlock();
581
582 return nbok == nb;
583}
#define DATASETNAME_3D_TILED
#define H5FILE_NAME_3D_TILED

References DGtal::Trace::beginBlock(), DATASETNAME_3D_TILED, DGtal::Trace::endBlock(), H5FILE_NAME_3D_TILED, DGtal::Trace::info(), and DGtal::trace.

Referenced by main().

◆ writeHDF5_2D()

bool writeHDF5_2D ( )

Definition at line 56 of file testImageFactoryFromHDF5.cpp.

57{
58 hid_t file, dataset; // file and dataset handles
59 hid_t datatype, dataspace; // handles
60 hsize_t dimsf[RANK_2D]; // dataset dimensions
61 herr_t status;
62 DGtal::int32_t data[NY_2D][NX_2D]; // data to write
63 int i, j;
64
65 // Data and output buffer initialization.
66 for(j = 0; j < NY_2D; j++)
67 for(i = 0; i < NX_2D; i++)
68 data[j][i] = j + i;
69 /*
70 * 0 1 2 3 4 5
71 * 1 2 3 4 5 6
72 * 2 3 4 5 6 7
73 * 3 4 5 6 7 8
74 * 4 5 6 7 8 9
75 */
76
77 /*
78 * Create a new file using H5F_ACC_TRUNC access,
79 * default file creation properties, and default file
80 * access properties.
81 */
82 file = H5Fcreate(H5FILE_NAME, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
83
84 // Describe the size of the array and create the data space for fixed size dataset.
85 dimsf[0] = NY_2D;
86 dimsf[1] = NX_2D;
87 dataspace = H5Screate_simple(RANK_2D, dimsf, NULL);
88
89 /*
90 * Define datatype for the data in the file.
91 */
92 datatype = H5Tcopy(H5T_NATIVE_INT32);
93 status = H5Tset_order(datatype, H5T_ORDER_LE);
94
95 /*
96 * Create a new dataset within the file using defined dataspace and
97 * datatype and default dataset creation properties.
98 */
99 dataset = H5Dcreate2(file, DATASETNAME_2D, datatype, dataspace,
100 H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
101
102 // Write the data to the dataset using default transfer properties.
103 status = H5Dwrite(dataset, H5T_NATIVE_INT32, H5S_ALL, H5S_ALL, H5P_DEFAULT, data);
104 if (status)
105 {
106 trace.error() << " H5Dwrite error" << std::endl;
107 return false;
108 }
109
110 // Close/release resources.
111 H5Sclose(dataspace);
112 H5Tclose(datatype);
113 H5Dclose(dataset);
114 H5Fclose(file);
115
116 return true;
117}
std::ostream & error()
boost::int32_t int32_t
signed 32-bit integer.
Definition BasicTypes.h:72
#define RANK_2D
#define NX_2D
#define NY_2D

References DATASETNAME_2D, DGtal::Trace::error(), H5FILE_NAME, NX_2D, NY_2D, RANK_2D, and DGtal::trace.

Referenced by main().

◆ writeHDF5_2D_TILED()

bool writeHDF5_2D_TILED ( const std::string & _H5FILE_NAME_2D_TILED)

Definition at line 124 of file testImageFactoryFromHDF5.cpp.

125{
126 hid_t file, dataset; // file and dataset handles
127 hid_t datatype, dataspace; // handles
128 hsize_t dimsf[RANK_2D_TILED]; // dataset dimensions
129 herr_t status;
130 DGtal::int64_t data[_NY_2D_TILED][_NX_2D_TILED]; // data to write
131 int i, j;
132
133 int ii=1;
134 // Data and output buffer initialization.
135 for(j = 0; j < _NY_2D_TILED; j++)
136 for(i = 0; i < _NX_2D_TILED; i++)
137 data[j][i] = ii++;
138
139 /*
140 * Create a new file using H5F_ACC_TRUNC access,
141 * default file creation properties, and default file
142 * access properties.
143 */
144 file = H5Fcreate(_H5FILE_NAME_2D_TILED.c_str(), H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
145
146 // Describe the size of the array and create the data space for fixed size dataset.
147 dimsf[0] = _NY_2D_TILED;
148 dimsf[1] = _NX_2D_TILED;
149 dataspace = H5Screate_simple(RANK_2D_TILED, dimsf, NULL);
150
151 /*
152 * Define datatype for the data in the file.
153 */
154 datatype = H5Tcopy(H5T_NATIVE_INT64);
155 status = H5Tset_order(datatype, H5T_ORDER_LE);
156
157 /*
158 * Create a new dataset within the file using defined dataspace and
159 * datatype and default dataset creation properties.
160 */
161 dataset = H5Dcreate2(file, DATASETNAME_2D_TILED, datatype, dataspace,
162 H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
163
164 // Write the data to the dataset using default transfer properties.
165 status = H5Dwrite(dataset, H5T_NATIVE_INT64, H5S_ALL, H5S_ALL, H5P_DEFAULT, data);
166 if (status)
167 {
168 trace.error() << " H5Dwrite error" << std::endl;
169 return false;
170 }
171
172 // Close/release resources.
173 H5Sclose(dataspace);
174 H5Tclose(datatype);
175 H5Dclose(dataset);
176 H5Fclose(file);
177
178 return true;
179}
boost::int64_t int64_t
signed 94-bit integer.
Definition BasicTypes.h:74
#define RANK_2D_TILED
#define _NY_2D_TILED
#define _NX_2D_TILED

References _NX_2D_TILED, _NY_2D_TILED, DATASETNAME_2D_TILED, DGtal::Trace::error(), RANK_2D_TILED, and DGtal::trace.

Referenced by main().

◆ writeHDF5_3D_TILED()

bool writeHDF5_3D_TILED ( )
Examples
images/exampleImageFactoryFromHDF5.cpp.

Definition at line 249 of file testImageFactoryFromHDF5.cpp.

250{
251 hid_t file, dataset; // file and dataset handles
252 hid_t datatype, dataspace; // handles
253 hsize_t dimsf[RANK_3D_TILED]; // dataset dimensions
254 herr_t status;
255 double data[NZ_3D_TILED][NY_3D_TILED][NX_3D_TILED]; // data to write
256 int i, j, k;
257
258 int ii=1;
259 // Data and output buffer initialization.
260 for(k = 0; k < NZ_3D_TILED; k++)
261 for(j = 0; j < NY_3D_TILED; j++)
262 for(i = 0; i < NX_3D_TILED; i++)
263 data[k][j][i] = ii++;
264
265 /*
266 * Create a new file using H5F_ACC_TRUNC access,
267 * default file creation properties, and default file
268 * access properties.
269 */
270 file = H5Fcreate(H5FILE_NAME_3D_TILED, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
271
272 // Describe the size of the array and create the data space for fixed size dataset.
273 dimsf[0] = NZ_3D_TILED;
274 dimsf[1] = NY_3D_TILED;
275 dimsf[2] = NX_3D_TILED;
276 dataspace = H5Screate_simple(RANK_3D_TILED, dimsf, NULL);
277
278 /*
279 * Define datatype for the data in the file.
280 */
281 datatype = H5Tcopy(H5T_NATIVE_DOUBLE);
282 status = H5Tset_order(datatype, H5T_ORDER_LE);
283
284 /*
285 * Create a new dataset within the file using defined dataspace and
286 * datatype and default dataset creation properties.
287 */
288 dataset = H5Dcreate2(file, DATASETNAME_3D_TILED, datatype, dataspace,
289 H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
290
291 // Write the data to the dataset using default transfer properties.
292 status = H5Dwrite(dataset, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, data);
293 if (status)
294 {
295 trace.error() << " H5Dwrite error" << std::endl;
296 return false;
297 }
298
299 // Close/release resources.
300 H5Sclose(dataspace);
301 H5Tclose(datatype);
302 H5Dclose(dataset);
303 H5Fclose(file);
304
305 return true;
306}
#define NZ_3D_TILED
#define RANK_3D_TILED
#define NX_3D_TILED
#define NY_3D_TILED

References DATASETNAME_3D_TILED, DGtal::Trace::error(), H5FILE_NAME_3D_TILED, NX_3D_TILED, NY_3D_TILED, NZ_3D_TILED, RANK_3D_TILED, and DGtal::trace.

Referenced by main().

◆ writeHDF5_3D_TILED_for_easy_reading()

bool writeHDF5_3D_TILED_for_easy_reading ( )

Definition at line 190 of file testImageFactoryFromHDF5.cpp.

191{
192 hid_t file, dataset; // file and dataset handles
193 hid_t datatype, dataspace; // handles
194 hsize_t dimsf[RANK_3D_TILED]; // dataset dimensions
195 herr_t status;
196 double data[NY_3D_TILED][NX_3D_TILED][NZ_3D_TILED]; // data to write
197 int i, j, k;
198
199 int ii=1;
200 // Data and output buffer initialization.
201 for(k = 0; k < NZ_3D_TILED; k++)
202 for(j = 0; j < NY_3D_TILED; j++)
203 for(i = 0; i < NX_3D_TILED; i++)
204 data[j][i][k] = ii++;
205
206 /*
207 * Create a new file using H5F_ACC_TRUNC access,
208 * default file creation properties, and default file
209 * access properties.
210 */
211 file = H5Fcreate(H5FILE_NAME_3D_TILED_EASY_READING, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
212
213 // Describe the size of the array and create the data space for fixed size dataset.
214 dimsf[0] = NY_3D_TILED;
215 dimsf[1] = NX_3D_TILED;
216 dimsf[2] = NZ_3D_TILED;
217 dataspace = H5Screate_simple(RANK_3D_TILED, dimsf, NULL);
218
219 /*
220 * Define datatype for the data in the file.
221 */
222 datatype = H5Tcopy(H5T_NATIVE_DOUBLE);
223 status = H5Tset_order(datatype, H5T_ORDER_LE);
224
225 /*
226 * Create a new dataset within the file using defined dataspace and
227 * datatype and default dataset creation properties.
228 */
229 dataset = H5Dcreate2(file, DATASETNAME_3D_TILED, datatype, dataspace,
230 H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
231
232 // Write the data to the dataset using default transfer properties.
233 status = H5Dwrite(dataset, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, data);
234 if (status)
235 {
236 trace.error() << " H5Dwrite error" << std::endl;
237 return false;
238 }
239
240 // Close/release resources.
241 H5Sclose(dataspace);
242 H5Tclose(datatype);
243 H5Dclose(dataset);
244 H5Fclose(file);
245
246 return true;
247}
#define H5FILE_NAME_3D_TILED_EASY_READING

References DATASETNAME_3D_TILED, DGtal::Trace::error(), H5FILE_NAME_3D_TILED_EASY_READING, NX_3D_TILED, NY_3D_TILED, NZ_3D_TILED, RANK_3D_TILED, and DGtal::trace.

Referenced by main().