이 페이지에서는 Variant Transforms 도구를 사용할 때 BigQuery에서 생성된 스키마의 구조를 설명합니다. Variant Transforms 도구를 사용하여 VCF 파일을 변환하여 BigQuery에 직접 로드하고 내보내기 테이블이 구조화되는 방식을 이해하려는 경우 이 페이지를 읽어보세요.
명명법
내보내기 형식 및 스키마를 이해하려면 다음 용어를 숙지해야 합니다.
Genomics 명명법
- 샘플
- 단일 식별자로 수집되고 처리된 DNA입니다. 샘플은 일반적으로 단일 개별 유기체를 포함하지만 구강 상피세포 채취 면봉과 같은 이종 샘플일 수도 있습니다.
- 참조 이름
- DNA 참조 세그먼트의 이름입니다. 참조 이름은 일반적으로 염색체이지만 참조 게놈의 다른 명명된 리전일 수 있습니다.
- 변이
참조 게놈과 다른 것으로 확인된 게놈 리전입니다. 변이에는 다음과 같은 속성이 있어야 합니다.
- 참조 이름
- 시작 위치
- 끝 위치
- 하나 이상의 참조 기준
- 비변이 세그먼트
참조 게놈과 일치하는 게놈 영역입니다. 비변이 세그먼트를 '참조 세그먼트'라고도 합니다. 일반적으로 게놈 데이터에는 변이가 있는 비변이 세그먼트가 포함되지 않습니다.
비변이 세그먼트에 대한 자세한 내용은 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
다음 표에서 이러한 결과를 확인할 수 있습니다.
Variant1
이Sample1
및Sample2
로 판정되었습니다.Variant2
이Sample1
및Sample3
로 판정되었습니다.
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 파일에는 다음 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에 로드될 때 다음과 같은 결과가 발생했습니다.
AC
및AF
와 같이INFO
로 표시된 필드는 변형 리소스에INFO
필드로 추가되었습니다.GP
및GQ
필드와 같이FORMAT
으로 표시된 필드는VariantCall
리소스에INFO
필드로 추가되었습니다.- FORMAT 필드
GT
는 INFO 필드로 추가되지 않았습니다. 값이genotype
필드로 변환되었습니다.
BigQuery에서 스키마를 보면 다음 고정 필드가 표시됩니다.
필드 이름 | 유형 | 모드 | 설명 |
---|---|---|---|
reference_name | STRING | null 허용 | 참조 이름입니다. |
start_position | INTEGER | null 허용 | 시작 위치입니다(0 기준). 참조 염기 문자열의 첫 번째 염기에 해당합니다. |
end_position | INTEGER | null 허용 | 끝 위치입니다(0 기준). 참조 대립유전자에서 마지막 염기 이후의 첫 번째 염기에 해당합니다. |
reference_bases | STRING | null 허용 | 참조 염기입니다. |
alternate_bases | RECORD | 반복 | 각 대체 염기마다 하나씩 있는 레코드입니다. 추가 alternate_bases 레코드 정보를 참조하세요. |
alternate_bases.alt | STRING | null 허용 | 대체 염기입니다. |
names | STRING | 반복 | 변이 이름입니다(예: RefSNP ID). |
quality | FLOAT | null 허용 | Phred 기준 품질 점수입니다(-10log10 prob(잘못된 판정)). 값이 높을수록 품질이 더 높다는 뜻입니다. |
필터 | STRING | 반복 | 실패한 필터 목록이거나, 변이가 모든 필터를 통과했을 경우 'PASS'입니다. |
판정 | RECORD | 반복 | 각 판정에 대해 하나씩 있는 레코드입니다. |
스키마를 보면 다음 변수 필드(INFO
필드)가 표시됩니다.
필드 이름 | 유형 | 모드 | 설명 |
---|---|---|---|
call.name | STRING | null 허용 | 판정 이름입니다. |
call.genotype | INTEGER | 반복 | 판정의 유전자형입니다. 유전자형이 판정되지 않은 경우에는 '-1'이 사용됩니다. |
call.phaseset | STRING | null 허용 | 판정의 단계 집합입니다. 유전자형은 단계적이지만 단계 집합(FORMAT에서 'PS')이 지정되지 않은 경우에는 '*'가 사용됩니다. |
추가 alternate_bases
레코드 정보
alternate_bases
레코드에는 Number=A
인 모든 INFO
필드가 포함됩니다. 레코드를 사용하면 각 필드를 상응하는 대체 레코드와 매핑할 필요가 없으므로 쿼리가 간단해집니다.
Number=A
필드가 대체 염기와 독립적인 이전 BigQuery 스키마 버전을 사용하려면 다음 단계를 완료합니다.
- Variant Transforms 도구를 실행하고
--split_alternate_allele_info_fields
플래그를 전달합니다. --split_alternate_allele_info_fields
플래그 값을False
로 설정합니다.
자동으로 레코드 분할
다음과 같은 경우에 Variant Transforms 도구는 자동으로 레코드를 각 행이 100MB 미만인 여러 행으로 분할합니다.
- 레코드에 다수의 판정이 있습니다.
- 판정 횟수가 많으면 BigQuery 행이 100MB보다 커집니다.
행당 BigQuery 100MB 한도로 인해 자동 레코드 분할이 필요합니다.
Null 값
부동 또는 정수 반복 필드에 null 값이 포함된 경우 Variant Transforms 도구는 BigQuery 스키마를 만들 수 없습니다. BigQuery에서는 반복 필드에 null 값을 허용하지 않습니다. 전체 레코드가 null일 수는 있지만 레코드 내의 값은 null이 아니어야 합니다.
예를 들면 다음과 같습니다.
- VCF 파일의
INFO
필드에1,.,2
값이 있다고 가정합니다. Variant Transforms 도구는1,null,2
를 BigQuery에 로드할 수 없습니다. - null 값을 대체하는 숫자를 사용해야 합니다. 기본적으로 대체 값은
-2^31
또는-2147483648
입니다.
커스텀 숫자 값을 설정하려면 Variant Transforms 도구를 실행할 때 --null_numeric_value_replacement
플래그와 값을 전달합니다.
또는 null 값을 문자열로 변환하고 .
을 값으로 사용할 수 있습니다. 그럴 때는 헤더를 String
으로 지정해야 합니다.