[アップデート] Amazon Omics Storage のシーケンスストアへファイルを直接保存できるようになりました

Omics Storageのシーケンスストアへ直接ファイルを保存できるようになりました。今まではS3バケットを一度経由しないと保存できませんでしたので今回のアップデートにより選択肢が増えました。
2023.05.21

Amazon Omics Storage のシーケンスストアにシーケンスファイル(FASTQ, BAM, CRAM形式)を直接アップロードできるようになりました。と書くと今までどうやってアップロード(保存)していたのか疑問ですよね、S3 を経由しないとファイルを保存できませんでした。

Inventory icons created by Freepik - Flaticon

従来のアップロード方法は?

これまでシーケンスストアへファイルにデータを保存(シーケンスファイルのアップロード)するためには前もって S3 バケットに保存したいデータをアップロードし、それから S3 バケットのデータをシーケンスストアへ取り込む方法しかサポートされていませんでした。

Inventory icons created by Freepik - Flaticon

2023年5月15日のアップデートで新たな保存方法が追加され、S3 バケットを経由せずにシーケンスストアへデータを直接保存できるようになりました。

検証環境

作成済みのシーケンスストアへ直接シーケンスファイルを保存を試してみます。

シーケンスストア、シーケンスストアを作成するために必要なリファレンスストアを未作成の場合は以下のリンクを参考にストアを作成してください。

やってみた

機能追加アップデートに伴い直接アップロードのドキュメントが追加されていたため、ドキュメントに沿って試してみます。

Direct upload to a sequence store - Amazon Omics

作業概要

3ステップを経てシーケンスストアへファイルを直接アップロードができます。直接アップロードできるようになったと言っても、S3 バケットへaws s3 syncaws s3 cpでファイルをアップロードする感覚では利用できませんでした。

  1. 転送開始コマンド
  2. ファイル転送コマンド
  3. 転送終了コマンド

転送開始コマンド

「マルチパートアップロードを開始します」という開始手続きが最初に必要です。

アップロード先のシーケンスストの ID が必要になり、マネージメントコンソールからだとここに表示されている値です。

aws omics create-multipart-read-set-uploadの実行例です。

aws omics create-multipart-read-set-upload \
    --sequence-store-id 7280775986 \
    --name MyReadSet \
    --source-file-type FASTQ \
    --subject-id DrosophilaMelanogaster20230516\
    --sample-id Sample1\
    --reference-arn "arn:aws:omics:us-east-1:123456789012:referenceStore/7383825511/reference/6329765065"

次の工程で必要になるuploadIDの値を実行結果から控えておきます。

実行結果

{
    "sequenceStoreId": "7280775986",
    "uploadId": "6383291986",
    "sourceFileType": "FASTQ",
    "subjectId": "DrosophilaMelanogaster20230516",
    "sampleId": "Sample1",
    "referenceArn": "arn:aws:omics:us-east-1:123456789012:referenceStore/7383825511/reference/6329765065",
    "name": "MyReadSet",
    "creationTime": "2023-05-17T04:21:27.791408+00:00"
}

Reference

ファイル転送コマンド

aws s3 syncに該当するファイルをアップロードする工程です。ポイントはアップロードしたからシーケンスストアにファイルを保存されるわけではなく、保存をコミットするのはさらに次の工程(転送終了コマンド)です。

aws omics upload-read-set-partコマンドの実行例です。転送開始コマンドの項で確認したuploadIDが引数で必要になります。

注意事項はファイルサイズが大きいとファイルを分割してアップロードする必要があるようです。テストアップロードに使用した gzip圧縮済みの FASTQ ファイルは 80MB のためエラーなくアップロードできました。

ちなみに大きいファイルサイズの具体的な容量を示す数値での説明はドキュメン類に記載はありませんでした。分割したファイルは--part-numberのオプションで数値をインクリメントして指定することになると思います。API の仕様上は10,000まで指定可能となっています。

aws omics upload-read-set-part \
    --sequence-store-id 7280775986 \
    --upload-id 6383291986 \
    --part-source SOURCE1 \
    --part-number 1 \
    --payload \
    /Users/ohmura.yasutaka/aws/work/omics/fruit_fly/GSM868349_Tot_0-1h_emb_0-29_nt_inserts.fastq.gz

次の工程で必要になるchecksumの値を実行結果から控えておきます。

実行結果

{
    "checksum": "0sVAhGwo//M8GBtygTqyCbTOOOE4Saz7UlpxKoxPlho="
}

Reference

転送終了コマンド

「マルチパートアップロードを終了します」という終了手続きを実行してはじめて前の工程(ファイル転送コマンド)でアップロードしたファイルがシーケンスストアへ保存されます。

aws omics complete-multipart-read-set-uploadコマンドの実行例です。ここまでに指定してきた引数の値が必要です。とくに--partsの入力ミスに気をつけてください。

aws omics complete-multipart-read-set-upload \
    --sequence-store-id 7280775986 \
    --upload-id 6383291986 \
    --parts partNumber=1,partSource="SOURCE1",checksum="0sVAhGwo//M8GBtygTqyCbTOOOE4Saz7UlpxKoxPlho="

実行結果

{
    "readSetId": "7780555737"
}

実行結果に表示されたリードセット ID と同じ ID をマネージメントコンソールからも確認できます。

ここまでの一連の作業を経てシーケンスストアへ直接ファイルをアップロードできるというのが今回のアップデート内容です。

Reference

まとめ

シーケンスストアへファイルをアップロードできる新しい選択肢が増えました。

Inventory icons created by Freepik - Flaticon

おわりに

ローカルから Opmics Storage へ保存できるようになり、NGS から出力したデータをシーケンスストアへ保存したいなど Omics Storage の利用用途が広がったのではないでしょうか。

3ステップが必要があるのですがシーケンスストアへ直接アップロードできることを確認しました。直接アップロードの AWS CLI の手順が煩雑ですが、S3 バケット経由と比べるとマニュフェストファイルの作成が不要になっているので手間を比べるとどっこいどっこいだと思います。だけど、大量のシーケンスデータがある場合は引き続き S3 バケットにアップロードして、非同期のバッチ処理でシーケンスストアへする方法も有効ですね。