SCIRun  5.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ReadHDF5File.h
Go to the documentation of this file.
1 /*
2  For more information, please see: http://software.sci.utah.edu
3 
4  The MIT License
5 
6  Copyright (c) 2009 Scientific Computing and Imaging Institute,
7  University of Utah.
8 
9  License for the specific language governing rights and limitations under
10  Permission is hereby granted, free of charge, to any person obtaining a
11  copy of this software and associated documentation files (the "Software"),
12  to deal in the Software without restriction, including without limitation
13  the rights to use, copy, modify, merge, publish, distribute, sublicense,
14  and/or sell copies of the Software, and to permit persons to whom the
15  Software is furnished to do so, subject to the following conditions:
16 
17  The above copyright notice and this permission notice shall be included
18  in all copies or substantial portions of the Software.
19 
20  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
21  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
23  THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
25  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
26  DEALINGS IN THE SOFTWARE.
27 */
28 
29 
30 ///
31 /// @file ReadHDF5File.h
32 ///
33 /// @author
34 /// Allen Sanderson
35 /// SCI Institute
36 /// University of Utah
37 /// @date May 2003
38 ///
39 
40 #if !defined(ReadHDF5File_h)
41 #define ReadHDF5File_h
42 
44 #include <Core/Util/TypeDescription.h>
45 
46 #include <Dataflow/Network/Ports/NrrdPort.h>
47 #include <Dataflow/Network/Ports/MatrixPort.h>
48 #include <Dataflow/Network/Ports/StringPort.h>
49 
50 namespace SCIRun {
51 
52 #define MAX_PORTS 8
53 #define MAX_DIMS 6
54 
55 class ReadHDF5File : public Module {
56 protected:
57  enum { MERGE_NONE=0, MERGE_LIKE=1, MERGE_TIME=2 };
58 
59 public:
60  ReadHDF5File(GuiContext *context);
61 
62  virtual ~ReadHDF5File();
63 
64  virtual void execute();
65 
66  void ReadandSendData( string& filename,
67  vector< string >& pathList,
68  vector< string >& datasethList,
69  int which );
70 
71  void parseDatasets( string datasets,
72  vector<string>& pathhList,
73  vector<string>& datasethList );
74 
75  unsigned int parseTimeSeriesDatasets( vector<string>& pathhList,
76  vector<string>& datasethList,
77  vector< vector<string> >& frame_paths,
78  vector< vector<string> >&
79  frame_datasets );
80 
81  string getTimeRoot( vector<string>& nameList,
82  vector<string>& times,
85 
86  vector<int> getDatasetDims( string filename, string group, string dataset );
87 
88  // float* readGrid( string filename );
89  // float* readData( string filename );
90  NrrdDataHandle readDataset( string filename, string path, string dataset );
91 
92  string getDumpFileName( string filename );
93  bool checkDumpFile( string filename, string dumpname );
94  int createDumpFile( string filename, string dumpname );
95 
96  virtual void tcl_command(GuiArgs&, void*);
97 
98 protected:
99  void getTtimeSeriesSlice( string new_filename,
100  vector< vector<string> >& frame_paths,
101  vector< vector<string> >& frame_datasets );
102 
103 
104  int increment(int which, int lower, int upper);
105 
107 
108  void joinNrrds( vector<NrrdDataHandle> &vec, unsigned int merge_type );
109 
110 protected:
114 
115  GuiFilename gui_filename_;
116  GuiString gui_datasets_;
117  GuiString gui_dumpname_;
118  GuiString gui_ports_;
119 
120  GuiInt gui_ndims_;
121 
125 
128  GuiString gui_basic_tab_;
129  GuiString gui_extended_tab_;
130  GuiString gui_playmode_tab_;
131 
137 
138  GuiString gui_playmode_;
139  GuiInt gui_current_;
140  GuiString gui_execmode_;
141  GuiInt gui_delay_;
143  //update_type_ must be declared after selectable_max_ which is
144  //traced in the tcl code. If update_type_ is set to Auto having it
145  //last will prevent the net from executing when it is instantiated.
146  GuiString gui_update_type_;
147 
148  int inc_;
149 
153 
155 
157  GuiInt gui_regexp_;
160 
162 
163  vector< GuiInt* > gui_dims_;
164  vector< GuiInt* > gui_starts_;
165  vector< GuiString* > gui_starts2_;
166  vector< GuiInt* > gui_counts_;
167  vector< GuiString* > gui_counts2_;
168  vector< GuiInt* > gui_strides_;
169  vector< GuiString* > gui_strides2_;
170 
174 
178 
179  bool loop_;
180 };
181 
182 
183 } // end namespace SCIRun
184 
185 #endif // ReadHDF5File_h
GuiInt gui_have_attributes_
Definition: ReadHDF5File.h:151
vector< GuiString * > gui_strides2_
Definition: ReadHDF5File.h:169
GuiString gui_extended_tab_
Definition: ReadHDF5File.h:129
GuiInt gui_delay_
Definition: ReadHDF5File.h:141
void ReadandSendData(string &filename, vector< string > &pathList, vector< string > &datasethList, int which)
Definition: ReadHDF5File.cc:593
void joinNrrds(vector< NrrdDataHandle > &vec, unsigned int merge_type)
Definition: ReadHDF5File.cc:232
GuiInt gui_selectable_max_
Definition: ReadHDF5File.h:133
virtual ~ReadHDF5File()
Definition: ReadHDF5File.cc:138
int inc_
Definition: ReadHDF5File.h:148
Definition: ReadHDF5File.h:55
int increment(int which, int lower, int upper)
Definition: ReadHDF5File.cc:2022
GuiString gui_basic_tab_
Definition: ReadHDF5File.h:128
time_t sel_filemodification_
Definition: ReadHDF5File.h:177
string getTimeRoot(vector< string > &nameList, vector< string > &times, std::string::size_type &d0, std::string::size_type &d1)
Definition: ReadHDF5File.cc:1037
GuiInt gui_continuous_
Definition: ReadHDF5File.h:154
GuiInt gui_assume_svt_
Definition: ReadHDF5File.h:123
vector< GuiString * > gui_starts2_
Definition: ReadHDF5File.h:165
GuiString gui_power_app_cmd_
Definition: ReadHDF5File.h:113
vector< int > getDatasetDims(string filename, string group, string dataset)
Definition: ReadHDF5File.cc:1088
unsigned int parseTimeSeriesDatasets(vector< string > &pathhList, vector< string > &datasethList, vector< vector< string > > &frame_paths, vector< vector< string > > &frame_datasets)
Definition: ReadHDF5File.cc:915
string old_filename_
Definition: ReadHDF5File.h:171
GuiString gui_update_type_
Definition: ReadHDF5File.h:146
vector< GuiString * > gui_counts2_
Definition: ReadHDF5File.h:167
GuiString gui_playmode_tab_
Definition: ReadHDF5File.h:130
GuiString gui_execmode_
Definition: ReadHDF5File.h:140
Definition: ReadHDF5File.h:57
GuiInt gui_have_groups_
Definition: ReadHDF5File.h:150
vector< GuiInt * > gui_strides_
Definition: ReadHDF5File.h:168
GuiInt gui_time_series_
Definition: ReadHDF5File.h:124
ReadHDF5File(GuiContext *context)
Definition: ReadHDF5File.cc:63
long long size_type
Definition: Types.h:40
GuiFilename gui_filename_
Definition: ReadHDF5File.h:115
GuiString gui_selectionString_
Definition: ReadHDF5File.h:156
string sel_filename_
Definition: ReadHDF5File.h:175
GuiInt gui_inc_amount_
Definition: ReadHDF5File.h:142
GuiString gui_time_series_tab_
Definition: ReadHDF5File.h:127
bool checkDumpFile(string filename, string dumpname)
Definition: ReadHDF5File.cc:1941
time_t old_filemodification_
Definition: ReadHDF5File.h:173
GuiString gui_datasets_
Definition: ReadHDF5File.h:116
GuiInt gui_max_dims_
Definition: ReadHDF5File.h:161
NrrdDataHandle readDataset(string filename, string path, string dataset)
Definition: ReadHDF5File.cc:1356
vector< GuiInt * > gui_starts_
Definition: ReadHDF5File.h:164
GuiInt gui_current_
Definition: ReadHDF5File.h:139
bool loop_
Definition: ReadHDF5File.h:179
GuiInt gui_range_min_
Definition: ReadHDF5File.h:135
string getDumpFileName(string filename)
Definition: ReadHDF5File.cc:1916
void parseDatasets(string datasets, vector< string > &pathhList, vector< string > &datasethList)
Definition: ReadHDF5File.cc:815
virtual void tcl_command(GuiArgs &, void *)
Definition: ReadHDF5File.cc:1728
GuiString gui_time_series_gui_frame_
Definition: ReadHDF5File.h:126
int createDumpFile(string filename, string dumpname)
Definition: ReadHDF5File.cc:1987
LockingHandle< NrrdData > NrrdDataHandle
Definition: NrrdData.h:108
GuiInt gui_power_app_
Definition: ReadHDF5File.h:112
GuiInt gui_selectable_inc_
Definition: ReadHDF5File.h:134
GuiInt gui_merge_data_
Definition: ReadHDF5File.h:122
GuiString gui_dumpname_
Definition: ReadHDF5File.h:117
GuiString gui_ports_
Definition: ReadHDF5File.h:118
GuiString gui_playmode_
Definition: ReadHDF5File.h:138
void getTtimeSeriesSlice(string new_filename, vector< vector< string > > &frame_paths, vector< vector< string > > &frame_datasets)
Definition: ReadHDF5File.cc:2067
GuiInt gui_have_hdf5_
Definition: ReadHDF5File.h:111
GuiInt gui_range_max_
Definition: ReadHDF5File.h:136
string old_datasets_
Definition: ReadHDF5File.h:172
vector< GuiInt * > gui_counts_
Definition: ReadHDF5File.h:166
GuiString gui_allow_selection_
Definition: ReadHDF5File.h:158
GuiInt gui_ndims_
Definition: ReadHDF5File.h:120
GuiInt gui_regexp_
Definition: ReadHDF5File.h:157
GuiInt gui_selectable_min_
Definition: ReadHDF5File.h:132
string sel_datasets_
Definition: ReadHDF5File.h:176
Definition: ReadHDF5File.h:57
bool is_mergeable(NrrdDataHandle h1, NrrdDataHandle h2)
Definition: ReadHDF5File.cc:147
Definition: ReadHDF5File.h:57
vector< GuiInt * > gui_dims_
Definition: ReadHDF5File.h:163
virtual void execute()
Definition: ReadHDF5File.cc:359
GuiInt gui_read_error_
Definition: ReadHDF5File.h:159
GuiInt gui_have_datasets_
Definition: ReadHDF5File.h:152