Amazon Omics に登場するデータフォーマットを整理してみた

見慣れないデータフォーマットを知る
2023.02.11

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

Amazon Omics に登場するデータフォーマットがわからないものが多く調べたことをまとめました。

Amazon Omics データフォーマット早見表

各ストアに保存可能なデータフォーマットの対応状況を整理しました。

Reference Store Sequence Store Variant Store Annotation Store 備考
FASTA 非圧縮であること
FASTQ gzip圧縮必須
SAM
BAM
CRAM
VCF
GFF
TSV/CSV JSON形式のスキーマー定義ファイルが別途必須

Amazon Omics に保存できるデータフォーマット

Amazon Omics は3つコンポーネントで構成されており、その一つにストレージサービスがあります。 NGS データ解析でよく利用されるデータフォーマットのみ保存できるといった特色のあるストレージです。たとえばテキストファイルは保存できなく、なんでもかんでも保存したければ S3 や、FSx シリーズなどの他のストレージサービスを検討することになります。

Omics Storage

リファレンスゲノム保存用の Reference Store と、シーケンスデータ保存用の Sequence Store で構成されています。

保存コストが安価

ゲノム解析で扱うデータを保存するなら S3 より安価に利用できる可能性があります。

Omics Analytics

バリアントデータ保存用の Variant Store と、アノテーションファイル保存用の Annotation Store で構成されています。

半構造化データを検索できる形式で自動変換

Variant Store と、Annotation Store に保存したファイルは、クエリのための ETL 処理とデータカタログへの登録が自動で実施されます。要はファイル保存するだけで Athena から検索をかけられる状態まで持っていってくれます。

対応しているデータフォーマットについて

各データフォーマットの専門的な解説は正しい知識を持った方々の資料を参考にしてください。こちらを参考に Amazon Omics を検証していて必要だった知識を整理しました。

FASTA

塩基配列、アミノ酸配列の標準形式。拡張子は.fasta, .fa, .mfa, .fnaなど複数あります。

Omics Storae の Reference Store が唯一サポートしている形式です。Reference Store に保存したリファレンスゲノムと紐付けて各種データを管理することになるため頻出します。

最初は.fasta, .fna の拡張子はリファレンスゲノムでしか見かけなかったため、リファレンスゲノム = FASTA 形式かと思っていました。ですが、アミノ酸配列のフォーマットでもありました。アミノ酸配列のときの拡張子は.faaとするようですね。

GZIP 圧縮されたリファレンスゲノム(.fna.gz)は保存できない

公共のデータベース(NCBIなど)から取得したファイルは圧縮されていることが多いです。Reference Store はFASTA 形式でも圧縮されていると保存できませんでしたのでご注意ください。

FASTQ

次世代シーケンサー(NGS)から出力されるシーケンスデータ、リード情報の標準形式。FASTA + Quality の意味で一塩基毎のクオリティ(品質)情報を持っています。 拡張子は.fastq, .fqです。

Omics Storage の Sequence Store でサポートされている形式です。Sequence Store へ保存するときは GZIP 圧縮されていることが必須条件です。

お手持ちの FASTQ ファイルが圧縮されているかいないかは、普段ご利用さているアプリケーション、ツールが圧縮された FASTQ 形式をサポートしているかに依るのではないでしょうか。もしくは GZIP 圧縮された状態でシーケンサーから出力されることも多いため、あまり意識されていないかもしれません。

SAM(Sequence Aligment Map)

リファレンス配列に多数の配列をマップした結果を表す形式。拡張子は.samです。

Sequence Store では後述する BAM 形式はサポートしているのですがSAM は形式サポートしていません。

BAM(Binary Alignment Map)

中身はテキスト形式の SAM を圧縮してバイナリデータになったものが BAM です。拡張子は.bamです。

Omics Storage の Sequence Store でサポートされている形式です。

バイナリになり直接ファイルを開けなりましたが代わりに圧縮率が高く、高速検索ができるなどのメリットがあります。高速検索には BAM indexing file と呼ばれる BAM ファイルの検索用ファイルが必要になります。

なぜ BAM が Sequence Store に?

リードをゲノムにマッピングした情報を含む BAM ファイルが FASTQ と同じ Sequence Store でサポートしているのか疑問でした。

PacBio Seque など一部の NGS では出力されるシーケンスデータのフォーマットが BAM 形式になっていました。マッピング情報を含まない生のシーケンスデータのみの BAM ファイルが存在することを知りました。であれば、FASTQ と同じストアに保管しておくのは納得です。

次世代シーケンス de novo ゲノム解析 (PacBio Sequel) ユーロフィンジェノミクス株式会社

CRAM(Compressed Reference-oriented Alignment Map)

BAM 形式よりさらにサイズを30 - 60%圧縮できる形式です。拡張子は.cramです。

CRAM files typically vary from 30 to 60% smaller than BAM, depending on the data held within them.

CRAM (file format) - Wikipedia

Omics Storage の Sequence Store でサポートされている形式です。

CRAM が不可逆圧縮は誤った認識

以前 CRAM 形式で調べていたら不可逆圧縮と紹介されていて高圧縮の理由はこの辺かと記憶していたのですが改めて確認すると間違いでした。私の様に日本語でググると誤った認識をしてしまいそうなので書き残しておきます。

よく見られるCRAMに関する7つの「誤解」を紹介しています。例えば、CRAMはリファレンスへの参照が必須であり、アライメントしたデータのみを表現する、不可逆圧縮のファイルフォーマットであるといった「誤解」に対し、その正しい理解について技術的な面も含めて解説しています。

Guest Post: Seven myths about CRAM - the community standard for genomic data compression | 国立研究開発法人日本医療研究開発機構

CRAM 形式に対応したアプリケーション、ツールが少ないようであまり普及していないようです。

VCF(Variant Call Format)

SNP, INDEL などのゲノム配列の変異情報を扱う標準形式。拡張子は.vcfです。

Omics Analytics の Variant Store と Annotation Store でサポートされている形式です。

なぜ2つのストアでサポートされているのか?

変異(Varinat)情報を持つデータフォマットなので Variant Store でサポートされているのはその名の通りで理解できます。なぜ Annotation Store でもサポートされているのかわかりませんでした。調べてみると VCF ファイルにもアノテーション情報を記載できるためでした。

VCF ファイルの先頭には ## から始まる部分があり、アノテーション情報などが記載されている。それから、# から始まるヘッダー行に続いて、実際のデータが記載される。

VCF | VCF フォーマットファイルの特徴および Python でパースする方法

VCF フォーマットの仕様書を確認すると##はメタ情報行と説明がありました。

VCF is a text file format (most likely stored in a compressed manner). It contains meta-information lines (prefixed with “##”), a header line (prefixed with “#”), and data lines each containing information about a position in the genome and genotype information on samples for each position (text fields separated by tabs).

VCFv4.3.pdf

日本語で説明されているものでは下記の記事が参考になりました。

VCFファイルとはなにかを説明します-前編 - バイオインフォマティクスでゲノムワイド関連解析(GWAS)

手元にある VCF ファイルを確認してみるとメタ情報と言うべき##fileformat列に VCF フォーマットのバージョン情報、##INFO列にアノテーション情報を確認できました。

clinvar.vcf

##fileformat=VCFv4.1
##fileDate=2022-09-03
##source=ClinVar
##reference=GRCh38
##ID=<Description="ClinVar Variation ID">
##INFO=<ID=AF_ESP,Number=1,Type=Float,Description="allele frequencies from GO-ESP">
##INFO=<ID=AF_EXAC,Number=1,Type=Float,Description="allele frequencies from ExAC">
##INFO=<ID=AF_TGP,Number=1,Type=Float,Description="allele frequencies from TGP">
##INFO=<ID=ALLELEID,Number=1,Type=Integer,Description="the ClinVar Allele ID">
##INFO=<ID=CLNDN,Number=.,Type=String,Description="ClinVar's preferred disease name for the concept specified by disease identifiers in CLNDISDB">
##INFO=<ID=CLNDNINCL,Number=.,Type=String,Description="For included Variant : ClinVar's preferred disease name for the concept specified by disease identifiers in CLNDISDB">
##INFO=<ID=CLNDISDB,Number=.,Type=String,Description="Tag-value pairs of disease database name and identifier, e.g. OMIM:NNNNNN">
##INFO=<ID=CLNDISDBINCL,Number=.,Type=String,Description="For included Variant: Tag-value pairs of disease database name and identifier, e.g. OMIM:NNNNNN">
##INFO=<ID=CLNHGVS,Number=.,Type=String,Description="Top-level (primary assembly, alt, or patch) HGVS expression.">
##INFO=<ID=CLNREVSTAT,Number=.,Type=String,Description="ClinVar review status for the Variation ID">
##INFO=<ID=CLNSIG,Number=.,Type=String,Description="Clinical significance for this single variant; multiple values are separated by a vertical bar">
##INFO=<ID=CLNSIGCONF,Number=.,Type=String,Description="Conflicting clinical significance for this single variant; multiple values are separated by a vertical bar">
##INFO=<ID=CLNSIGINCL,Number=.,Type=String,Description="Clinical significance for a haplotype or genotype that includes this variant. Reported as pairs of VariationID:clinical significance; multiple values are separated by a vertical bar">
##INFO=<ID=CLNVC,Number=1,Type=String,Description="Variant type">
##INFO=<ID=CLNVCSO,Number=1,Type=String,Description="Sequence Ontology id for variant type">
##INFO=<ID=CLNVI,Number=.,Type=String,Description="the variant's clinical sources reported as tag-value pairs of database and variant identifier">
##INFO=<ID=DBVARID,Number=.,Type=String,Description="nsv accessions from dbVar for the variant">
##INFO=<ID=GENEINFO,Number=1,Type=String,Description="Gene(s) for the variant reported as gene symbol:gene id. The gene symbol and id are delimited by a colon (:) and each pair is delimited by a vertical bar (|)">
##INFO=<ID=MC,Number=.,Type=String,Description="comma separated list of molecular consequence in the form of Sequence Ontology ID|molecular_consequence">
##INFO=<ID=ORIGIN,Number=.,Type=String,Description="Allele origin. One or more of the following values may be added: 0 - unknown; 1 - germline; 2 - somatic; 4 - inherited; 8 - paternal; 16 - maternal; 32 - de-novo; 64 - biparental; 128 - uniparental; 256 - not-tested; 512 - tested-inconclusive; 1073741824 - other">
##INFO=<ID=RS,Number=.,Type=String,Description="dbSNP ID (i.e. rs number)">
##INFO=<ID=SSR,Number=1,Type=Integer,Description="Variant Suspect Reason Codes. One or more of the following values may be added: 0 - unspecified, 1 - Paralog, 2 - byEST, 4 - oldAlign, 8 - Para_EST, 16 - 1kg_failed, 1024 - other">
#CHROM  POS     ID      REF     ALT     QUAL    FILTER  INFO
1       925952  1019397 G       A       .       .       ALLELEID=1003021;CLNDISDB=MedGen:CN517202;CLNDN=not_provided;CLNHGVS=NC_000001.11:g.925952G>A;CLNREVSTAT=criteria_provided,_single_submitter;CLNSIG=Uncertain_significance;CLNVC=single_nucleotide_variant;CLNVCSO=SO:0001483;GENEINFO=SAMD11:148398;MC=SO:0001583|missense_variant;ORIGIN=1;RS=1640863258

GFF(General Feature Format / Gene Finding Format)

拡張性の高いゲノムアノテーションの標準形式。拡張子は.gffです。

Omics Analytics の Annotation Store でサポートされている形式です。

GFF はバージョンによって仕様が異なることを認識しておきましょう。

  1. GFF: 拡張性が高い
  2. GTF(General Transfer Format / GFF version2): 仕様をより細かく規定しGFFの厳格版
  3. GFF3(General Feature Format version3): GTFの改良版

TSV/CSV

IT エンジニアにも馴染みに深いタブ区切りか、コンマ区切りのテキストファイルです。拡張子は.tsv, .csvです。

Omics Analytics の Annotation Store でサポートされている形式です。

TSV/CSV は実質自由フォーマットなのでは?

TSV/CSV をサポートしているならアノテーション情報は実質自由に書けてしまうのでは?という疑問が生まれました。 Omics Analytics に保存したファイルは裏側で Glue が動きデータカタログを作成してくれます。そのおかげで Athena からの検索を提供しているのが Amazon Omics のマネージドサービスならではの特色です。

Glue がマネージドで動くことには動きますが、自由フォーマットの情報を空気を読んでよしなに処理まではしてくれません。TSV/CSV 形式でアノテーション情報を Omics Analytics へ保存する場合は、JSON 形式でスキーマの定義情報を合わせて保存する必要があります。

Amazon Omics データフォマット対応状況

各ストアに保存可能なデータフォーマットの対応状況を整理しました。

Reference Store Sequence Store Variant Store Annotation Store 備考
FASTA 非圧縮であること
FASTQ gzip圧縮必須
SAM
BAM
CRAM
VCF
GFF
TSV/CSV JSON形式のスキーマー定義ファイルが別途必須

おわりに

re:Invent 2022 で発表された新サービスのこともあり、まだ世の中に情報がほとんど見当たりませんので何かのお役にたてば幸いです。IT 業界には長くいますが分野が違うだけで「こんな拡張子あったんだ」という気持ちになります。データフォーマットひとつ取ってもまだまだ知らないことが多いなと実感しました。

最後にライフサイエンス、バイオインフォマティクス分野の説明できるだけ理解に至っていないため、間違いなどのご指摘ありましたらぜひともご連絡ください。

参考