iRoCS Toolbox  1.1.0
FileIOWrapper.hh
Go to the documentation of this file.
1 /**************************************************************************
2  *
3  * Copyright (C) 2015 Thorsten Falk
4  *
5  * Image Analysis Lab, University of Freiburg, Germany
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software Foundation,
19  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20  *
21  **************************************************************************/
22 
23 #ifndef FILEIOWRAPPER_HH
24 #define FILEIOWRAPPER_HH
25 
26 #ifdef HAVE_CONFIG_H
27 #include <config.hh>
28 #endif
29 
30 #include <iostream>
31 #include <fstream>
32 #include "BlitzHdf5Light.hh"
33 
34 #include <sstream>
35 
36 #include <blitz/array.h>
37 
39 
40 // HDF5 Reader and Writer
41 namespace HDF5IOWrapper
42 {
43 
44 /*======================================================================*/
60 /*======================================================================*/
61  template<typename DataT, typename ElSizeT, int Dim>
62  void readDataset(
63  blitz::Array<DataT,Dim> &data, blitz::TinyVector<ElSizeT,Dim> &elSize,
64  std::string const &fileName, std::string const &dsName,
65  bool throwErrors = false, iRoCS::ProgressReporter *pr = NULL);
66 
67 /*======================================================================*/
80 /*======================================================================*/
81  template<typename DataT, typename ElSizeT, int Dim>
82  void readDataset(
83  blitz::Array<DataT,Dim> &data, blitz::TinyVector<ElSizeT,Dim> &elSize,
84  BlitzH5File const &inFile, std::string const &dsName,
85  iRoCS::ProgressReporter *pr = NULL);
86 
87 /*======================================================================*/
103 /*======================================================================*/
104  template<typename DataT, typename ElSizeT, int Dim>
105  void readDataset(
106  blitz::Array<DataT,Dim> &data, blitz::TinyVector<ElSizeT,Dim-1> &elSize,
107  std::string const &fileName, std::string const &dsName,
108  bool throwErrors = false, iRoCS::ProgressReporter *pr = NULL);
109 
110 /*======================================================================*/
123 /*======================================================================*/
124  template<typename DataT, typename ElSizeT, int Dim>
125  void readDataset(
126  blitz::Array<DataT,Dim> &data, blitz::TinyVector<ElSizeT,Dim-1> &elSize,
127  BlitzH5File const &inFile, std::string const &dsName,
128  iRoCS::ProgressReporter *pr = NULL);
129 
130 /*======================================================================*/
168 /*======================================================================*/
169  template<typename DataT, typename ElSizeT, int InnerDim, int OuterDim>
170  void writeDataset(
171  blitz::Array<blitz::TinyVector<DataT,InnerDim>,OuterDim> const &data,
172  blitz::TinyVector<ElSizeT,OuterDim> const &elSize,
173  std::string const &fileName, std::string const &dsName,
174  DataT displayMin, DataT displayMax, bool throwErrors = false,
175  int compression = 0, iRoCS::ProgressReporter *pr = NULL,
176  std::string const &dim_interpretation = "");
177 
178 /*======================================================================*/
213 /*======================================================================*/
214  template<typename DataT, typename ElSizeT, int InnerDim, int OuterDim>
215  void writeDataset(
216  blitz::Array<blitz::TinyVector<DataT,InnerDim>,OuterDim> const &data,
217  blitz::TinyVector<ElSizeT,OuterDim> const &elSize,
218  BlitzH5File &outFile, std::string const &dsName,
219  DataT displayMin, DataT displayMax,
220  int compression = 0, iRoCS::ProgressReporter *pr = NULL,
221  std::string const &dim_interpretation = "");
222 
223 /*======================================================================*/
262 /*======================================================================*/
263  template<typename ElSizeT, int InnerDim, int OuterDim>
264  void writeDataset(
265  blitz::Array<blitz::TinyVector<unsigned char,InnerDim>,OuterDim> const &
266  data, blitz::TinyVector<ElSizeT,OuterDim>const &elSize,
267  std::string const &fileName, std::string const &dsName,
268  bool throwErrors = false, int compression = 0,
269  iRoCS::ProgressReporter *pr = NULL,
270  std::string const &dim_interpretation = "");
271 
272 /*======================================================================*/
308 /*======================================================================*/
309  template<typename ElSizeT, int InnerDim, int OuterDim>
310  void writeDataset(
311  blitz::Array<blitz::TinyVector<unsigned char,InnerDim>,OuterDim> const &
312  data, blitz::TinyVector<ElSizeT,OuterDim>const &elSize,
313  BlitzH5File &outFile, std::string const &dsName, int compression = 0,
314  iRoCS::ProgressReporter *pr = NULL,
315  std::string const &dim_interpretation = "");
316 
317 /*======================================================================*/
357 /*======================================================================*/
358  template<typename DataT, typename ElSizeT, int InnerDim, int OuterDim>
359  void writeDataset(
360  blitz::Array<blitz::TinyVector<DataT,InnerDim>,OuterDim> const &data,
361  blitz::TinyVector<ElSizeT,OuterDim> const &elSize,
362  std::string const &fileName, std::string const &dsName,
363  bool throwErrors = false, int compression = 0,
364  iRoCS::ProgressReporter *pr = NULL,
365  std::string const &dim_interpretation = "");
366 
367 /*======================================================================*/
404 /*======================================================================*/
405  template<typename DataT, typename ElSizeT, int InnerDim, int OuterDim>
406  void writeDataset(
407  blitz::Array<blitz::TinyVector<DataT,InnerDim>,OuterDim> const &data,
408  blitz::TinyVector<ElSizeT,OuterDim> const &elSize,
409  BlitzH5File &outFile, std::string const &dsName, int compression = 0,
410  iRoCS::ProgressReporter *pr = NULL,
411  std::string const &dim_interpretation = "");
412 
413 /*======================================================================*/
451 /*======================================================================*/
452  template<typename DataT, typename ElSizeT, int InnerDim, int OuterDim>
453  void writeDataset(
454  blitz::Array<blitz::TinyVector<DataT,InnerDim>,OuterDim> const &data,
455  blitz::TinyVector<ElSizeT,OuterDim-1> const &elSize,
456  std::string const &fileName, std::string const &dsName,
457  DataT displayMin, DataT displayMax, bool throwErrors = false,
458  int compression = 0, iRoCS::ProgressReporter *pr = NULL,
459  std::string const &dim_interpretation = "");
460 
461 /*======================================================================*/
496 /*======================================================================*/
497  template<typename DataT, typename ElSizeT, int InnerDim, int OuterDim>
498  void writeDataset(
499  blitz::Array<blitz::TinyVector<DataT,InnerDim>,OuterDim> const &data,
500  blitz::TinyVector<ElSizeT,OuterDim-1> const &elSize,
501  BlitzH5File &outFile, std::string const &dsName, DataT displayMin,
502  DataT displayMax, int compression = 0, iRoCS::ProgressReporter *pr = NULL,
503  std::string const &dim_interpretation = "");
504 
505 /*======================================================================*/
545 /*======================================================================*/
546  template<typename ElSizeT, int InnerDim, int OuterDim>
547  void writeDataset(
548  blitz::Array<blitz::TinyVector<unsigned char,InnerDim>,OuterDim> const &
549  data, blitz::TinyVector<ElSizeT,OuterDim-1> const &elSize,
550  std::string const &fileName, std::string const &dsName,
551  bool throwErrors = false, int compression = 0,
552  iRoCS::ProgressReporter *pr = NULL,
553  std::string const &dim_interpretation = "");
554 
555 /*======================================================================*/
592 /*======================================================================*/
593  template<typename ElSizeT, int InnerDim, int OuterDim>
594  void writeDataset(
595  blitz::Array<blitz::TinyVector<unsigned char,InnerDim>,OuterDim> const &
596  data, blitz::TinyVector<ElSizeT,OuterDim-1> const &elSize,
597  BlitzH5File &outFile, std::string const &dsName,
598  int compression = 0, iRoCS::ProgressReporter *pr = NULL,
599  std::string const &dim_interpretation = "");
600 
601 /*======================================================================*/
641 /*======================================================================*/
642  template<typename DataT, typename ElSizeT, int InnerDim, int OuterDim>
643  void writeDataset(
644  blitz::Array<blitz::TinyVector<DataT,InnerDim>,OuterDim> const &data,
645  blitz::TinyVector<ElSizeT,OuterDim-1> const &elSize,
646  std::string const &fileName, std::string const &dsName,
647  bool throwErrors = false, int compression = 0,
648  iRoCS::ProgressReporter *pr = NULL,
649  std::string const &dim_interpretation = "");
650 
651 /*======================================================================*/
688 /*======================================================================*/
689  template<typename DataT, typename ElSizeT, int InnerDim, int OuterDim>
690  void writeDataset(
691  blitz::Array<blitz::TinyVector<DataT,InnerDim>,OuterDim> const &data,
692  blitz::TinyVector<ElSizeT,OuterDim-1> const &elSize,
693  BlitzH5File &outFile, std::string const &dsName, int compression = 0,
694  iRoCS::ProgressReporter *pr = NULL,
695  std::string const &dim_interpretation = "");
696 
697 /*======================================================================*/
735 /*======================================================================*/
736  template<typename DataT, typename ElSizeT, int Dim>
737  void writeDataset(
738  blitz::Array<DataT,Dim> const &data,
739  blitz::TinyVector<ElSizeT,Dim> const &elSize, std::string const &fileName,
740  std::string const &dsName, DataT displayMin, DataT displayMax,
741  bool throwErrors = false, int compression = 0,
742  iRoCS::ProgressReporter *pr = NULL,
743  std::string const &dim_interpretation = "");
744 
745 /*======================================================================*/
780 /*======================================================================*/
781  template<typename DataT, typename ElSizeT, int Dim>
782  void writeDataset(
783  blitz::Array<DataT,Dim> const &data,
784  blitz::TinyVector<ElSizeT,Dim> const &elSize, BlitzH5File &outFile,
785  std::string const &dsName, DataT displayMin, DataT displayMax,
786  int compression = 0, iRoCS::ProgressReporter *pr = NULL,
787  std::string const &dim_interpretation = "");
788 
789 /*======================================================================*/
828 /*======================================================================*/
829  template<typename ElSizeT, int Dim>
830  void writeDataset(
831  blitz::Array<unsigned char,Dim> const &data,
832  blitz::TinyVector<ElSizeT,Dim> const &elSize, std::string const &fileName,
833  std::string const &dsName, bool throwErrors = false, int compression = 0,
834  iRoCS::ProgressReporter *pr = NULL,
835  std::string const &dim_interpretation = "");
836 
837 /*======================================================================*/
876 /*======================================================================*/
877  template<typename ElSizeT, int Dim>
878  void writeDataset(
879  blitz::Array<unsigned char,Dim> const &data,
880  blitz::TinyVector<ElSizeT,Dim> const &elSize, BlitzH5File &outFile,
881  std::string const &dsName, int compression = 0,
882  iRoCS::ProgressReporter *pr = NULL,
883  std::string const &dim_interpretation = "");
884 
885 /*======================================================================*/
925 /*======================================================================*/
926  template<typename DataT, typename ElSizeT, int Dim>
927  void writeDataset(
928  blitz::Array<DataT,Dim> const & data,
929  blitz::TinyVector<ElSizeT,Dim> const &elSize, std::string const &fileName,
930  std::string const &dsName, bool throwErrors = false, int compression = 0,
931  iRoCS::ProgressReporter *pr = NULL,
932  std::string const &dim_interpretation = "");
933 
934 /*======================================================================*/
974 /*======================================================================*/
975  template<typename DataT, typename ElSizeT, int Dim>
976  void writeDataset(
977  blitz::Array<DataT,Dim> const & data,
978  blitz::TinyVector<ElSizeT,Dim> const &elSize, BlitzH5File &outFile,
979  std::string const &dsName, int compression = 0,
980  iRoCS::ProgressReporter *pr = NULL,
981  std::string const &dim_interpretation = "");
982 
983 /*======================================================================*/
1024 /*======================================================================*/
1025  template<typename DataT, typename ElSizeT, int Dim>
1026  void writeDataset(
1027  blitz::Array<std::complex<DataT>,Dim> const &data,
1028  blitz::TinyVector<ElSizeT,Dim> const &elSize, std::string const &fileName,
1029  std::string const &dsName, bool throwErrors = false, int compression = 0,
1030  iRoCS::ProgressReporter *pr = NULL,
1031  std::string const &dim_interpretation = "");
1032 
1033 /*======================================================================*/
1071 /*======================================================================*/
1072  template<typename DataT, typename ElSizeT, int Dim>
1073  void writeDataset(
1074  blitz::Array<std::complex<DataT>,Dim> const &data,
1075  blitz::TinyVector<ElSizeT,Dim> const &elSize, BlitzH5File &outFile,
1076  std::string const &dsName, int compression = 0,
1077  iRoCS::ProgressReporter *pr = NULL,
1078  std::string const &dim_interpretation = "");
1079 
1080 /*======================================================================*/
1118 /*======================================================================*/
1119  template<typename DataT, typename ElSizeT, int Dim>
1120  void writeDataset(
1121  blitz::Array<DataT,Dim> const &data,
1122  blitz::TinyVector<ElSizeT,Dim-1> const &elSize,
1123  std::string const &fileName, std::string const &dsName, DataT displayMin,
1124  DataT displayMax, bool throwErrors = false, int compression = 0,
1125  iRoCS::ProgressReporter *pr = NULL,
1126  std::string const &dim_interpretation = "");
1127 
1128 /*======================================================================*/
1163 /*======================================================================*/
1164  template<typename DataT, typename ElSizeT, int Dim>
1165  void writeDataset(
1166  blitz::Array<DataT,Dim> const &data,
1167  blitz::TinyVector<ElSizeT,Dim-1> const &elSize, BlitzH5File &outFile,
1168  std::string const &dsName, DataT displayMin, DataT displayMax,
1169  int compression = 0, iRoCS::ProgressReporter *pr = NULL,
1170  std::string const &dim_interpretation = "");
1171 
1172 /*======================================================================*/
1209 /*======================================================================*/
1210  template<typename ElSizeT, int Dim>
1211  void writeDataset(
1212  blitz::Array<unsigned char,Dim> const &data,
1213  blitz::TinyVector<ElSizeT,Dim-1> const &elSize,
1214  std::string const &fileName, std::string const &dsName,
1215  bool throwErrors = false, int compression = 0,
1216  iRoCS::ProgressReporter *pr = NULL,
1217  std::string const &dim_interpretation = "");
1218 
1219 /*======================================================================*/
1253 /*======================================================================*/
1254  template<typename ElSizeT, int Dim>
1255  void writeDataset(
1256  blitz::Array<unsigned char,Dim> const &data,
1257  blitz::TinyVector<ElSizeT,Dim-1> const &elSize, BlitzH5File &outFile,
1258  std::string const &dsName, int compression = 0,
1259  iRoCS::ProgressReporter *pr = NULL,
1260  std::string const &dim_interpretation = "");
1261 
1262 /*======================================================================*/
1303 /*======================================================================*/
1304  template<typename DataT, typename ElSizeT, int Dim>
1305  void writeDataset(
1306  blitz::Array<std::complex<DataT>,Dim> const &data,
1307  blitz::TinyVector<ElSizeT,Dim-1> const &elSize,
1308  std::string const &fileName, std::string const &dsName,
1309  bool throwErrors = false, int compression = 0,
1310  iRoCS::ProgressReporter *pr = NULL,
1311  std::string const &dim_interpretation = "");
1312 
1313 /*======================================================================*/
1351 /*======================================================================*/
1352  template<typename DataT, typename ElSizeT, int Dim>
1353  void writeDataset(
1354  blitz::Array<std::complex<DataT>,Dim> const &data,
1355  blitz::TinyVector<ElSizeT,Dim-1> const &elSize, BlitzH5File &outFile,
1356  std::string const &dsName, int compression = 0,
1357  iRoCS::ProgressReporter *pr = NULL,
1358  std::string const &dim_interpretation = "");
1359 
1360 }
1361 
1362 // Analyze Reader and Writer
1364 {
1365 
1366  template<typename DataT, typename ElSizeT, int Dim>
1367  void readDataset(blitz::Array<DataT,Dim>& /*data*/,
1368  blitz::TinyVector<ElSizeT,Dim>& /*elSize*/,
1369  const std::string& /*fileName*/,
1370  const std::string& /*dsName*/);
1371 
1372  template<typename ElSizeT>
1373  void writeDataset(const blitz::Array<unsigned char,3>& data,
1374  const blitz::TinyVector<ElSizeT,3>& elSize,
1375  const std::string& fileName,
1376  const std::string& /*dsName*/);
1377 
1378  template<typename ElSizeT>
1379  void writeDataset(const blitz::Array<short,3>& data,
1380  const blitz::TinyVector<ElSizeT,3>& elSize,
1381  const std::string& fileName,
1382  const std::string& /*dsName*/);
1383 
1384  template<typename ElSizeT>
1385  void writeDataset(
1386  const blitz::Array<blitz::TinyVector<unsigned char,3>,3>& data,
1387  const blitz::TinyVector<ElSizeT,3>& elSize,
1388  const std::string& fileName,
1389  const std::string& /*dsName*/);
1390 
1391  template<typename DataT, typename ElSizeT>
1392  void writeDataset(const blitz::Array<DataT,3>& data,
1393  const blitz::TinyVector<ElSizeT,3>& elSize,
1394  const std::string& fileName,
1395  const std::string& /*dsName*/);
1396 
1397  template<typename DataT, typename ElSizeT>
1398  void writeDataset(const blitz::Array<blitz::TinyVector<DataT,3>,3>& data,
1399  const blitz::TinyVector<ElSizeT,3>& elSize,
1400  const std::string& fileName,
1401  const std::string& /*dsName*/);
1402 
1403  template<typename DataT, typename ElSizeT, int Dim>
1404  void writeDataset(const blitz::Array<DataT,Dim>& /*data*/,
1405  const blitz::TinyVector<ElSizeT,Dim>& /*elSize*/,
1406  const std::string& /*fileName*/,
1407  const std::string& /*dsName*/);
1408 
1409 }
1410 
1411 #include "FileIOWrapper.icc"
1412 
1413 #endif
Lightweight alternative to libBlitzHDF5 providing its basic functionality.
void readDataset(blitz::Array< DataT, Dim > &data, blitz::TinyVector< ElSizeT, Dim > &elSize, std::string const &fileName, std::string const &dsName, bool throwErrors=false, iRoCS::ProgressReporter *pr=NULL)
Read a scalar n-dimensional dataset with element size.
void writeDataset(blitz::Array< blitz::TinyVector< DataT, InnerDim >, OuterDim > const &data, blitz::TinyVector< ElSizeT, OuterDim > const &elSize, std::string const &fileName, std::string const &dsName, DataT displayMin, DataT displayMax, bool throwErrors=false, int compression=0, iRoCS::ProgressReporter *pr=NULL, std::string const &dim_interpretation="")
Write a vectorial n-dimensional dataset with element size and additional meta-information for dataset...