Разработка Python Rest API для загрузки и выгрузки данных в XNAT

Я разрабатываю Python Rest API для XNAT для передачи данных локально или на сервер. Я пытаюсь загрузить все эксперименты (формат данных, например:CT,MR,ECOG,MEEG), которые связаны с одной темой проекта, из XNAT в мою локальную файловую систему. Но я могу загрузить только эксперимент с форматом данных сеансов МРТ и КТ (файлы Dicom) этой темы. Ниже вы можете увидеть мой код на Python и сообщить мне об изменениях, которые я должен внести.

import xnat
import os
#creating a session
session = xnat.connect('https://xnat.prj.ae.mpg.de', user='xxxx', password='xxxx')
test_project = session.projects["Test"] #loading a project Test
test_subject = test_project.subjects #loading subjects of project
download_folder = os.path.expanduser(r"C:\Users\rkls\Documents\Python-Restapi") # download path
print('Your data is downladed in this directory {} '.format(download_folder))
if not os.path.exists(download_folder):
    os.makedirs(download_folder)
test_project.subjects['S2_RS'].download_dir(download_folder) # using download_dir() to download subject S2_RS
session.disconnect()

Теперь приведенный выше код дает мне возможность экспериментировать только с данными сеанса CT, MR (файлы DICOM), но не с данными сеанса ECOG и MEEG (файлы EDF и FIF). Как мне загрузить все эксперименты, связанные с одной темой проекта?

1 ответ

В каких экспериментах содержатся данные сеансов ECOG и MEEG, т.е. какой тип данных? Или это просто ресурсы, связанные с темой?

Я создал тему со связанным сеансом MR, а также с некоторыми ресурсами (например, откройте "Управление файлами" на странице темы, создайте папку ресурсов и загрузите пару PDF-файлов в новую папку ресурсов). Функция download_dir() в классе SubjectData загружает только эксперименты, а не ресурсы, связанные с предметом. Для этого вам нужно напрямую перебирать ресурсы:

# Set subject to variable for convenience
s2_rs = test_project.subjects['S2_RS']
s2_rs.download_dir(download_folder) # Download experiment data
for resource_id in s2_rs.resources: # Iterate subject resources
    # Download resources for 
    s2_rs.resources.data[resource_id].download_dir(download_folder)

Я создал папку ресурсов с именем FOO по моей теме, а затем загрузил туда пару PDF-файлов. В моей папке загрузки я получил следующее:

S2_RS/resources/FOO/files/foo-1.pdf
S2_RS/resources/FOO/files/foo-2.pdf
S2_RS/S2_RS_MR01/...

S2_RS_MR01 - это сеанс MR, который я загрузил, поэтому в этой папке есть куча файлов.

Было бы неплохо, если бы функция download_dir() также включала ресурсы, но пока это должно решить эту проблему для вас.

Другие вопросы по тегам