This notebook is an initial exploration of hdf5 output files produced by MOHID.
MOHID output file types explored:
Python libraries explored:
Summary:
that don't have associated dimension scales
but the interface is a really low level, nested-dict one
via an object interface.
The PyTables tutorial also brought the h5ls
tool to my attention.
in general both by 2D and 3D slabs of the hydrodynamics model (NEMO or FVCOM) grid, and by particle.
Next step:
tables.File
objects into xarray.Dataset
objects.!ls -lh ../../SalishSeaShihan/results/Lagrangian*.hdf5
-rw-r--r-- 1 doug doug 200M Oct 11 07:42 ../../SalishSeaShihan/results/Lagrangian_7_nested_5.hdf5 -rw-r--r-- 1 doug doug 355M Oct 11 07:47 ../../SalishSeaShihan/results/Lagrangian_7_st_georgia_nested.hdf5
import Nio
h5file = Nio.open_file('../../SalishSeaShihan/results/Lagrangian_7_st_georgia_nested.hdf5', format='hdf5')
h5file
...crashed the kernel :-(
h5file = Nio.open_file('../../SalishSeaShihan/results/Lagrangian_7_nested_5.hdf5')
...never finished :-(
import h5netcdf
h5file = h5netcdf.File('../../SalishSeaShihan/results/Lagrangian_7_nested_5.hdf5')
h5file
<h5netcdf.File 'Lagrangian_7_nested_5.hdf5' (mode r+)> Dimensions: Groups: Grid Results Time Variables: Attributes:
oil['Grid']
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) /media/doug/warehouse/conda_envs/mohid-analysis/lib/python3.6/site-packages/IPython/core/formatters.py in __call__(self, obj) 700 type_pprinters=self.type_printers, 701 deferred_pprinters=self.deferred_printers) --> 702 printer.pretty(obj) 703 printer.flush() 704 return stream.getvalue() /media/doug/warehouse/conda_envs/mohid-analysis/lib/python3.6/site-packages/IPython/lib/pretty.py in pretty(self, obj) 400 if cls is not object \ 401 and callable(cls.__dict__.get('__repr__')): --> 402 return _repr_pprint(obj, self, cycle) 403 404 return _default_pprint(obj, self, cycle) /media/doug/warehouse/conda_envs/mohid-analysis/lib/python3.6/site-packages/IPython/lib/pretty.py in _repr_pprint(obj, p, cycle) 695 """A pprint that just redirects to the normal repr function.""" 696 # Find newlines and replace them with p.break_() --> 697 output = repr(obj) 698 for idx,output_line in enumerate(output.splitlines()): 699 if idx: /media/doug/warehouse/conda_envs/mohid-analysis/lib/python3.6/site-packages/h5netcdf/core.py in __repr__(self) 544 header = ('<%s %r (%s members)>' 545 % (self._cls_name, self.name, len(self))) --> 546 return '\n'.join([header] + self._repr_body()) 547 548 def resize_dimension(self, dimension, size): /media/doug/warehouse/conda_envs/mohid-analysis/lib/python3.6/site-packages/h5netcdf/core.py in _repr_body(self) 536 [' %s: %r %s' % (k, v.dimensions, v.dtype) 537 for k, v in self.variables.items()] + --> 538 ['Attributes:'] + 539 [' %s: %r' % (k, v) for k, v in self.attrs.items()]) 540 /media/doug/warehouse/conda_envs/mohid-analysis/lib/python3.6/site-packages/h5netcdf/core.py in <listcomp>(.0) 535 ['Variables:'] + 536 [' %s: %r %s' % (k, v.dimensions, v.dtype) --> 537 for k, v in self.variables.items()] + 538 ['Attributes:'] + 539 [' %s: %r' % (k, v) for k, v in self.attrs.items()]) /media/doug/warehouse/conda_envs/mohid-analysis/lib/python3.6/site-packages/h5netcdf/core.py in dimensions(self) 110 def dimensions(self): 111 if self._dimensions is None: --> 112 self._dimensions = self._lookup_dimensions() 113 return self._dimensions 114 /media/doug/warehouse/conda_envs/mohid-analysis/lib/python3.6/site-packages/h5netcdf/core.py in _lookup_dimensions(self) 102 raise ValueError('variable %r has no dimension scale ' 103 'associated with axis %s' --> 104 % (self.name, axis)) 105 name = _name_from_dimension(dim) 106 dims.append(name) ValueError: variable '/Grid/Bathymetry' has no dimension scale associated with axis 0
Dimeions scales seem to be optional for HDF5, but required for netCDF4. The h5py docs provide some additional clues.
h5file['Results']
<h5netcdf.Group '/Results' (3 members)> Dimensions: Groups: Number OilSpill Percentage Contaminated Variables: Attributes: Minimum: 9900000000000000.0 Maximum: -9900000000000000.0
h5file['Time']
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) /media/doug/warehouse/conda_envs/mohid-analysis/lib/python3.6/site-packages/IPython/core/formatters.py in __call__(self, obj) 700 type_pprinters=self.type_printers, 701 deferred_pprinters=self.deferred_printers) --> 702 printer.pretty(obj) 703 printer.flush() 704 return stream.getvalue() /media/doug/warehouse/conda_envs/mohid-analysis/lib/python3.6/site-packages/IPython/lib/pretty.py in pretty(self, obj) 400 if cls is not object \ 401 and callable(cls.__dict__.get('__repr__')): --> 402 return _repr_pprint(obj, self, cycle) 403 404 return _default_pprint(obj, self, cycle) /media/doug/warehouse/conda_envs/mohid-analysis/lib/python3.6/site-packages/IPython/lib/pretty.py in _repr_pprint(obj, p, cycle) 695 """A pprint that just redirects to the normal repr function.""" 696 # Find newlines and replace them with p.break_() --> 697 output = repr(obj) 698 for idx,output_line in enumerate(output.splitlines()): 699 if idx: /media/doug/warehouse/conda_envs/mohid-analysis/lib/python3.6/site-packages/h5netcdf/core.py in __repr__(self) 544 header = ('<%s %r (%s members)>' 545 % (self._cls_name, self.name, len(self))) --> 546 return '\n'.join([header] + self._repr_body()) 547 548 def resize_dimension(self, dimension, size): /media/doug/warehouse/conda_envs/mohid-analysis/lib/python3.6/site-packages/h5netcdf/core.py in _repr_body(self) 536 [' %s: %r %s' % (k, v.dimensions, v.dtype) 537 for k, v in self.variables.items()] + --> 538 ['Attributes:'] + 539 [' %s: %r' % (k, v) for k, v in self.attrs.items()]) 540 /media/doug/warehouse/conda_envs/mohid-analysis/lib/python3.6/site-packages/h5netcdf/core.py in <listcomp>(.0) 535 ['Variables:'] + 536 [' %s: %r %s' % (k, v.dimensions, v.dtype) --> 537 for k, v in self.variables.items()] + 538 ['Attributes:'] + 539 [' %s: %r' % (k, v) for k, v in self.attrs.items()]) /media/doug/warehouse/conda_envs/mohid-analysis/lib/python3.6/site-packages/h5netcdf/core.py in dimensions(self) 110 def dimensions(self): 111 if self._dimensions is None: --> 112 self._dimensions = self._lookup_dimensions() 113 return self._dimensions 114 /media/doug/warehouse/conda_envs/mohid-analysis/lib/python3.6/site-packages/h5netcdf/core.py in _lookup_dimensions(self) 102 raise ValueError('variable %r has no dimension scale ' 103 'associated with axis %s' --> 104 % (self.name, axis)) 105 name = _name_from_dimension(dim) 106 dims.append(name) ValueError: variable '/Time/Time_00001' has no dimension scale associated with axis 0
import h5py
h5file = h5py.File('../../SalishSeaShihan/results/Lagrangian_7_nested_5.hdf5', mode='r')
h5file
<HDF5 file "Lagrangian_7_nested_5.hdf5" (mode r+)>
for k in h5file: print(k)
Grid Results Time
h5file['Grid']
<HDF5 group "/Grid" (9 members)>
for k in h5file['Grid']: print(k)
Bathymetry ConnectionX ConnectionY Define Cells Latitude Longitude OpenPoints VerticalZ WaterPoints3D
h5file['Results']
<HDF5 group "/Results" (3 members)>
for k in h5file['Results']: print(k)
Number OilSpill Percentage Contaminated
h5file['Time']
<HDF5 group "/Time" (167 members)>
for k in h5file['Time']: print(k)
Time_00001 Time_00002 Time_00003 Time_00004 Time_00005 Time_00006 Time_00007 Time_00008 Time_00009 Time_00010 Time_00011 Time_00012 Time_00013 Time_00014 Time_00015 Time_00016 Time_00017 Time_00018 Time_00019 Time_00020 Time_00021 Time_00022 Time_00023 Time_00024 Time_00025 Time_00026 Time_00027 Time_00028 Time_00029 Time_00030 Time_00031 Time_00032 Time_00033 Time_00034 Time_00035 Time_00036 Time_00037 Time_00038 Time_00039 Time_00040 Time_00041 Time_00042 Time_00043 Time_00044 Time_00045 Time_00046 Time_00047 Time_00048 Time_00049 Time_00050 Time_00051 Time_00052 Time_00053 Time_00054 Time_00055 Time_00056 Time_00057 Time_00058 Time_00059 Time_00060 Time_00061 Time_00062 Time_00063 Time_00064 Time_00065 Time_00066 Time_00067 Time_00068 Time_00069 Time_00070 Time_00071 Time_00072 Time_00073 Time_00074 Time_00075 Time_00076 Time_00077 Time_00078 Time_00079 Time_00080 Time_00081 Time_00082 Time_00083 Time_00084 Time_00085 Time_00086 Time_00087 Time_00088 Time_00089 Time_00090 Time_00091 Time_00092 Time_00093 Time_00094 Time_00095 Time_00096 Time_00097 Time_00098 Time_00099 Time_00100 Time_00101 Time_00102 Time_00103 Time_00104 Time_00105 Time_00106 Time_00107 Time_00108 Time_00109 Time_00110 Time_00111 Time_00112 Time_00113 Time_00114 Time_00115 Time_00116 Time_00117 Time_00118 Time_00119 Time_00120 Time_00121 Time_00122 Time_00123 Time_00124 Time_00125 Time_00126 Time_00127 Time_00128 Time_00129 Time_00130 Time_00131 Time_00132 Time_00133 Time_00134 Time_00135 Time_00136 Time_00137 Time_00138 Time_00139 Time_00140 Time_00141 Time_00142 Time_00143 Time_00144 Time_00145 Time_00146 Time_00147 Time_00148 Time_00149 Time_00150 Time_00151 Time_00152 Time_00153 Time_00154 Time_00155 Time_00156 Time_00157 Time_00158 Time_00159 Time_00160 Time_00161 Time_00162 Time_00163 Time_00164 Time_00165 Time_00166 Time_00167
h5file['Time']['Time_00001']
<HDF5 dataset "Time_00001": shape (6,), type "<f4">
h5file['Time']['Time_00001'][:]
array([2015., 4., 8., 0., 30., 0.], dtype=float32)
i.e. the date/time 2015-04-08 00:30:00
stored at 4 32-bit floats
h5file['Results']['Number']
<HDF5 group "/Results/Number" (167 members)>
h5file.attrs
<Attributes of HDF5 object at 139899974438056>
for attr in h5file.attrs: print(attr)
for attr, value in h5file['Grid'].attrs.items(): print(attr, value)
Minimum -9900000000000000.0 Maximum -9900000000000000.0
for attr, value in h5file['Grid']['Bathymetry'].attrs.items(): print(attr, value)
Minimum -9900000000000000.0 Maximum -9900000000000000.0 Units b'm'
for attr, value in h5file['Results']['Number'].attrs.items(): print(attr, value)
Minimum -9900000000000000.0 Maximum -9900000000000000.0
oil['Results']['Number']
<HDF5 group "/Results/Number" (167 members)>
for n in h5file['Results']['Number']: print(n)
Number_00001 Number_00002 Number_00003 Number_00004 Number_00005 Number_00006 Number_00007 Number_00008 Number_00009 Number_00010 Number_00011 Number_00012 Number_00013 Number_00014 Number_00015 Number_00016 Number_00017 Number_00018 Number_00019 Number_00020 Number_00021 Number_00022 Number_00023 Number_00024 Number_00025 Number_00026 Number_00027 Number_00028 Number_00029 Number_00030 Number_00031 Number_00032 Number_00033 Number_00034 Number_00035 Number_00036 Number_00037 Number_00038 Number_00039 Number_00040 Number_00041 Number_00042 Number_00043 Number_00044 Number_00045 Number_00046 Number_00047 Number_00048 Number_00049 Number_00050 Number_00051 Number_00052 Number_00053 Number_00054 Number_00055 Number_00056 Number_00057 Number_00058 Number_00059 Number_00060 Number_00061 Number_00062 Number_00063 Number_00064 Number_00065 Number_00066 Number_00067 Number_00068 Number_00069 Number_00070 Number_00071 Number_00072 Number_00073 Number_00074 Number_00075 Number_00076 Number_00077 Number_00078 Number_00079 Number_00080 Number_00081 Number_00082 Number_00083 Number_00084 Number_00085 Number_00086 Number_00087 Number_00088 Number_00089 Number_00090 Number_00091 Number_00092 Number_00093 Number_00094 Number_00095 Number_00096 Number_00097 Number_00098 Number_00099 Number_00100 Number_00101 Number_00102 Number_00103 Number_00104 Number_00105 Number_00106 Number_00107 Number_00108 Number_00109 Number_00110 Number_00111 Number_00112 Number_00113 Number_00114 Number_00115 Number_00116 Number_00117 Number_00118 Number_00119 Number_00120 Number_00121 Number_00122 Number_00123 Number_00124 Number_00125 Number_00126 Number_00127 Number_00128 Number_00129 Number_00130 Number_00131 Number_00132 Number_00133 Number_00134 Number_00135 Number_00136 Number_00137 Number_00138 Number_00139 Number_00140 Number_00141 Number_00142 Number_00143 Number_00144 Number_00145 Number_00146 Number_00147 Number_00148 Number_00149 Number_00150 Number_00151 Number_00152 Number_00153 Number_00154 Number_00155 Number_00156 Number_00157 Number_00158 Number_00159 Number_00160 Number_00161 Number_00162 Number_00163 Number_00164 Number_00165 Number_00166 Number_00167
h5file['Results']['Number']['Number_00001']
<HDF5 dataset "Number_00001": shape (20, 380, 210), type "<f4">
for attr in h5file['Results']['OilSpill'].attrs: print(attr)
Minimum Maximum
for foo in h5file['Results']['OilSpill']: print(foo)
Data_2D Data_3D
for attr, value in h5file['Results']['OilSpill']['Data_2D'].attrs.items(): print(attr, value)
Minimum 9900000000000000.0 Maximum -9900000000000000.0
for foo in h5file['Results']['OilSpill']['Data_2D']: print(foo)
Beaching Time Oil Arrival Time OilConcentration_2D Thickness_2D
h5file['Results']['OilSpill']['Data_2D']['OilConcentration_2D']
<HDF5 group "/Results/OilSpill/Data_2D/OilConcentration_2D" (167 members)>
h5file['Results']['OilSpill']['Data_2D']['OilConcentration_2D']['OilConcentration_2D_00001']
<HDF5 dataset "OilConcentration_2D_00001": shape (380, 210), type "<f4">
for attr, value in h5file['Results']['OilSpill']['Data_2D']['OilConcentration_2D']['OilConcentration_2D_00001'].attrs.items(): print (attr, value)
Minimum -9900000000000000.0 Maximum -9900000000000000.0 Units b'ppm'
for attr, value in h5file['Results']['OilSpill']['Data_3D'].attrs.items(): print(attr, value)
Minimum 9900000000000000.0 Maximum -9900000000000000.0
for foo in h5file['Results']['OilSpill']['Data_3D']: print(foo)
Dissolution_3D OilConcentration_3D
import tables
h5file = tables.open_file('../../SalishSeaShihan/results/Lagrangian_7_nested_5.hdf5', mode='r')
for group in h5file.walk_groups(): print(group)
/ (RootGroup) '' /Grid (Group) '' /Results (Group) '' /Time (Group) '' /Results/Number (Group) '' /Results/OilSpill (Group) '' /Results/Percentage Contaminated (Group) '' /Results/OilSpill/Data_2D (Group) '' /Results/OilSpill/Data_3D (Group) '' /Results/OilSpill/Data_3D/Dissolution_3D (Group) '' /Results/OilSpill/Data_3D/OilConcentration_3D (Group) '' /Results/OilSpill/Data_2D/Beaching Time (Group) '' /Results/OilSpill/Data_2D/Oil Arrival Time (Group) '' /Results/OilSpill/Data_2D/OilConcentration_2D (Group) '' /Results/OilSpill/Data_2D/Thickness_2D (Group) '' /Grid/OpenPoints (Group) '' /Grid/VerticalZ (Group) ''
for node in h5file.walk_nodes('/Results/Number'): print(node)
/Results/Number (Group) '' /Results/Number/Number_00001 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00002 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00003 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00004 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00005 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00006 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00007 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00008 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00009 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00010 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00011 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00012 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00013 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00014 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00015 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00016 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00017 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00018 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00019 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00020 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00021 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00022 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00023 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00024 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00025 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00026 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00027 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00028 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00029 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00030 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00031 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00032 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00033 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00034 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00035 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00036 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00037 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00038 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00039 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00040 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00041 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00042 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00043 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00044 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00045 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00046 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00047 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00048 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00049 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00050 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00051 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00052 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00053 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00054 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00055 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00056 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00057 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00058 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00059 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00060 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00061 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00062 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00063 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00064 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00065 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00066 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00067 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00068 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00069 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00070 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00071 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00072 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00073 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00074 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00075 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00076 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00077 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00078 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00079 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00080 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00081 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00082 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00083 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00084 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00085 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00086 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00087 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00088 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00089 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00090 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00091 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00092 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00093 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00094 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00095 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00096 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00097 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00098 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00099 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00100 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00101 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00102 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00103 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00104 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00105 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00106 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00107 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00108 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00109 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00110 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00111 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00112 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00113 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00114 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00115 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00116 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00117 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00118 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00119 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00120 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00121 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00122 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00123 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00124 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00125 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00126 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00127 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00128 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00129 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00130 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00131 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00132 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00133 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00134 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00135 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00136 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00137 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00138 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00139 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00140 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00141 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00142 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00143 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00144 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00145 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00146 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00147 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00148 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00149 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00150 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00151 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00152 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00153 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00154 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00155 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00156 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00157 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00158 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00159 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00160 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00161 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00162 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00163 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00164 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00165 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00166 (CArray(20, 380, 210), zlib(6)) '' /Results/Number/Number_00167 (CArray(20, 380, 210), zlib(6)) ''
h5file.root.Results.Number.Number_00001.attrs
/Results/Number/Number_00001._v_attrs (AttributeSet), 3 attributes: [Maximum := -9900000000000000.0, Minimum := -9900000000000000.0, Units := b'a']
h5file.root.Results.OilSpill.Data_3D.OilConcentration_3D.OilConcentration_3D_00001.attrs
/Results/OilSpill/Data_3D/OilConcentration_3D/OilConcentration_3D_00001._v_attrs (AttributeSet), 3 attributes: [Maximum := -9900000000000000.0, Minimum := -9900000000000000.0, Units := b'Kg/m3']
h5file.root.Results.OilSpill.Data_3D.OilConcentration_3D.OilConcentration_3D_00001
/Results/OilSpill/Data_3D/OilConcentration_3D/OilConcentration_3D_00001 (CArray(20, 380, 210), zlib(6)) '' atom := Float32Atom(shape=(), dflt=0.0) maindim := 0 flavor := 'numpy' byteorder := 'little' chunkshape := (20, 380, 210)