データを国立精神衛生研究所データ アーカイブ (NDA) に送信するには、ユーザーはデータが必要な形式に準拠していることを確認するために検証する必要があります。これは、NDA 検証およびアップロード ツールを使用して行われます。さらに、ユーザーは NDA からデータをパッケージ化してダウンロードすることもできます。関連データが S3 からダウンロードされる場合は、一時的なフェデレーション AWS トークンが必要です。 Python パッケージとコマンド ライン クライアントは、ユーザーがプログラムでデータを検証、パッケージ化、送信、ダウンロードできるようにするために開発されました。検証、送信パッケージ、およびデータ送信 Web サービス。
ユーザーがクライアントを使用するには、Python ディストリビューションが必要です。ターミナル/コマンド プロンプトから次のコマンドを実行して、Python がすでにインストールされているかどうかを確認します。
python3 --version
注:
Python がすでにインストールされている場合、ユーザーにはバージョン情報が表示されます。そうでない場合は、Python.org からダウンロードしてインストールする必要があります。
ユーザーが Python ディストリビューションをインストールするには、管理者権限、root、または sudo 権限が必要な場合があります。
Python がインストールされている可能性がありますが、システム パスでは使用できません。 Python のインストールと使用方法のドキュメントを参照してください: Python3
Python 3.4 以降、pip はデフォルトで Python バイナリに含まれています。バージョンは次のようにして確認できます。
pip3 --version
pip がインストールされている場合は、バージョン情報が表示されるはずです。そうでない場合は、pip をインストールする必要があります。まず、https://bootstrap.pypa.io/get-pip.py からダウンロードし、次のコマンドを実行してユーザー用にインストールします。
python3 get-pip.py --user
注:
Pip がインストールされている可能性がありますが、システム パスでは使用できません。 Python のインストールと使用法のドキュメントを参照してください。
これらの手順は、クライアントを実行するためのセットアップを行うのに役立ちます。
ターミナルまたはコマンド プロンプトに次のコマンドを入力するだけで、nda-tools をインストールできます。
pip install nda-tools
これにより、コマンド ライン スクリプトと必要なパッケージを含む nda-tools パッケージが自動的にインストールされます。
注:
nda-tools に特別な権限が必要な場合は、次のことを試してください。
pip install nda-tools --user
動作マシン上に複数のバージョンの Python または pip が存在する場合、コマンド プロンプトは nda-tools スクリプトを認識しません。代わりに次のコマンドを試してください。
python -m NDATools.clientscripts.[NDAtoolcommand]
ツールの非推奨バージョンがすでにインストールされている場合は、ユーザーにアップグレードするよう求められます。更新するには、プロンプトコマンドに従います。
検証のみに必要なわけではありませんが、パッケージを作成してデータを NDA に送信する場合は、当社の有効なアカウントが必要です。これはNDA Webサイトからリクエストできます。 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 install pip install requests[secure]
を使用してリクエストの pip インストールを再実行する必要がある場合があることに注意してください。これにより、SSL 接続のサポートが強化されたいくつかの追加パッケージがインストールされます。
検証ツール Python クライアントで使用できるオプションを表示するには、次のコマンドを入力します。
vtcmd -h
または、Download Python クライアントで利用可能なオプションを表示するには、次のように入力します。
downloadcmd -h
コマンドライン入力に特殊文字 (パスワードなど) またはスペース (ディレクトリ/ファイル名など) が含まれている場合は、それらを引用符で囲む必要がある場合があります。
Windows を使用している場合は、二重引用符「」を使用します。
Mac OSX または Linux を使用している場合は、一重引用符「 」を使用してください。
初めて実行すると、クライアントはユーザー名とパスワードの入力を求めるプロンプトを表示し、これらの情報はオペレーティング システムの資格情報マネージャーに保存されます。いつでも戻って資格情報を編集できます。
クライアントに付属の ~.NDAToolssettings.cfg ファイルには、エンドポイント、ファイル、およびユーザー情報の構成可能なオプションが含まれています。
通常、「エンドポイント」セクションのエントリを変更する必要はありません。ただし、検証結果、ユーザー ログイン、および AWS 認証情報の優先場所を指定して「ファイル」セクションと「ユーザー」セクションを変更することもできます。
引数は位置ではありませんが、最初の引数は検証するファイルのリストである必要があります。
vtcmd -l "Users/[youruser]/Documents/MultipleDataTypes" "Users/[youruser]/Documents/MultipleDataTypes/Stage_Testing_BigFiles_genomics_sample03.csv"
ファイルのリストにはコマンドライン スイッチがないため、先行する引数の一部として解釈できます。
たとえば、csv ファイルが -l 引数の一部であるか 2 番目の引数であるかを区別する方法はありません。
検証される CSV ファイルへの完全なパスを知っている必要があります。さらに、データにマニフェストや関連ファイル (ゲノミクス ファイル、イメージング ファイルなど) が含まれている場合は、これらのファイルへのフル パスも知っておく必要があり、これをオプションのコマンド ライン引数として入力する必要があります。それ以外の場合、クライアントは、追加のファイルが保存されているディレクトリのリストを入力するように求めるプロンプトを表示します。関連するファイルが AWS にある場合は、バケット、オプションのプレフィックス、および AWS 認証情報をリストすることもできます。
注意:関連ファイルのディレクトリをリストする場合は、csv ファイルにリストされているファイル名までのフォルダーを含めます (ファイル名は含まれません) 。
関連するファイル名が Users/[youruser]/Documents/MultipleDataTypes/data/1G_file.fastq にあり、CSV ファイルに次のようにリストされている場合:
データ/1G_file.fastq
その場合、入力するディレクトリは次のとおりです。
ユーザー/[あなたのユーザー]/Documents/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 にある場合は、バケット名、アクセス キー、および秘密キーを含める必要があります。
アクセスキーと秘密キーは settings.cfg ファイルにも保存できます。
vtcmd MultipleDataTypes/genomics_sample03.csv testdata/with_associated_files/genomics_sample03.csv -s3 my_bucket -ak XXXXXXXXXXXXXX -sk XXXXXXXXXXXXXX
注:ローカルおよび s3 に保存された関連ファイルをアップロードすることもできます。ローカル ファイルが保存されているディレクトリを必ず含めてください (-l path/to/local/associated/files)
パッケージを作成するには、コマンドライン引数の最後に「-b」を入力します。ユーザー名、AWS 認証情報、コレクション ID、提出物のタイトルと説明を入力することも、後でクライアントからの要求に応じてこの情報を入力することもできます。クライアントは、次の場合まで送信パッケージの構築を開始しません。
すべてのファイルが検証されています
すべての関連ファイルはローカル ドライブまたは S3 にあります
パッケージの送信とアップロードが完了すると、送信が成功したことを確認する電子メールが NDA から受信箱に届きます。パッケージのローカル バージョンは~nda-toolsvtcmdsubmission_packageフォルダーに自動的に保存され、NDA サイトのコレクション送信タブに表示されます。
NDA に送信されたすべてのデータに対して QA チェックが実行され、性別、被験者、インタビューの年齢、インタビュー日などのデータ ポイントに不一致がないかどうかが確認されます。データに問題が見つかった場合は、NDA によって見つかったエラーのレポートとともに、提出物を作成したユーザーに電子メールが送信されます。
提出の NDA 内のデータを修正するには、元の提出でエラーが含まれていたすべての CSV ファイルを置き換える必要があります。これを行うには、次のことを行う必要があります。
元の送信の作成に使用され、修正が必要なデータが含まれる CSV ファイルを取得します。これには、データを追加、削除、または更新する必要があるすべての CSV ファイルが含まれます。
必要に応じて情報を追加、削除、または更新してファイルを修正します。
-rs コマンドライン引数を指定して vtcmd を実行します。データを修正する必要がある送信の値を指定します。次に、修正を加えたすべての CSV ファイルをリストします。元の送信時に変更が含まれていない 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 は、特定のファイルに変更を加える必要がないため、コマンドから除外されていることに注意してください。
このコマンドは送信に対して 1 回実行する必要があり、データの修正を含むすべてのファイルを含める必要があることに注意してください。つまり、correct-file1.csv に対して vtcmd を 1 回実行し、correct-file2.csv に対してもう 1 回実行しないでください。コマンドの実行時に必要な変更を含むファイルを誤って省略してしまった場合は、ヘルプデスク ([email protected]) までご連絡ください。
また、csv ファイルには、最初に送信されたすべてのデータが含まれている必要があることにも注意してください。つまり、 CSV に元々 800 行があり、変更する必要があるのは 3 行だけである場合、 vtcmd の実行時には、変更を含む 3 行だけでなく、800 行すべてが CSV に存在する必要があります。 CSV から除外されたデータは、コレクションのデータ期待値に反映されます。
このスクリプトは、最初の送信時にアップロードされた関連ファイルをアップロードしません。関連ファイルが修正された CSV ファイルに含まれているが、元の送信時の CSV ファイルには含まれていない場合にのみ、関連ファイルをアップロードする必要があります。これにより、関連ファイルのアップロードに数日かかる可能性があるゲノムおよびイメージングの提出時の時間が節約されます。
データをダウンロードするには、downloadcmd コマンドを使用する必要があります。これにより、NDA パッケージ化されたデータまたはデータのサブセットをダウンロードするためのいくつかのオプションが提供されます。すべてのファイルは~nda-toolsdownloadcmdpackagesフォルダーに自動的にダウンロードされますが、コマンド ラインで新しいディレクトリを指定してファイルを保存することでこれを変更できます。注意:データの最大転送制限は1 か月あたり 20 TB です。
ユーザーは NDA ヘルプ デスク ([email protected]) に連絡して、ダウンロードしきい値を [一時的に] 延長するよう依頼できます。
パッケージ化されたすべてのデータは、パッケージ ID を渡すことでダウンロードできます。
downloadcmd -dp <packageID>
注:関連ファイルを含む NDA パッケージを作成しない限り、関連ファイルはダウンロードされません。関連ファイルをダウンロードする手順は以下のとおりです。
downloadcmd コマンドには、.txt ファイル内のデータをダウンロードするための 2 つのオプションがあります。 NDA パッケージをダウンロードすると、メタデータ .txt ファイルが見つかり、その多くはデータ メジャーを表します。ゲノミクス、イメージング、およびその他の関連データは、これらの .txt ファイルに s3 リンクとしてリストされます。 .txt ファイル内のすべての s3 リンクをダウンロードしたい場合は、-ds フラグを渡すことでそのように指定できます。
downloadcmd -dp <packageID> -ds path/to/data/structure/file/image03.txt
NDA パッケージとすべてのゲノミクス、イメージング、およびその他の関連データをカスタム .txt ファイルに保存された s3 リンクのリストとしてダウンロードする場合は、-t フラグを使用してダウンロードできます。
downloadcmd -dp <packageID> -t path/to/all/s3/txt/file/alls3.txt
downloadcmd コマンドを使用すると、NDA パッケージを S3 バケットに直接ダウンロードできます。
downloadcmd -dp <packageID> -s3 <s3 bucket>
これは、次の 2 つの理由により、NDA からデータをダウンロードする場合に推奨される方法です。
データが AWS の外に出ないため、別の S3 バケットへのダウンロードは大幅に高速になります。
これにより、NDA からバケットに無制限の量のデータを直接ダウンロードできるようになります。
S3 から S3 へのコピー操作を成功させるには、プログラム引数として指定された S3 バケットarn:aws:sts::618523879050:federated-user/<username>
の PUT オブジェクト操作を許可するように設定されている必要があります。ここで、 <username>
はNDAユーザー名です。
非公開バケットの場合、バケット ポリシーを更新する必要があります。 <your-s3-bucket>
をバケット名に置き換えた後、必要な権限を許可するには、次のステートメントを追加する必要があります。
{ "Sid": "AllowNDAUpload", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::618523879050:federated-user/<username>" }, "Action": "s3:PutObject*", "Resource": "arn:aws:s3:::<your-s3-bucket>/*" }
これを追加するには、会社/機関の IT 部門に電子メールを送信する必要がある場合があります。
注: S3 バケットが顧客管理の KMS キーで暗号化されている場合は、バケットの暗号化に使用されるキーのポリシーも更新する必要があります。
次のステートメントをキーのポリシーに追加する必要があります。
{ "Sid": "EnableUseForFederatedNDA", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::618523879050:user/DownloadManager" }, "Action": ["kms:GenerateDataKey","kms:Decrypt"], "Resource": "*" }
この検証ツール Python クライアントに問題がある場合、またはフィードバック/コメントを提供したい場合は、[email protected] までメールでお問い合わせください。