Amazon Omics Analytics に保存したバリアントファイルとアノテーションファイルを Athena から検索してみた

Omics Analytics の裏側で働くGlue Data Catalogの自動ETL処理によりAthenaから検索かけられます
2023.02.18

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Amazon Omics Analytics のバリアントストアとアノテーションストアに保存したファイルを Athena から検索を試してみます。ワークショップの内容を参考に Athena で検索までに必要な設定を確認してみました。

ワークショップ: Amazon Omics - End to End

Athena で検索するテストデータの準備

バリアントストアと、アノテーションストアに Athena で検索するためのテストデータをインポートします。

バリアントストアは作成済みのストアを流用しています。バリアントストアとアノテーションストアに保存するファイルを取得からインポートまで流れをやっていきます。

画像引用: Amazon Omics - End to End

バリアントストアへインポート

バリアントデータ(NA12878.g.vcf.gz)をダウンロードし、Amazon Omics 作業用 S3 バケット(s3://omics-work)へアップロードしました。作業用の S3 バケットは Amazon Omics と同リージョンに作成してあるものです。

ご自身の環境に合わせて S3 バケット名は置きかえてください。

$ aws s3 cp s3://gatk-test-data/wgs_gvcf/NA12878_20k_hg38/NA12878.g.vcf.gz .
$ aws s3 cp ./NA12878.g.vcf.gz s3://omics-work/homo-sapiens/

アップロードしたファイルを選択したインポートジョブ実行します。

インポートジョブは成功しました。ジョブ ID をクリックして実行内容を確認してみます。

NA12878.g.vcf.gz ファイルのインポートできていることを確認できます。

アノテーションストアへインポート

今度はアノテーションデータ(clinvar.vcf.gz)をダウンロードし、Amazon Omics 作業用 S3 バケットへアップロードしました。

$ aws s3 cp s3://aws-genomics-static-us-east-1/omics-workshop/clinvar.vcf.gz .
$ aws s3 cp ./clinvar.vcf.gz s3://omics-work/homo-sapiens/

アップロードしたファイルを選択したインポートジョブ実行します。

インポートジョブは成功しました。ジョブ ID をクリックして実行内容を確認してみます。

clinvar.vcf.gz ファイルのインポートできていることを確認できます。

Athena で検索するための下ごしらえ

Omics Analytics に保存したファイルは Glue Data Catalog が自動実行されて ETL 処理がされ Athena で検索できる環境を提供してくれるサービスです。

検索できるファイルのアクセス制御を細かくできるようにアクセスコントロールは AWS Lake Formation で管理されます。

つまり、気軽に Athena で検索しようにもまずは Lake Formation で権限設定からはじめる必要があります。

画像引用: Amazon Omics - End to End

AWS Lake Formation の設定

AWS Lake Foramtion の利用が初回の場合は管理者権限の付与はどうするか問われます。

Add myselfを選択してログインしている IAM ユーザーまたは、IAM ロールに管理者権限を付与してはじめました。この後設定する Omics Analytics に関する設定には管理者権限が必要なります。

管理者のリストに IAM ユーザーか、IAM ロールの名前があることを確認します。

これから設定する項目は最終的に Athena で表示されるデータベース名、テーブル名の名前になります。

  • データベース名は Lake Formation で作成したデータベース名が Athena に表示される
  • テーブル名は Lake Formation で作成したリソースリンク名が Athena に表示がされる

特にデータベース名は他と判別できる名前を設定しないと設定が増えてくると、Athena と Lake Formation を行き来して何の設定だったかを確認することが予想されます。

ここではワークショップに内容に従って汎用的な名前付けですすめていきます。

データベース作成

バリアントと、アノテーション用のデータベースを作成します。

DB 名はomicsdbとしました。名前は任意です。

リソースリンク作成

Lake Formation のテーブルを確認すると、アノテーションストア、バリアントストアごとにテーブルが作成されています。各ストア毎の既存テーブルを新規作成したデータベース(omicsdb)へリソースリンクすることで Athena から検索が可能になります。

重要なことは各ストアごとにリソースリンクの作業が必要になります。

Resource links connect resources shared by Omics Analytics to new or existing databases in your AWS Glue Data Catalog. You need to do the following for each Variant or Annotation store you need to query. For this workshop, we'll create a new database called omicsdb and add resource links to it that point to the Variant and Annotaiton stores you created earlier.

Amazon Omics - End to End

テストデータをインポートしたバリアントストアの1つと、アノテーションストアの1つを新規作成したデータベース(omicsdb)へリソースリンクを作成します。

バリアントストア名のテーブルを選択しアクションからリソースリンク作成を選択します。

リソースリンク名は任意の名前を入力します。リソースリンク名は Athena からみるとテーブル名として認識されますのでわかりやすい名前が好ましいです。リンク先のデータベース名はomicsdbを選択します。これでリンク完了です。

つぎにアノテーションストアも同様の操作を行います。アノテーションストア名のテーブルを選択しアクションからリソースリンク作成を選択します。

リソースリンク名は任意の名前を入力し、リンク先のデータベース名はomicsdbを選択します。これで2つのストアがomicsdbへリンクされました。

omicsdbで検索しテーブルを確認するとリンクされたことを確認できます。Shared resourceの項目にテーブル名(バリアントストアと、アノテーションストアの名前)が表示されていれば設定完了です。

これで Athena から検索できる状態になりました。

Athena から検索してみる

お目当ての Athena から検索を試してみます。

画像引用: Amazon Omics - End to End

クエリ結果保存先 S3 バケット設定

Athena の必須設定でクエリ結果の保存先 S3 バケットを設定する必要があります。

Amazon Omics は現時点では東京リージョンにないため、意識してリージョンを変更しない限りは操作の流れで海外リージョンの Athena を使うことになります。クエリ保存先の S3 バケットは東京リージョンにある S3 バケットを指定しても問題はありません。

Query Engine Version は Athena v3 必須

Athena Engine Versoin は Athena version 3 が必須です。

設定はワークグループから行います。

クエリを投げてみる

右上のワークグループは Athena version 3 設定のワークグループを選択してください。データソースはAwsDataCatalogを選択しデータベースは Lake Formation で新規作成したデータベース名(omicsdb)を選択します。

omicsdbへリンク済みのバリアントストアと、アノテーションストアに対してクエリを投げる準備が整いました。試しにアノテーションストアに保存したファイルの内容を表示してみます。

SELECT * from omicsannotations limit 10

結果が返ってきました。アノテーション情報を確認できます。

元のファイルは VCF データフォーマットのテキストデータです。半構造化データだったものを Glue Data Catalog の力により構造化データに変換し、SQL クエリで検索できるようになりました。

元のファイル内容抜粋

#CHROM  POS     ID      REF     ALT     QUAL    FILTER  INFO
11      17442745        303782  G       A       .       .       ALLELEID=313416;CLNDISDB=Human_Phenotype_Ontology:HP:000
4904,MONDO:MONDO:0018911,MedGen:C0342276,OMIM:606391,Orphanet:ORPHA552,SNOMED_CT:28453007|Human_Phenotype_Ontology:HP:00
08255,MONDO:MONDO:0020525,MedGen:C0342273,SNOMED_CT:237603002|MONDO:MONDO:0009734,MedGen:C2931832,OMIM:256450,SNOMED_CT:
360339005|MONDO:MONDO:0012480,MedGen:C1835887,OMIM:610374|MONDO:MONDO:0100164,MedGen:C1833104,OMIM:PS606176,Orphanet:ORP
HA99885|MedGen:CN517202;CLNDN=Maturity_onset_diabetes_mellitus_in_young|Transitory_neonatal_diabetes_mellitus|Hyperinsul
inemic_hypoglycemia,_familial,_1|Diabetes_mellitus,_transient_neonatal,_2|Permanent_neonatal_diabetes_mellitus|not_provi
ded;CLNHGVS=NC_000011.10:g.17442745G>A;CLNREVSTAT=criteria_provided,_conflicting_interpretations;CLNSIG=Conflicting_inte
rpretations_of_pathogenicity;CLNSIGCONF=Uncertain_significance(5)|_Likely_benign(1);CLNVC=single_nucleotide_variant;CLNV
CSO=SO:0001483;CLNVI=Illumina_Laboratory_Services,Illumina:737787;GENEINFO=ABCC8:6833;MC=SO:0001619|non-coding_transcrip
t_variant,SO:0001819|synonymous_variant;ORIGIN=1;RS=886048055
11      17442746        370657  G       GT      .       .       ALLELEID=357952;CLNDISDB=Human_Phenotype_Ontology:HP:0004904,MONDO:MONDO:0018911,MedGen:C0342276,OMIM:606391,Orphanet:ORPHA552,SNOMED_CT:28453007|Human_Phenotype_Ontology:HP:0008255,MONDO:MONDO:0020525,MedGen:C0342273,SNOMED_CT:237603002|MONDO:MONDO:0009734,MedGen:C2931832,OMIM:256450,SNOMED_CT:360339005;CLNDN=Maturity_onset_diabetes_mellitus_in_young|Transitory_neonatal_diabetes_mellitus|Hyperinsulinemic_hypoglycemia,_familial,_1;CLNHGVS=NC_000011.10:g.17442746_17442747insT;CLNREVSTAT=criteria_provided,_conflicting_interpretations;CLNSIG=Conflicting_interpretations_of_pathogenicity;CLNSIGCONF=Likely_pathogenic(1)|_Uncertain_significance(2);CLNVC=Insertion;CLNVCSO=SO:0000667;GENEINFO=ABCC8:6833;MC=SO:0001589|frameshift_variant,SO:0001619|non-coding_transcript_variant;ORIGIN=0;RS=1057516665

半構造化データから構造化データへの変換をファイルを保存したら自動的に ETL 処理しておいてくれるのが Amazon Omics のマネージドサービスの強みではないでしょうか。

ワークショップの内容に沿ってファイルのインポートから Athena で検索までの流れを紹介しました。

おわりに

Athena で検索できる強みはアノテーションファイルのテーブルとバリアントファイルのテーブルを結合し、なにかしら意義のあるデータを検索することに利用価値があるのかなと思います。今回は Select で表示しか試していませんがおもしろいテストケースを用意して改めて試してみたいと思います。

Athena の料金体系はスキャンしたデータサイズに対しての従量課金になっています。大量のアノテーション情報を意味もなく全文 Select すると不本意なかたちでコストかかってしまいますのでクエリの投げ方には気をつけましょう。

料金 - Amazon Athena | AWS