PyVCF は VCF ファイルをパースするための Python ライブラリーである。VFC ファイルは、SNPs の位置やクオリティなどの情報が含まれている。PyVCF を利用することで VCF ファイルから必要なデータを簡単に取得できる。
PyVCF の使い方は Python の標準的なファイルの読み込みと似ている。すなわち、VCF ファイルを vcf.Reader
メソッドで開き、それを for
文で回す。次の例は、VCF ファイルから各サンプルの genotype (GT) 値を取得してタブ区切りのファイルに保存する例。
import vcf
def format_str(x):
'''
Change numbers to a string, and change list to a string.
'''
if x is None:
y = ''
else:
if isinstance(x, list):
if not x:
y = ';'.join(x)
else:
y = ''
else:
y = str(x)
return y
def parse_vcf(i, o):
with open(o, 'w') as outfh:
vcf_fh = vcf.Reader(open(i, 'r'))
for snp_record in vcf_fh:
gt_list = []
for sample in snp_record.samples:
gt_list.append(sample['GT'])
new_record = [format_str(snp_record.CHROM),
format_str(snp_record.POS),
format_str(snp_record.ID),
format_str(snp_record.REF),
format_str(snp_record.ALT)]
new_record.extend(gt_list)
outfh.write('\t'.join(new_record) + '\n')
parse_vcf('sample.vcf', 'gtdata.txt')