반응형
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 비율을 출력합니다.
반응형
'Linux' 카테고리의 다른 글
PhantomJS - Scriptable Headless Browser (0) | 2024.07.12 |
---|---|
특정 라인만 변수 지정해서 스크립트 실행하는 방법 (2) | 2024.06.08 |
쉘 스크립트 멀티프로세스 parallel run 방법 (0) | 2024.06.08 |
Linux hostname 변경(CentOS 6, 7) (0) | 2023.01.19 |
Not in a hypervisor partition (hvp=0) (verr_nem_not_available) 오류 (4) | 2022.03.07 |