pydicom.dataset.PropertyError: AttributeError in pixel_array property: 'Dataset' object has no attribute 'TransferSyntaxUID'

1,653 views
Skip to first unread message

Victor Gabriel

unread,
Mar 29, 2017, 12:29:54 AM3/29/17
to pydicom
Hi Guys,

I have been  trying to access pixel array attribute from a Dicom-RT file with no success.
Here it is the terminal traceback:

File download link.

import pydicom as dicom
import platform
print('System: ', platform.python_version(), platform.system())
print('PyDicom', dicom.__version__)
dose = 'RTDOSE1.2.826.0.1.3680043.2.200.189365528.430.25677.1488.dcm'
ds = dicom.read_file(dose)
print(ds.pixel_array)


System:  3.4.4 Linux
PyDicom 1.0.0a1

Traceback (most recent call last):
  File "/home/victor/miniconda3/lib/python3.4/site-packages/pydicom-1.0.0a1-py3.4.egg/pydicom/dataset.py", line 483, in __getattr__
    raise AttributeError
AttributeError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/home/victor/miniconda3/lib/python3.4/site-packages/pydicom-1.0.0a1-py3.4.egg/pydicom/dataset.py", line 995, in pixel_array
    return self._get_pixel_array()
  File "/home/victor/miniconda3/lib/python3.4/site-packages/pydicom-1.0.0a1-py3.4.egg/pydicom/dataset.py", line 972, in _get_pixel_array
    if not already_have and not self._is_uncompressed_transfer_syntax():
  File "/home/victor/miniconda3/lib/python3.4/site-packages/pydicom-1.0.0a1-py3.4.egg/pydicom/dataset.py", line 616, in _is_uncompressed_transfer_syntax
    return self.file_meta.TransferSyntaxUID in NotCompressedPixelTransferSyntaxes
  File "/home/victor/miniconda3/lib/python3.4/site-packages/pydicom-1.0.0a1-py3.4.egg/pydicom/dataset.py", line 488, in __getattr__
    return super(Dataset, self).__getattribute__(name)
AttributeError: 'Dataset' object has no attribute 'TransferSyntaxUID'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/home/victor/miniconda3/lib/python3.4/site-packages/IPython/core/interactiveshell.py", line 2881, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-22-18b576aad5c0>", line 9, in <module>
    print(ds.pixel_array)
  File "/home/victor/miniconda3/lib/python3.4/site-packages/pydicom-1.0.0a1-py3.4.egg/pydicom/dataset.py", line 1000, in pixel_array
    compat.reraise(PropertyError, val, tb)
  File "/home/victor/miniconda3/lib/python3.4/site-packages/pydicom-1.0.0a1-py3.4.egg/pydicom/compat.py", line 31, in reraise
    raise value.with_traceback(tb)
  File "/home/victor/miniconda3/lib/python3.4/site-packages/pydicom-1.0.0a1-py3.4.egg/pydicom/dataset.py", line 995, in pixel_array
    return self._get_pixel_array()
  File "/home/victor/miniconda3/lib/python3.4/site-packages/pydicom-1.0.0a1-py3.4.egg/pydicom/dataset.py", line 972, in _get_pixel_array
    if not already_have and not self._is_uncompressed_transfer_syntax():
  File "/home/victor/miniconda3/lib/python3.4/site-packages/pydicom-1.0.0a1-py3.4.egg/pydicom/dataset.py", line 616, in _is_uncompressed_transfer_syntax
    return self.file_meta.TransferSyntaxUID in NotCompressedPixelTransferSyntaxes
  File "/home/victor/miniconda3/lib/python3.4/site-packages/pydicom-1.0.0a1-py3.4.egg/pydicom/dataset.py", line 488, in __getattr__
    return super(Dataset, self).__getattribute__(name)
pydicom.dataset.PropertyError: AttributeError in pixel_array property: 'Dataset' object has no attribute 'TransferSyntaxUID'



Thanks,

Victor Alves



Aditya Panchal

unread,
Mar 29, 2017, 3:30:45 PM3/29/17
to pyd...@googlegroups.com
See the issue https://github.com/darcymason/pydicom/issues/341 and related pull request for a potential fix.

Seems like there was no catch if the file_meta_info did not contain the Transfer Syntax UID, which is required by the recent changes to handle compressed syntaxes in dataset.py.

Also the original test file (meta_missing_tsyntax.dcm) from issue 258 fails with the same error you get if you try to access the pixel data after the compression work was put in.

Adit

--
You received this message because you are subscribed to the Google Groups "pydicom" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pydicom+unsubscribe@googlegroups.com.
To post to this group, send email to pyd...@googlegroups.com.
Visit this group at https://groups.google.com/group/pydicom.
For more options, visit https://groups.google.com/d/optout.

Victor Gabriel

unread,
Mar 29, 2017, 5:44:17 PM3/29/17
to pyd...@googlegroups.com
Hi Adit,

I applied your fix. Everything fine now.

Thank you very much. 

Victor Alves 



--
You received this message because you are subscribed to a topic in the Google Groups "pydicom" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/pydicom/TD1dY8r-oZA/unsubscribe.
To unsubscribe from this group and all its topics, send an email to pydicom+unsubscribe@googlegroups.com.

To post to this group, send email to pyd...@googlegroups.com.
Visit this group at https://groups.google.com/group/pydicom.
For more options, visit https://groups.google.com/d/optout.



--
Dr. Victor Gabriel Leandro Alves, D. Sc.
Clinical Medical Physicist - Quality Audits
Instituto Nacional de Câncer - Brazil   

Reply all
Reply to author
Forward
0 new messages