要將資料提交給國家心理健康資料檔案館 (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]。