comparison Plugins/WSI/Run.py @ 364:6fa8218cf8db

wsi: test_concatenation
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 13 Jan 2021 15:05:41 +0100
parents 79ce0f7a9714
children 27cb0b60f2d3
comparison
equal deleted inserted replaced
363:79ce0f7a9714 364:6fa8218cf8db
164 self.assertEqual(1, len(pyramid['Sizes'])) 164 self.assertEqual(1, len(pyramid['Sizes']))
165 self.assertEqual(1, len(pyramid['TilesCount'])) 165 self.assertEqual(1, len(pyramid['TilesCount']))
166 self.assertEqual(1, pyramid['Resolutions'][0]) 166 self.assertEqual(1, pyramid['Resolutions'][0])
167 self.assertEqual(512, pyramid['Sizes'][0][0]) 167 self.assertEqual(512, pyramid['Sizes'][0][0])
168 self.assertEqual(512, pyramid['Sizes'][0][1]) 168 self.assertEqual(512, pyramid['Sizes'][0][1])
169 self.assertEqual(512, pyramid['TileWidth']) 169 self.assertEqual(1, len(pyramid['TilesSizes']))
170 self.assertEqual(512, pyramid['TileHeight']) 170 self.assertEqual(2, len(pyramid['TilesSizes'][0]))
171 self.assertEqual(512, pyramid['TilesSizes'][0][0])
172 self.assertEqual(512, pyramid['TilesSizes'][0][1])
171 self.assertEqual(512, pyramid['TotalWidth']) 173 self.assertEqual(512, pyramid['TotalWidth'])
172 self.assertEqual(512, pyramid['TotalHeight']) 174 self.assertEqual(512, pyramid['TotalHeight'])
173 self.assertEqual(1, pyramid['TilesCount'][0][0]) 175 self.assertEqual(1, pyramid['TilesCount'][0][0])
174 self.assertEqual(1, pyramid['TilesCount'][0][1]) 176 self.assertEqual(1, pyramid['TilesCount'][0][1])
175 177
197 pyramid = DoGet(ORTHANC, '/wsi/pyramids/%s' % s[0]) 199 pyramid = DoGet(ORTHANC, '/wsi/pyramids/%s' % s[0])
198 self.assertEqual(s[0], pyramid['ID']) 200 self.assertEqual(s[0], pyramid['ID'])
199 self.assertEqual(4, len(pyramid['Resolutions'])) 201 self.assertEqual(4, len(pyramid['Resolutions']))
200 self.assertEqual(4, len(pyramid['Sizes'])) 202 self.assertEqual(4, len(pyramid['Sizes']))
201 self.assertEqual(4, len(pyramid['TilesCount'])) 203 self.assertEqual(4, len(pyramid['TilesCount']))
204 self.assertEqual(4, len(pyramid['TilesSizes']))
205
202 self.assertEqual(1, pyramid['Resolutions'][0]) 206 self.assertEqual(1, pyramid['Resolutions'][0])
203 self.assertEqual(2, pyramid['Resolutions'][1]) 207 self.assertEqual(2, pyramid['Resolutions'][1])
204 self.assertEqual(4, pyramid['Resolutions'][2]) 208 self.assertEqual(4, pyramid['Resolutions'][2])
205 self.assertEqual(8, pyramid['Resolutions'][3]) 209 self.assertEqual(8, pyramid['Resolutions'][3])
206 self.assertEqual(512, pyramid['Sizes'][0][0]) 210 self.assertEqual(512, pyramid['Sizes'][0][0])
209 self.assertEqual(256, pyramid['Sizes'][1][1]) 213 self.assertEqual(256, pyramid['Sizes'][1][1])
210 self.assertEqual(128, pyramid['Sizes'][2][0]) 214 self.assertEqual(128, pyramid['Sizes'][2][0])
211 self.assertEqual(128, pyramid['Sizes'][2][1]) 215 self.assertEqual(128, pyramid['Sizes'][2][1])
212 self.assertEqual(64, pyramid['Sizes'][3][0]) 216 self.assertEqual(64, pyramid['Sizes'][3][0])
213 self.assertEqual(64, pyramid['Sizes'][3][1]) 217 self.assertEqual(64, pyramid['Sizes'][3][1])
214 self.assertEqual(64, pyramid['TileWidth']) 218 for i in range(4):
215 self.assertEqual(64, pyramid['TileHeight']) 219 self.assertEqual(2, len(pyramid['TilesSizes'][i]))
220 self.assertEqual(64, pyramid['TilesSizes'][i][0])
221 self.assertEqual(64, pyramid['TilesSizes'][i][1])
216 self.assertEqual(512, pyramid['TotalWidth']) 222 self.assertEqual(512, pyramid['TotalWidth'])
217 self.assertEqual(512, pyramid['TotalHeight']) 223 self.assertEqual(512, pyramid['TotalHeight'])
218 self.assertEqual(8, pyramid['TilesCount'][0][0]) 224 self.assertEqual(8, pyramid['TilesCount'][0][0])
219 self.assertEqual(8, pyramid['TilesCount'][0][1]) 225 self.assertEqual(8, pyramid['TilesCount'][0][1])
220 self.assertEqual(4, pyramid['TilesCount'][1][0]) 226 self.assertEqual(4, pyramid['TilesCount'][1][0])
276 p = filter(lambda x: 'Photometric Interpretation' in x, tiff.splitlines()) 282 p = filter(lambda x: 'Photometric Interpretation' in x, tiff.splitlines())
277 self.assertEqual(4, len(p)) 283 self.assertEqual(4, len(p))
278 for j in range(4): 284 for j in range(4):
279 self.assertTrue('RGB' in p[j]) 285 self.assertTrue('RGB' in p[j])
280 286
281 287
288 def test_concatenation(self):
289 # https://bugs.orthanc-server.com/show_bug.cgi?id=145
290 CallDicomizer([ GetDatabasePath('LenaGrayscale.png'), '--levels=1', ])
291 i = DoGet(ORTHANC, '/instances')
292 self.assertEqual(1, len(i))
293 tags = DoGet(ORTHANC, '/instances/%s/tags?short' % i[0])
294 self.assertTrue('0020,0242' in tags) # SOP Instance UID of Concatenation Source
295 self.assertTrue('0020,9161' in tags) # Concatenation UID
296 self.assertTrue('0020,9162' in tags) # In-concatenation Number
297 self.assertTrue('0020,9228' in tags) # Concatenation Frame Offset Number
298 self.assertEqual('1', tags['0020,9162'])
299 self.assertEqual('0', tags['0020,9228'])
300
301 DropOrthanc(ORTHANC)
302
303 # "--max-size" disables the concatenation
304 CallDicomizer([ GetDatabasePath('LenaGrayscale.png'), '--levels=1', '--max-size=0' ])
305 i = DoGet(ORTHANC, '/instances')
306 self.assertEqual(1, len(i))
307 tags = DoGet(ORTHANC, '/instances/%s/tags?short' % i[0])
308 self.assertFalse('0020,0242' in tags)
309 self.assertFalse('0020,9161' in tags)
310 self.assertFalse('0020,9162' in tags)
311 self.assertFalse('0020,9228' in tags)
312
313 DropOrthanc(ORTHANC)
314
315 # This creates a series with 2 instances of roughly 1.5MB (= 2 frames x 512 x 512 x 3 (RGB24) + DICOM overhead)
316 CallDicomizer([ GetDatabasePath('WSI/Lena2x2.png'), '--levels=1', '--max-size=1', '--compression=none' ])
317 i = DoGet(ORTHANC, '/instances')
318 self.assertEqual(2, len(i))
319 t1 = DoGet(ORTHANC, '/instances/%s/tags?short' % i[0])
320 t2 = DoGet(ORTHANC, '/instances/%s/tags?short' % i[1])
321 self.assertTrue('0020,0242' in t1)
322 self.assertTrue('0020,9161' in t1)
323 self.assertTrue('0020,9162' in t1)
324 self.assertTrue('0020,9228' in t1)
325 self.assertEqual(t1['0020,0242'], t2['0020,0242'])
326 self.assertEqual(t1['0020,9161'], t2['0020,9161'])
327 if t1['0020,9162'] == '1':
328 self.assertEqual('1', t1['0020,9162'])
329 self.assertEqual('0', t1['0020,9228'])
330 self.assertEqual('2', t2['0020,9162'])
331 self.assertEqual('2', t2['0020,9228'])
332 else:
333 self.assertEqual('1', t2['0020,9162'])
334 self.assertEqual('0', t2['0020,9228'])
335 self.assertEqual('2', t1['0020,9162'])
336 self.assertEqual('2', t1['0020,9228'])
337
282 try: 338 try:
283 print('\nStarting the tests...') 339 print('\nStarting the tests...')
284 unittest.main(argv = [ sys.argv[0] ] + args.options) 340 unittest.main(argv = [ sys.argv[0] ] + args.options)
285 341
286 finally: 342 finally: