我正在开发一个python Rest API到XNAT,用于在本地或服务器上传输数据。我正在尝试从XNAT下载与项目主题相关的所有实验(数据格式,例如:CT、MR、ECOG、MEEG)到我的本地文件系统。但我只能下载该主题的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文件)的实验。如何下载一个项目中与单个主题相关的所有实验?
发布于 2020-10-09 06:52:14
ECOG和MEEG会话数据包含在哪种实验中,即数据类型是什么?或者它们仅仅是与主题相关的资源?
我创建了一个与MR会话相关联的主题以及一些资源(例如,打开主题页面上的Manage Files,创建一个资源文件夹,然后将几个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()函数也包含资源,那就更好了,但是现在,这应该可以解决这个问题。
https://stackoverflow.com/questions/64252444
复制相似问题