Skip to content

Commit 7218317

Browse files
authored
Merge pull request #611 from ax3l/topic-pyUnitDimension
Python: Get Unit Dimension
2 parents 069b185 + f63c839 commit 7218317

File tree

3 files changed

+19
-4
lines changed

3 files changed

+19
-4
lines changed

CHANGELOG.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ Bug Fixes
3636
- import ``mpi4py`` first (MPICH on OSX issue) #596
3737
- skip examples using HDF5 if backend is missing #544
3838
- fix a variable shadowing in ``Mesh`` #582
39+
- add missing ``.unit_dimension`` for records #611
3940
- ADIOS1: fix deadlock in MPI-parallel, non-collective calls to ``storeChunk()`` #554
4041
- xlC 16.1: work-around C-array initializer parsing issue #547
4142
- icc 19.0.0 and PGI 19.5: fix compiler ID identification #548

src/binding/python/BaseRecord.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,14 @@ using namespace openPMD;
3434

3535

3636
void init_BaseRecord(py::module &m) {
37-
py::class_<BaseRecord< RecordComponent >, Container< RecordComponent > >(m, "Base_Record_Record_Component");
38-
py::class_<BaseRecord< MeshRecordComponent >, Container< MeshRecordComponent > >(m, "Base_Record_Mesh_Record_Component");
39-
py::class_<BaseRecord< BaseRecordComponent >, Container< BaseRecordComponent > >(m, "Base_Record_Base_Record_Component");
40-
py::class_<BaseRecord< PatchRecordComponent >, Container< PatchRecordComponent > >(m, "Base_Record_Patch_Record_Component");
37+
py::class_<BaseRecord< RecordComponent >, Container< RecordComponent > >(m, "Base_Record_Record_Component")
38+
.def_property_readonly("unit_dimension", &BaseRecord< RecordComponent >::unitDimension);
39+
py::class_<BaseRecord< MeshRecordComponent >, Container< MeshRecordComponent > >(m, "Base_Record_Mesh_Record_Component")
40+
.def_property_readonly("unit_dimension", &BaseRecord< MeshRecordComponent >::unitDimension);
41+
py::class_<BaseRecord< BaseRecordComponent >, Container< BaseRecordComponent > >(m, "Base_Record_Base_Record_Component")
42+
.def_property_readonly("unit_dimension", &BaseRecord< BaseRecordComponent >::unitDimension);
43+
py::class_<BaseRecord< PatchRecordComponent >, Container< PatchRecordComponent > >(m, "Base_Record_Patch_Record_Component")
44+
.def_property_readonly("unit_dimension", &BaseRecord< PatchRecordComponent >::unitDimension);
4145

4246
py::enum_<UnitDimension>(m, "Unit_Dimension")
4347
.value("L", UnitDimension::L)

test/python/unittest/API/APITest.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -489,6 +489,11 @@ def testData(self):
489489
E_x = E["x"]
490490
shape = E_x.shape
491491

492+
if found_numpy:
493+
np.testing.assert_allclose(E.unit_dimension,
494+
[1., 1., -3., -1., 0., 0., 0.])
495+
self.assertAlmostEqual(E_x.unit_SI, 1.0)
496+
492497
self.assertSequenceEqual(shape, [26, 26, 201])
493498
if found_numpy:
494499
self.assertEqual(E_x.dtype, np.float64)
@@ -540,6 +545,11 @@ def testSliceRead(self):
540545
pos_y = electrons["position"]["y"]
541546
w = electrons["weighting"][api.Record_Component.SCALAR]
542547

548+
if found_numpy:
549+
np.testing.assert_allclose(electrons["position"].unit_dimension,
550+
[1., 0., 0., 0., 0., 0., 0.])
551+
self.assertAlmostEqual(pos_y.unit_SI, 1.0)
552+
543553
offset = [4, 5, 9]
544554
extent = [4, 2, 3]
545555
E_x_data = E_x.load_chunk(offset, extent)

0 commit comments

Comments
 (0)