imagedata 3.6.0__tar.gz → 3.6.0.dev12__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.6.0 → imagedata-3.6.0.dev12}/CHANGELOG.md +0 -16
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/PKG-INFO +1 -2
- imagedata-3.6.0.dev12/VERSION.txt +1 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/pyproject.toml +0 -1
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/__init__.py +1 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/archives/__init__.py +5 -6
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/archives/filesystemarchive.py +16 -22
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/archives/zipfilearchive.py +29 -39
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/collections.py +4 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/formats/__init__.py +4 -1
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/formats/abstractplugin.py +23 -23
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/formats/dicomplugin.py +94 -207
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/formats/itkplugin.py +27 -35
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/formats/matplugin.py +16 -25
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/formats/niftiplugin.py +75 -31
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/header.py +2 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/readdata.py +39 -58
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/series.py +28 -40
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/transports/__init__.py +5 -1
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/transports/dicomtransport.py +5 -7
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/transports/filetransport.py +4 -5
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/transports/xnattransport.py +7 -9
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/viewer.py +3 -7
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata.egg-info/PKG-INFO +1 -2
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata.egg-info/requires.txt +0 -1
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/tests/test_formats_dicom.py +20 -24
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/tests/test_formats_dicom_template.py +17 -35
- imagedata-3.6.0/VERSION.txt +0 -1
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/.readthedocs.yaml +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/.travis.yml +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/CONTRIBUTING.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/LICENSE.txt +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/MANIFEST.in +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/Makefile +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/README.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/TI/TI_1.MR.0021.0001.2021.06.08.10.04.29.806302.203193459.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/TI/TI_1.MR.0022.0001.2021.06.08.10.04.29.806302.203195509.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/TI/TI_1.MR.0023.0001.2021.06.08.10.04.29.806302.203197559.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/TI/TI_1.MR.0024.0001.2021.06.08.10.04.29.806302.203199609.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/TI/TI_1.MR.0025.0001.2021.06.08.10.04.29.806302.203201659.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/cohort.zip +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/cor_hf.zip +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/cor_oblique.zip +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/cor_rl.zip +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0001.2019.02.07.14.42.45.461288.172175570.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0002.2019.02.07.14.42.45.461288.172174503.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0003.2019.02.07.14.42.45.461288.172175624.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0004.2019.02.07.14.42.45.461288.172174557.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0005.2019.02.07.14.42.45.461288.172175678.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0006.2019.02.07.14.42.45.461288.172174611.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0007.2019.02.07.14.42.45.461288.172175732.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0008.2019.02.07.14.42.45.461288.172174665.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0009.2019.02.07.14.42.45.461288.172175786.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0010.2019.02.07.14.42.45.461288.172174719.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0011.2019.02.07.14.42.45.461288.172175840.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0012.2019.02.07.14.42.45.461288.172174773.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0013.2019.02.07.14.42.45.461288.172175894.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0014.2019.02.07.14.42.45.461288.172174827.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0015.2019.02.07.14.42.45.461288.172175948.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0016.2019.02.07.14.42.45.461288.172174881.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0017.2019.02.07.14.42.45.461288.172176002.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0018.2019.02.07.14.42.45.461288.172174935.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0019.2019.02.07.14.42.45.461288.172176056.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0020.2019.02.07.14.42.45.461288.172174989.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0021.2019.02.07.14.42.45.461288.172176110.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0022.2019.02.07.14.42.45.461288.172175043.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0023.2019.02.07.14.42.45.461288.172176164.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0024.2019.02.07.14.42.45.461288.172175097.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0025.2019.02.07.14.42.45.461288.172176218.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0026.2019.02.07.14.42.45.461288.172175151.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0027.2019.02.07.14.42.45.461288.172176272.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0028.2019.02.07.14.42.45.461288.172175205.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0029.2019.02.07.14.42.45.461288.172176326.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0030.2019.02.07.14.42.45.461288.172175516.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0031.2019.02.07.14.42.45.461288.172175588.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0032.2019.02.07.14.42.45.461288.172174521.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0033.2019.02.07.14.42.45.461288.172175642.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0034.2019.02.07.14.42.45.461288.172174575.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0035.2019.02.07.14.42.45.461288.172175696.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0036.2019.02.07.14.42.45.461288.172174629.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0037.2019.02.07.14.42.45.461288.172175750.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0038.2019.02.07.14.42.45.461288.172174683.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0039.2019.02.07.14.42.45.461288.172175804.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0040.2019.02.07.14.42.45.461288.172174737.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0041.2019.02.07.14.42.45.461288.172175858.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0042.2019.02.07.14.42.45.461288.172174791.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0043.2019.02.07.14.42.45.461288.172175912.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0044.2019.02.07.14.42.45.461288.172174845.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0045.2019.02.07.14.42.45.461288.172175966.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0046.2019.02.07.14.42.45.461288.172174899.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0047.2019.02.07.14.42.45.461288.172176020.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0048.2019.02.07.14.42.45.461288.172174953.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0049.2019.02.07.14.42.45.461288.172176074.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0050.2019.02.07.14.42.45.461288.172175007.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0051.2019.02.07.14.42.45.461288.172176128.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0052.2019.02.07.14.42.45.461288.172175061.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0053.2019.02.07.14.42.45.461288.172176182.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0054.2019.02.07.14.42.45.461288.172175115.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0055.2019.02.07.14.42.45.461288.172176236.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0056.2019.02.07.14.42.45.461288.172175169.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0057.2019.02.07.14.42.45.461288.172176290.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0058.2019.02.07.14.42.45.461288.172175480.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0059.2019.02.07.14.42.45.461288.172176344.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0060.2019.02.07.14.42.45.461288.172175534.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0061.2019.02.07.14.42.45.461288.172175606.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0062.2019.02.07.14.42.45.461288.172174539.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0063.2019.02.07.14.42.45.461288.172175660.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0064.2019.02.07.14.42.45.461288.172174593.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0065.2019.02.07.14.42.45.461288.172175714.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0066.2019.02.07.14.42.45.461288.172174647.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0067.2019.02.07.14.42.45.461288.172175768.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0068.2019.02.07.14.42.45.461288.172174701.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0069.2019.02.07.14.42.45.461288.172175822.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0070.2019.02.07.14.42.45.461288.172174755.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0071.2019.02.07.14.42.45.461288.172175876.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0072.2019.02.07.14.42.45.461288.172174809.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0073.2019.02.07.14.42.45.461288.172175930.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0074.2019.02.07.14.42.45.461288.172174863.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0075.2019.02.07.14.42.45.461288.172175984.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0076.2019.02.07.14.42.45.461288.172174917.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0077.2019.02.07.14.42.45.461288.172176038.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0078.2019.02.07.14.42.45.461288.172174971.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0079.2019.02.07.14.42.45.461288.172176092.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0080.2019.02.07.14.42.45.461288.172175025.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0081.2019.02.07.14.42.45.461288.172176146.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0082.2019.02.07.14.42.45.461288.172175079.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0083.2019.02.07.14.42.45.461288.172176200.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0084.2019.02.07.14.42.45.461288.172175133.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0085.2019.02.07.14.42.45.461288.172176254.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0086.2019.02.07.14.42.45.461288.172175187.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0087.2019.02.07.14.42.45.461288.172176308.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0088.2019.02.07.14.42.45.461288.172175498.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0089.2019.02.07.14.42.45.461288.172176362.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/dwi/PHANTOM_T1.MR._.0007.0090.2019.02.07.14.42.45.461288.172175552.IMA +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/lena_color.dcm +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/sag_ap.zip +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/sag_hf.zip +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/sag_oblique.zip +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/time/time00/Image_00019.dcm +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/time/time00/Image_00020.dcm +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/time/time00/Image_00021.dcm +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/time/time01/Image_00019.dcm +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/time/time01/Image_00020.dcm +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/time/time01/Image_00021.dcm +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/time/time02/Image_00019.dcm +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/time/time02/Image_00020.dcm +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/time/time02/Image_00021.dcm +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/time.zip +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/time_all/Image_00000.dcm +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/time_all/Image_00001.dcm +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/time_all/Image_00002.dcm +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/time_all/Image_00003.dcm +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/time_all/Image_00004.dcm +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/time_all/Image_00005.dcm +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/time_all/Image_00006.dcm +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/time_all/Image_00007.dcm +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/time_all/Image_00008.dcm +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/tra_oblique.zip +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/dicom/tra_rl.zip +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/itk/time/Image_00000.mha +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/itk/time/Image_00001.mha +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/itk/time/Image_00002.mha +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/itk/time.zip +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/lena_color.gif +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/lena_color.jpg +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/mat/time/Image_00000.mat +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/mat/time.zip +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/nifti/cor_hf.nii.gz +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/nifti/cor_oblique.nii.gz +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/nifti/cor_rl.nii.gz +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/nifti/sag_ap.nii.gz +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/nifti/sag_hf.nii.gz +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/nifti/sag_oblique.nii.gz +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/nifti/time/time_all_fl3d_dynamic_20190207140517_14.json +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/nifti/time/time_all_fl3d_dynamic_20190207140517_14.nii.gz +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/nifti/time_all/time_all_fl3d_dynamic_20190207140517_14.json +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/nifti/time_all/time_all_fl3d_dynamic_20190207140517_14.nii.gz +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/nifti/time_all.zip +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/nifti/tra_oblique.nii.gz +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/nifti/tra_rl.nii.gz +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/pdf/A_Lovers_Complaint.pdf +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/pdf/pages/A_Lovers_Complaint_1.pdf +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/pdf/pages/A_Lovers_Complaint_2.pdf +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/pdf/pages/A_Lovers_Complaint_3.pdf +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/pdf/pages/A_Lovers_Complaint_4.pdf +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/pdf/pages/A_Lovers_Complaint_5.pdf +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/pdf/pages/A_Lovers_Complaint_6.pdf +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/text.txt +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/tree/file0 +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/tree/file1 +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/tree/file2 +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/vertices/vertices2d.pickle +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/vertices/vertices3d.pickle +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/data/vertices/vertices4d.pickle +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/APIReference.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/APIReferenceApps.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/APIReferenceAppsDiffusion.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/APIReferenceArchives.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/APIReferenceCollections.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/APIReferenceFormats.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/APIReferenceImagedata.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/APIReferenceSeries.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/APIReferenceTransports.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/APIReferenceViewer.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/Collections.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/Colors.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/CommandLine.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/DICOMAttributes.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/DeveloperDocumentation.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/Examples.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/Figure_Architecture.png +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/Input_output.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/Installation.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/Introduction.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/Makefile +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/Notebook.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/Options.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/Plugin_Architecture.docx +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/Plugin_Architecture.png +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/Plugins.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/README +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/Sorting.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/Tutorial.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/UserGuide.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/Viewing.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/conf.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/fuse_mask_blend.png +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/index.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/make.bat +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/requirements.txt +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/source/modules.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/source/setup.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/source/src.imagedata.apps.Siemens.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/source/src.imagedata.apps.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/source/src.imagedata.archives.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/source/src.imagedata.formats.dicomlib.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/source/src.imagedata.formats.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/source/src.imagedata.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/source/src.imagedata.transports.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/source/src.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/source/tests.rst +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/docs/transformation.tex +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/paper.bib +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/paper.md +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/pylintrc +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/setup.cfg +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/__init__.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/apps/Siemens/ROI.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/apps/Siemens/__init__.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/apps/Siemens/draw_antialiased.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/apps/Siemens/evidence2mask.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/apps/Siemens/evidence_main.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/apps/__init__.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/apps/diffusion.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/archives/abstractarchive.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/axis.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/cmdline.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/formats/dicomlib/__init__.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/formats/dicomlib/uid.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/image_data.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/list_plugins.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata/transports/abstracttransport.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata.egg-info/SOURCES.txt +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata.egg-info/dependency_links.txt +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata.egg-info/entry_points.txt +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/src/imagedata.egg-info/top_level.txt +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/techstack.md +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/techstack.yml +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/tests/__init__.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/tests/compare_headers.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/tests/context.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/tests/test_archive_file.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/tests/test_archive_zip.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/tests/test_axis.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/tests/test_collections.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/tests/test_formats_dicom_color.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/tests/test_formats_dicom_zip.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/tests/test_formats_itk.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/tests/test_formats_itk_template.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/tests/test_formats_itk_zip.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/tests/test_formats_mat.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/tests/test_formats_mat_zip.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/tests/test_formats_nifti.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/tests/test_formats_nifti_zip.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/tests/test_series.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/tests/test_transport_dicomtransport.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/tests/test_transport_filetransport.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/tests/test_transport_xnattransport.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/tests/test_version.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/tests/test_viewer.py +0 -0
- {imagedata-3.6.0 → imagedata-3.6.0.dev12}/tox.ini +0 -0
|
@@ -7,22 +7,6 @@ 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.6.0] - 2024-06-27
|
|
11
|
-
* Final release 3.6.0.
|
|
12
|
-
|
|
13
|
-
## [v3.6.0-rc4] - 2024-06-25
|
|
14
|
-
### Changed
|
|
15
|
-
* Depend on pylibjpeg.
|
|
16
|
-
* Standardized logging to log proper module and function names.
|
|
17
|
-
### Fixed
|
|
18
|
-
* Honor the `skip_broken_series` option.
|
|
19
|
-
|
|
20
|
-
## [v3.6.0-rc3] - 2024-06-21
|
|
21
|
-
* Release candidate 3.
|
|
22
|
-
|
|
23
|
-
## [v3.6.0-rc2] - 2024-06-20
|
|
24
|
-
* Release candidate 2.
|
|
25
|
-
|
|
26
10
|
## [v3.6.0-rc0] - 2024-06-17
|
|
27
11
|
* Release candidate 0.
|
|
28
12
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: imagedata
|
|
3
|
-
Version: 3.6.0
|
|
3
|
+
Version: 3.6.0.dev12
|
|
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>
|
|
@@ -47,7 +47,6 @@ Requires-Python: <3.13,>=3.9
|
|
|
47
47
|
Description-Content-Type: text/x-rst
|
|
48
48
|
License-File: LICENSE.txt
|
|
49
49
|
Requires-Dist: pydicom>=2.4.0
|
|
50
|
-
Requires-Dist: pylibjpeg[all]
|
|
51
50
|
Requires-Dist: pynetdicom<2,>=1.2.0
|
|
52
51
|
Requires-Dist: itk-io>=5.4.0
|
|
53
52
|
Requires-Dist: scikit-build-core
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.6.0-dev12
|
|
@@ -36,7 +36,6 @@ def find_plugin(pfind, url, mode="r", opts=None):
|
|
|
36
36
|
|
|
37
37
|
def find_mimetype_plugin(mimetype, url, mode="r", read_directory_only=False, opts=None):
|
|
38
38
|
"""Return plugin for given file type."""
|
|
39
|
-
_name: str = '{}.{}'.format(__name__, find_mimetype_plugin.__name__)
|
|
40
39
|
if opts is None:
|
|
41
40
|
opts = {}
|
|
42
41
|
from .. import plugins
|
|
@@ -68,16 +67,16 @@ def find_mimetype_plugin(mimetype, url, mode="r", read_directory_only=False, opt
|
|
|
68
67
|
except AttributeError:
|
|
69
68
|
pass
|
|
70
69
|
for pname, ptype, pclass in plugins['archive']:
|
|
71
|
-
logger.debug("
|
|
72
|
-
|
|
70
|
+
logger.debug("imagedata.archive.find_mimetype_plugin: compare '{}' to {}".format(
|
|
71
|
+
mimetype, pclass.mimetypes))
|
|
73
72
|
if mimetype in pclass.mimetypes:
|
|
74
|
-
logger.debug("
|
|
75
|
-
|
|
73
|
+
logger.debug("imagedata.archives.find_mimetype_plugin: {}, mode: {}".format(
|
|
74
|
+
ptype, mode))
|
|
76
75
|
return pclass(url=url, transport=transport, mode=mode, opts=opts)
|
|
77
76
|
# if os.path.isfile(_path):
|
|
78
77
|
# if os.path.exists(_path):
|
|
79
78
|
if urldict.scheme == "file":
|
|
80
|
-
logger.debug("
|
|
79
|
+
logger.debug("imagedata.archives.find_mimetype_plugin: filesystem")
|
|
81
80
|
try:
|
|
82
81
|
return find_plugin('filesystem', url, mode, opts=opts)
|
|
83
82
|
except ArchivePluginNotFound:
|
|
@@ -64,17 +64,16 @@ class FilesystemArchive(AbstractArchive, ABC):
|
|
|
64
64
|
super(FilesystemArchive, self).__init__(
|
|
65
65
|
self.name, self.description,
|
|
66
66
|
self.authors, self.version, self.url, self.mimetypes)
|
|
67
|
-
|
|
68
|
-
logger.debug("{}: url: {}".format(_name, url))
|
|
67
|
+
logger.debug("FilesystemArchive.__init__ url: {}".format(url))
|
|
69
68
|
|
|
70
69
|
self._parse_url(url)
|
|
71
70
|
self._get_transport(transport, url, mode, read_directory_only)
|
|
72
71
|
self.__mode = mode
|
|
73
72
|
|
|
74
|
-
logger.debug("
|
|
73
|
+
logger.debug("FilesystemArchive __init__: {}".format(type(self.transport)))
|
|
75
74
|
|
|
76
|
-
logger.debug("
|
|
77
|
-
logger.debug("
|
|
75
|
+
logger.debug("FilesystemArchive path: {}".format(self.__path))
|
|
76
|
+
logger.debug("FilesystemArchive open zipfile mode %s" % self.__mode)
|
|
78
77
|
|
|
79
78
|
self._set_basedir(mode)
|
|
80
79
|
|
|
@@ -102,7 +101,6 @@ class FilesystemArchive(AbstractArchive, ABC):
|
|
|
102
101
|
access the parent directory.
|
|
103
102
|
"""
|
|
104
103
|
|
|
105
|
-
_name: str = '{}.{}'.format(__name__, self._get_transport.__name__)
|
|
106
104
|
if transport is not None:
|
|
107
105
|
self.transport = transport
|
|
108
106
|
return
|
|
@@ -110,9 +108,8 @@ class FilesystemArchive(AbstractArchive, ABC):
|
|
|
110
108
|
raise ValueError('url not given')
|
|
111
109
|
|
|
112
110
|
url_tuple = urllib.parse.urlsplit(url, scheme='file')
|
|
113
|
-
logger.debug('
|
|
114
|
-
|
|
115
|
-
))
|
|
111
|
+
logger.debug('FilesystemArchive._get_transport: scheme: %s, netloc: %s' %
|
|
112
|
+
(url_tuple.scheme, url_tuple.path))
|
|
116
113
|
|
|
117
114
|
try:
|
|
118
115
|
self.transport = Transport(
|
|
@@ -134,30 +131,29 @@ class FilesystemArchive(AbstractArchive, ABC):
|
|
|
134
131
|
def _set_basedir(self, mode):
|
|
135
132
|
# If the URL refers to a single file, let directory_name refer to the
|
|
136
133
|
# directory and basename to the file
|
|
137
|
-
|
|
138
|
-
logger.debug("{}: verify : {}".format(_name, self.__path))
|
|
134
|
+
logger.debug("FilesystemArchive __init__ verify : {}".format(self.__path))
|
|
139
135
|
if mode[0] == 'r' and self.transport.isfile(self.__path):
|
|
140
136
|
self.__dirname = os.path.dirname(self.__path)
|
|
141
137
|
_basename = os.path.basename(self.__path)
|
|
142
138
|
if len(_basename):
|
|
143
139
|
self.__basename = _basename
|
|
144
|
-
logger.debug("
|
|
145
|
-
logger.debug("
|
|
140
|
+
logger.debug("FilesystemArchive __init__ directory_name : {}".format(self.__dirname))
|
|
141
|
+
logger.debug("FilesystemArchive __init__ basename: {}".format(self.__basename))
|
|
146
142
|
return
|
|
147
143
|
elif mode[0] == 'w' and not self.transport.exists(self.__path):
|
|
148
144
|
self.__dirname = os.path.dirname(self.__path)
|
|
149
145
|
_basename = os.path.basename(self.__path)
|
|
150
146
|
if len(_basename):
|
|
151
147
|
self.__basename = _basename
|
|
152
|
-
logger.debug("
|
|
153
|
-
logger.debug("
|
|
148
|
+
logger.debug("FilesystemArchive __init__ directory_name : {}".format(self.__dirname))
|
|
149
|
+
logger.debug("FilesystemArchive __init__ basename: {}".format(self.__basename))
|
|
154
150
|
return
|
|
155
151
|
|
|
156
152
|
# The URL refers to a directory. Let directory_name refer to the directory
|
|
157
153
|
self.__dirname = self.__path
|
|
158
154
|
self.__basename = None
|
|
159
|
-
logger.debug("
|
|
160
|
-
logger.debug("
|
|
155
|
+
logger.debug("FilesystemArchive __init__ scan directory_name : {}".format(self.__dirname))
|
|
156
|
+
logger.debug("FilesystemArchive __init__ scan basename: {}".format(self.__basename))
|
|
161
157
|
|
|
162
158
|
def use_query(self):
|
|
163
159
|
"""Does the plugin need the ?query part of the url?"""
|
|
@@ -398,13 +394,12 @@ class FilesystemArchive(AbstractArchive, ABC):
|
|
|
398
394
|
ReadOnlyError: when the archive is read-only.
|
|
399
395
|
WriteOnFile: when attempting to write a file to a file.
|
|
400
396
|
"""
|
|
401
|
-
_name: str = '{}.{}'.format(__name__, self.writedata.__name__)
|
|
402
397
|
if self.__mode[0] == 'r':
|
|
403
398
|
raise ReadOnlyError("Archive is read-only.")
|
|
404
399
|
if len(self.__basename) > 0:
|
|
405
400
|
raise WriteOnFile("Do not know how to write a file to a file.")
|
|
406
401
|
fname = os.path.join(self.__dirname, filename)
|
|
407
|
-
logger.debug("
|
|
402
|
+
logger.debug("writedata: fname {}".format(fname))
|
|
408
403
|
with self.transport.open(fname, 'wb') as f:
|
|
409
404
|
f.write(data)
|
|
410
405
|
|
|
@@ -457,9 +452,8 @@ class FilesystemArchive(AbstractArchive, ABC):
|
|
|
457
452
|
def __enter__(self):
|
|
458
453
|
"""Enter context manager.
|
|
459
454
|
"""
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
_name, type(self.transport), self.__mode))
|
|
455
|
+
logger.debug("FilesystemArchive __enter__: {} mode {}".format(
|
|
456
|
+
type(self.transport), self.__mode))
|
|
463
457
|
return self
|
|
464
458
|
|
|
465
459
|
def __exit__(self, exc_type, exc_val, exc_tb):
|
|
@@ -59,21 +59,18 @@ class WriteFileIO(io.FileIO):
|
|
|
59
59
|
|
|
60
60
|
def close(self):
|
|
61
61
|
"""Close file, copy it to archive, then delete local file."""
|
|
62
|
-
|
|
63
|
-
logger.debug("{}:".format(_name))
|
|
62
|
+
logger.debug("ZipfileArchive.WriteFileIO.close:")
|
|
64
63
|
ret = super(WriteFileIO, self).close()
|
|
65
64
|
if isinstance(self.__local_file, str):
|
|
66
65
|
self.__archive.write(self.__local_file, self.__filename)
|
|
67
66
|
os.remove(self.__local_file)
|
|
68
67
|
else:
|
|
69
68
|
self.__local_file.close()
|
|
70
|
-
logger.debug("
|
|
71
|
-
|
|
72
|
-
)
|
|
69
|
+
logger.debug("ZipfileArchive.WriteFileIO.close: zip %s as %s" %
|
|
70
|
+
(self.__local_file.name, self.__filename))
|
|
73
71
|
self.__archive.write(self.__local_file.name, self.__filename)
|
|
74
|
-
logger.debug("
|
|
75
|
-
|
|
76
|
-
)
|
|
72
|
+
logger.debug("ZipfileArchive.WriteFileIO.close: remove %s" %
|
|
73
|
+
self.__local_file.name)
|
|
77
74
|
os.remove(self.__local_file.name)
|
|
78
75
|
return ret
|
|
79
76
|
|
|
@@ -121,9 +118,8 @@ class ZipfileArchive(AbstractArchive, ABC):
|
|
|
121
118
|
super(ZipfileArchive, self).__init__(
|
|
122
119
|
self.name, self.description,
|
|
123
120
|
self.authors, self.version, self.url, self.mimetypes)
|
|
124
|
-
_name: str = '{}.{}'.format(__name__, self.__init__.__name__)
|
|
125
121
|
self.opts = opts
|
|
126
|
-
logger.debug("
|
|
122
|
+
logger.debug("ZipfileArchive.__init__ url: {}".format(url))
|
|
127
123
|
if os.name == 'nt' and fnmatch.fnmatch(url, '[A-Za-z]:\\*'):
|
|
128
124
|
# Windows: Parse without x:, then reattach drive letter
|
|
129
125
|
urldict = urllib.parse.urlsplit(url[2:], scheme="file")
|
|
@@ -143,9 +139,8 @@ class ZipfileArchive(AbstractArchive, ABC):
|
|
|
143
139
|
# self.__path: zipfile name
|
|
144
140
|
try:
|
|
145
141
|
netloc = urldict.netloc + self.__path
|
|
146
|
-
logger.debug('
|
|
147
|
-
|
|
148
|
-
))
|
|
142
|
+
logger.debug('ZipfileArchive.__init__: scheme: %s, netloc: %s' %
|
|
143
|
+
(urldict.scheme, netloc))
|
|
149
144
|
self.transport = Transport(
|
|
150
145
|
urldict.scheme,
|
|
151
146
|
netloc=urldict.netloc,
|
|
@@ -157,19 +152,19 @@ class ZipfileArchive(AbstractArchive, ABC):
|
|
|
157
152
|
self.__mode = mode
|
|
158
153
|
self.__files = {}
|
|
159
154
|
|
|
160
|
-
logger.debug("
|
|
155
|
+
logger.debug("ZipfileArchive path: {}".format(self.__path))
|
|
161
156
|
self.__fp = self.transport.open(
|
|
162
157
|
self.__path, mode=self.__mode + "b")
|
|
163
|
-
logger.debug("
|
|
164
|
-
logger.debug("
|
|
158
|
+
logger.debug("ZipfileArchive self.__fp: {}".format(type(self.__fp)))
|
|
159
|
+
logger.debug("ZipfileArchive open zipfile mode %s" % self.__mode)
|
|
165
160
|
self.__archive = zipfile.ZipFile(
|
|
166
161
|
self.__fp,
|
|
167
162
|
mode=self.__mode,
|
|
168
163
|
compression=zipfile.ZIP_DEFLATED)
|
|
169
164
|
# Extract the archive
|
|
170
165
|
self.__tmpdir = tempfile.mkdtemp()
|
|
171
|
-
logger.debug("
|
|
172
|
-
|
|
166
|
+
logger.debug("Extract zipfile {} to {}".format(
|
|
167
|
+
self.__archive, self.__tmpdir))
|
|
173
168
|
# Get filelist in self.__files
|
|
174
169
|
for fname in self.__archive.namelist():
|
|
175
170
|
try:
|
|
@@ -177,7 +172,7 @@ class ZipfileArchive(AbstractArchive, ABC):
|
|
|
177
172
|
except AttributeError:
|
|
178
173
|
_is_dir = fname[-1] == '/'
|
|
179
174
|
except Exception as e:
|
|
180
|
-
logger.error('
|
|
175
|
+
logger.error('ZipfileArchive: {}'.format(e))
|
|
181
176
|
raise
|
|
182
177
|
if not _is_dir:
|
|
183
178
|
self.__files[fname] = Member(fname,
|
|
@@ -201,7 +196,6 @@ class ZipfileArchive(AbstractArchive, ABC):
|
|
|
201
196
|
Raises:
|
|
202
197
|
FileNotFoundError: When no matching file is found.
|
|
203
198
|
"""
|
|
204
|
-
_name: str = '{}.{}'.format(__name__, self.getnames.__name__)
|
|
205
199
|
if files is not None and issubclass(type(files), str):
|
|
206
200
|
wanted_files = [files]
|
|
207
201
|
else:
|
|
@@ -210,21 +204,21 @@ class ZipfileArchive(AbstractArchive, ABC):
|
|
|
210
204
|
(issubclass(type(wanted_files), list) and (
|
|
211
205
|
len(wanted_files) == 0 or
|
|
212
206
|
len(wanted_files) > 0 and wanted_files[0] == '*')):
|
|
213
|
-
logger.debug('
|
|
207
|
+
logger.debug('ZipfileArchive.getnames: found files {}'.format(len(self.__files)))
|
|
214
208
|
return sorted(self.__files.keys())
|
|
215
209
|
else:
|
|
216
210
|
filelist = list()
|
|
217
211
|
for filename in self.__files:
|
|
218
|
-
logger.debug('
|
|
212
|
+
logger.debug('ZipfileArchive.getnames: member {}'.format(filename))
|
|
219
213
|
for required_filename in wanted_files:
|
|
220
|
-
logger.debug('
|
|
214
|
+
logger.debug('ZipfileArchive.getnames: required {}'.format(required_filename))
|
|
221
215
|
if required_filename[-1] == '/':
|
|
222
216
|
required_filename = required_filename[:-1]
|
|
223
217
|
if fnmatch.fnmatchcase(filename, required_filename):
|
|
224
218
|
filelist.append(filename)
|
|
225
219
|
elif fnmatch.fnmatchcase(filename, required_filename + '/*'):
|
|
226
220
|
filelist.append(filename)
|
|
227
|
-
logger.debug('
|
|
221
|
+
logger.debug('ZipfileArchive.getnames: found files {}'.format(len(filelist)))
|
|
228
222
|
if len(filelist) < 1:
|
|
229
223
|
raise FileNotFoundError('No such file: {}'.format(wanted_files))
|
|
230
224
|
return filelist
|
|
@@ -274,11 +268,10 @@ class ZipfileArchive(AbstractArchive, ABC):
|
|
|
274
268
|
PermissionError: When archive is read-only.
|
|
275
269
|
"""
|
|
276
270
|
|
|
277
|
-
_name: str = '{}.{}'.format(__name__, self.open.__name__)
|
|
278
271
|
if isinstance(member, str):
|
|
279
272
|
member = Member(member)
|
|
280
|
-
logger.debug('
|
|
281
|
-
logger.debug('
|
|
273
|
+
logger.debug('ZipfileArchive.open: mode %s' % mode)
|
|
274
|
+
logger.debug('ZipfileArchive.open: member %s' % member.filename)
|
|
282
275
|
if mode[0] == 'r':
|
|
283
276
|
if member.filename not in self.__files:
|
|
284
277
|
raise FileNotFoundError(
|
|
@@ -298,7 +291,8 @@ class ZipfileArchive(AbstractArchive, ABC):
|
|
|
298
291
|
if ext >= 0:
|
|
299
292
|
suffix = member.filename[ext:]
|
|
300
293
|
local_file = tempfile.NamedTemporaryFile(suffix=suffix, delete=False)
|
|
301
|
-
logger.debug('
|
|
294
|
+
logger.debug('ZipfileArchive.open: mode %s file %s' % (
|
|
295
|
+
mode, local_file))
|
|
302
296
|
fh = WriteFileIO(self.__archive, member, local_file)
|
|
303
297
|
# Update info on member file
|
|
304
298
|
self.__files[member.filename] = Member(member.filename,
|
|
@@ -433,17 +427,16 @@ class ZipfileArchive(AbstractArchive, ABC):
|
|
|
433
427
|
local_file: named local file
|
|
434
428
|
filename: filename in the archive
|
|
435
429
|
"""
|
|
436
|
-
_name: str = '{}.{}'.format(__name__, self.add_localfile.__name__)
|
|
437
430
|
if self.__mode[0] == 'r':
|
|
438
431
|
raise PermissionError(
|
|
439
432
|
'Cannot write on an archive opened for read')
|
|
440
433
|
member = Member(filename, info={'unpacked': True},
|
|
441
434
|
local_file=local_file)
|
|
442
435
|
self.__archive.write(local_file, arcname=filename)
|
|
443
|
-
logger.debug('
|
|
444
|
-
|
|
436
|
+
logger.debug('ZipfileArchive.add_localfile: local {} as {}'.format(
|
|
437
|
+
local_file, filename))
|
|
445
438
|
self.__files[filename] = member
|
|
446
|
-
logger.debug('{}
|
|
439
|
+
logger.debug('{}'.format(self.__archive.namelist()))
|
|
447
440
|
|
|
448
441
|
def writedata(self, filename, data):
|
|
449
442
|
"""Write data to a named file in the archive.
|
|
@@ -462,11 +455,10 @@ class ZipfileArchive(AbstractArchive, ABC):
|
|
|
462
455
|
def close(self):
|
|
463
456
|
"""Close zip file.
|
|
464
457
|
"""
|
|
465
|
-
_name: str = '{}.{}'.format(__name__, self.close.__name__)
|
|
466
458
|
self.__archive.close()
|
|
467
459
|
self.__fp.close()
|
|
468
460
|
shutil.rmtree(self.__tmpdir)
|
|
469
|
-
logger.debug('
|
|
461
|
+
logger.debug('ZipfileArchive.close: {}'.format(self.__tmpdir))
|
|
470
462
|
self.transport.close()
|
|
471
463
|
|
|
472
464
|
def is_file(self, member):
|
|
@@ -511,14 +503,12 @@ class ZipfileArchive(AbstractArchive, ABC):
|
|
|
511
503
|
def __enter__(self):
|
|
512
504
|
"""Enter context manager.
|
|
513
505
|
"""
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
_name, type(self.transport), self.__mode))
|
|
506
|
+
logger.debug("ZipfileArchive __enter__: {} mode {}".format(
|
|
507
|
+
type(self.transport), self.__mode))
|
|
517
508
|
return self
|
|
518
509
|
|
|
519
510
|
def __exit__(self, exc_type, exc_val, exc_tb):
|
|
520
511
|
"""Leave context manager, cleaning up any open files.
|
|
521
512
|
"""
|
|
522
|
-
|
|
523
|
-
logger.debug('{}:'.format(_name))
|
|
513
|
+
logger.debug('ZipfileArchive.__exit__:')
|
|
524
514
|
self.close()
|
|
@@ -9,6 +9,8 @@ The Cohort class is a collection of Patient objects.
|
|
|
9
9
|
"""
|
|
10
10
|
|
|
11
11
|
from datetime import datetime, date, time
|
|
12
|
+
from collections import UserDict
|
|
13
|
+
import logging
|
|
12
14
|
import argparse
|
|
13
15
|
from pathlib import Path
|
|
14
16
|
|
|
@@ -16,6 +18,8 @@ from .series import Series
|
|
|
16
18
|
from .readdata import read as r_read
|
|
17
19
|
from .formats import UnknownInputError
|
|
18
20
|
|
|
21
|
+
logger = logging.getLogger(__name__)
|
|
22
|
+
|
|
19
23
|
|
|
20
24
|
def _get_attribute(_data, _attr):
|
|
21
25
|
# Get attribute from first instance in _data
|
|
@@ -3,11 +3,14 @@
|
|
|
3
3
|
Standard plugins provides support for DICOM and Nifti image file formats.
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
|
-
# Copyright (c) 2013-
|
|
6
|
+
# Copyright (c) 2013-2022 Erling Andersen, Haukeland University Hospital, Bergen, Norway
|
|
7
7
|
|
|
8
|
+
import logging
|
|
8
9
|
import sys
|
|
10
|
+
|
|
9
11
|
import numpy as np
|
|
10
12
|
|
|
13
|
+
logger = logging.getLogger(__name__)
|
|
11
14
|
|
|
12
15
|
(SORT_ON_SLICE,
|
|
13
16
|
SORT_ON_TAG) = range(2)
|
|
@@ -107,16 +107,15 @@ class AbstractPlugin(object, metaclass=ABCMeta):
|
|
|
107
107
|
- si[tag,slice,rows,columns]: numpy array
|
|
108
108
|
"""
|
|
109
109
|
|
|
110
|
-
_name: str = '{}.{}'.format(__name__, self.read.__name__)
|
|
111
110
|
hdr = Header()
|
|
112
111
|
hdr.input_format = self.name
|
|
113
112
|
hdr.input_order = input_order
|
|
114
113
|
|
|
115
114
|
# image_list: list of tuples (hdr,si)
|
|
116
|
-
logger.debug("
|
|
115
|
+
logger.debug("AbstractPlugin.read: sources {}".format(sources))
|
|
117
116
|
image_list = list()
|
|
118
117
|
for source in sources:
|
|
119
|
-
logger.debug("
|
|
118
|
+
logger.debug("AbstractPlugin.read: source: {} {}".format(type(source), source))
|
|
120
119
|
archive: AbstractArchive = source['archive']
|
|
121
120
|
scan_files = source['files']
|
|
122
121
|
if scan_files is None or len(scan_files) == 0:
|
|
@@ -130,16 +129,16 @@ class AbstractPlugin(object, metaclass=ABCMeta):
|
|
|
130
129
|
# scan_files = archive.getnames()
|
|
131
130
|
# logger.debug("AbstractPlugin.read: scan_files {}".format(scan_files))
|
|
132
131
|
for file_handle in archive.getmembers(scan_files):
|
|
133
|
-
logger.debug("
|
|
132
|
+
logger.debug("AbstractPlugin.read: file_handle {}".format(file_handle.filename))
|
|
134
133
|
if self._need_local_file():
|
|
135
|
-
logger.debug("
|
|
136
|
-
|
|
134
|
+
logger.debug("AbstractPlugin.read: need local file {}".format(
|
|
135
|
+
file_handle.filename))
|
|
137
136
|
f = archive.to_localfile(file_handle)
|
|
138
|
-
logger.debug("
|
|
137
|
+
logger.debug("AbstractPlugin.read: local file {}".format(f))
|
|
139
138
|
info, si = self._read_image(f, opts, hdr)
|
|
140
139
|
else:
|
|
141
140
|
f = archive.open(file_handle, mode='rb')
|
|
142
|
-
logger.debug("
|
|
141
|
+
logger.debug("AbstractPlugin.read: file {}".format(f))
|
|
143
142
|
try:
|
|
144
143
|
info, si = self._read_image(f, opts, hdr)
|
|
145
144
|
except NotImageError:
|
|
@@ -153,10 +152,10 @@ class AbstractPlugin(object, metaclass=ABCMeta):
|
|
|
153
152
|
raise ValueError('No image data read')
|
|
154
153
|
info, si = image_list[0]
|
|
155
154
|
self._reduce_shape(si)
|
|
156
|
-
logger.debug('
|
|
155
|
+
logger.debug('AbstractPlugin.read: reduced si {}'.format(si.shape))
|
|
157
156
|
shape = (len(image_list),) + si.shape
|
|
158
157
|
dtype = si.dtype
|
|
159
|
-
logger.debug('
|
|
158
|
+
logger.debug('AbstractPlugin.read: shape {}'.format(shape))
|
|
160
159
|
si = np.zeros(shape, dtype)
|
|
161
160
|
i = 0
|
|
162
161
|
for info, img in image_list:
|
|
@@ -165,31 +164,31 @@ class AbstractPlugin(object, metaclass=ABCMeta):
|
|
|
165
164
|
else:
|
|
166
165
|
si[i] = img
|
|
167
166
|
i += 1
|
|
168
|
-
logger.debug('
|
|
167
|
+
logger.debug('AbstractPlugin.read: si {}'.format(si.shape))
|
|
169
168
|
|
|
170
169
|
# Simplify shape
|
|
171
170
|
self._reduce_shape(si)
|
|
172
|
-
logger.debug('
|
|
171
|
+
logger.debug('AbstractPlugin.read: reduced si {}'.format(si.shape))
|
|
173
172
|
|
|
174
173
|
_shape = si.shape
|
|
175
|
-
logger.debug('
|
|
174
|
+
logger.debug('AbstractPlugin.read: _shape {}'.format(_shape))
|
|
176
175
|
_ndim = len(_shape)
|
|
177
176
|
nz = 1
|
|
178
177
|
if _ndim > 2:
|
|
179
178
|
nz = _shape[-3]
|
|
180
|
-
logger.debug('
|
|
179
|
+
logger.debug('AbstractPlugin.read: slices {}'.format(nz))
|
|
181
180
|
|
|
182
|
-
logger.debug('
|
|
181
|
+
logger.debug('AbstractPlugin.read: calling _set_tags')
|
|
183
182
|
self._set_tags(image_list, hdr, si)
|
|
184
183
|
# logger.debug('AbstractPlugin.read: return _set_tags: {}'.format(hdr))
|
|
185
184
|
|
|
186
|
-
logger.info("
|
|
185
|
+
logger.info("Data shape read: {}".format(shape_to_str(si.shape)))
|
|
187
186
|
|
|
188
187
|
# Add any DICOM template
|
|
189
188
|
if pre_hdr is not None:
|
|
190
189
|
hdr.update(pre_hdr)
|
|
191
190
|
|
|
192
|
-
logger.debug('
|
|
191
|
+
logger.debug('AbstractPlugin.read: hdr {}'.format(hdr))
|
|
193
192
|
return {0: hdr}, {0: si}
|
|
194
193
|
|
|
195
194
|
def _need_local_file(self):
|
|
@@ -489,8 +488,8 @@ class AbstractPlugin(object, metaclass=ABCMeta):
|
|
|
489
488
|
flipud: Whether matrix is transposed
|
|
490
489
|
"""
|
|
491
490
|
|
|
492
|
-
|
|
493
|
-
|
|
491
|
+
logger.debug('AbstractPlugin._reorder_to_dicom: shape in {}'.format(
|
|
492
|
+
data.shape))
|
|
494
493
|
if data.ndim == 5:
|
|
495
494
|
rows, columns, slices, tags, d5 = data.shape
|
|
496
495
|
if flipud:
|
|
@@ -546,7 +545,8 @@ class AbstractPlugin(object, metaclass=ABCMeta):
|
|
|
546
545
|
# si[:] = data[:]
|
|
547
546
|
else:
|
|
548
547
|
raise ValueError('Dimension %d is not implemented' % data.ndim)
|
|
549
|
-
logger.debug('
|
|
548
|
+
logger.debug('AbstractPlugin._reorder_to_dicom: shape out {}'.format(
|
|
549
|
+
si.shape))
|
|
550
550
|
return si
|
|
551
551
|
|
|
552
552
|
def _reorder_from_dicom(self, data, flip=False, flipud=False):
|
|
@@ -574,8 +574,7 @@ class AbstractPlugin(object, metaclass=ABCMeta):
|
|
|
574
574
|
flipud: Whether matrix is transposed
|
|
575
575
|
"""
|
|
576
576
|
|
|
577
|
-
|
|
578
|
-
logger.debug('{}: shape in {}'.format(_name, data.shape))
|
|
577
|
+
logger.debug('AbstractPlugin._reorder_from_dicom: shape in {}'.format(data.shape))
|
|
579
578
|
if data.ndim == 5:
|
|
580
579
|
d5, tags, slices, rows, columns = data.shape
|
|
581
580
|
if flipud:
|
|
@@ -627,7 +626,8 @@ class AbstractPlugin(object, metaclass=ABCMeta):
|
|
|
627
626
|
# si[:] = data[:]
|
|
628
627
|
else:
|
|
629
628
|
raise ValueError('Dimension %d is not implemented' % data.ndim)
|
|
630
|
-
logger.debug('
|
|
629
|
+
logger.debug('AbstractPlugin._reorder_from_dicom: shape out {}'.format(
|
|
630
|
+
si.shape))
|
|
631
631
|
return si
|
|
632
632
|
|
|
633
633
|
@staticmethod
|