imagedata 3.7.2.dev1__tar.gz → 3.8.0__tar.gz
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.
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/CHANGELOG.md +76 -1
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/PKG-INFO +3 -2
- imagedata-3.8.0/VERSION.txt +1 -0
- imagedata-3.8.0/data/dicom/5D.zip +0 -0
- imagedata-3.8.0/data/dicom/6D_TE_TIME_FA.zip +0 -0
- imagedata-3.8.0/data/dicom/RSI_6D.zip +0 -0
- imagedata-3.8.0/data/dicom/ep2d_RSI_b0_500_1500_6dir.zip +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/Options.rst +5 -0
- imagedata-3.8.0/docs/Sorting.rst +129 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/apps/Siemens/evidence2mask.py +25 -3
- imagedata-3.8.0/src/imagedata/apps/diffusion.py +410 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/archives/zipfilearchive.py +8 -2
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/axis.py +13 -2
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/cmdline.py +4 -7
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/collection.py +3 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/formats/__init__.py +5 -58
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/formats/dicomplugin.py +602 -254
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/formats/itkplugin.py +8 -9
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/formats/matplugin.py +8 -10
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/formats/niftiplugin.py +9 -10
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/header.py +78 -40
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/image_data.py +3 -3
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/readdata.py +7 -3
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/series.py +70 -53
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/transports/xnattransport.py +4 -1
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/viewer.py +4 -1
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata.egg-info/PKG-INFO +3 -2
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata.egg-info/SOURCES.txt +4 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/tests/compare_headers.py +52 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/tests/test_formats_dicom.py +189 -12
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/tests/test_formats_dicom_color.py +1 -1
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/tests/test_formats_dicom_template.py +12 -7
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/tests/test_series.py +25 -3
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/tests/test_series_ufunc.py +4 -1
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/tests/test_transport_filetransport.py +1 -1
- imagedata-3.7.2.dev1/VERSION.txt +0 -1
- imagedata-3.7.2.dev1/docs/Sorting.rst +0 -47
- imagedata-3.7.2.dev1/src/imagedata/apps/diffusion.py +0 -161
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/.readthedocs.yaml +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/.travis.yml +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/CONTRIBUTING.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/LICENSE.txt +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/MANIFEST.in +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/Makefile +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/README.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/TI/TI_1.MR.0021.0001.2021.06.08.10.04.29.806302.203193459.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/TI/TI_1.MR.0022.0001.2021.06.08.10.04.29.806302.203195509.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/TI/TI_1.MR.0023.0001.2021.06.08.10.04.29.806302.203197559.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/TI/TI_1.MR.0024.0001.2021.06.08.10.04.29.806302.203199609.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/TI/TI_1.MR.0025.0001.2021.06.08.10.04.29.806302.203201659.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/cohort.zip +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/cor_hf.zip +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/cor_oblique.zip +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/cor_rl.zip +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0001.2019.02.07.14.42.45.461288.172175570.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0002.2019.02.07.14.42.45.461288.172174503.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0003.2019.02.07.14.42.45.461288.172175624.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0004.2019.02.07.14.42.45.461288.172174557.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0005.2019.02.07.14.42.45.461288.172175678.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0006.2019.02.07.14.42.45.461288.172174611.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0007.2019.02.07.14.42.45.461288.172175732.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0008.2019.02.07.14.42.45.461288.172174665.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0009.2019.02.07.14.42.45.461288.172175786.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0010.2019.02.07.14.42.45.461288.172174719.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0011.2019.02.07.14.42.45.461288.172175840.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0012.2019.02.07.14.42.45.461288.172174773.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0013.2019.02.07.14.42.45.461288.172175894.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0014.2019.02.07.14.42.45.461288.172174827.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0015.2019.02.07.14.42.45.461288.172175948.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0016.2019.02.07.14.42.45.461288.172174881.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0017.2019.02.07.14.42.45.461288.172176002.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0018.2019.02.07.14.42.45.461288.172174935.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0019.2019.02.07.14.42.45.461288.172176056.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0020.2019.02.07.14.42.45.461288.172174989.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0021.2019.02.07.14.42.45.461288.172176110.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0022.2019.02.07.14.42.45.461288.172175043.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0023.2019.02.07.14.42.45.461288.172176164.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0024.2019.02.07.14.42.45.461288.172175097.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0025.2019.02.07.14.42.45.461288.172176218.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0026.2019.02.07.14.42.45.461288.172175151.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0027.2019.02.07.14.42.45.461288.172176272.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0028.2019.02.07.14.42.45.461288.172175205.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0029.2019.02.07.14.42.45.461288.172176326.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0030.2019.02.07.14.42.45.461288.172175516.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0031.2019.02.07.14.42.45.461288.172175588.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0032.2019.02.07.14.42.45.461288.172174521.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0033.2019.02.07.14.42.45.461288.172175642.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0034.2019.02.07.14.42.45.461288.172174575.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0035.2019.02.07.14.42.45.461288.172175696.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0036.2019.02.07.14.42.45.461288.172174629.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0037.2019.02.07.14.42.45.461288.172175750.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0038.2019.02.07.14.42.45.461288.172174683.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0039.2019.02.07.14.42.45.461288.172175804.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0040.2019.02.07.14.42.45.461288.172174737.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0041.2019.02.07.14.42.45.461288.172175858.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0042.2019.02.07.14.42.45.461288.172174791.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0043.2019.02.07.14.42.45.461288.172175912.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0044.2019.02.07.14.42.45.461288.172174845.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0045.2019.02.07.14.42.45.461288.172175966.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0046.2019.02.07.14.42.45.461288.172174899.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0047.2019.02.07.14.42.45.461288.172176020.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0048.2019.02.07.14.42.45.461288.172174953.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0049.2019.02.07.14.42.45.461288.172176074.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0050.2019.02.07.14.42.45.461288.172175007.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0051.2019.02.07.14.42.45.461288.172176128.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0052.2019.02.07.14.42.45.461288.172175061.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0053.2019.02.07.14.42.45.461288.172176182.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0054.2019.02.07.14.42.45.461288.172175115.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0055.2019.02.07.14.42.45.461288.172176236.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0056.2019.02.07.14.42.45.461288.172175169.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0057.2019.02.07.14.42.45.461288.172176290.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0058.2019.02.07.14.42.45.461288.172175480.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0059.2019.02.07.14.42.45.461288.172176344.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0060.2019.02.07.14.42.45.461288.172175534.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0061.2019.02.07.14.42.45.461288.172175606.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0062.2019.02.07.14.42.45.461288.172174539.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0063.2019.02.07.14.42.45.461288.172175660.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0064.2019.02.07.14.42.45.461288.172174593.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0065.2019.02.07.14.42.45.461288.172175714.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0066.2019.02.07.14.42.45.461288.172174647.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0067.2019.02.07.14.42.45.461288.172175768.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0068.2019.02.07.14.42.45.461288.172174701.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0069.2019.02.07.14.42.45.461288.172175822.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0070.2019.02.07.14.42.45.461288.172174755.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0071.2019.02.07.14.42.45.461288.172175876.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0072.2019.02.07.14.42.45.461288.172174809.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0073.2019.02.07.14.42.45.461288.172175930.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0074.2019.02.07.14.42.45.461288.172174863.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0075.2019.02.07.14.42.45.461288.172175984.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0076.2019.02.07.14.42.45.461288.172174917.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0077.2019.02.07.14.42.45.461288.172176038.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0078.2019.02.07.14.42.45.461288.172174971.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0079.2019.02.07.14.42.45.461288.172176092.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0080.2019.02.07.14.42.45.461288.172175025.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0081.2019.02.07.14.42.45.461288.172176146.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0082.2019.02.07.14.42.45.461288.172175079.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0083.2019.02.07.14.42.45.461288.172176200.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0084.2019.02.07.14.42.45.461288.172175133.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0085.2019.02.07.14.42.45.461288.172176254.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0086.2019.02.07.14.42.45.461288.172175187.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0087.2019.02.07.14.42.45.461288.172176308.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0088.2019.02.07.14.42.45.461288.172175498.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0089.2019.02.07.14.42.45.461288.172176362.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0090.2019.02.07.14.42.45.461288.172175552.IMA +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/lena_color.dcm +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/sag_ap.zip +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/sag_hf.zip +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/sag_oblique.zip +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/srdoc103.zip +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/time/time00/Image_00019.dcm +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/time/time00/Image_00020.dcm +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/time/time00/Image_00021.dcm +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/time/time01/Image_00019.dcm +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/time/time01/Image_00020.dcm +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/time/time01/Image_00021.dcm +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/time/time02/Image_00019.dcm +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/time/time02/Image_00020.dcm +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/time/time02/Image_00021.dcm +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/time.zip +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/time_all/Image_00000.dcm +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/time_all/Image_00001.dcm +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/time_all/Image_00002.dcm +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/time_all/Image_00003.dcm +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/time_all/Image_00004.dcm +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/time_all/Image_00005.dcm +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/time_all/Image_00006.dcm +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/time_all/Image_00007.dcm +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/time_all/Image_00008.dcm +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/tra_oblique.zip +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/dicom/tra_rl.zip +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/itk/time/Image_00000.mha +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/itk/time/Image_00001.mha +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/itk/time/Image_00002.mha +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/itk/time.zip +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/lena_color.gif +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/lena_color.jpg +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/mat/time/Image_00000.mat +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/mat/time.zip +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/nifti/cor_hf.nii.gz +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/nifti/cor_oblique.nii.gz +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/nifti/cor_rl.nii.gz +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/nifti/sag_ap.nii.gz +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/nifti/sag_hf.nii.gz +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/nifti/sag_oblique.nii.gz +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/nifti/time/time_all_fl3d_dynamic_20190207140517_14.json +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/nifti/time/time_all_fl3d_dynamic_20190207140517_14.nii.gz +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/nifti/time_all/time_all_fl3d_dynamic_20190207140517_14.json +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/nifti/time_all/time_all_fl3d_dynamic_20190207140517_14.nii.gz +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/nifti/time_all.zip +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/nifti/tra_oblique.nii.gz +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/nifti/tra_rl.nii.gz +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/pdf/A_Lovers_Complaint.pdf +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/pdf/pages/A_Lovers_Complaint_1.pdf +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/pdf/pages/A_Lovers_Complaint_2.pdf +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/pdf/pages/A_Lovers_Complaint_3.pdf +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/pdf/pages/A_Lovers_Complaint_4.pdf +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/pdf/pages/A_Lovers_Complaint_5.pdf +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/pdf/pages/A_Lovers_Complaint_6.pdf +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/text.txt +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/tree/file0 +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/tree/file1 +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/tree/file2 +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/vertices/vertices2d.pickle +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/vertices/vertices3d.pickle +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/data/vertices/vertices4d.pickle +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/APIReference.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/APIReferenceApps.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/APIReferenceAppsDiffusion.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/APIReferenceArchives.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/APIReferenceCollections.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/APIReferenceFormats.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/APIReferenceImagedata.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/APIReferenceSeries.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/APIReferenceTransports.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/APIReferenceViewer.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/Collections.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/Colors.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/CommandLine.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/DICOMAttributes.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/DeveloperDocumentation.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/Examples.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/Figure_Architecture.png +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/Input_output.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/Installation.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/Introduction.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/Makefile +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/Non_image_dicom_objects.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/Notebook.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/Plugin_Architecture.docx +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/Plugin_Architecture.png +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/Plugins.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/README +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/Tutorial.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/UserGuide.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/Viewing.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/conf.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/fuse_mask_blend.png +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/index.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/make.bat +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/requirements.txt +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/source/modules.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/source/setup.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/source/src.imagedata.apps.Siemens.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/source/src.imagedata.apps.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/source/src.imagedata.archives.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/source/src.imagedata.formats.dicomlib.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/source/src.imagedata.formats.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/source/src.imagedata.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/source/src.imagedata.transports.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/source/src.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/source/tests.rst +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/docs/transformation.tex +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/paper.bib +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/paper.md +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/pylintrc +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/pyproject.toml +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/setup.cfg +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/__init__.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/__init__.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/apps/Siemens/ROI.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/apps/Siemens/__init__.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/apps/Siemens/draw_antialiased.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/apps/Siemens/evidence_main.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/apps/__init__.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/archives/__init__.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/archives/abstractarchive.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/archives/filesystemarchive.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/formats/abstractplugin.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/formats/dicomlib/__init__.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/formats/dicomlib/uid.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/list_plugins.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/transports/__init__.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/transports/abstracttransport.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/transports/dicomtransport.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata/transports/filetransport.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata.egg-info/dependency_links.txt +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata.egg-info/entry_points.txt +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata.egg-info/requires.txt +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/src/imagedata.egg-info/top_level.txt +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/techstack.md +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/techstack.yml +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/tests/__init__.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/tests/context.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/tests/test_archive_file.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/tests/test_archive_zip.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/tests/test_axis.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/tests/test_collections.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/tests/test_formats_dicom_zip.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/tests/test_formats_itk.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/tests/test_formats_itk_template.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/tests/test_formats_itk_zip.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/tests/test_formats_mat.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/tests/test_formats_mat_zip.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/tests/test_formats_nifti.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/tests/test_formats_nifti_zip.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/tests/test_transport_dicomtransport.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/tests/test_transport_xnattransport.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/tests/test_version.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/tests/test_viewer.py +0 -0
- {imagedata-3.7.2.dev1 → imagedata-3.8.0}/tox.ini +0 -0
|
@@ -7,7 +7,82 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
<!--next-version-placeholder-->
|
|
9
9
|
|
|
10
|
-
## [v3.
|
|
10
|
+
## [v3.8.0] - 2025-04-28
|
|
11
|
+
### Added
|
|
12
|
+
* Novel sorting routine for n-dimensional DICOM datasets.
|
|
13
|
+
* Allow user-defined sorting criteria, and overriding default sorting.
|
|
14
|
+
* Sort on Trigger Time also.
|
|
15
|
+
* Added code to sort series on diffusion gradient direction (b-vector),
|
|
16
|
+
and specifically diffusion RSI data.
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
* Image tags property (tags) is now a multi-dimensional array when the image dimension > 4.
|
|
20
|
+
In this case the image tags will be tuples.
|
|
21
|
+
* diffusion.py: Added code to get diffusion b value from Siemens E11 format.
|
|
22
|
+
* Patient class: Limit the strict check of patient attributes to
|
|
23
|
+
patientName, patientID, patientBirthDate
|
|
24
|
+
and patientSex.
|
|
25
|
+
* Series.__getitem__(): Accept tuple slicing specification, like ((2,),(2,),(2,)).
|
|
26
|
+
* Improved some test suites to run better on Windows.
|
|
27
|
+
|
|
28
|
+
### Fixed
|
|
29
|
+
* Corrected parsing windows UNC path names with leading double slash.
|
|
30
|
+
* ZipFileArchive: Windows: Do not complain when temporary local file cannot be removed.
|
|
31
|
+
* XnatTransport.open(): Corrected scan search to search for series description,
|
|
32
|
+
not series number.
|
|
33
|
+
* Viewer.viewport_set(): Fixed error where the viewport did not include the last image.
|
|
34
|
+
* evidence2roi: Do not raise exception for unknown roi type. Log a warning instead.
|
|
35
|
+
|
|
36
|
+
## [v3.8.0-rc3] - 2025-04-28
|
|
37
|
+
* Added sort on TriggerTime
|
|
38
|
+
|
|
39
|
+
## [v3.8.0-rc2] - 2025-04-23
|
|
40
|
+
* Allow user-defined sorting criteria, and overriding default sorting.
|
|
41
|
+
|
|
42
|
+
## [v3.8.0-rc1] - 2025-04-11
|
|
43
|
+
* Novel sorting routine for n-dimensional DICOM datasets.
|
|
44
|
+
|
|
45
|
+
## [v3.7.3-dev8] - 2025-03-07
|
|
46
|
+
* Corrected parsing windows UNC path names with leading double slash.
|
|
47
|
+
|
|
48
|
+
## [v3.7.3-dev7] - 2025-03-07
|
|
49
|
+
* ZipFileArchive: Windows: Do not complain when temporary local file cannot be removed.
|
|
50
|
+
* Improved some test suites to run better on Windows.
|
|
51
|
+
|
|
52
|
+
## [v3.7.3-rc0] - 2025-01-06
|
|
53
|
+
* Release candidate 3.7.3-rc0
|
|
54
|
+
|
|
55
|
+
## [v3.7.3-dev6] - 2024-12-13
|
|
56
|
+
* Series.__getitem__(): Accept tuple slicing specification, like ((2,),(2,),(2,)).
|
|
57
|
+
|
|
58
|
+
## [v3.7.3-dev5] - 2024-12-12
|
|
59
|
+
* Patient class: Limit the strict check of patient attributes to
|
|
60
|
+
patientName, patientID, patientBirthDate
|
|
61
|
+
and patientSex.
|
|
62
|
+
|
|
63
|
+
## [v3.7.3-dev4] - 2024-12-04
|
|
64
|
+
* evidence2roi: Do not raise exception for unknown roi type. Log a warning instead.
|
|
65
|
+
|
|
66
|
+
## [v3.7.3-dev3] - 2024-11-26
|
|
67
|
+
* Working on n-dimensional sorting.
|
|
68
|
+
* Added code to sort series on diffusion gradient direction (b-vector),
|
|
69
|
+
and specifically diffusion RSI data.
|
|
70
|
+
|
|
71
|
+
## [v3.7.3-dev2] - 2024-11-25
|
|
72
|
+
* diffusion.py: Added code to get diffusion b value from Siemens E11 format.
|
|
73
|
+
|
|
74
|
+
## [v3.7.3-dev1] - 2024-11-06
|
|
75
|
+
* Viewer.viewport_set(): Fixed error where the viewport did not include the last image.
|
|
76
|
+
|
|
77
|
+
## [v3.7.3-dev0] - 2024-11-04
|
|
78
|
+
* XnatTransport.open(): Corrected scan search to search for series description,
|
|
79
|
+
not series number.
|
|
80
|
+
|
|
81
|
+
## [v3.7.2] - 2024-10-28
|
|
82
|
+
* Fixed viewing in jupyter notebook using backend `widget`.
|
|
83
|
+
* Renamed collections.py to collection.py.
|
|
84
|
+
*
|
|
85
|
+
## [v3.7.2-dev2] - 2024-10-25
|
|
11
86
|
* Fixed viewing in jupyter notebook using backend `widget`.
|
|
12
87
|
|
|
13
88
|
## [v3.7.2-dev0] - 2024-10-10
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: imagedata
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.8.0
|
|
4
4
|
Summary: Read/write medical image data
|
|
5
5
|
Author-email: Erling Andersen <Erling.Andersen@Helse-Bergen.NO>
|
|
6
6
|
Maintainer-email: Erling Andersen <Erling.Andersen@Helse-Bergen.NO>
|
|
@@ -63,6 +63,7 @@ Requires-Dist: pillow>=10.0.0
|
|
|
63
63
|
Requires-Dist: xnat
|
|
64
64
|
Requires-Dist: matplotlib>=3.8.0
|
|
65
65
|
Requires-Dist: opencv-python-headless
|
|
66
|
+
Dynamic: license-file
|
|
66
67
|
|
|
67
68
|
#########
|
|
68
69
|
imagedata
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.8.0
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -61,6 +61,11 @@ The following plugin options are known at the time of writing:
|
|
|
61
61
|
| | | |times for dynamic |
|
|
62
62
|
| | | |series |
|
|
63
63
|
+-------------------------+-------------------------+-----+-----------------------+
|
|
64
|
+
|read |ignore_series_uid |str |Ignore Series Instance |
|
|
65
|
+
| | | |UID, i.e. do not sort |
|
|
66
|
+
| | | |images into different |
|
|
67
|
+
| | | |Series |
|
|
68
|
+
+-------------------------+-------------------------+-----+-----------------------+
|
|
64
69
|
|read |input_serinsuid |str |Filter input files on |
|
|
65
70
|
| | | |specified |
|
|
66
71
|
| | | |Series Instance UID |
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
.. _Sorting:
|
|
2
|
+
|
|
3
|
+
Sorting
|
|
4
|
+
=======
|
|
5
|
+
|
|
6
|
+
When reading data files to construct a Series instance, the images will be sorted into a
|
|
7
|
+
multidimensional array.
|
|
8
|
+
In particular, DICOM series typically comes as 2D slice images.
|
|
9
|
+
These images are sorted into 3D volumes on the basis of their geometrical information
|
|
10
|
+
(image position, or slice location).
|
|
11
|
+
|
|
12
|
+
The following example loads a 3D volume from 'dicom/volume' and sorts the images into
|
|
13
|
+
a 3D volume of 40 slices.
|
|
14
|
+
|
|
15
|
+
.. code-block:: python
|
|
16
|
+
|
|
17
|
+
img = Series('dicom/volume')
|
|
18
|
+
print(img.shape)
|
|
19
|
+
>>> (40, 192, 152)
|
|
20
|
+
|
|
21
|
+
4D data can be read by sorting the volumes on some DICOM attribute. In the following example, a
|
|
22
|
+
4D dataset is loaded and volumes are sorted according to Acquisition Time. Notice that there
|
|
23
|
+
are 10 time steps and 40 slices in the dataset.
|
|
24
|
+
|
|
25
|
+
.. code-block:: python
|
|
26
|
+
|
|
27
|
+
img = Series('dicom/time', input_order='time')
|
|
28
|
+
print(img.shape)
|
|
29
|
+
>>> (10, 40, 192, 152)
|
|
30
|
+
|
|
31
|
+
Several sort criteria are predefined:
|
|
32
|
+
|
|
33
|
+
* none: No sorting (2D/3D datasets only)
|
|
34
|
+
* auto: Determine sorting criteria automatically (default) (see below)
|
|
35
|
+
* time: Sort on Acquisition Time
|
|
36
|
+
* triggertime: Sort on Trigger Time
|
|
37
|
+
* b: Sort on MR diffusion b-value
|
|
38
|
+
* bvector: Sort on MR diffusion b vector
|
|
39
|
+
* fa: Sort on MR Flip Angle
|
|
40
|
+
* te: Sort on MR Echo Time
|
|
41
|
+
|
|
42
|
+
Auto-sorting
|
|
43
|
+
------------
|
|
44
|
+
|
|
45
|
+
`Imagedata` can determine the sorting automatically in some typical cases,
|
|
46
|
+
attempting to sort on `time`, `b`-value, echo time or flip angle.
|
|
47
|
+
|
|
48
|
+
The exact list of sorting criteria can be set using the `auto_sort` list.
|
|
49
|
+
The default auto sort list is ['time', 'triggertime', 'b', 'fa', 'te'].
|
|
50
|
+
|
|
51
|
+
.. code-block:: python
|
|
52
|
+
|
|
53
|
+
img = Series('dicomdata', auto_sort=['time', 'b'])
|
|
54
|
+
|
|
55
|
+
User-defined sorting criteria
|
|
56
|
+
-----------------------------
|
|
57
|
+
|
|
58
|
+
When your data does not match any of these sort criteria, a new sort criteria can be defined.
|
|
59
|
+
E.g., sorting MR images on Inversion Time ('ti'), a new sort criteria 'ti' is coupled to the
|
|
60
|
+
DICOM attribute Inversion Time:
|
|
61
|
+
|
|
62
|
+
.. code-block:: python
|
|
63
|
+
|
|
64
|
+
img = Series('dicom/time', input_order='ti', ti='InversionTime')
|
|
65
|
+
print(img.shape)
|
|
66
|
+
>>> (10, 40, 192, 152)
|
|
67
|
+
|
|
68
|
+
More advanced extraction of sorting values can be implemented creating a
|
|
69
|
+
user function which returns a value for each Dataset:
|
|
70
|
+
|
|
71
|
+
.. code-block:: python
|
|
72
|
+
|
|
73
|
+
def get_TI(im: Dataset) -> float:
|
|
74
|
+
return float(im.data_element('InversionTime').value)
|
|
75
|
+
|
|
76
|
+
img = Series('dicom/TIdata', input_order='ti', ti=get_TI)
|
|
77
|
+
|
|
78
|
+
A similar user function to calculate time in seconds from Trigger Time (ms).
|
|
79
|
+
Notice how the get_TriggerTime() function overloads the standard `time`
|
|
80
|
+
definition. This allow to treat the acquired series as a time series with
|
|
81
|
+
the `timeline` property.
|
|
82
|
+
|
|
83
|
+
NOTICE: Trigger Time is now implemented in the standard library.
|
|
84
|
+
This discussion remains here to document the possible uses.
|
|
85
|
+
|
|
86
|
+
.. code-block:: python
|
|
87
|
+
|
|
88
|
+
def get_TriggerTime(im: Dataset) -> float:
|
|
89
|
+
return float(im.data_element('TriggerTime').value / 1000.)
|
|
90
|
+
|
|
91
|
+
img = Series('dicom/triggerTime', input_order='time', time=get_TriggerTime)
|
|
92
|
+
img.timeline
|
|
93
|
+
|
|
94
|
+
Auto-sorting either on Acquisition Time or Trigger Time can be implemented.
|
|
95
|
+
In this case, the resulting series will not have the `timeline` property when
|
|
96
|
+
Trigger Time is the sorting criteria:
|
|
97
|
+
|
|
98
|
+
.. code-block:: python
|
|
99
|
+
|
|
100
|
+
img = Series('dicomdata', auto_sort=['time', 'trigger'],
|
|
101
|
+
input_order='trigger', trigger=get_TriggerTime)
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
N-dimensional sorting
|
|
105
|
+
---------------------
|
|
106
|
+
|
|
107
|
+
While 4D data can be sorted automatically, higher dimensions must be defined explicitly.
|
|
108
|
+
The `input_order` parameter can be a comma-separated list of sorting criteria.
|
|
109
|
+
|
|
110
|
+
A dynamic dual-echo MR acquisition can be sorted on time and echo time into a 5D Series object, like:
|
|
111
|
+
|
|
112
|
+
.. code-block:: python
|
|
113
|
+
|
|
114
|
+
img = Series('dyn_dual_echo', input_order='time,te')
|
|
115
|
+
|
|
116
|
+
In particular, MR RSI diffusion data can be sorted on `b` value and `b` vector:
|
|
117
|
+
|
|
118
|
+
.. code-block:: python
|
|
119
|
+
|
|
120
|
+
img = Series('diff_rsi', input_order='b,bvector')
|
|
121
|
+
tags = img.tags[0]
|
|
122
|
+
for idx in np.ndindex(tags.shape):
|
|
123
|
+
try:
|
|
124
|
+
b, bvector = tags[idx]
|
|
125
|
+
except TypeError:
|
|
126
|
+
continue
|
|
127
|
+
rsi = img[idx]
|
|
128
|
+
print(b, bvector, rsi.shape)
|
|
129
|
+
|
|
@@ -135,8 +135,28 @@ def evidence2roi(im, uid_table=None, content=None):
|
|
|
135
135
|
roi_name = finding[(0x0029, 0x1030)].value
|
|
136
136
|
except KeyError:
|
|
137
137
|
roi_name = 'NONAME'
|
|
138
|
+
if roi_type_value not in (
|
|
139
|
+
'PolygonApplication3D', 'FreehandApplication3D',
|
|
140
|
+
'MarkerApplication3D', 'EllipseApplication3D',
|
|
141
|
+
'StandaloneTextApplication3D', 'DistanceLineApplication3D'
|
|
142
|
+
):
|
|
143
|
+
# Attempt to find roi type in advanced presentation sequence (0029,1091)
|
|
144
|
+
try:
|
|
145
|
+
adv_pres_seq = finding[(0x0029, 0x1091)][0]
|
|
146
|
+
try:
|
|
147
|
+
roi_type_value = adv_pres_seq[(0x0029, 0x108e)].value.decode()
|
|
148
|
+
roi_name = finding[(0x0029, 0x1032)].value.decode()
|
|
149
|
+
except AttributeError:
|
|
150
|
+
roi_type_value = adv_pres_seq[(0x0029, 0x108e)].value
|
|
151
|
+
roi_name = finding[(0x0029, 0x1032)].value
|
|
152
|
+
except KeyError:
|
|
153
|
+
pass
|
|
138
154
|
logger.info("Finding: {} {} {}".format(content['creator'], roi_name, roi_type_value))
|
|
139
|
-
if roi_type_value
|
|
155
|
+
if roi_type_value in ('PolygonApplication3D', 'FreehandApplication3D', 'ROI2D'):
|
|
156
|
+
polygon = _get_measurement_points(finding[(0x0029, 0x1096)], zyx=True)
|
|
157
|
+
rois.append(PolygonROI(polygon, roi_name, stu_ins_uid, ser_ins_uid, sop_ins_uid))
|
|
158
|
+
logger.debug('ROI {}: {} points'.format(meas_appl_number, len(polygon) // 3))
|
|
159
|
+
elif roi_type_value == 'ROI2D':
|
|
140
160
|
polygon = _get_measurement_points(finding[(0x0029, 0x1096)], zyx=True)
|
|
141
161
|
rois.append(PolygonROI(polygon, roi_name, stu_ins_uid, ser_ins_uid, sop_ins_uid))
|
|
142
162
|
logger.debug('ROI {}: {} points'.format(meas_appl_number, len(polygon) // 3))
|
|
@@ -159,7 +179,9 @@ def evidence2roi(im, uid_table=None, content=None):
|
|
|
159
179
|
logger.warning("DistanceLineApplication3D ROI not implemented.")
|
|
160
180
|
pass
|
|
161
181
|
else:
|
|
162
|
-
|
|
163
|
-
|
|
182
|
+
logging.warning(
|
|
183
|
+
"ROI type {} ({}) not implemented.".format(
|
|
184
|
+
roi_type_value, type(roi_type_value))
|
|
185
|
+
)
|
|
164
186
|
|
|
165
187
|
return rois, content
|