BigQuery のバリアント スキーマについて

このページでは、Variant Transforms ツールの使用時に、BigQuery で生成されるスキーマの構造について説明します。Variant Transforms ツールを使用して VCF ファイルを変換し、BigQuery に直接読み込み、エクスポート テーブルの構造について理解する場合は、このページをご覧ください。

命名法

エクスポート形式とスキーマを把握するために、次の用語をよく理解してください。

Genomics の命名法

サンプル
単一の識別子に基づき採取、処理した DNA。サンプルは通常、単一の組織に由来しますが、口腔粘膜など異なる組織から採取されたサンプルもあります。
参照名
DNA の参照セグメントの名前。参照名は通常染色体ですが、参照ゲノムの他の名前が付けられた領域になる場合もあります。
バリアント

参照ゲノムと異なると特定されたゲノムの領域。バリアントには次のプロパティが必要です。

  • 参照名
  • 開始位置
  • 終了位置
  • 1 つ以上の参照ベース
非バリアント セグメント

参照ゲノムと一致するゲノムの領域。 非バリアント セグメントは「参照セグメント」とも呼ばれます。通常、ゲノムデータには、バリアントの存在する非バリアントのセグメントは含まれません。

非バリアント セグメントの詳細については、gVCF についてをご覧ください。

コール

個々のサンプルのバリアント セグメント、または非バリアント セグメントの出現が識別されること。コールは、特定のバリアントに関する遺伝子型の決定を表します。このコールには、品質やフェージングなどの関連情報が含まれる場合があります。

INFO フィールド

バリアント情報と呼び出し情報にオプション フィールドを追加しました。たとえば、すべての呼び出しには genotype フィールドがありますが、すべてのデータセットに「遺伝子型の品質」(GQ)フィールドがあるわけではありません。genotype フィールドは VariantCall スキーマの固定部分ですが、GQ フィールドはありません。GQ のフィールドと値を Key-Value ペアとして VariantCall info フィールドにインポートできます。

ゲノム命名法について詳しくは、以下をご覧ください。

BigQuery の用語

次の BigQuery の用語をよく理解してください。

シンプルなフィールド
数字や文字列などの BigQuery テーブル内のシンプルなデータ要素。
ネストされたフィールド
BigQuery テーブル内の複雑なデータ要素。ネストされたフィールドにはシンプルなフィールドと、ネストされたフィールドの両方を複数含めることができます。
繰り返しフィールド
BigQuery テーブル内の、リストなどの複数の値を含めることができるフィールド。繰り返しフィールドはシンプルなフィールドとネストされたフィールドのいずれも可能です。

BigQuery の複雑なデータ型の詳細については、以下をご覧ください。

バリアント テーブルの構造

Variant Transforms ツールを実行する際には、BigQuery テーブルの名前を指定します。通常、テーブルの名前は variants です。

バリアント テーブルの記録構造

variants テーブルの最上位記録は、バリアント セグメントと非バリアント セグメントの両方の場合があります。各 variants テーブル レコードには 1 つまたは複数の呼び出しが含まれています。

次の表に、バリアント テーブルのレコード構造を示します。この表は、次のバリアント レコードを示しています。

  • Variant1
  • Variant2

BigQuery データセットには、次のサンプルが含まれています。

  • Sample1
  • Sample2
  • Sample3

次の表に、これらの結果を示します。

  • Sample1Sample2 に対しては Variant1 が呼び出されています。
  • Sample1Sample3 に対しては Variant2 が呼び出されています。
   
Variant1 サンプル 1

サンプル 2
Variant2 サンプル 1

サンプル 3

バリアント テーブルのフィールド構造

すべての variants テーブルには、フィールドの固定セットとフィールドの変数セットの両方が含まれます。テーブルの構造は次のようになります。

     
固定バリアント項目 コール バリアント INFO フィールド
固定呼び出しフィールド 呼び出し INFO フィールド

バリアント テーブルの固定フィールド

固定レコードレベル(バリアント)フィールドは、次のとおりです。

  • reference_name
  • start_position
  • end_position
  • reference_bases
  • alternate_bases
  • names
  • quality
  • filter

固定コールレベル(VariantCall)フィールドは、次のとおりです。

  • name
  • genotype
  • phaseset

サンプル スキーマ

1,000 個のゲノムデータが BigQuery に読み込まれた際に、ALL.chrY.phase3_integrated_v1a.20130502.genotypes.vcf のインポートが行われたとします。

次の INFO および FORMAT ヘッダー ディレクティブに記述されているとおり、この VCF ファイルには、さまざまなバリアント レベルとコールレベルの INFO フィールドが含まれています。

##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">
##FORMAT=<ID=GP,Number=G,Type=Float,Description="Genotype likelihoods">
##FORMAT=<ID=GQ,Number=1,Type=Integer,Description="Genotype Quality">
##FORMAT=<ID=FT,Number=1,Type=String,Description="Per-sample genotype filter">
##FORMAT=<ID=PL,Number=G,Type=Integer,Description="Normalized, Phred-scaled likelihoods for genotypes as defined in the VCF specification">
 [[trimmed]]
##INFO=<ID=AA,Number=1,Type=String,Description="Ancestral allele">
##INFO=<ID=AC,Number=A,Type=Integer,Description="Total number of alternate alleles in called genotypes">
##INFO=<ID=AF,Number=A,Type=Float,Description="Estimated allele frequency in the range (0,1]">
##INFO=<ID=NS,Number=1,Type=Integer,Description="Number of samples with data">
 [[trimmed]]

このファイルでは、BigQuery に読み込まれたときに次の処理が行われました。

  • INFO としてマークされたフィールド(ACAF など)は、バリアント リソースに INFO フィールドとして追加されました。
  • FORMAT としてマークされたフィールド(GPGQ フィールドなど)は、VariantCall リソースに INFO フィールドとして追加されました。
  • FORMAT フィールド GT は、INFO フィールドとして追加されませんでした。その値は、genotype フィールドに変換されました。

BigQuery でこのスキーマを表示すると、次の固定フィールドが表示されます。

フィールド名 タイプ モード 説明
reference_name STRING NULLABLE 参照名
start_position INTEGER NULLABLE 開始位置(0 から始まる)。一連の参照ベースの最初のベースに対応します。
end_position INTEGER NULLABLE 終了位置(0 から始まる)。参照対立遺伝子における、最終ベース後の最初のベースに対応します。
reference_bases STRING NULLABLE 参照ベース
alternate_bases RECORD REPEATED 代替ベースごとに 1 つのレコード(ある場合)。詳細な alternate_bases レコード情報をご覧ください。
alternate_bases.alt STRING NULLABLE 代替塩基。
names STRING REPEATED 変数名(RefSNP ID など)。
quality FLOAT NULLABLE Phred スケールの品質スコア。-10log10 予測値(呼び出し失敗時)。値が大きいほど品質が高くなります。
filter STRING REPEATED 失敗したフィルタ(ある場合)、またはバリアントがすべてのフィルタを通過したことを示す「PASS」のリスト。
コール RECORD REPEATED 呼び出しごとに 1 つのレコード。

また、このスキーマには、次の変数フィールドがあります(INFO フィールド)。

フィールド名 タイプ モード 説明
call.name STRING NULLABLE 呼び出しの名前。
call.genotype INTEGER REPEATED 呼び出しの遺伝子型。遺伝子型が呼び出されない場合は「-1」が使用されます。
call.phaseset STRING NULLABLE コールのフェーズセット(ある場合)。「*」は、遺伝子型が段階的であるものの、フェーズセット(FORMAT の 「PS」)が指定されていない場合に使用されます。

詳細な alternate_bases レコード情報

alternate_bases レコードには、値が Number=AINFO フィールドが存在します。このレコードにより、各フィールドを対応する代替レコードにマッピングする必要がなくなり、クエリが簡素化されます。

以前の BigQuery スキーマ バージョン(Number=A フィールドが代替塩基に依存しない場合)を使用するには、次の手順を行います。

  1. Variant Transforms ツールを実行して、--split_alternate_allele_info_fields フラグを渡す。
  2. --split_alternate_allele_info_fields フラグの値を False に設定する。

レコードを自動的に分割する

次の場合、Variant Transforms ツールはレコードを複数の行に自動的に分割し、各行を 100 MB 未満にします。

  • 1 レコードの呼び出し回数が多い場合。
  • 呼び出し回数が多く、BigQuery の行が 100 MB を超える場合。

BigQuery には行あたり 100 MB の上限があるため、自動レコード分割が必要になります。

Null 値

浮動小数点や整数の繰り返しフィールドに Null 値が含まれている場合、Variant Transforms ツールは BigQuery スキーマを作成できません。BigQuery では、繰り返しフィールドに Null 値を使用できません。レコード全体は null でも構いませんが、レコード内の値は null でない必要があります。

例:

  1. VCF ファイルの INFO フィールドに値 1,.,2 があるとします。1,null,2 は、Variant Transforms ツールを使用して BigQuery に読み込めません。
  2. この Null 値は、別の数値に置き換える必要があります。デフォルトでは、置換値は -2^31 または -2147483648 です。

カスタムの数値を設定するには、Variant Transforms ツールを実行する際に --null_numeric_value_replacement フラグに値を渡します。

null 値を文字列に変換して、. を値として使用することもできます。その際、ヘッダーは String として指定する必要があります。