将VARIANT CALL FORMAT(VCF)文件转为CSV文件
由于实习工作的需要,得将VCF文件转为CSV文件,这里我使用的是Python3和pyvcf这个包来进行转换。在官网教程中提及了vcf_melt脚本,该脚本好像也可以进行转换,但是我这边尝试了每次成功,所以我就直接编写代码进行转换,具体代码如下:
#!/usr/bin/env python3 # -*- coding: utf-8 -*- # @Time : 18-5-31 下午3:28 # @Author : burning # @File : vcf2csv.py # @function: import vcf vcf_name = "clinvar_papu.vcf" out_file = "result_papu.csv" vcf_reader = vcf.Reader(open(vcf_name, 'r')) out = open(out_file, "w") infos = vcf_reader.infos.keys() header = ['CHROM', 'POS', 'ID', 'REF', 'ALT', 'QUAL', 'FILTER'] + [x for x in infos] header = ','.join(map(str, header)) out.write(header + "\n") def flatten(x): if type(x) == type([]): x = ';'.join(map(str, x)) return x for record in vcf_reader: info_row = [flatten(record.INFO.get(x, None)) for x in infos] fixed = [record.CHROM, record.POS, record.ID, record.REF, record.ALT] row = fixed row += [record.QUAL or '.'] row += [record.FILTER or '.'] row += info_row row = ','.join(map(str, row)) out.write(row + "\n") out.close() print("Finished!\n")
版权声明:本文转载请注明出处!
最新评论:
发表评论
电子邮件地址不会被公开。 必填项已用*标注