본문 바로가기
Python

Pandas를 활용한 VCF 파일 분석 방법 (기본)

by 코딩하는 미토콘드리아 Bioinformatics Lab 2024. 7. 14.
728x90

Pandas를 활용한 VCF 파일 분석 방법

 

 

1. VCF 파일의 메타데이터와 데이터 분리

import pandas as pd

# VCF 파일 경로
vcf_file = 'path/to/your/file.vcf'

# VCF 파일 읽기
with open(vcf_file, 'r') as file:
    lines = file.readlines()

# 메타데이터와 데이터 분리
metadata = [line for line in lines if line.startswith('##')]
header_line = [line for line in lines if line.startswith('#') and not line.startswith('##')]
data_lines = [line for line in lines if not line.startswith('#')]

# 컬럼 헤더 추출
header = header_line[0].strip().split('\t')

# 데이터프레임 생성
data = [line.strip().split('\t') for line in data_lines]
df = pd.DataFrame(data, columns=header)

# 데이터프레임 확인
print(df.head())

 

 

2. 데이터 분석 및 처리

특정 열 선택 및 확인

# 'CHROM' 열의 값 확인
print(df['CHROM'].unique())

 

특정 조건에 맞는 데이터 필터링

# 'QUAL' 값이 30 이상인 변이 선택
high_quality_variants = df[df['QUAL'].astype(float) >= 30]
print(high_quality_variants)

 

데이터 통계 및 요약

# 'QUAL' 열의 요약 통계
print(df['QUAL'].astype(float).describe())

 

 

3. VCF 파일 데이터프레임 출력

##fileformat=VCFv4.2
##source=myImputationProgramV3.1
#CHROM  POS     ID      REF     ALT     QUAL    FILTER  INFO
20      14370   rs6054257 G       A       29      PASS    NS=3;DP=14;AF=0.5;DB;H2
20      17330   .       T       A       3       q10     NS=3;DP=11;AF=0.017
20      1110696 rs6040355 A       G,T     67      PASS    NS=2;DP=10;AF=0.333,0.667
# 예시 VCF 데이터프레임 출력
print(df)
  CHROM      POS         ID REF ALT QUAL FILTER                       INFO
0    20    14370  rs6054257   G   A   29   PASS  NS=3;DP=14;AF=0.5;DB;H2
1    20    17330          .   T   A    3    q10       NS=3;DP=11;AF=0.017
2    20  1110696  rs6040355   A  G,T   67   PASS  NS=2;DP=10;AF=0.333,0.667

 

 

https://pypi.org/project/vcf2pandas/

 

vcf2pandas

Package to convert a vcf into a pandas dataframe.

pypi.org