このページでは、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 の複雑なデータ型の詳細については、以下をご覧ください。
- 標準 SQL における BigQuery のネストされたフィールドと繰り返しフィールド
- BigQuery 特集: 結合データ、ネストされて繰り返されたデータの処理
- ネストに関する Looker のドキュメント
バリアント テーブルの構造
Variant Transforms ツールを実行する際には、BigQuery テーブルの名前を指定します。通常、テーブルの名前は variants
です。
バリアント テーブルの記録構造
variants
テーブルの最上位記録は、バリアント セグメントと非バリアント セグメントの両方の場合があります。各 variants
テーブル レコードには 1 つまたは複数の呼び出しが含まれています。
次の表に、バリアント テーブルのレコード構造を示します。この表は、次のバリアント レコードを示しています。
Variant1
Variant2
BigQuery データセットには、次のサンプルが含まれています。
Sample1
Sample2
Sample3
次の表に、これらの結果を示します。
Sample1
とSample2
に対してはVariant1
が呼び出されています。Sample1
とSample3
に対しては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
としてマークされたフィールド(AC
、AF
など)は、バリアント リソースにINFO
フィールドとして追加されました。FORMAT
としてマークされたフィールド(GP
やGQ
フィールドなど)は、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=A
の INFO
フィールドが存在します。このレコードにより、各フィールドを対応する代替レコードにマッピングする必要がなくなり、クエリが簡素化されます。
以前の BigQuery スキーマ バージョン(Number=A
フィールドが代替塩基に依存しない場合)を使用するには、次の手順を行います。
- Variant Transforms ツールを実行して、
--split_alternate_allele_info_fields
フラグを渡す。 --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 でない必要があります。
例:
- VCF ファイルの
INFO
フィールドに値1,.,2
があるとします。1,null,2
は、Variant Transforms ツールを使用して BigQuery に読み込めません。 - この Null 値は、別の数値に置き換える必要があります。デフォルトでは、置換値は
-2^31
または-2147483648
です。
カスタムの数値を設定するには、Variant Transforms ツールを実行する際に --null_numeric_value_replacement
フラグに値を渡します。
null 値を文字列に変換して、.
を値として使用することもできます。その際、ヘッダーは String
として指定する必要があります。