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 予測値(呼び出し失敗時)。値が大きいほど品質が高くなります。
フィルタ 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 として指定する必要があります。