1212from openpmd_viewer .openpmd_timeseries .data_reader .h5py_reader import (
1313 field_reader as fr )
1414from openpmd_viewer .openpmd_timeseries import FieldMetaInformation
15+ from openpmd_viewer import __version__
16+ viewer_version = __version__ .split ('.' )
17+ viewer_version = [int (v ) for v in viewer_version ]
18+ new_metainformation = (viewer_version [0 ] > 1 ) or (viewer_version [1 ] >= 8 )
1519
1620
1721class OpenPMDDataReader (DataReader ):
@@ -66,7 +70,8 @@ def read_field_metadata(self, iteration, field_name, component_name):
6670 # Axis metadata.
6771 md ['axis' ] = {}
6872 info = self .get_field_meta_info (
69- iteration , field_name , component_name , axis_labels , field_geometry )
73+ iteration , field_name , component_name , axis_labels , field_geometry ,
74+ t )
7075 for axis in axis_labels :
7176 md ['axis' ][axis ] = {}
7277 md ['axis' ][axis ]['units' ] = 'm'
@@ -78,27 +83,27 @@ def read_field_metadata(self, iteration, field_name, component_name):
7883 return md
7984
8085 def get_field_meta_info (self , iteration , field , comp , axis_labels ,
81- geometry ):
86+ geometry , t ):
8287 """ Get the `FieldMetaInformation` of the field. """
8388 if self .backend == 'h5py' :
8489 filename = self .iteration_to_file [iteration ]
8590 if geometry in ['thetaMode' ]:
8691 return read_circ_field_metadata_h5py (
87- filename , iteration , field , comp )
92+ filename , iteration , field , comp , t )
8893 elif geometry in ["1dcartesian" , "2dcartesian" , "3dcartesian" ]:
8994 return read_cartesian_field_metadata_h5py (
90- filename , iteration , field , comp , axis_labels )
95+ filename , iteration , field , comp , axis_labels , t )
9196 elif self .backend == 'openpmd-api' :
9297 if geometry in ['thetaMode' ]:
9398 return read_circ_field_metadata_io (
94- self .series , iteration , field , comp )
99+ self .series , iteration , field , comp , t )
95100 elif geometry in ["1dcartesian" , "2dcartesian" , "3dcartesian" ]:
96101 return read_cartesian_field_metadata_io (
97- self .series , iteration , field , comp , axis_labels )
102+ self .series , iteration , field , comp , axis_labels , t )
98103
99104
100105def read_cartesian_field_metadata_h5py (filename , iteration , field_name ,
101- component_name , axis_labels ):
106+ component_name , axis_labels , t ):
102107 """
103108 Get `FieldMetaInformation` of cartesian field using `h5py` backend.
104109
@@ -127,15 +132,22 @@ def read_cartesian_field_metadata_h5py(filename, iteration, field_name,
127132 # Extract the metainformation
128133 shape = list (fr .get_shape (dset ))
129134 axes = {i : axis_labels [i ] for i in range (len (axis_labels ))}
130- info = FieldMetaInformation (
131- axes , shape , group .attrs ['gridSpacing' ],
132- group .attrs ['gridGlobalOffset' ], group .attrs ['gridUnitSI' ],
133- dset .attrs ['position' ])
135+
136+ if new_metainformation :
137+ info = FieldMetaInformation (
138+ axes , shape , group .attrs ['gridSpacing' ],
139+ group .attrs ['gridGlobalOffset' ], group .attrs ['gridUnitSI' ],
140+ dset .attrs ['position' ], t , iteration )
141+ else :
142+ info = FieldMetaInformation (
143+ axes , shape , group .attrs ['gridSpacing' ],
144+ group .attrs ['gridGlobalOffset' ], group .attrs ['gridUnitSI' ],
145+ dset .attrs ['position' ])
134146 return info
135147
136148
137149def read_cartesian_field_metadata_io (series , iteration , field_name ,
138- component_name , axis_labels ):
150+ component_name , axis_labels , t ):
139151 """
140152 Get `FieldMetaInformation` of cartesian field using `io` backend.
141153
@@ -164,15 +176,22 @@ def read_cartesian_field_metadata_io(series, iteration, field_name,
164176 # Extract the metainformation
165177 shape = component .shape
166178 axes = {i : axis_labels [i ] for i in range (len (axis_labels ))}
167- info = FieldMetaInformation (
168- axes , shape ,
169- field .grid_spacing , field .grid_global_offset ,
170- field .grid_unit_SI , component .position )
179+ if new_metainformation :
180+ info = FieldMetaInformation (
181+ axes , shape ,
182+ field .grid_spacing , field .grid_global_offset ,
183+ field .grid_unit_SI , component .position ,
184+ t , iteration )
185+ else :
186+ info = FieldMetaInformation (
187+ axes , shape ,
188+ field .grid_spacing , field .grid_global_offset ,
189+ field .grid_unit_SI , component .position )
171190 return info
172191
173192
174193def read_circ_field_metadata_h5py (filename , iteration , field_name ,
175- component_name ):
194+ component_name , t ):
176195 """
177196 Get `FieldMetaInformation` of thetaMode field using `h5py` backend.
178197
@@ -198,15 +217,23 @@ def read_circ_field_metadata_h5py(filename, iteration, field_name,
198217
199218 # Extract the metainformation
200219 Nm , Nr , Nz = fr .get_shape (dset )
201- info = FieldMetaInformation (
202- {0 : 'r' , 1 : 'z' }, (Nr , Nz ),
203- group .attrs ['gridSpacing' ], group .attrs ['gridGlobalOffset' ],
204- group .attrs ['gridUnitSI' ], dset .attrs ['position' ], thetaMode = True )
220+ if new_metainformation :
221+ info = FieldMetaInformation (
222+ {0 : 'r' , 1 : 'z' }, (Nr , Nz ),
223+ group .attrs ['gridSpacing' ], group .attrs ['gridGlobalOffset' ],
224+ group .attrs ['gridUnitSI' ], dset .attrs ['position' ], t , iteration ,
225+ thetaMode = True )
226+ else :
227+ info = FieldMetaInformation (
228+ {0 : 'r' , 1 : 'z' }, (Nr , Nz ),
229+ group .attrs ['gridSpacing' ], group .attrs ['gridGlobalOffset' ],
230+ group .attrs ['gridUnitSI' ], dset .attrs ['position' ], thetaMode = True )
205231
206232 return info
207233
208234
209- def read_circ_field_metadata_io (series , iteration , field_name , component_name ):
235+ def read_circ_field_metadata_io (series , iteration , field_name , component_name ,
236+ t ):
210237 """
211238 Get `FieldMetaInformation` of thetaMode field using `io` backend.
212239
@@ -232,11 +259,19 @@ def read_circ_field_metadata_io(series, iteration, field_name, component_name):
232259
233260 # Extract the metainformation
234261 Nm , Nr , Nz = component .shape
235- info = FieldMetaInformation (
236- {0 : 'r' , 1 : 'z' }, (Nr , Nz ),
237- field .grid_spacing , field .grid_global_offset ,
238- field .grid_unit_SI , component .position , thetaMode = True )
239- return info
262+ if new_metainformation :
263+ info = FieldMetaInformation (
264+ {0 : 'r' , 1 : 'z' }, (Nr , Nz ),
265+ field .grid_spacing , field .grid_global_offset ,
266+ field .grid_unit_SI , component .position , t , iteration ,
267+ thetaMode = True )
268+ return info
269+ else :
270+ info = FieldMetaInformation (
271+ {0 : 'r' , 1 : 'z' }, (Nr , Nz ),
272+ field .grid_spacing , field .grid_global_offset ,
273+ field .grid_unit_SI , component .position , thetaMode = True )
274+ return info
240275
241276
242277def determine_field_units (field_name ):
0 commit comments