Skip to content

Commit

Permalink
added test for asciiimageio.py and test_tiffio.py
Browse files Browse the repository at this point in the history
added installation of pillow via setup (review based)
minor modification of asciiimageio and tiff
  • Loading branch information
teogale committed Sep 18, 2019
1 parent b02cad1 commit 674546d
Show file tree
Hide file tree
Showing 10 changed files with 116 additions and 18 deletions.
1 change: 1 addition & 0 deletions .circleci/requirements_testing.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@ ipython
https://github.com/nsdf/nsdf/archive/0.1.tar.gz
coverage
coveralls
pillow
1 change: 1 addition & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ install:
- pip install -r requirements.txt
- pip install coveralls
- pip install .
- pip install pillow
# command to run tests, e.g. python setup.py test
script:
nosetests --with-coverage --cover-package=neo
1 change: 1 addition & 0 deletions neo/core/block.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ def __init__(self, name=None, description=None, file_origin=None,
self.file_datetime = file_datetime
self.rec_datetime = rec_datetime
self.index = index
self.regionsofinterest = []

@property
def data_children_recur(self):
Expand Down
16 changes: 8 additions & 8 deletions neo/io/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@
.. autoclass:: neo.io.AlphaOmegaIO
.. autoclass:: neo.io.AsciiSignalIO
.. autoclass:: neo.io.AsciiImageIO
.. autoclass:: neo.io.AsciiSignalIO
.. autoclass:: neo.io.AsciiSpikeTrainIO
.. autoclass:: neo.io.AxographIO
Expand Down Expand Up @@ -85,10 +85,10 @@
.. autoclass:: neo.io.StimfitIO
.. autoclass:: neo.io.TiffIO
.. autoclass:: neo.io.TdtIO
.. autoclass:: neo.io.TiffIO
.. autoclass:: neo.io.WinEdrIO
.. autoclass:: neo.io.WinWcpIO
Expand All @@ -114,8 +114,8 @@
# print("\n loading with API...")

from neo.io.alphaomegaio import AlphaOmegaIO
from neo.io.asciisignalio import AsciiSignalIO
from neo.io.asciiimageio import AsciiImageIO
from neo.io.asciisignalio import AsciiSignalIO
from neo.io.asciispiketrainio import AsciiSpikeTrainIO
from neo.io.axographio import AxographIO
from neo.io.axonio import AxonIO
Expand Down Expand Up @@ -152,15 +152,15 @@
from neo.io.rawmcsio import RawMCSIO
from neo.io.spike2io import Spike2IO
from neo.io.stimfitio import StimfitIO
from neo.io.tiffio import TiffIO
from neo.io.tdtio import TdtIO
from neo.io.tiffio import TiffIO
from neo.io.winedrio import WinEdrIO
from neo.io.winwcpio import WinWcpIO

iolist = [
AlphaOmegaIO,
AsciiSignalIO,
AsciiImageIO,
AsciiSignalIO,
AsciiSpikeTrainIO,
AxographIO,
AxonIO,
Expand Down Expand Up @@ -195,8 +195,8 @@
RawMCSIO,
Spike2IO,
StimfitIO,
TiffIO,
TdtIO,
TiffIO,
WinEdrIO,
WinWcpIO
]
Expand Down
8 changes: 4 additions & 4 deletions neo/io/asciiimageio.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,13 +62,12 @@ def __init__(self, file_name=None, nb_frame=None, nb_row=None, nb_column=None, u
def read(self, lazy=False, **kwargs):
if lazy:
raise ValueError('This IO module does not support lazy loading')
return [self.read_block(lazy=lazy, nb_frame=self.nb_frame, nb_row=self.nb_row,
nb_column=self.nb_column, units=self.units, sampling_rate=self.sampling_rate,
spatial_scale=self.spatial_scale, **kwargs)]
return [self.read_block(lazy=lazy, **kwargs)]

def read_block(self, lazy=False, **kwargs):

data = open(self.filename, 'r').read()
file = open(self.filename, 'r')
data = file.read()
print("read block")
liste_value = []
record = []
Expand All @@ -93,6 +92,7 @@ def read_block(self, lazy=False, **kwargs):

image_sequence = ImageSequence(np.array(data, dtype='float'), units=self.units,
sampling_rate=self.sampling_rate, spatial_scale=self.spatial_scale)
file.close()
print("creating segment")
segment = Segment(file_origin=self.filename)
segment.imagesequences = [image_sequence]
Expand Down
13 changes: 11 additions & 2 deletions neo/io/tiffio.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@
"""

import os
try:
from PIL import Image
have_pil = True
except ImportError:
have_pil = False

from PIL import Image
import numpy as np
from neo.core import ImageSequence, Segment, Block
Expand Down Expand Up @@ -68,6 +74,10 @@ class TiffIO(BaseIO):

def __init__(self, directory_path=None,units=None, sampling_rate=None,
spatial_scale=None, **kwargs):

if not have_pil:
raise Exception("Please install the pillow package to use TiffIO")

BaseIO.__init__(self, directory_path, **kwargs)
self.units = units
self.sampling_rate = sampling_rate
Expand All @@ -76,8 +86,7 @@ def __init__(self, directory_path=None,units=None, sampling_rate=None,
def read(self, lazy=False, **kwargs):
if lazy:
raise ValueError('This IO module does not support lazy loading')
return [self.read_block(lazy=lazy, units=self.units, sampling_rate=self.sampling_rate,
spatial_scale=self.spatial_scale, **kwargs)]
return [self.read_block(lazy=lazy, **kwargs)]

def read_block(self, lazy=False, **kwargs):
# to sort file
Expand Down
7 changes: 3 additions & 4 deletions neo/test/coretest/test_imagesequence.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,14 @@ def test_error_spatial_scale(self):
ImageSequence(self.data, units='V', sampling_rate=500 * pq.Hz)

def test_units(self):
with self.assertRaises(ValueError):
with self.assertRaises(TypeError):
ImageSequence(self.data, sampling_rate=500 * pq.Hz, spatial_scale='m')

# test method will be remove are rename

def test_something(self):
l = ImageSequence(self.data, sampling_rate=500 * pq.Hz, units='V', spatial_scale='m')
l = ImageSequence(self.data, sampling_rate=500 * pq.Hz, units='V',
spatial_scale='m')

self.assertEqual(l.sampling_rate, 500 * pq.Hz)
self.assertEqual(l.spatial_scale, 'm')
Expand Down Expand Up @@ -75,8 +76,6 @@ def test_signal_from_region(self):
with self.assertRaises(ValueError):
ImageSequence(self.data, units='V', sampling_rate=500 * pq.Hz, spatial_scale='m').signal_from_region()

m = ImageSequence(self.data, units='V', sampling_rate=500 * pq.Hz, spatial_scale='m').view()
print(m.sampling_rate)

if __name__ == "__main__":
unittest.main()
43 changes: 43 additions & 0 deletions neo/test/iotest/test_asciiimageio.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
"""
Test of neo.io.asciiimageio
"""
import os
import unittest
import quantities as pq
from neo.io import AsciiImageIO
import numpy as np


class TestAsciiImageIO(unittest.TestCase):

def test_read_txt(self):
img = ''
img_list = []
for frame in range(20):
img_list.append([])
for y in range(50):
img_list[frame].append([])
for x in range(50):
img += str(x)
img += '\t'
img_list[frame][y].append(x)
img_list = np.array(img_list)
file_name = "txt_test_file.txt"
file = open(file_name, mode="w")
file.write(str(img))
file.close()

object = AsciiImageIO(file_name='txt_test_file.txt',
nb_frame=20, nb_row=50, nb_column=50, units='V',
sampling_rate=1 * pq.Hz, spatial_scale=1 * pq.micrometer)
block = object.read_block()
self.assertEqual(len(block.segments), 1)
self.assertEqual(len(block.segments[0].imagesequences), 1)
self.assertEqual(block.segments[0].imagesequences[0].shape, (20, 50, 50))
self.assertEqual(block.segments[0].imagesequences[0].any(), img_list.any())

file.close()
os.remove(file_name)

if __name__ == "__main__":
unittest.main()
43 changes: 43 additions & 0 deletions neo/test/iotest/test_tiffio.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@

import unittest
import os
from PIL import Image
import numpy as np
import shutil
from neo.io.tiffio import TiffIO
import quantities as pq

class TestTiffIO(unittest.TestCase):


def test_read_group_of_tiff_grayscale(self):
directory = 'test_tiff'
if not os.path.exists(directory):
os.makedirs(directory)
# directory is live
img = []
for picture in range(10):
img.append([])
for y in range(50):
img[picture].append([])
for x in range(50):
img[picture][y].append(x)
img = np.array(img, dtype=float)
for image in range(10):
Image.fromarray(img[image]).save(directory+'/tiff_exemple'+str(image)+".tif")

ioclass = TiffIO(directory_path=directory, units='V', sampling_rate=1.0*pq.Hz,
spatial_scale=1.0*pq.micrometer)
blck = ioclass.read_block()
self.assertEqual(len(blck.segments), 1)
self.assertEqual(len(blck.segments[0].imagesequences), 1)
self.assertEqual(blck.segments[0].imagesequences[0].any(), img.any())
self.assertEqual(blck.segments[0].imagesequences[0].sampling_rate, 1.0*pq.Hz)
self.assertEqual(blck.segments[0].imagesequences[0].spatial_scale, 1.0 * pq.micrometer)

# end of directory
shutil.rmtree(directory)


if __name__ == "__main__":
unittest.main()
1 change: 1 addition & 0 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
'neomatlabio': ['scipy>=0.12.0'],
'nixio': ['nixio>=1.5.0b2'],
'stimfitio': ['stfio'],
'tiffio':['pillow']
}

if os.environ.get('TRAVIS') == 'true' and \
Expand Down

0 comments on commit 674546d

Please sign in to comment.