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
'Python' 카테고리의 다른 글
| Pandas를 활용한 VCF 파일 분석 방법 (심화) (0) | 2024.07.14 |
|---|---|
| Pandas를 활용한 VCF 파일 전처리 분석 방법 (1) | 2024.07.14 |
| Pandas를 사용하여 첫 번째 행을 헤더로 설정하는 방법 (0) | 2024.07.14 |
| python VCF file 정보 추출 (chromosome) 하고 plot 만들기 (0) | 2024.04.16 |
| python VCF file 데이터 불러오기 (2) | 2024.04.16 |