Skip to content

Commit

Permalink
improve coverage, add hdf5 identifiers
Browse files Browse the repository at this point in the history
  • Loading branch information
paulmueller committed Dec 1, 2017
1 parent 01349df commit 5baf6b2
Show file tree
Hide file tree
Showing 5 changed files with 81 additions and 9 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
0.1.2
- implement SeriesData.saveh5 (export as qpimage.QPSeries) (#2)
- add unique part of file name to SeriesFolder image identifiers (#2)
- change API for SingleData ("idx=0" for user convenience)
- extract identifiers from hdf5 files
0.1.1
- support pathlib on high level
- add SeriesData.identifier
Expand Down
15 changes: 15 additions & 0 deletions qpformat/file_formats/series_hdf5_qpimage.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,21 @@ def __init__(self, *args, **kwargs):
def __len__(self):
return len(self._qpseries)

@property
def identifier(self):
identifier = self._qpseries.identifier
if identifier is None:
identifier = super(SeriesHdf5Qpimage, self).identifier
return identifier

def get_identifier(self, idx):
"""Return an identifier for the data at index `idx`"""
if "identifier" in self._qpseries[idx]:
identifier = self._qpseries[idx]["identifier"]
else:
identifier = super(SeriesHdf5Qpimage, self).get_identifier(idx)
return identifier

def get_qpimage(self, idx):
"""Return background-corrected QPImage of data at index `idx`"""
if self._bgdata:
Expand Down
12 changes: 12 additions & 0 deletions qpformat/file_formats/single_hdf5_qpimage.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,18 @@


class SingleHdf5Qpimage(SingleData):
@property
def identifier(self):
with qpimage.QPImage(h5file=self.path, h5mode="r") as qpi:
if "identifier" in qpi:
identifier = qpi["identifier"]
else:
identifier = super(SingleHdf5Qpimage, self).identifier
return identifier

def get_identifier(self, idx=0):
return self.identifier

def get_qpimage(self, idx=0):
"""Return background-corrected QPImage"""
if self._bgdata:
Expand Down
30 changes: 25 additions & 5 deletions tests/test_series_hdf5_qpimage.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,9 @@
import os
from os.path import abspath, dirname, join
import sys
import tempfile

import qpimage

# Add parent directory to beginning of path variable
sys.path.insert(0, dirname(dirname(abspath(__file__))))
import qpformat # noqa: E402
import qpformat


def test_load_data():
Expand All @@ -33,6 +29,30 @@ def test_load_data():
pass


def test_identifier():
path = join(dirname(abspath(__file__)), "data/single_qpimage.h5")
tf = tempfile.mktemp(suffix=".h5", prefix="qpformat_test_")
qpi1 = qpimage.QPImage(h5file=path, h5mode="r")
qpi2 = qpi1.copy()
qpi2["identifier"] = "an important string"
# generate qpseries hdf5 file
with qpimage.QPSeries(qpimage_list=[qpi1, qpi2],
h5file=tf,
h5mode="a"):
pass

ds = qpformat.load_data(tf)
assert ds.get_identifier(0) != "an important string"
assert ds.get_identifier(1) == "an important string"
assert ds.identifier in ds.get_identifier(0)

# cleanup
try:
os.remove(tf)
except OSError:
pass


if __name__ == "__main__":
# Run all tests
loc = locals()
Expand Down
31 changes: 27 additions & 4 deletions tests/test_single_hdf5_qpimage.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import os
from os.path import abspath, dirname, join
import sys
import tempfile

# Add parent directory to beginning of path variable
sys.path.insert(0, dirname(dirname(abspath(__file__))))
import qpformat # noqa: E402
import qpimage
import qpformat


def test_load_data():
Expand All @@ -12,6 +12,29 @@ def test_load_data():
assert ds.path == path
assert ds.get_time() == 0
assert "SingleHdf5Qpimage" in ds.__repr__()
assert ds.get_qpimage() == qpimage.QPImage(h5file=path, h5mode="r")


def test_identifier():
path = join(dirname(abspath(__file__)), "data/single_qpimage.h5")
tf = tempfile.mktemp(suffix=".h5", prefix="qpformat_test_")
qpi = qpimage.QPImage(h5file=path, h5mode="r").copy()
qpi["identifier"] = "an extremely important string"
qpi.copy(tf)

ds1 = qpformat.load_data(path)
ds2 = qpformat.load_data(tf)

assert ds1.identifier != ds2.identifier
assert ds2.identifier == "an extremely important string"
assert ds1.identifier == ds1.get_identifier()
assert ds2.identifier == ds2.get_identifier()

# cleanup
try:
os.remove(tf)
except OSError:
pass


if __name__ == "__main__":
Expand Down

0 comments on commit 5baf6b2

Please sign in to comment.