Skip to content

Commit 5709264

Browse files
authored
Merge pull request #56 from AngelFP/update_openpmd_viewer
Update attributes in `FieldMetaInformation`
2 parents 70e4e35 + caa398c commit 5709264

File tree

1 file changed

+62
-27
lines changed

1 file changed

+62
-27
lines changed

visualpic/data_reading/openpmd_data_reader.py

Lines changed: 62 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@
1212
from openpmd_viewer.openpmd_timeseries.data_reader.h5py_reader import (
1313
field_reader as fr)
1414
from 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

1721
class 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

100105
def 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

137149
def 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

174193
def 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

242277
def determine_field_units(field_name):

0 commit comments

Comments
 (0)