Skip to content

Commit

Permalink
Merge pull request #104 from jimrybarski/103-single-image
Browse files Browse the repository at this point in the history
resolves #103: ND2s with a single image could not be parsed properly …
  • Loading branch information
jimrybarski committed Oct 16, 2015
2 parents eb02123 + 284f677 commit 1e22e12
Show file tree
Hide file tree
Showing 5 changed files with 60 additions and 4 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## [1.1.3] - 2015-10-16
### FIXED
- ND2s with a single image can now be parsed

## [1.1.2] - 2015-10-09
### ADDED
- `Image` objects now have a `frame_number` attribute.
Expand Down
3 changes: 2 additions & 1 deletion ftests.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import unittest
from functional_tests.FYLM141111001 import FunctionalTests
from functional_tests.FYLM141111001 import FunctionalTests as FYLM141111Tests
from functional_tests.single import FunctionalTests as SingleTests


if __name__ == '__main__':
Expand Down
51 changes: 51 additions & 0 deletions functional_tests/single.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
"""
These tests require that you have a specific ND2 file created by the developer of nd2reader. You will never need to
run them unless you're Jim Rybarski.
"""
from nd2reader import Nd2
from datetime import datetime
import unittest


class FunctionalTests(unittest.TestCase):
def setUp(self):
self.nd2 = Nd2("/var/nd2s/single.nd2")

def tearDown(self):
self.nd2.close()

def test_shape(self):
self.assertEqual(self.nd2.height, 512)
self.assertEqual(self.nd2.width, 512)

def test_date(self):
self.assertEqual(self.nd2.date, datetime(2015, 10, 15, 9, 33, 5))

def test_length(self):
self.assertEqual(len(self.nd2), 1)

def test_frames(self):
self.assertEqual(len(self.nd2.frames), 1)

def test_fovs(self):
self.assertEqual(len(self.nd2.fields_of_view), 1)

def test_z_levels(self):
self.assertTupleEqual(tuple(self.nd2.z_levels), (0,))

def test_image(self):
image = self.nd2[0]
self.assertIsNotNone(image)

def test_iteration(self):
images = [image for image in self.nd2]
self.assertEqual(len(images), 1)

def test_iteration_step(self):
images = [image for image in self.nd2[::2]]
self.assertEqual(len(images), 1)

def test_iteration_backwards(self):
images = [image for image in self.nd2[::-1]]
self.assertEqual(len(images), 1)
4 changes: 2 additions & 2 deletions nd2reader/parser/v3.py
Original file line number Diff line number Diff line change
Expand Up @@ -148,13 +148,13 @@ def _parse_dimension_text(self, metadata_dict):
metadata = line
break
else:
raise ValueError("Could not parse metadata dimensions!")
return six.b("")
for line in metadata.split(six.b("\r\n")):
if line.startswith(six.b("Dimensions:")):
dimension_text = line
break
else:
raise ValueError("Could not parse metadata dimensions!")
return six.b("")
return dimension_text

def _parse_dimension(self, pattern, metadata_dict):
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from setuptools import setup

VERSION = "1.1.2"
VERSION = "1.1.3"

setup(
name="nd2reader",
Expand Down

0 comments on commit 1e22e12

Please sign in to comment.