dbdicom 0.3.2__py3-none-any.whl → 0.3.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of dbdicom might be problematic. Click here for more details.

@@ -23,33 +23,54 @@ def pixel_data(ds):
23
23
  if [0x2005, 0x100E] in ds: # 'Philips Rescale Slope'
24
24
  slope = ds[(0x2005, 0x100E)].value
25
25
  intercept = ds[(0x2005, 0x100D)].value
26
- array -= intercept
27
- array /= slope
26
+ if (intercept == 0) and (slope == 1):
27
+ array = array.astype(np.int16)
28
+ else:
29
+ array = array.astype(np.float32)
30
+ array -= intercept
31
+ array /= slope
28
32
  else:
29
33
  slope = float(getattr(ds, 'RescaleSlope', 1))
30
34
  intercept = float(getattr(ds, 'RescaleIntercept', 0))
31
- array *= slope
32
- array += intercept
35
+ if (intercept == 0) and (slope == 1):
36
+ array = array.astype(np.int16)
37
+ else:
38
+ array = array.astype(np.float32)
39
+ array *= slope
40
+ array += intercept
33
41
  return np.transpose(array)
34
42
 
35
43
 
36
44
  def set_pixel_data(ds, array):
37
45
 
46
+ # Delete 'Philips Rescale Slope'
38
47
  if (0x2005, 0x100E) in ds:
39
- del ds[0x2005, 0x100E] # Delete 'Philips Rescale Slope'
48
+ del ds[0x2005, 0x100E]
40
49
  if (0x2005, 0x100D) in ds:
41
50
  del ds[0x2005, 0x100D]
42
51
 
52
+ ds.BitsAllocated = 16
53
+ ds.BitsStored = 16
54
+ ds.HighBit = 15
55
+
43
56
  # clipping may slow down a lot
44
- array = image.clip(array.astype(np.float32))
45
- array, slope, intercept = image.scale_to_range(array, ds.BitsAllocated)
46
- array = np.transpose(array)
57
+ #array = image.clip(array.astype(np.float32))
58
+ array = image.clip(array) # remove nan and infs
59
+ if array.dtype==np.int16:
60
+ ds.PixelRepresentation = 1
61
+ ds.RescaleSlope = 1
62
+ ds.RescaleIntercept = 0
63
+ elif array.dtype==np.uint16:
64
+ ds.PixelRepresentation = 0
65
+ ds.RescaleSlope = 1
66
+ ds.RescaleIntercept = 0
67
+ else:
68
+ array, slope, intercept = image.scale_to_range(array, ds.BitsStored)
69
+ ds.PixelRepresentation = 0
70
+ ds.RescaleSlope = 1 / slope
71
+ ds.RescaleIntercept = - intercept / slope
47
72
 
48
- ds.PixelRepresentation = 0
49
- ds.RescaleSlope = 1 / slope
50
- ds.RescaleIntercept = - intercept / slope
51
- # ds.WindowCenter = (maximum + minimum) / 2
52
- # ds.WindowWidth = maximum - minimum
73
+ array = np.transpose(array)
53
74
  ds.Rows = array.shape[0]
54
75
  ds.Columns = array.shape[1]
55
76
  ds.PixelData = array.tobytes()
dbdicom/utils/image.py CHANGED
@@ -54,14 +54,13 @@ def dismantle_affine_matrix(affine):
54
54
  # ImagePositionPatient_i = ImagePositionPatient + i * SpacingBetweenSlices * slice_cosine
55
55
  column_spacing = np.linalg.norm(affine[:3, 0])
56
56
  row_spacing = np.linalg.norm(affine[:3, 1])
57
- slice_thickness = np.linalg.norm(affine[:3, 2])
57
+ slice_spacing = np.linalg.norm(affine[:3, 2])
58
58
  row_cosine = affine[:3, 0] / column_spacing
59
59
  column_cosine = affine[:3, 1] / row_spacing
60
- slice_cosine = affine[:3, 2] / slice_thickness
60
+ slice_cosine = affine[:3, 2] / slice_spacing
61
61
  return {
62
62
  'PixelSpacing': [row_spacing, column_spacing],
63
- # 'SpacingBetweenSlices': slice_thickness, # Obsolete
64
- 'SliceThickness': slice_thickness,
63
+ 'SpacingBetweenSlices': slice_spacing,
65
64
  'ImageOrientationPatient': row_cosine.tolist() + column_cosine.tolist(),
66
65
  'ImagePositionPatient': affine[:3, 3].tolist(), # first slice for a volume
67
66
  'slice_cosine': slice_cosine.tolist()}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dbdicom
3
- Version: 0.3.2
3
+ Version: 0.3.4
4
4
  Summary: A pythonic interface for reading and writing DICOM databases
5
5
  Author-email: Steven Sourbron <s.sourbron@sheffield.ac.uk>, Ebony Gunwhy <e.gunwhy@sheffield.ac.uk>
6
6
  Project-URL: Homepage, https://openmiblab.github.io/dbdicom/
@@ -1,21 +1,21 @@
1
1
  dbdicom/__init__.py,sha256=DyogeTraV6o-FgWdBCbtVEaMmdkMQHkYkraDIE0t8OA,25
2
- dbdicom/api.py,sha256=Xcur6TstwvSD8QMDkFn97NDnuVymjCtHWldimG8CDP4,9783
2
+ dbdicom/api.py,sha256=gBBOgzg54zWA_Rf4392OyNBQUEHt3FYYTLq_QA75bUc,9596
3
3
  dbdicom/const.py,sha256=BqBiRRjeiSqDr1W6YvaayD8WKCjG4Cny2NT0GeLM6bI,4269
4
- dbdicom/database.py,sha256=w835qQHThZsIhoTXlQbZykcKnVrEADgp2mRYBTOKz4g,4627
5
- dbdicom/dataset.py,sha256=dm0bmBjqb_3uZLYV87gKszlqKMMLrSbaymVROafB5ac,22143
6
- dbdicom/dbd.py,sha256=xpDiWzlMUmXzYgRCR5jwvvHENbTsq3B89HvK2JxAo3c,26450
7
- dbdicom/register.py,sha256=5wBQsf4PB6ITHN3clUOMStUy5iYjMnIYUBfhVS2Drio,23692
4
+ dbdicom/database.py,sha256=_LUbH7gc9l7j_63AC71DjwxgTUwbEjHSy5kuvRw75Hw,4764
5
+ dbdicom/dataset.py,sha256=hLAyFlN7zQ-dOzI9V67aHfTq3VtpvCI7_83tnBqXObE,21880
6
+ dbdicom/dbd.py,sha256=6ewuLQwiYGI5EtzWQskxk4CKoprc2gU-m-iSIMPNTv8,31090
7
+ dbdicom/register.py,sha256=_NyNbOEAN_hkwjxupNpr9F5DWUwARCsci8knK41-EsA,13931
8
8
  dbdicom/external/__init__.py,sha256=XNQqfspyf6vFGedXlRKZsUB8k8E-0W19Uamwn8Aioxo,316
9
- dbdicom/external/__pycache__/__init__.cpython-311.pyc,sha256=cIySrImYKo1fJP3-0ZMV-5ZKcZEEDX-uwfZ7I4U-jRs,534
9
+ dbdicom/external/__pycache__/__init__.cpython-311.pyc,sha256=pXAQ35ixd92fm6YcuHgzR1t6RcASQ-cHhU1wOA5b8sw,542
10
10
  dbdicom/external/dcm4che/README.md,sha256=0aAGRs36W3_0s5LzWHRGf_tqariS_JP4iJggaxnD4Xw,8987
11
11
  dbdicom/external/dcm4che/__init__.py,sha256=YwpeMCLrxffGOkchsGjgAuB6ia3VX_tx9Y7ru9EWtoY,35
12
- dbdicom/external/dcm4che/__pycache__/__init__.cpython-311.pyc,sha256=QsnVh0zH1ZSOoNwtTqiirWH8CB0b2eJ0DEvgVoVhZ0Y,248
12
+ dbdicom/external/dcm4che/__pycache__/__init__.cpython-311.pyc,sha256=FB8wyWqXDUt_1P-QmE4yt9uD6dDm5YqYWjqVuRwGdSo,256
13
13
  dbdicom/external/dcm4che/bin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
14
  dbdicom/external/dcm4che/bin/deidentify,sha256=64MNIEpp-CWzFSb6TV0KtyCBvD7XyEsovRjBeyxDqSc,1698
15
15
  dbdicom/external/dcm4che/bin/deidentify.bat,sha256=kVXUkcy1C4Y3KjC2NJwmmR0pufSJWmaof_LR5CTAxMg,1455
16
16
  dbdicom/external/dcm4che/bin/emf2sf,sha256=svCzkZ-QhdVTV0NNHOpBiwNBMODVWZHJIFA7cWaN2bM,1622
17
17
  dbdicom/external/dcm4che/bin/emf2sf.bat,sha256=Vh0ry9KNJX_WXcyCrLSxbJ_6Crot9rjmwi__u2GZqLY,1375
18
- dbdicom/external/dcm4che/bin/__pycache__/__init__.cpython-311.pyc,sha256=M2mla4vNW1gSUWQps3dx4g8NRd4BaQJLP1OKQHmi6Sk,195
18
+ dbdicom/external/dcm4che/bin/__pycache__/__init__.cpython-311.pyc,sha256=GYcm47ETjYvRUN5RPTe5R-c0prd14GP8gm96eJcy0uQ,203
19
19
  dbdicom/external/dcm4che/etc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
20
  dbdicom/external/dcm4che/etc/emf2sf/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
21
  dbdicom/external/dcm4che/etc/emf2sf/log4j.properties,sha256=3hHcBFt2oNRjvHtix5bfuEsnKfdv5IYOkbsyoY9g7cM,223
@@ -36,7 +36,7 @@ dbdicom/external/dcm4che/lib/windows-x86/opencv_java.dll,sha256=QanyzLy0Cd79-aOV
36
36
  dbdicom/external/dcm4che/lib/windows-x86-64/opencv_java.dll,sha256=TmjW2SbG4MR3GQ95T8xCVVDLgsdKukgaHBPUvWkfXp8,11039232
37
37
  dbdicom/sop_classes/ct_image.py,sha256=16PNv_0e1_7cfxE12JWlx5YQeaTAQVzwtXTjxs3aonk,2812
38
38
  dbdicom/sop_classes/enhanced_mr_image.py,sha256=13j4EGXniBpJxpzzL3Xa4y3g5OKhMd5Ct7cjPGOYQY4,35496
39
- dbdicom/sop_classes/mr_image.py,sha256=nHSQIh_zpdmZ0VhwKCVr9iqkluHxl1ASQ75Fr9OeNXI,10270
39
+ dbdicom/sop_classes/mr_image.py,sha256=kNcrWXZ3VC3hhfqjMRjrlZOVqZH3Q5KfWXYLfLD-bEY,10913
40
40
  dbdicom/sop_classes/parametric_map.py,sha256=2OKBuC2bo03OEpKqimQS-nVGFp1cKRPYwVgmDGVf1JU,12288
41
41
  dbdicom/sop_classes/secondary_capture.py,sha256=wgNRX8qyhV7HR7Jq2tQWPPuGpiRzYl6qPOgK6qFbPUc,4541
42
42
  dbdicom/sop_classes/segmentation.py,sha256=I8-PciIoIz27_-dZ4esBZSw0TBBbO8KbNYTiTmVe62g,11465
@@ -45,10 +45,10 @@ dbdicom/sop_classes/xray_angiographic_image.py,sha256=nWysCGaEWKVNItnOgyJfcGMpS3
45
45
  dbdicom/utils/arrays.py,sha256=wiqCczLXlNl0qIePVOwCYvbAJhPveNorplkhtGleS48,1121
46
46
  dbdicom/utils/dcm4che.py,sha256=Vxq8NYWWK3BuqJkzhBQ89oMqzJlnxqTxgsgTo_Frznc,2317
47
47
  dbdicom/utils/files.py,sha256=qhWNJqeWnRjDNbERpC6Mz962_TW9mFdvd2lnBbK3xt4,2259
48
- dbdicom/utils/image.py,sha256=dCjukz9Zvpl4cP3KR1Y4hmKkox5KaFiEhdxDWDEdNec,4110
48
+ dbdicom/utils/image.py,sha256=D46CD_ezpp2uq8VMqug5Z09fAyoJ9U6VwuxIFNJK8zg,4048
49
49
  dbdicom/utils/variables.py,sha256=vUh5cDnmCft5hoXDYXUvfkg5Cy5WlgMAogU38Y_BKRo,5753
50
- dbdicom-0.3.2.dist-info/licenses/LICENSE,sha256=HrhfyXIkWY2tGFK11kg7vPCqhgh5DcxleloqdhrpyMY,11558
51
- dbdicom-0.3.2.dist-info/METADATA,sha256=zqs5ghuuW4o1UR_QkGhiM9afOqmKYWMg0d54ThWRV0k,1030
52
- dbdicom-0.3.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
53
- dbdicom-0.3.2.dist-info/top_level.txt,sha256=nJWxXg4YjD6QblfmhrzTMXcr8FSKNc0Yk-CAIDUsYkQ,8
54
- dbdicom-0.3.2.dist-info/RECORD,,
50
+ dbdicom-0.3.4.dist-info/licenses/LICENSE,sha256=HrhfyXIkWY2tGFK11kg7vPCqhgh5DcxleloqdhrpyMY,11558
51
+ dbdicom-0.3.4.dist-info/METADATA,sha256=DPuzyZj81SfdTQGR_qogbbI1BxeG6StqSLM_pgnck44,1030
52
+ dbdicom-0.3.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
53
+ dbdicom-0.3.4.dist-info/top_level.txt,sha256=nJWxXg4YjD6QblfmhrzTMXcr8FSKNc0Yk-CAIDUsYkQ,8
54
+ dbdicom-0.3.4.dist-info/RECORD,,