BigQuery 변이 스키마 이해

이 페이지에서는 Variant Transforms 도구를 사용할 때 BigQuery에서 생성된 스키마의 구조를 설명합니다. Variant Transforms 도구를 사용하여 VCF 파일을 변환하여 BigQuery에 직접 로드하고 내보내기 테이블이 구조화되는 방식을 이해하려는 경우 이 페이지를 읽어보세요.

명명법

내보내기 형식 및 스키마를 이해하려면 다음 용어를 숙지해야 합니다.

Genomics 명명법

샘플
단일 식별자로 수집되고 처리된 DNA입니다. 샘플은 일반적으로 단일 개별 유기체를 포함하지만 구강 상피세포 채취 면봉과 같은 이종 샘플일 수도 있습니다.
참조 이름
DNA 참조 세그먼트의 이름입니다. 참조 이름은 일반적으로 염색체이지만 참조 게놈의 다른 명명된 리전일 수 있습니다.
변이

참조 게놈과 다른 것으로 확인된 게놈 리전입니다. 변이에는 다음과 같은 속성이 있어야 합니다.

  • 참조 이름
  • Start position
  • End position
  • 하나 이상의 참조 기준
비변이 세그먼트

참조 게놈과 일치하는 게놈 영역입니다. 비변이 세그먼트를 '참조 세그먼트'라고도 합니다. 일반적으로 게놈 데이터에는 변이가 있는 비변이 세그먼트가 포함되지 않습니다.

비변이 세그먼트에 대한 자세한 내용은 gVCF 정보를 참조하세요.

판정

개별 샘플에 대한 변이 또는 비변이 세그먼트로 확인된 항목입니다. 판정은 특정 변이와 관련된 유전자형 결정을 나타냅니다. 판정에는 품질 및 단계와 같은 관련 정보가 포함될 수 있습니다.

INFO 필드

변이 및 판정 정보에 추가된 선택적 필드입니다. 예를 들어 모든 판정에는 genotype 필드가 있지만 모든 데이터 세트에 'Genotype Quality'(GQ) 필드가 있지는 않습니다. genotype 필드는 VariantCall 스키마의 고정 부분이지만 GQ 필드가 없습니다. GQ 필드 및 값을 키-값 쌍으로 VariantCall info 필드에 가져올 수 있습니다.

게놈 명명법에 대한 자세한 내용은 다음을 참조하세요.

BigQuery 용어

다음 BigQuery 용어를 숙지해야 합니다.

단순 필드
숫자, 문자열 등 BigQuery 테이블에 있는 간단한 데이터 요소입니다.
중첩 필드
BigQuery 테이블에 있는 복잡한 데이터 요소입니다. 중첩 필드는 여러 개의 단순 필드와 중첩 필드를 포함할 수 있습니다.
반복 필드
목록과 같이 여러 개의 값을 가질 수 있는 BigQuery 테이블의 필드입니다. 반복 필드는 단순 필드일 수도 있고, 중첩 필드일 수도 있습니다.

BigQuery의 복잡한 데이터 유형에 대한 자세한 내용은 다음을 참조하세요.

변이 테이블 구조

Variant Transforms 도구를 실행할 때 BigQuery 테이블 이름을 지정합니다. 일반적으로 테이블 이름은 variants입니다.

변이 테이블 레코드 구조

variants 테이블의 최상위 레코드는 변이 세그먼트일 수도 있고, 비변이 세그먼트일 수도 있습니다. 각 variants 테이블 레코드에는 판정이 하나 이상 포함됩니다.

다음 표에서는 변이 테이블 레코드 구조를 보여줍니다. 테이블에는 다음과 같은 변이 레코드가 표시됩니다.

  • Variant1
  • Variant2

BigQuery 데이터 세트에는 다음 샘플이 포함됩니다.

  • Sample1
  • Sample2
  • Sample3

다음 표에서 이러한 결과를 확인할 수 있습니다.

  • Variant1Sample1Sample2로 판정되었습니다.
  • Variant2Sample1Sample3로 판정되었습니다.
   
Variant1 Sample1

Sample2
Variant2 Sample1

Sample3
... ...

변이 테이블 필드 구조

모든 variants 테이블에는 고정된 필드 집합과 가변적인 필드 집합이 포함되어 있습니다. 테이블 구조는 다음과 같습니다.

     
고정 변이 필드 판정 변이 INFO 필드
... 고정 판정 필드          판정 INFO 필드 ...

변이 테이블 고정 필드

고정 레코드 수준(변이) 필드는 다음과 같습니다.

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

고정 판정 수준(VariantCall) 필드는 다음과 같습니다.

  • name
  • genotype
  • phaseset

스키마 예

1000 Genomes 데이터는 BigQuery에 로드될 때 ALL.chrY.phase3_integrated_v1a.20130502.genotypes.vcf 가져오기가 포함되어 있었습니다.

VCF 파일에는 다음 INFOFORMAT 헤더 지시문의 설명대로 다양한 변이 수준 및 호출 수준 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에 로드될 때 다음과 같은 결과가 발생했습니다.

  • ACAF와 같이 INFO로 표시된 필드는 변형 리소스에 INFO 필드로 추가되었습니다.
  • GPGQ 필드와 같이 FORMAT으로 표시된 필드는 VariantCall 리소스에 INFO 필드로 추가되었습니다.
  • FORMAT 필드 GT는 INFO 필드로 추가되지 않았습니다. 값이 genotype 필드로 변환되었습니다.

BigQuery에서 스키마를 보면 다음 고정 필드가 표시됩니다.

필드 이름 유형 모드 설명
reference_name 문자열 null 허용 참조 이름입니다.
start_position 정수 null 허용 시작 위치입니다(0 기준). 참조 염기 문자열의 첫 번째 염기에 해당합니다.
end_position 정수 null 허용 끝 위치입니다(0 기준). 참조 대립유전자에서 마지막 염기 이후의 첫 번째 염기에 해당합니다.
reference_bases 문자열 null 허용 참조 염기입니다.
alternate_bases 레코드 반복 각 대체 염기마다 하나씩 있는 레코드입니다. 추가 alternate_bases 레코드 정보를 참조하세요.
alternate_bases.alt 문자열 null 허용 대체 염기입니다.
names 문자열 반복 변이 이름입니다(예: RefSNP ID).
quality FLOAT null 허용 Phred 기준 품질 점수입니다(-10log10 prob(잘못된 판정)). 값이 높을수록 품질이 더 높다는 뜻입니다.
filter 문자열 반복 실패한 필터 목록이거나, 변이가 모든 필터를 통과했을 경우 'PASS'입니다.
call 레코드 반복 각 판정에 대해 하나씩 있는 레코드입니다.

스키마를 보면 다음 변수 필드(INFO 필드)가 표시됩니다.

필드 이름 유형 모드 설명
call.name 문자열 null 허용 판정 이름입니다.
call.genotype 정수 반복 판정의 유전자형입니다. 유전자형이 판정되지 않은 경우에는 '-1'이 사용됩니다.
call.phaseset 문자열 null 허용 판정의 단계 집합입니다. 유전자형은 단계적이지만 단계 집합(FORMAT에서 'PS')이 지정되지 않은 경우에는 '*'가 사용됩니다.

추가 alternate_bases 레코드 정보

alternate_bases 레코드에는 Number=A인 모든 INFO 필드가 포함됩니다. 레코드를 사용하면 각 필드를 상응하는 대체 레코드와 매핑할 필요가 없으므로 쿼리가 간단해집니다.

Number=A 필드가 대체 염기와 독립적인 이전 BigQuery 스키마 버전을 사용하려면 다음 단계를 완료합니다.

  1. Variant Transforms 도구를 실행하고 --split_alternate_allele_info_fields 플래그를 전달합니다.
  2. --split_alternate_allele_info_fields 플래그 값을 False로 설정합니다.

자동으로 레코드 분할

다음과 같은 경우에 Variant Transforms 도구는 자동으로 레코드를 각 행이 100MB 미만인 여러 행으로 분할합니다.

  • 레코드에 다수의 판정이 있습니다.
  • 판정 횟수가 많으면 BigQuery 행이 100MB보다 커집니다.

행당 BigQuery 100MB 한도로 인해 자동 레코드 분할이 필요합니다.

Null 값

부동 또는 정수 반복 필드에 null 값이 포함된 경우 Variant Transforms 도구는 BigQuery 스키마를 만들 수 없습니다. BigQuery에서는 반복 필드에 null 값을 허용하지 않습니다. 전체 레코드가 null일 수는 있지만 레코드 내의 값은 null이 아니어야 합니다.

예를 들면 다음과 같습니다.

  1. VCF 파일의 INFO 필드에 1,.,2 값이 있다고 가정합니다. Variant Transforms 도구는 1,null,2를 BigQuery에 로드할 수 없습니다.
  2. null 값을 대체하는 숫자를 사용해야 합니다. 기본적으로 대체 값은 -2^31 또는 -2147483648입니다.

커스텀 숫자 값을 설정하려면 Variant Transforms 도구를 실행할 때 --null_numeric_value_replacement 플래그와 값을 전달합니다.

또는 null 값을 문자열로 변환하고 .을 값으로 사용할 수 있습니다. 그럴 때는 헤더를 String으로 지정해야 합니다.