본문 바로가기
Linux

VCF 파일에서 missing allele 분석하는 방법 (bcftools)

by 코딩하는 미토콘드리아 bioinformatics 2024. 7. 14.
반응형

VCF 파일에서 missing allele 분석하는 방법 

 

이번에는 Bash 스크립트로 VCF 파일에서 missing allele 분석하는 방법을 알아보겠습니다. 

bcftools 를 활용하면 쉽게 확인 할 수 있습니다.

 

 

bash 스크립트를 활용해서 각 샘플에서 missing allele (. 또는 ./.)의 비율을 계산합니다.

#!/bin/bash

# VCF 파일 경로
VCF_FILE="path/to/your/file.vcf"

# 중간결과값 저장용으로 temp 파일 만들기
TEMP_FILE=$(mktemp)

# FORMAT 과 sample columns 추출
bcftools query -f '[%SAMPLE\t%GT\n]' $VCF_FILE > $TEMP_FILE

# missing allele counts and total counts 변수 declare
declare -A MISSING_COUNTS
declare -A TOTAL_COUNTS

#임시 파일에서 각 라인을 읽어 샘플과 유전자형 정보를 처리
while read -r SAMPLE GT; do
    # total count for this sample 계산
    TOTAL_COUNTS[$SAMPLE]=$((TOTAL_COUNTS[$SAMPLE] + 1))

    #각 샘플의 전체 유전자형 수와 missing allele 수를 계산
    if [[ "$GT" == "." || "$GT" == "./." ]]; then
        # missing count for this sample 계산
        MISSING_COUNTS[$SAMPLE]=$((MISSING_COUNTS[$SAMPLE] + 1))
    fi
done < $TEMP_FILE

# 결과값 출력
echo -e "Sample\tMissingCount\tTotalCount\tMissingRatio"
for SAMPLE in "${!TOTAL_COUNTS[@]}"; do
    MISSING_COUNT=${MISSING_COUNTS[$SAMPLE]:-0}
    TOTAL_COUNT=${TOTAL_COUNTS[$SAMPLE]}
    MISSING_RATIO=$(echo "$MISSING_COUNT / $TOTAL_COUNT" | bc -l)
    echo -e "$SAMPLE\t$MISSING_COUNT\t$TOTAL_COUNT\t$MISSING_RATIO"
done

# temp 파일 삭제
rm -f $TEMP_FILE

 

결과 출력:

  • 각 샘플의 missing allele 수, 전체 유전자형 수, 그리고 missing allele 비율을 출력합니다.
반응형