BigQuery 변이 스키마 이해

Variant Transforms 파이프라인은 VCF 파일을 변환하여 BigQuery에 직접 로드하는 기능을 제공합니다.

BigQuery를 사용하여 수백 또는 수천 대의 컴퓨터를 병렬로 사용하는 게놈 변이에 대한 임시 대화형 쿼리를 실행할 수도 있습니다.

이미 Cloud Life Sciences에서 BigQuery로 내보낸 기존의 게시된 데이터세트를 둘러볼 수도 있습니다.

명명법

내보내기 형식 및 스키마를 이해하려면 사용되는 용어에 익숙해져야 합니다.

Genomics 명명법

샘플
단일 식별자로 수집되고 처리된 DNA입니다. 샘플은 일반적으로 단일 개별 유기체를 포함하지만 구강 상피세포 채취 면봉과 같은 이종 샘플일 수도 있습니다.
참조 이름
DNA의 참조 세그먼트 이름으로, 일반적으로는 염색체이지만 참조 게놈의 다른 명명된 리전일 수도 있습니다.
변이
참조 게놈과 다른 것으로 확인된 게놈 리전입니다. 변이에는 참조 이름, 시작 위치, 끝 위치. 하나 이상의 참조 기준이 있어야 합니다.
비변이 세그먼트

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

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

판정

개별 샘플에 대한 변이 또는 비연이 세그먼트로 확인된 항목입니다. 특정 변이와 관련된 유전자형 결정을 나타내며 품질 및 위상 같은 관련 정보를 포함할 수 있습니다.

INFO 필드

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

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

BigQuery 명명법

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

BigQuery의 복잡한 데이터 유형에 대한 자세한 내용은 표준 SQL의 중첩 및 반복 필드 관련 문서를 참조하세요.

변이 테이블 구조

BigQuery 테이블의 이름은 Variant Transforms 파이프라인을 실행할 때 지정됩니다. 일반적으로 이 테이블의 이름은 variants입니다.

변이 테이블 레코드 구조

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

아래의 표는 Variant1과 Variant2의 두 가지 변이 레코드를 통해 이 구조를 보여줍니다. 이 데이터세트에는 Sample1, Sample2, Sample3의 세 가지 샘플이 있습니다. Variant1은 Sample1과 Sample2에 대한 판정이었고, Variant2는 Sample1과 Sample3에 대한 판정이었습니다.

Variant1 Sample1

Sample2
Variant2 Sample1

Sample3
... ...

변이 테이블 필드 구조

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

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

변수 필드의 이름은 각각 Variant Resource INFO 필드 키와 VariantCall INFO 필드 키입니다.

변이 테이블 고정 필드

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

  • 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 파일은 INFO 및 FORMAT 헤더 지시문에 설명된 대로 여러 개의 변이 수준 및 판정 수준 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로 표시된 필드는 Variant 리소스에 INFO 필드로 추가되었습니다.

이 파일이 BigQuery에 로드될 때 GPGQ 필드와 같이 FORMAT으로 표시된 필드는 VariantCall 리소스에 INFO 필드로 추가되었습니다. FORMAT 필드 GT는 INFO 필드로 추가되지 않았으며, 대신 값이 genotype 필드로 변환되었습니다.

BigQuery UI에서 스키마 보기는 다음의 고정 필드를 표시합니다.

스키마      
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 스키마 버전을 사용하려면 Variant Transforms 도구를 실행할 때 --split_alternate_allele_info_fields 플래그를 전달하고 False로 설정합니다.

자동으로 레코드 분할

레코드에 다수의 판정이 있고 이로 인해 BigQuery 행이 100MB보다 더 커질 경우 Variant Transforms 도구는 각 행이 100MB 미만이 되도록 자동으로 레코드를 여러 행으로 분할합니다. 이것은 BigQuery의 행당 100MB 제한 때문에 필수적입니다.

Null 값

부동 또는 정수 반복 필드에 null 값이 포함된 경우에는 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으로 지정해야 합니다.