본문 바로가기
Python

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

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


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

 

1. VCF 파일 읽기 및 전처리

VCF 파일의 메타데이터와 데이터 부분을 분리하고,
INFO 필드는 여러 속성 값을 포함하므로 이를 파싱하여 별도의 열로 분리합니다.

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. INFO 필드 파싱

INFO 필드에는 여러 속성들이 ;로 구분되어 있습니다.

이를 개별 속성으로 분리하여 데이터프레임의 열로 추가합니다.

import pandas as pd

# INFO 필드를 분리하여 데이터프레임에 추가하는 함수
def parse_info(info):
    info_dict = {}
    for item in info.split(';'):
        if '=' in item:
            key, value = item.split('=')
            info_dict[key] = value
        else:
            info_dict[item] = True  # FLAG type
    return info_dict

# INFO 필드를 파싱하여 새로운 열로 추가
info_df = df['INFO'].apply(parse_info).apply(pd.Series)
df = pd.concat([df, info_df], axis=1).drop(columns=['INFO'])

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

 

VCF 파일 전처리 과정에서 가장 기본적으로 사용되는 코드 입니다. 참고 바랍니다.

 

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

 

vcf2pandas

Package to convert a vcf into a pandas dataframe.

pypi.org

 

반응형