Python Dash – загрузка и декодирование файла dicom?Python

Программы на Python
Anonymous
Python Dash – загрузка и декодирование файла dicom?

Сообщение Anonymous »

Я работаю над приложением Dash, в которое мне нужно загружать и извлекать данные из файлов dicom (.dcm) (структурированные отчеты о дозах радиации из рентгеноскопических систем) с помощью rdsr_navigator и pydicom.
В конечном счете, проблема, с которой я столкнулся, заключается в том, что я не уверен, что мне нужно сделать с загруженным файлом, чтобы затем поместить его в мою функцию getData, которая читает файл с помощью rdsr_navigator и pydicom. Я понимаю, что файл кодируется при загрузке и что переменная декодирует его, но из других примеров я вижу, что затем необходимо произвести дальнейшие манипуляции с декодированным файлом. Например, для чтения файлов .csv и .xls с помощью pd.read_csv над декодированной переменной необходимо проделать следующие манипуляции с использованием функций из библиотеки io:

Код: Выделить всё

# Assume that the user uploaded a CSV file
df = pd.read_csv(
io.StringIO(decoded.decode('utf-8')))

Код: Выделить всё

# Assume that the user uploaded an excel file
df = pd.read_excel(io.BytesIO(decoded))
Я получаю следующую ошибку: TypeError:

Код: Выделить всё

 Unsupported type. Supported types: str, pathlib.Path, or pydicom.dataset.FileDataset
Я приложил фрагмент своего кода, который на самом деле представляет собой просто копию примера dcc.upload, представленного на веб-сайте Dash.

Код: Выделить всё

    def parse_contents(contents, filename, date):
content_type, content_string = contents.split(',')

decoded = base64.b64decode(content_string)

global df
df = getData.getData(decoded)

@app.callback(Output('output-data-upload', 'children'),
Input('upload-data', 'contents'),
State('upload-data', 'filename'),
State('upload-data', 'last_modified'),prevent_initial_call=True)
def update_output(list_of_contents, list_of_names, list_of_dates):
if list_of_contents is not None:
children = [parse_contents(list_of_contents, list_of_names, list_of_dates)]
return children
Файл .dcm считывается с помощью моей функции getData с помощью rdsr_navigator и pydicom:

Код: Выделить всё

.............
rdsr_obj = nav.read_file(filename)
.............
dicom = pydicom.dcmread(filename, force=True)
Кто-нибудь может помочь? Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/790 ... dicom-file

Вернуться в «Python»