要将数据提交给国家心理健康数据档案馆 (NDA),用户必须验证其数据以确保其符合所需的格式。这是通过使用 NDA 验证和上传工具来完成的。此外,用户还可以从 NDA 打包和下载数据。如果从 S3 下载关联数据,则需要临时联合 AWS 令牌。 Python 包和命令行客户端已开发出来,允许用户以编程方式验证、打包、提交和/或下载数据。验证、提交包和数据提交 Web 服务。
用户需要 Python 发行版才能使用客户端。从终端/命令提示符运行以下命令以确定 Python 是否已安装:
python3 --version
笔记:
从 Python 3.4 开始,pip 默认包含在 Python 二进制文件中。您可以通过以下方式检查版本:
pip3 --version
如果安装了 pip,那么您应该会看到版本信息。如果没有,您应该安装 pip。首先,从 https://bootstrap.pypa.io/get-pip.py 下载它,然后运行以下命令为您的用户安装。
python3 get-pip.py --user
笔记:
这些说明将帮助您进行设置以运行客户端。
只需在终端或命令提示符中输入以下命令即可安装 nda-tools:
pip install nda-tools
这将自动安装 nda-tools 软件包,包括命令行脚本和所需的软件包。
笔记:
pip install nda-tools --user
python -m NDATools.clientscripts.[NDAtoolcommand]
虽然不仅仅需要验证,但如果您想创建包并将数据提交给 NDA,您必须拥有我们的有效帐户。这可以从 NDA 网站请求。您可以在此处详细了解向 NDA 贡献数据所需的信息。
Keyring 是一个 Python 包,它利用操作系统的凭据管理器来安全地存储和检索用户凭据。
对于任何操作系统的用户,可以使用以下命令更新密码:
keyring.set_password('nda-tools', USERNAME, NEW_PASSWORD)
Mac 和 Windows 用户可以分别使用钥匙串和凭据管理器来更新密码。
要使用密钥环更新密码,请运行:
keyring.set_password('nda-tools', 'YOUR_USERNAME', 'NEW_PASSWORD')
,将YOUR_USERNAME和NEW_PASSWORD替换为您的 NDA 用户名和新密码。您可以从密钥环文档中阅读更多内容。
如果您没有通过密钥环存储任何条目,系统将提示您输入密码。如果身份验证成功,nda-tools 将通过密钥环存储您的密码。随后使用 nda-tools 将从密钥环中自动安全地检索密码。
Linux 用户可能需要安装密钥环的后端实现,因为他们可能没有本机凭据管理器,例如 Mac 和 Windows 操作系统中包含的凭据管理器。如果密钥环后端丢失,nda-tools 将打印以下消息:
If there is no backend set up for keyring, you may try pip install secretstorage --upgrade keyrings.alt
对于 Ubuntu 用户来说,
apt-get install -y gnome-keyring
请注意,如果您在运行客户端时遇到 SSL 错误,您可能需要重新运行 pip 安装请求,使用 pip install pip install requests[secure]
它将安装一些额外的软件包,对 SSL 连接提供更多支持。
要查看验证工具 Python 客户端可用的选项,请输入以下命令:
vtcmd -h
或者要查看可用于下载 Python 客户端的选项,请输入:
downloadcmd -h
客户端提供的 ~.NDAToolssettings.cfg 文件包含端点、文件和用户信息的可配置选项。
通常,您不需要更改“端点”部分中的条目;但是,您可能希望修改“文件”和“用户”部分,其中包含验证结果、用户登录和 AWS 凭证信息的首选位置。
虽然参数不是位置参数,但第一个参数应该是要验证的文件列表。
vtcmd -l "Users/[youruser]/Documents/MultipleDataTypes"
"Users/[youruser]/Documents/MultipleDataTypes/Stage_Testing_BigFiles_genomics_sample03.csv"
您需要知道要验证的 csv 文件的完整路径。此外,如果您的数据包括清单和/或关联文件(即基因组文件、成像文件等),您还必须知道这些文件的完整路径,该路径应作为可选的命令行参数输入。否则,客户端将提示您输入存储任何其他文件的目录列表。如果关联文件位于 AWS 中,您还可以列出存储桶、可选前缀和您的 AWS 凭证。
请注意:列出关联文件的目录时,请包括文件夹(但不包括csv 文件中列出的文件名)。
如果关联的文件名位于 Users/[youruser]/Documents/MultipleDataTypes/data/1G_file.fastq 中,并且在 csv 文件中列出为:
数据/1G_file.fastq
那么您将进入的目录是:
用户/[您的用户]/文档/MultipleDataTypes
您不应将“data/”文件夹作为目录名称的一部分。
要开始验证,您必须输入文件列表(如果不在当前目录中,则输入文件路径),并以空格分隔:
vtcmd MultipleDataTypes/genomics_sample03.csv testdata/with_associated_files/genomics_sample03.csv
如果您的数据包含清单文件,则必须输入清单文件所在的目录,并以空格分隔:
vtcmd submission_data/sample_imagingcollection01.csv -m submission_data/Manifests
如果存在关联文件,请输入找到它们的目录,并用空格分隔:
vtcmd MultipleDataTypes/genomics_sample03.csv testdata/with_associated_files/genomics_sample03.csv -l MultipleDataTypes testdata/with_associated_files
如果文件位于当前工作目录之外的其他位置,则必须输入文件的完整路径:
vtcmd MultipleDataTypes/genomics_sample03.csv testdata/with_associated_files/genomics_sample03.csv -l Users/[youruser]/Downloads/SubmissionData testdata/with_associated_files
如果关联文件位于 S3 中,则必须包含存储桶名称、访问密钥和秘密密钥。
vtcmd MultipleDataTypes/genomics_sample03.csv testdata/with_associated_files/genomics_sample03.csv -s3 my_bucket -ak XXXXXXXXXXXXXX -sk XXXXXXXXXXXXXX
注意:您还可以上传本地和 s3 中保存的关联文件。只需确保包含保存本地文件的目录(-l path/to/local/linked/files)
要创建包,请在命令行参数末尾输入“-b”。您还可以输入您的用户名、AWS 凭证、集合 ID 以及提交的标题和说明,也可以稍后在客户端提示时输入此信息。客户端不会开始构建提交包,直到:
包提交和上传完成后,您的收件箱中将收到一封来自 NDA 的电子邮件,确认您的提交已成功。该包的本地版本将自动保存到~nda-toolsvtcmdsubmission_package文件夹中,并且可以在 NDA 站点上的集合提交选项卡上找到。
在将所有数据提交给 NDA 后,将对所有数据进行 QA 检查,以检查数据点是否不一致,包括性别、主题、访谈年龄和访谈日期。如果发现数据有任何问题,系统将向创建提交的用户发送一封电子邮件,并附上 NDA 发现的错误报告。
要修复您提交的 NDA 中的数据,您需要替换原始提交中包含错误的所有 csv 文件。为此,您必须:
例如,如果 ID 为 123456 的原始提交由 file1.csv、file2.csv 和 file3.csv 组成,并且需要对 file1.csv 和 file2.csv 进行更正,则修复 qa 错误的命令将如下所示:
vtcmd -b -rs 123456 corrected-file1.csv corrected-file2.csv
请注意,file3.csv 已从命令中排除,因为无需对该特定文件进行任何更改。
请注意,此命令应在提交时运行一次,并且应包括包含数据更正的所有文件。即不要对 Corrected-file1.csv 运行 vtcmd 一次,而对 Corrected-file2.csv 运行另一次。如果您在运行命令时意外遗漏了包含必要更改的文件,请通过 [email protected] 联系服务台。
另请注意,csv 文件应包含最初提交的所有数据。即,如果 csv 最初有 800 行并且只需要更改 3 行,则运行 vtcmd 时所有 800 行都应出现在 csv 中,而不仅仅是包含更改的 3 行。 csv 中遗漏的任何数据都将反映在集合的预期数据数中。
该脚本不会上传在原始提交期间上传的任何关联文件。仅当关联文件出现在更正后的 csv 文件中而不是出现在原始提交的任何 csv 文件中时,才需要上传相关文件。这可以节省基因组和成像提交过程中的时间,因为相关文件可能需要几天的时间才能上传。
要下载数据,您应该使用 downloadcmd 命令。这提供了多个选项来下载 NDA 打包数据或数据子集。所有文件都会自动下载到~nda-toolsdownloadcmdpackages文件夹中,但您可以通过在命令行中指定新目录来保存文件来更改此设置。请注意:数据传输上限为每月 20TB。
通过包ID即可下载所有打包的数据:
downloadcmd -dp
注意:除非您使用关联文件创建了 NDA 包,否则它不会下载关联文件。下载相关文件的步骤如下。
downloadcmd 命令有两个选项用于下载 .txt 文件内的数据。如果您下载了 NDA 包,您会发现元数据 .txt 文件,其中许多代表数据度量。基因组学、成像和其他相关数据将作为 s3 链接列在这些 .txt 文件中。如果您想下载 .txt 文件中的所有 s3 链接,您可以通过传递 -ds 标志来表明这一点。
downloadcmd -dp
如果您想要下载 NDA 包以及所有基因组学、成像和其他相关数据作为存储在自定义 .txt 文件中的 s3 链接列表,您可以使用 -t 标志来执行此操作。
downloadcmd -dp
downloadcmd 命令可以将 NDA 包直接下载到 S3 存储桶中。
downloadcmd -dp
这是从 NDA 下载数据的首选方式,原因有二:
下载到另一个 S3 存储桶的速度要快得多,因为数据不会离开 AWS。
它允许我们将无限量的数据从 NDA 直接下载到您的存储桶。
为了使 S3 到 S3 的复制操作成功,作为程序参数提供的 S3 存储桶必须配置为允许arn:aws:sts::618523879050:federated-user/
PUT 对象操作,其中
是您的 NDA 用户名。
对于非公共存储桶,这将需要更新存储桶策略。将
替换为存储桶名称后,应添加以下语句以允许必要的权限:
{
"Sid": "AllowNDAUpload",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::618523879050:federated-user/"
},
"Action": "s3:PutObject*",
"Resource": "arn:aws:s3:::/*"
}
您可能需要向您的公司/机构 IT 部门发送电子邮件,以便为您添加此内容。
注意:如果您的 S3 存储桶是使用客户管理的 KMS 密钥加密的,那么您还需要更新用于加密存储桶的密钥的策略。
应将以下声明添加到您的密钥策略中:
{
"Sid": "EnableUseForFederatedNDA",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::618523879050:user/DownloadManager"
},
"Action": ["kms:GenerateDataKey","kms:Decrypt"],
"Resource": "*"
}
如果您对此验证工具 Python 客户端有任何问题或想提供反馈/意见,请发送电子邮件至 [email protected]。