最新版pysam操作vcf文件

2023-07-10  本文已影响0人  bioshimmer

一、安装

pysam目前只能在Linux比较容易安装使用,Windows不太行。

mamba install pysam

二、使用例子

读取vcf文件和索引文件
import pysam
in_vcf = "draw.4dtv.sites.vcf.gz"
index_file_path = "draw.4dtv.sites.vcf.gz.tbi"
f1 = pysam.VariantFile(in_vcf,index_filename = index_file_path)
获得header标头信息:样本、contigs、过滤条件、info、vcf版本等
print(list(f1.header.samples))
print(list(f1.header.contigs))
print(list(f1.header.filters))
print(list(f1.header.info))
print(f1.header.version)

⚠直接打印会报错,需要转换一下
print(f1.header.samples)
<pysam.libcbcf.VariantHeaderSamples object at 0x7fade61efc70>

获取位点信息以及输出vcf文件
outvcf = "out.vcf.gz"
#输出文vcf.gz文件,需要wb参数,默认文本模式
#另外最后记得close()关闭文件
f2 = pysam.VariantFile(outvcf,"wb",header = f1.header,threads = 2)
#fetch不指定位置参数则获取所有位点
for rec in f1.fetch("HiC_scaffold_1",1,100000):
    out_vcf.write(rec)
    print(rec.pos,rec.info["DP"],rec.alleles)
f1.close()
f2.close()
run.sh
保留双等位基因的脚本示例
import pysam
in_vcf = "draw.4dtv.sites.vcf.gz"
index_file_path = "draw.4dtv.sites.vcf.gz.tbi"
outvcf = "out.vcf.gz"
f1 = pysam.VariantFile(in_vcf,index_filename = index_file_path)
f2 = pysam.VariantFile(outvcf,"wb",header = f1.header,threads = 2)
for rec in f1.fetch():
    if (len(rec.alleles[0]) == 1) and (len(rec.alleles[1]) == 1):
        f2.write(rec)
    else:
        pass
f1.close()
f2.close()

三、参数说明

pysam操作vcf文件有主要的四个类:
  1. pysam.VariantFile:读取vcf或bcf文件
  2. pysam.VariantRecord(*args, **kwargs):每一个变异位点
  3. pysam.VariantHeader:读取vcf或bcf的标头
  4. pysam.VariantHeaderRecord(*args, **kwargs):操作标头的类

1. class pysam.VariantFile()

Parameters:

2. class pysam.VariantRecord()

Variant record突变记录

3. class pysam.VariantHeader

4. class pysam.VariantHeaderRecord()

header record from a VariantHeader object

上一篇 下一篇

猜你喜欢

热点阅读