У меня есть дерево из четырех предметов и их DICOM-изображений. Вот пример структуры каталогов одного субъекта:
'C:\\DICOM_EXPORT\\four_de-id\\four_de-id\\100013\\100013\\*.dcm*'
Я создаю цикл, в котором я рекурсивно перебираю
C:\\DICOM_EXPORT\\four_de-id\\four_de-id\\
в каждом из четырехпапку субъекта и рекурсивно выберите один файл .dcm, затем примените pydicom.dcmread()
к этому изображению и заполните инициализированный словарь dcm_read
с идентификатором субъекта subject[38:44]
в качестве ключа и содержимым определенных тегов DCM в качестве соответствующего значения каждого ключа. Теги находятся в списке, который я создал, и который называется TAGS
(см. Ниже).
>>> print(TAGS)
['(0008,0008)', '(0008,0020)', '(0008,0060)', '(0008,0070)', '(0008,0080)', '(0008,0081)', '(0008,0090)', '(0008,009C)', '(0008,1010)', '(0008,1030)', '(0008,103E)', '(0008,1040)', '(0008,1090)', '(0010,1010)', '(0018,0050)', '(0018,0080)', '(0018,0081)', '(0018,0082)', '(0018,0087)', '(0018,0088)', '(0018,0089)', '(0018,0093)', '(0018,0094)', '(0018,1000)', '(0018,1020)', '(0018,1030)', '(0018,1250)', '(0018,1251)', '(0018,9041)', '(0018,9050)', '(0020,0011)', '(0020,0035)', '(0020,0037)', '(0028,0010)', '(0028,0011)', '(0028,0012)', '(0028,0030)']
dcm_read = {}
for i in subjects:
os.chdir(i)
dcm_image=glob.glob('*.dcm')
for subject in subjects:
dcm_read.update({subject[38:44]:pydicom.dcmread(fp=dcm_image, specific_tags=TAGS)})
Аргумент specific_tags
из pydicom.dcmread()
, по-видимому, является местом возникновения ошибки (см. Ниже).
Traceback (most recent call last):
File "<input>", line 5, in <module>
File "C:\Users\Isabel Wingert\Anaconda3\envs\DCM_EXPORT\lib\site-packages\pydicom\filereader.py", line 850, in dcmread
force=force, specific_tags=specific_tags)
File "C:\Users\Isabel Wingert\Anaconda3\envs\DCM_EXPORT\lib\site-packages\pydicom\filereader.py", line 651, in read_partial
preamble = read_preamble(fileobj, force)
File "C:\Users\Isabel Wingert\Anaconda3\envs\DCM_EXPORT\lib\site-packages\pydicom\filereader.py", line 589, in read_preamble
preamble = fp.read(128)
AttributeError: 'list' object has no attribute 'read'
Однако в документации pydicom
указано, что аргументом для specific_taglist
может быть список элементов. Кто-нибудь когда-нибудь сталкивался с этой проблемой? Или я должен настроить свой список TAGS
по-другому?