comparison Tests/Tests.py @ 440:3a5222eb4c93

added test_numpy
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 26 Nov 2021 19:03:45 +0100
parents 2ca9e31d582f
children 21a45ddc9256
comparison
equal deleted inserted replaced
439:2ca9e31d582f 440:3a5222eb4c93
23 23
24 24
25 import base64 25 import base64
26 import bz2 26 import bz2
27 import copy 27 import copy
28 import io
28 import numpy 29 import numpy
29 import pprint 30 import pprint
30 import shutil 31 import shutil
31 import tempfile 32 import tempfile
32 import unittest 33 import unittest
8227 # Generated by "dcm2pnm +F 45 DicomSeg.dcm DicomSeg-Frame45.pgm" 8228 # Generated by "dcm2pnm +F 45 DicomSeg.dcm DicomSeg-Frame45.pgm"
8228 im2 = Image.open(GetDatabasePath('DicomSeg-Frame45.pgm')) 8229 im2 = Image.open(GetDatabasePath('DicomSeg-Frame45.pgm'))
8229 im2 = im2.point(lambda p: 255 if p == 128 else 0) 8230 im2 = im2.point(lambda p: 255 if p == 128 else 0)
8230 8231
8231 self.assertTrue(ImageChops.difference(im1, im2).getbbox() is None) 8232 self.assertTrue(ImageChops.difference(im1, im2).getbbox() is None)
8233
8234
8235 def test_numpy(self):
8236 # New in Orthanc 1.9.8
8237 a = UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm')['ID']
8238 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0002.dcm')
8239 b = UploadInstance(_REMOTE, 'DicomSeg.dcm') ['ID']
8240
8241 c = numpy.load(io.BytesIO(DoGet(_REMOTE, '/instances/%s/frames/0/numpy' % a)))
8242 self.assertFalse(isinstance(c, numpy.lib.npyio.NpzFile))
8243 self.assertEqual(numpy.float32, c.dtype)
8244 self.assertEqual((288, 288, 1), c.shape)
8245
8246 c = numpy.load(io.BytesIO(DoGet(_REMOTE, '/instances/%s/frames/0/numpy?rescale=0' % a)))
8247 self.assertFalse(isinstance(c, numpy.lib.npyio.NpzFile))
8248 self.assertEqual(numpy.uint16, c.dtype)
8249 self.assertEqual((288, 288, 1), c.shape)
8250
8251 c = numpy.load(io.BytesIO(DoGet(_REMOTE, '/instances/%s/numpy?rescale=1&compress=false' % a)))
8252 self.assertFalse(isinstance(c, numpy.lib.npyio.NpzFile))
8253 self.assertEqual(numpy.float32, c.dtype)
8254 self.assertEqual((1, 288, 288, 1), c.shape)
8255
8256 series = DoGet(_REMOTE, '/instances/%s/series' % a)['ID']
8257 c = numpy.load(io.BytesIO(DoGet(_REMOTE, '/series/%s/numpy?rescale=true&compress=0' % series)))
8258 self.assertFalse(isinstance(c, numpy.lib.npyio.NpzFile))
8259 self.assertEqual(numpy.float32, c.dtype)
8260 self.assertEqual((2, 288, 288, 1), c.shape)
8261
8262 series = DoGet(_REMOTE, '/instances/%s/series' % a)['ID']
8263 c = numpy.load(io.BytesIO(DoGet(_REMOTE, '/series/%s/numpy?rescale=1' % series)))
8264 self.assertFalse(isinstance(c, numpy.lib.npyio.NpzFile))
8265 self.assertEqual(numpy.float32, c.dtype)
8266 self.assertEqual((2, 288, 288, 1), c.shape)
8267
8268 c = numpy.load(io.BytesIO(DoGet(_REMOTE, '/instances/%s/numpy?compress' % a)))
8269 self.assertTrue(isinstance(c, numpy.lib.npyio.NpzFile))
8270 self.assertEqual(1, len(c.files))
8271 self.assertEqual(numpy.float32, c['arr_0'].dtype)
8272 self.assertEqual((1, 288, 288, 1), c['arr_0'].shape)
8273
8274 c = numpy.load(io.BytesIO(DoGet(_REMOTE, '/instances/%s/frames/0/numpy' % b)))
8275 self.assertFalse(isinstance(c, numpy.lib.npyio.NpzFile))
8276 self.assertEqual(numpy.float32, c.dtype)
8277 self.assertEqual((256, 256, 1), c.shape)
8278
8279 c = numpy.load(io.BytesIO(DoGet(_REMOTE, '/instances/%s/numpy' % b)))
8280 self.assertFalse(isinstance(c, numpy.lib.npyio.NpzFile))
8281 self.assertEqual(numpy.float32, c.dtype)
8282 self.assertEqual((96, 256, 256, 1), c.shape)
8283
8284 series = DoGet(_REMOTE, '/instances/%s/series' % b)['ID']
8285 c = numpy.load(io.BytesIO(DoGet(_REMOTE, '/series/%s/numpy' % series)))
8286 self.assertFalse(isinstance(c, numpy.lib.npyio.NpzFile))
8287 self.assertEqual(numpy.float32, c.dtype)
8288 self.assertEqual((96, 256, 256, 1), c.shape)