X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=gdcmPython%2FtestSuite.py;h=8ef87055b1993898d845c4e1d7d2f5d8cf614f93;hb=00b6e0ddcbdbd41252e03732783f65efe5f52526;hp=d33cc3cce1f75b3fefd3d888a6e830850315c25c;hpb=ebee24c21fea75fcb7d0e4479cf72072fe6775f1;p=gdcm.git diff --git a/gdcmPython/testSuite.py b/gdcmPython/testSuite.py index d33cc3cc..8ef87055 100644 --- a/gdcmPython/testSuite.py +++ b/gdcmPython/testSuite.py @@ -1,7 +1,10 @@ import unittest import os from gdcmPython import * -from vtkgdcmPython import * +if os.name == 'posix': + from libvtkgdcmPython import * +else: + from vtkgdcmPython import * class gdcmTestCase(unittest.TestCase): # The files whose name starts with a modality (e.g. CR-MONO1-10-chest.dcm) @@ -22,7 +25,8 @@ class gdcmTestCase(unittest.TestCase): ["Pixel Representation", "0"], ["Manufacturer", "FUJI PHOTO FILM CO. LTD."], ["Manufacturer's Model Name", "9000"], - ["Pixel Data", "gdcm::NotLoaded. Address:776 Length:387200"] ] ], + ["Pixel Data", "gdcm::NotLoaded. Address:776 Length:387200 x(5e880)"] + ] ], #################################### # CT modality examples: #################################### @@ -37,7 +41,8 @@ class gdcmTestCase(unittest.TestCase): ["Pixel Representation", "1"], ["Manufacturer", "Picker International, Inc."], ["Manufacturer's Model Name", "PQ5000"], - ["Pixel Data", "gdcm::NotLoaded. Address:1680 Length:524288"] ] ], + ["Pixel Data", "gdcm::NotLoaded. Address:1680 Length:524288 x(80000)"] + ] ], ["CT-MONO2-16-ort.dcm", [ ["Transfer Syntax UID", "1.2.840.10008.1.2"], # Implicit VR, LE ["Modality", "CT"], @@ -49,7 +54,8 @@ class gdcmTestCase(unittest.TestCase): ["Pixel Representation", "1"], ["Manufacturer", "GE MEDICAL SYSTEMS"], ["Manufacturer's Model Name", "HiSpeed CT/i"], - ["Pixel Data", "gdcm::NotLoaded. Address:1674 Length:524288"] ] ], + ["Pixel Data", "gdcm::NotLoaded. Address:1674 Length:524288 x(80000)"] + ] ], ["CT-MONO2-16-ankle.dcm", [ ["Transfer Syntax UID", "1.2.840.10008.1.2"], # Implicit, little ["Modality", "CT"], @@ -61,7 +67,8 @@ class gdcmTestCase(unittest.TestCase): ["Pixel Representation", "1"], ["Manufacturer", "GE MEDICAL SYSTEMS"], ["Manufacturer's Model Name", "GENESIS_ZEUS"], - ["Pixel Data", "gdcm::NotLoaded. Address:1148 Length:524288"] ] ], + ["Pixel Data", "gdcm::NotLoaded. Address:1148 Length:524288 x(80000)"] + ] ], ["CT-MONO2-8-abdo.dcm", [ ["Transfer Syntax UID", "1.2.840.10008.1.2"], # Implicit, little ["Modality", "CT"], @@ -72,8 +79,9 @@ class gdcmTestCase(unittest.TestCase): ["High Bit", "7"], ["Pixel Representation", "0"], ["Manufacturer", "FUJI"], - ["Pixel Data", "gdcm::NotLoaded. Address:796 Length:262144"] ] ], - ["CT-MONO2-12-lomb-an2.acr2", + ["Pixel Data", "gdcm::NotLoaded. Address:796 Length:262144 x(40000)"] + ] ], + ["CT-MONO2-12-lomb-an2.acr", [ ["Modality", "CT"], #"Transfer Syntax UID" and "Photometric Interpretation" are absent. ["Rows", "512"], @@ -83,7 +91,8 @@ class gdcmTestCase(unittest.TestCase): ["High Bit", "11"], ["Pixel Representation", "0"], ["Manufacturer", "SIEMENS"], - ["Pixel Data", "gdcm::NotLoaded. Address:1230 Length:524288"] ] ], + ["Pixel Data", "gdcm::NotLoaded. Address:1230 Length:524288 x(80000)"] + ] ], ["CT-MONO2-16-chest.dcm", [ ["Transfer Syntax UID", "1.2.840.10008.1.2.4.70"], # jpeg... ["Modality", "CT"], @@ -95,11 +104,12 @@ class gdcmTestCase(unittest.TestCase): ["High Bit", "15"], ["Pixel Representation", "1"], ["Manufacturer", "GE MEDICAL SYSTEMS"], - ["Pixel Data", "gdcm::NotLoaded. Address:1638 Length:143498"] ] ], + ["Pixel Data", "gdcm::NotLoaded. Address:1638 Length:143498 x(2308a)"] + ] ], #################################### ### MR modality examples: #################################### - ["MR-MONO2-12-angio-an1.acr1", + ["MR-MONO2-12-angio-an1.acr", [ ["Recognition Code (RET)", "ACR-NEMA 1.0"], ["Modality", "MR"], #"Transfer Syntax UID" and "Photometric Interpretation" are absent. @@ -111,8 +121,9 @@ class gdcmTestCase(unittest.TestCase): ["Pixel Representation", "0"], ["Manufacturer", "Philips"], # Note: 256*256*12/8 = 98304 - ["Pixel Data", "gdcm::NotLoaded. Address:650 Length:98304"] ] ], - ["MR-MONO2-12-an2.acr2", + ["Pixel Data", "gdcm::NotLoaded. Address:650 Length:98304 x(18000)"] + ] ], + ["MR-MONO2-12-an2.acr", [ ["Modality", "MR"], ["Photometric Interpretation", "MONOCHROME2"], ["Rows", "256"], @@ -123,7 +134,8 @@ class gdcmTestCase(unittest.TestCase): ["Pixel Representation", "0"], ["Manufacturer", "SIEMENS"], ["Manufacturer's Model Name", "MAGNETOM VISION"], - ["Pixel Data", "gdcm::NotLoaded. Address:1866 Length:131072"] ] ], + ["Pixel Data", "gdcm::NotLoaded. Address:1866 Length:131072 x(20000)"] + ] ], ["MR-MONO2-16-head.dcm", [ ["Transfer Syntax UID", "1.2.840.10008.1.2"], # Imp VR, LE ["Modality", "MR"], @@ -136,7 +148,8 @@ class gdcmTestCase(unittest.TestCase): ["Pixel Representation", "1"], ["Manufacturer", "GE MEDICAL SYSTEMS"], ["Manufacturer's Model Name", "GENESIS_SIGNA"], - ["Pixel Data", "gdcm::NotLoaded. Address:1804 Length:131072"] ] ], + ["Pixel Data", "gdcm::NotLoaded. Address:1804 Length:131072 x(20000)"] + ] ], # MR-MONO2-12-shoulder example is present in the Jpeg section. # MR-MONO2-16-knee is not present in the test suite since it is too # closely related to MR-MONO2-16-head.dcm to be of interest. @@ -156,7 +169,8 @@ class gdcmTestCase(unittest.TestCase): ["Bits Allocated", "8"], ["High Bit", "7"], ["Pixel Representation", "0"], - ["Pixel Data", "gdcm::NotLoaded. Address:1654 Length:307200"] ] ], + ["Pixel Data", "gdcm::NotLoaded. Address:1654 Length:307200 x(4b000)"] + ] ], # OT-MONO2-8-colon is not present in the test suite since it is too # closely related to OT-MONO2-8-a7 to be of interest. ["OT-MONO2-8-a7.dcm", @@ -170,7 +184,8 @@ class gdcmTestCase(unittest.TestCase): ["High Bit", "7"], ["Pixel Representation", "0"], ["Manufacturer", "Philips Medical Systems"], - ["Pixel Data", "gdcm::NotLoaded. Address:438 Length:262144"] ] ], + ["Pixel Data", "gdcm::NotLoaded. Address:438 Length:262144 x(40000)"] + ] ], #################################### # US (Ultra Sound) modality examples: #################################### @@ -191,7 +206,8 @@ class gdcmTestCase(unittest.TestCase): # You said it, puffy (tu l'as dit, bouffi, in french language) # RGB is 3 bytes per pixel # + Planar configuration (0028,0006) = 0 --> Pixels RGB - ["Pixel Data", "gdcm::NotLoaded. Address:904 Length:92160"] ] ], + ["Pixel Data", "gdcm::NotLoaded. Address:904 Length:92160 x(16800)"] + ] ], ["US-RGB-8-epicard.dcm", # Interest: Big endian transfert syntax [ ["Transfer Syntax UID", "1.2.840.10008.1.2.2"], # Big endian @@ -208,7 +224,8 @@ class gdcmTestCase(unittest.TestCase): ["Manufacturer's Model Name", "LOGIQ 700"], # + Planar configuration (0028,0006) = 1 --> Plane R, Plane G, Plane B ["Implementation Version Name", "OFFIS-DCMTK-311"], - ["Pixel Data", "gdcm::NotLoaded. Address:1012 Length:921600"] ] ], + ["Pixel Data", "gdcm::NotLoaded. Address:1012 Length:921600 x(e1000)"] + ] ], ] MultiFrameFiles = [ @@ -227,7 +244,8 @@ class gdcmTestCase(unittest.TestCase): ["Pixel Representation", "0"], ["Manufacturer", "Philips"], # Note: 256*256*16=1048576 (16 is the number of Frames) - ["Pixel Data", "gdcm::NotLoaded. Address:920 Length:1048576"] ] ], + ["Pixel Data", "gdcm::NotLoaded. Address:920 Length:1048576 x(100000)"] + ] ], ["NM-MONO2-16-13x-heart.dcm", # Interest: NM modality, multi-frame [ ["Transfer Syntax UID", "1.2.840.10008.1.2.1"], # ExpVR, LE @@ -242,7 +260,8 @@ class gdcmTestCase(unittest.TestCase): ["Pixel Representation", "0"], ["Manufacturer", "ACME Products"], # Note: 64*64*13*2=106496 - ["Pixel Data", "gdcm::NotLoaded. Address:1234 Length:106496"] ] ], + ["Pixel Data", "gdcm::NotLoaded. Address:1234 Length:106496 x(1a000)"] + ] ], ["US-MONO2-8-8x-execho.dcm", # Interest: multi-frame [ ["Transfer Syntax UID", "1.2.840.10008.1.2.1"], # ExpVR, LE @@ -256,7 +275,8 @@ class gdcmTestCase(unittest.TestCase): ["High Bit", "7"], ["Pixel Representation", "0"], ["Manufacturer", "Acme Products"], - ["Pixel Data", "gdcm::NotLoaded. Address:976 Length:122880"] ] ], + ["Pixel Data", "gdcm::NotLoaded. Address:976 Length:122880 x(1e000)"] + ] ], ["US-PAL-8-10x-echo.dcm", # Interest: RLE (Run Length Encoded) compression, multiframe [ ["Transfer Syntax UID", "1.2.840.10008.1.2.5"], # RLE @@ -270,10 +290,11 @@ class gdcmTestCase(unittest.TestCase): ["High Bit", "7"], ["Pixel Representation", "0"], ["Manufacturer", "ACME Products"], - ["Pixel Data", "gdcm::NotLoaded. Address:2428 Length:481182"] ] ], + ["Pixel Data", "gdcm::NotLoaded. Address:2428 Length:481182 x(7579e)"] + ] ], ["XA-MONO2-8-12x-catheter.dcm", # Interest: XA modality, multi-frame - [ ["Transfer Syntax UID", "1.2.840.10008.1.2.4.70"], # jpeg + [ #["Transfer Syntax UID", "1.2.840.10008.1.2.4.70"], # jpeg ["Number of Frames", "12"], # 12 images ["Modality", "XA"], ["Photometric Interpretation", "MONOCHROME2"], @@ -284,11 +305,12 @@ class gdcmTestCase(unittest.TestCase): ["High Bit", "7"], ["Pixel Representation", "0"], ["Manufacturer", "Acme Products"], - ["Pixel Data", "gdcm::NotLoaded. Address:1006 Length:920072"] ] ], + ["Pixel Data", "gdcm::NotLoaded. Address:1006 Length:920072 x(e0a08)"] + ] ], ] GdcmFiles = [ - ["gdcm-MR-SIEMENS-16.acr1", + ["gdcm-MR-SIEMENS-16-1.acr", # Interest: good old Acr-Nema Version 1, see also Oddities below [ ["Recognition Code (RET)", "ACR-NEMA 1.0"], ["Modality", "MR"], @@ -302,12 +324,12 @@ class gdcmTestCase(unittest.TestCase): ["Manufacturer's Model Name", "GBS III"], # FIXME: this image looks padded at the end. The length of the file # is 140288. Notice that, 256*256*2 + 1024 = 131072 + 1024 = 132096 - ["Pixel Data", "gdcm::NotLoaded. Address:8192 Length:132096"], + ["Pixel Data", "gdcm::NotLoaded. Address:8192 Length:132096 x(20400)"], # Oddities: "Study ID" and "Series Number" are empty ["Study ID", ""], ["Series Number", ""] ] ], # Oddities: "Study" and "Serie Instance UID" are not present - ["gdcm-MR-SIEMENS-16.acr2", + ["gdcm-MR-SIEMENS-16-2.acr", # Interest: Acr-Nema Version 2 [ ["Recognition Code (RET)", "ACR-NEMA 2.0"], ["Modality", "MR"], @@ -325,7 +347,8 @@ class gdcmTestCase(unittest.TestCase): ["Series Instance UID", "1.3.12.2.1107.5.2.4.7630.20000918175714000007"], ["Series Number", "7"], - ["Pixel Data", "gdcm::NotLoaded. Address:6052 Length:524288"] ] ], + ["Pixel Data", "gdcm::NotLoaded. Address:6052 Length:524288 x(80000)"] + ] ], ["gdcm-US-ALOKA-16.dcm", # Interest: - possesses 3 LUTS: a Green (checked), a Red and BLue. # - announced as implicit VR, but really explicit VR. @@ -333,7 +356,7 @@ class gdcmTestCase(unittest.TestCase): ["Modality", "US"], ["Photometric Interpretation", "PALETTE COLOR"], ["Segmented Green Palette Color Lookup Table Data", - "gdcm::NotLoaded. Address:89576 Length:113784"], + "gdcm::NotLoaded. Address:89576 Length:113784 x(1bc78)"], ["Rows", "480"], ["Columns", "640"], ["Bits Stored", "16"], @@ -342,7 +365,8 @@ class gdcmTestCase(unittest.TestCase): ["Pixel Representation", "0"], ["Manufacturer", "ALOKA CO., LTD."], ["Manufacturer's Model Name", "SSD-4000"], - ["Pixel Data", "gdcm::NotLoaded. Address:258740 Length:614400"] ] ], + ["Pixel Data", "gdcm::NotLoaded. Address:258740 Length:614400 x(96000)"] + ] ], ["gdcm-MR-PHILIPS-16.dcm", # Interest: - possesses a sequence # - dicom file, with a recognition code of ACR-NEMA1 @@ -359,7 +383,8 @@ class gdcmTestCase(unittest.TestCase): ["Manufacturer", "Philips Medical Systems"], ["Manufacturer's Model Name", "Gyroscan Intera"], ["Sequence Variant", "OTHER"], - ["Pixel Data", "gdcm::NotLoaded. Address:6584 Length:131072"] ] ], + ["Pixel Data", "gdcm::NotLoaded. Address:6584 Length:131072 x(20000)"] + ] ], ["gdcm-MR-PHILIPS-16-Multi-Seq.dcm", # Interest: - possesses many sequences in group 0x0029 # - Big sequence 28808 bytes at (0x0029, 0x263d) @@ -377,7 +402,8 @@ class gdcmTestCase(unittest.TestCase): ["Manufacturer", "Philips Medical Systems"], ["Manufacturer's Model Name", "Gyroscan Intera"], ["Sequence Variant", "OTHER"], - ["Pixel Data", "gdcm::NotLoaded. Address:35846 Length:32768"] ] ], + ["Pixel Data", "gdcm::NotLoaded. Address:35846 Length:32768 x(8000)"] + ] ], ["gdcm-MR-PHILIPS-16-NonRectPix.dcm", # Interest: - pixels are non rectangular # - private elements are in explicit VR (which is normal) @@ -393,7 +419,8 @@ class gdcmTestCase(unittest.TestCase): ["Manufacturer", "Philips Medical Systems"], ["Manufacturer's Model Name", "Gyroscan Intera"], ["Pixel Spacing", "0.487416\\0.194966"], - ["Pixel Data", "gdcm::NotLoaded. Address:5010 Length:20480"] ] ], + ["Pixel Data", "gdcm::NotLoaded. Address:5010 Length:20480 x(5000)"] + ] ], ["gdcm-CR-DCMTK-16-NonSamplePerPix.dcm", # Interest: - Misses the "Samples Per Pixel" element which prevents # e-film from reading it. @@ -408,7 +435,8 @@ class gdcmTestCase(unittest.TestCase): ["High Bit", "7"], ["Pixel Representation", "0"], ["Implementation Version Name", "OFFIS_DCMTK_341"], - ["Pixel Data", "gdcm::NotLoaded. Address:740 Length:562500"] ] ], + ["Pixel Data", "gdcm::NotLoaded. Address:740 Length:562500 x(89544)"] + ] ], ] GdcmJpegFiles = [ @@ -425,7 +453,8 @@ class gdcmTestCase(unittest.TestCase): ["Pixel Representation", "0"], ["Manufacturer", "SIEMENS"], ["Manufacturer's Model Name", "Volume Zoom"], - ["Pixel Data", "gdcm::NotLoaded. Address:2946 Length:192218"] ] ], + ["Pixel Data", "gdcm::NotLoaded. Address:2946 Length:192218 x(2eeda)"] + ] ], ["MR-MONO2-12-shoulder.dcm", # Interest: Jpeg compression [Lossless, non-hierar. (14)] [ ["Transfer Syntax UID", "1.2.840.10008.1.2.4.57"], @@ -439,7 +468,8 @@ class gdcmTestCase(unittest.TestCase): ["Pixel Representation", "0"], ["Manufacturer", "Philips Medical Systems"], ["Manufacturer's Model Name", "Gyroscan NT"], - ["Pixel Data", "gdcm::NotLoaded. Address:1580 Length:718948"] ] ], + ["Pixel Data", "gdcm::NotLoaded. Address:1580 Length:718948 x(af864)"] + ] ], ["gdcm-JPEG-LossLess3a.dcm", # Interest: - Jpeg compression [Lossless, hierar., first-order # pred. 14, Select. Val. 1] @@ -478,7 +508,7 @@ class gdcmTestCase(unittest.TestCase): # 0215424 ¶ 016 P Ñ 002 016 # and (\f °, ¶ 016) is NOT an OB item TAG which is required to be # present (at least there should be a sequence delimiter), refer to - # PS 3.5-2001 page 50. + # PS 3.5-2001 page 50. # # That's right : # at 9ec : ItemTag : fffe,e000 @@ -502,20 +532,24 @@ class gdcmTestCase(unittest.TestCase): ["Pixel Representation", "0"], ["Manufacturer", "Philips Medical Systems"], ["Manufacturer's Model Name", "Cassette Holder Type 9840 500 35201"], - ["Pixel Data", "gdcm::NotLoaded. Address:3144 Length:4795668"] ] ], + ["Pixel Data", "gdcm::NotLoaded. Address:3144 Length:4795668 x(492d14)"] + ] ], ] def _BaseTest(self, FileSet): for entry in FileSet: fileName = os.path.join(GDCM_TEST_DATA_PATH, entry[0]) - toRead = gdcmHeader(fileName) - valDict = toRead.GetPubElVal() + reader = gdcmHeader(fileName) + assert reader.IsReadable(),\ + "File '%s' is not readable by gdcmHeader" % fileName + + valDict = reader.GetEntry() for subEntry in entry[1]: element = subEntry[0] value = subEntry[1] - self.assertEqual(valDict[element], value, + self.assertEqual(valDict[element], value, ("Wrong %s for file %s (got %s, shoud be %s)" - % (element,fileName, valDict[element], value)) ) + % (element,fileName, valDict[element], value)) ) def testBarre(self): gdcmTestCase._BaseTest(self, gdcmTestCase.BarreFiles) @@ -529,7 +563,7 @@ class gdcmTestCase(unittest.TestCase): def testJpeg(self): gdcmTestCase._BaseTest(self, gdcmTestCase.GdcmJpegFiles) - def testWrite(self): + def ZOBtestWrite(self): import md5 SourceFileName = os.path.join(GDCM_TEST_DATA_PATH, 'gdcm-MR-PHILIPS-16-Multi-Seq.dcm') @@ -537,7 +571,8 @@ class gdcmTestCase(unittest.TestCase): Source.GetImageData() TargetFileName = "junk" Target = Source.WriteDcmImplVR(TargetFileName) - Sign = 'c3d27238647b7eaa773bff6ea0692b54' +# Sign = 'a1e2abdc2f6abedd86b93c8b88db5203' # new signature (found on Win) + Sign = '849e722e004d3bb37b87ab6006509b8f' # new signature without field strip ComputeSign = md5.new(open(TargetFileName).read()).hexdigest() self.assertEqual(ComputeSign, Sign, ("Wrong signature for file %s (got %s, shoud be %s)"