1

我正在为 XNAT 开发一个 python Rest API,用于将数据传输到本地或服务器。我正在尝试将与项目的一个主题相关的所有实验(数据格式,例如:CT、MR、ECOG、MEEG)从 XNAT 下载到我的本地文件系统。但我只能下载该主题的 MR & CT 会话(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 文件)。如何下载与项目的单个主题相关的所有实验?

4

1 回答 1

0

ECOG和MEEG会话数据包含在什么样的实验中,即数据类型是什么?或者它们只是与主题相关的资源?

我创建了一个具有关联 MR 会话以及一些资源的主题(例如,在主题页面上打开管理文件,创建一个资源文件夹,并将几个 PDF 上传到新的资源文件夹)。SubjectData类上的download_dir()函数只下载实验而不是与主题相关的资源。为此,您需要直接迭代资源:

# 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()函数也包含资源,那就太好了,但现在这应该可以为您解决这个问题。

于 2020-10-08T22:52:13.737 回答