一组用于从XNAT存储库下载/上传和列出数据的脚本。
项目描述
Xnat-utils是一个基于XnatPy包的脚本集合,方便地在XNAT上/下载数据和列出数据。
可选依赖
以下转换器是用于自动转换下载的图像(使用“–convert_to”和“–converter”选项)所必需的
dcm2niix (https://github.com/rordenlab/dcm2niix)
MRtrix 3 (http://mrtrix.readthedocs.io/en/latest/)
安装
安装Python (>=3.4)
虽然许多系统(特别是在研究环境中)已经预装了Python 3(注意Python 2是不够的),但如果您的工作站还没有Python 3,这里有一些基本说明,介绍如何安装它。
macOS
macOS自带了一个略微修改过的Python版本,它在一些应用程序/服务中使用。对于一般使用来说,这通常是好的,但在某些情况下,例如在使用
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
然后使用以下命令安装Python
brew install python3
如果一切顺利,当你输入
which python3
它应该返回以下内容
/usr/local/bin/python3
如果不行或者遇到任何问题,请按照运行时收到的说明操作
brew doctor
请注意,这些说明仅作为建议,您不必全部遵循,只需与您的问题可能相关的那些即可。
Windows
使用最适合Python的安装程序(>=3.4)下载Windows版本的Python,请访问https://pythonlang.cn/downloads/windows/。
Linux/Unix
Python3可能已经安装,如果没有安装,最好使用您的包管理器安装。
安装pip
Pip可能已经默认与Python包一起安装,因此首先检查是否已安装。
pip3 --version
请注意,如果您在macOS上使用Homebrew,它应该在/usr/local/bin中。
如果pip尚未安装,您可以通过下载以下脚本进行安装,https://bootstrap.pypa.io/get-pip.py,然后
python3 <path-to-downloaded-file>
安装XnatUtils包
可以从https://github.com/MonashBI/xnatutils.git下载XnatUtils的源代码(或使用git克隆)。要安装它,请cd到已下载的目录并运行
pip3 install xnatutils
如果您遇到权限拒绝错误,您可能需要使用sudo,或者如果您没有管理员访问权限,则可以使用带有--user标志的用户目录进行安装。
pip3 install --user xnatutils
我在安装progressbar2时遇到了一些困难,因为它与progressbar包存在冲突(它们都生成名为progressbar的包)。在这种情况下,将xnat-utils安装在一个虚拟环境中可能是一个好主意(https://virtualenv.readthedocs.io/en/latest/)。
认证
第一次使用这些实用工具时,您将需要输入要连接的服务器地址、用户名和密码。默认情况下,这些凭证的别名令牌将被存储在~/.netrc文件中,格式如下(文件权限设置为600)
machine <your-server-url> user <your-alias-token> password <your-alias-secret>
如果您不想存储这些凭证,请传递‘–no_netrc’(或‘-n’)选项。
如果您已经将凭证保存在~/.netrc文件中,后续调用将不需要您提供服务器地址或用户名/密码,直到令牌过期(如果您不想处理过期的令牌,您可以直接在~/.netrc文件中保存用户名/密码,但请小心处理重要密码)。要重置已保存的凭证,请再次提供包含协议(例如,‘https://’)的完整服务器地址的--server选项,或者直接编辑~/.netrc文件。
要连接到另一个XNAT服务器,请通过--server选项提供新的服务器地址。此服务器的凭证将与之前保存的服务器凭证一起保存。如果没有提供--server选项,则将使用文件中的第一个服务器。要使用备用服务器的保存凭证,您只需将备用服务器的地址提供为--server即可,以区分其他保存的服务器。例如,给定以下在~/.netrc文件中的保存凭证
machine xnat.myuni.edu user myusername password mypassword machine xnat-dev.myuni.edu user mydevusername password mydevpassword
那么
$ xnat-ls -s dev MYPROJECT
就足够从保存的凭证列表中选择开发服务器。
用法
将安装六个命令
xnat-get - 下载扫描和资源
xnat-put - 上传扫描和资源(需要项目写权限)
xnat-ls - 列出项目/受试者/会话/扫描
xnat-rename - 重命名XNAT会话
xnat-varget - 获取元数据字段(包括“自定义变量”)
使用xnat-varput设置元数据字段(包括“自定义变量”)
请通过传递‘-h’或‘–help’选项来查看每个工具的帮助信息。
正则表达式帮助
xnat-get和xnat-ls使用的正则表达式语法在这里完全定义,https://docs.pythonlang.cn/2/library/re.html。然而,对于大多数基本用例,你可能只需要使用‘.’和‘*’操作符。
‘.’匹配任何字符,所以模式
MRH060_00._MR01
将匹配
MRH060_001_MR01 MRH060_002_MR01 MRH060_003_MR01 MRH060_004_MR01 MRH060_005_MR01 MRH060_006_MR01 MRH060_007_MR01 MRH060_008_MR01 MRH060_009_MR01
‘*’匹配前一个字符的0次或多次重复,这在与‘.’字符结合使用时最有用,以匹配通配符字符的字符串,例如
MRH060.*
将匹配MRH060项目中所有受试者/会话。
注意,当在命令行中使用使用‘*’的正则表达式时,你需要将它们用单引号括起来,以避免默认的通配符文件搜索,例如
$ xnat-ls 'MRH099.*'
可能还有另一种语法将证明是有用的,那就是‘(option1|option2|…)’。例如
MRH060_00(1|2|3)_MR01
将匹配
MRH060_001_MR01 MRH060_002_MR01 MRH060_003_MR01
有关更高级的语法,请参阅网络上众多的正则表达式教程。
项目详情
下载文件
下载适合您平台文件的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。