PyVCF

2023-05-16

抄自:https://www.cnblogs.com/nkwy2012/p/9204088.html

vcf文件的全称是variant call file,即突变识别文件,它是基因组工作流程中产生的一种文件,保存的是基因组上的突变信息。通过对vcf文件进行分析,可以得到个体的变异信息。嗯,总之,这是很重要的文件,所以怎么处理它也显得十分重要。它的文件信息如下:

文件的开头是一堆以“##”开始的注释行,包含了文件的基本信息。然后是以“#”开头的一行,共9+n个部分,前九部分标注的是后面行每部分代表的信息,相当于表头。后面部分是样本名称,可以有多个。注释行结束后是具体的突变信息,每一行分为9+n个部分,每部分之间用制表符(‘\t’)分隔。

通常处理vcf文件时,在读取,处理阶段总是会写很多重复代码,核心的任务代码很少。当然,如果仅仅是找位点的CHROM,POS,ID,REF,ALT,QUAL这几个参数时,这样做也可以。因为vcf格式规范,这几个参数的结构相对简单。但是如果处理头文件信息,或者处理INFO,FORMAT参数时,要写比较复杂的正则表达式,这样做不仅繁琐,而且容易出错。

Python的PyVCF库解决了这个问题,它通过正则表达式把vcf文件信息转换成结构化的信息,简化了vcf文件的处理过程,方便后续提取相关参数及处理。

PyVCF库的安装,cmd界面:

 

[python] view plain copy

 

  1. pip install PyVCF  

或者从https://github.com/jamescasbon/PyVCF网站上下载安装包,自行安装。

PyVCF库的导入:

[python] view plain copy

 

  1. import vcf  

PyVCF库的名字为vcf,导入之后可以使用其方法对vcf文件做处理。

PyVCF库详细介绍:

使用实例:

[python] view plain copy

 

  1. >>> import vcf  
  2. >>> vcf_reader = vcf.Reader(filename=r'D:\test\example.hc.vcf.gz')  
  3. >>> for record in vcf_reader:  
  4.     print record  
  5. Record(CHROM=chr1, POS=10146, REF=AC, ALT=[A])  
  6. Record(CHROM=chr1, POS=10347, REF=AACCCT, ALT=[A])  
  7. Record(CHROM=chr1, POS=10439, REF=AC, ALT=[A])  
  8. Record(CHROM=chr1, POS=10492, REF=C, ALT=[T])  
  9. Record(CHROM=chr1, POS=10583, REF=G, ALT=[A])  

调用vcf.Reader类处理vcf文件,vcf文件信息就被保存到vcf_reader中了。它是一个可迭代对象,它的迭代元素都是一个_Record对象的实例,保存着非注释行的一行信息,即变异位点的具体信息。通过它,我们可以很轻易地得到位点的详细信息。

_Record对象------位点信息的储存形式

[python] view plain copy

 

  1. class vcf.model._Record(CHROM, POS, ID, REF, ALT, QUAL, FILTER, INFO, FORMAT, sample_indexes, samples=None)  

_Record是vcf.model中的一个对象,除了它还有_Call,_AltRecord等对象。它的基本属性为CHROM,POS,ID,REF,ALT,QUAL,FILTER,INFO,FORMAT,也就是vcf中的一行位点信息。接下来对这些属性一一说明:

CHROM:染色体名称,类型为str。

POS:位点在染色体上的位置,类型为int。

ID:一般是突变的rs号,类型为str。如果是‘.’,则为None。

REF:参考基因组在该位点上的碱基,类型为str。

ALT:在该位点的测序结果。是_AltRecord类的子类实例的列表。类型为list。_AltRecord类有4个子类,代表了突变的几种类型:如snp,indel,structual variants等。所有的实例都可以进行比较(仅限于相等的比较,没有大于小于之说),部分子类没有实现str方法,也就是说不能转成字符串。

QUAL:该位点的测序质量,类型为int或float。

FILTER:过滤信息。将FILTER列按分号分隔形成的字符串列表,类型为list。如果未给出参数则为None。

INFO:该位点的一些测试指标。将‘=’前的参数作为键,后面的参数作为值,构建成的字典。类型为dict。

FORMAT:基因型信息。保存vcf的FORMAT列的原始形式,类型为str。

[python] view plain copy

 

  1. >>> for record in vcf_reader:  
  2.         print type(record.CHROM), record.CHROM  
  3.         print type(record.POS), record.POS  
  4.         print type(record.ID), record.ID  
  5.         print type(record.REF), record.REF  
  6.         print type(record.ALT), record.ALT  
  7.         print type(record.QUAL), record.QUAL  
  8.         print type(record.FILTER), record.FILTER  
  9.         print type(record.INFO), record.INFO  
  10.         print type(record.INFO['BaseQRankSum']), record.INFO['BaseQRankSum']  
  11.         print type(record.FORMAT), record.FORMAT  
  12.   
  13. <type 'str'> chr1  
  14. <type 'int'> 234481  
  15. <type 'NoneType'> None  
  16. <type 'str'> T  
  17. <type 'list'> [A]  
  18. <type 'float'> 2025.77  
  19. <type 'NoneType'> None  
  20. <type 'dict'> {'ExcessHet': 3.0103, 'AC': [1], 'BaseQRankSum': -2.743, 'MLEAF': [0.5], 'AF': [0.5], 'MLEAC': [1], 'AN': 2, 'FS': 2.371, 'MQ': 42.83, 'ClippingRankSum': 0.0, 'SOR': 0.972, 'MQRankSum': -2.408, 'ReadPosRankSum': 1.39, 'DP': 156, 'QD': 13.07}  
  21. <type 'float'> -2.743  
  22. <type 'str'> GT:AD:DP:GQ:PL  

除了这些基本属性之外,_Record对象还有一些其他属性:

samples:把FORMAT信息作为键,后面对应的信息做为值,构建成的字典(CallData对象),以及sample名称,这两个值组成一个Call对象,共同构成samples的一个元素。这样就把sample和基因型信息给关联起来,按下标访问每一个Call对象。samples类型为list。

start:突变开始的位置

end:突变结束的位置

alleles:该位点所有的可能情况,由REF和ALT参数组成的列表(REF类型是str,ALT参数是_AltRecord对象的子类实例),类型是list。

[python] view plain copy

 

  1. >>> for record in vcf_reader:  
  2.         print record.samples, '\n', record.samples[0].sample, '\n', record.samples[0]['GT'] #按下标访问Call,按.sample访问sample,按键访问FORMAT对应信息  
  3.         print record.start, record.POS, record.end  
  4.         print record.REF, record.ALT, record.alleles #注意G没有引号,它是_AltRecord对象  
  5.   
  6. [Call(sample=192.168.1.1, CallData(GT=0/1, AD=[39, 14], DP=53, GQ=99, PGT=0|1, PID=13116_T_G, PL=[449, 0, 2224]))]   
  7. 192.168.1.1  
  8. 0/1  
  9. 13115 13116 13116  
  10. T [G] ['T', G]  

_Record对象方法:

1. 对象之间比较大小方法:根据染色体名称和位置信息比较。Python3只实现了‘=’和‘<’的比较。

2. 迭代方法:对samples里的元素进行迭代。

3. 字符串方法:只返回CHROM,POS,REF,ALT四列信息。

4. genotype(name)方法,和samples按下标访问不同,这个方法提供按sample名称进行访问的功能。

5. add_format(fmt),add_filter(flt),add_info(info, value=True):给相应的属性添加元素。

6. get_hom_refs():拿到samples中该位点未突变的所有sample,返回列表。

7. get_hom_alts():拿到samples中该位点100%突变的所有sample,返回列表。

8. get_hets():拿到samples中该位点基因型为杂合的所有sample,返回列表。

9. get_unknown():拿到samples中该位点基因型未知的所有sample,返回列表。

[python] view plain copy

 

  1. >>> record = next(vcf_reader)  
  2. >>> record2 = next(vcf_reader)  
  3. >>> print record > record2 #按染色体名称和位置进行比较  
  4. False  
  5. >>> for i in record: #按samples列表进行迭代  
  6.          print i      
  7. Call(sample=192.168.1.1, CallData(GT=0/1, AD=[18, 11], DP=29, GQ=99, PL=[280, 0, 528]))  
  8. >>> print str(record) #字符串方法  
  9. Record(CHROM=chr1, POS=10492, REF=C, ALT=[T])  
  10. >>> print record.genotype('192.168.1.1') #按sample名字进行访问  
  11. Call(sample=192.168.1.1, CallData(GT=0/1, AD=[39, 14], DP=53, GQ=99, PGT=0|1, PID=13116_T_G, PL=[449, 0, 2224]))  

_Record对象还有很多有用的方法属性:

num_called:该位点已识别的sample数目。

call_rate:已识别的sample数目占sample总数的比例。

num_hom_ref,num_hom_alt,num_het,num_unknown:四种基因型的数量

aaf:所有sample等位基因的频率(即除开REF),返回列表。

heterozygosity:该位点的杂合度,0.5为杂合突变,0为纯合突变。

var_type:突变类型,包括‘snp’,‘indel’,‘sv’(structural variant),‘unknown’。

var_subtype:更加细化的突变类型,如‘indel’包括‘del’,‘ins’,‘unknown’。

is_snp,is_indel,is_sv,is_transition,is_deletion:判断突变是不是snp,indel,sv,transition,deletion等等。

[python] view plain copy

 

  1. >>> record = next(vcf_reader)  
  2. >>> print record  
  3. Record(CHROM=chr1, POS=13118, REF=A, ALT=[G])  
  4. >>> print record.samples #只有一个sample  
  5. [Call(sample=192.168.1.1, CallData(GT=0/1, AD=[41, 13], DP=54, GQ=99, PGT=0|1, PID=13116_T_G, PL=[449, 0, 2224]))]  
  6. >>> record.num_called  
  7. 1  
  8. >>> record.call_rate  
  9. 1.0  
  10. >>> record.num_hom_ref  
  11. 0  
  12. >>> record.aaf  
  13. [0.5]  
  14. >>> record.num_het  
  15. 1  
  16. >>> record.heterozygosity  
  17. 0.5  
  18. >>> record.var_type  
  19. 'snp'  
  20. >>> record.var_subtype  
  21. 'ts'  
  22. >>> record.is_snp  
  23. True  
  24. >>> record.is_indel  
  25. False  

Reader对象------处理vcf文件,构建结构化信息

[python] view plain copy

 

  1. class Reader(fsock=None, filename=None, compressed=None, prepend_chr=False, strict_whitespace=False, encoding='ascii')  

在读vcf文件时,总共有六个参数可供选择,如上图所示。

fsock:目标文件的文件对象,可以用open(文件名)得到这个文件对象。

filename:文件名,当fsock和filename同时存在时,优先考虑fsock。

compressed:是否要解压,不提供参数时由程序自行判断(以文件名是否以.gz结尾判断是否需要解压)。
prepend_chr:在保存染色体名称时,是否加前缀‘chr’,默认不加,如果vcf文件的染色体名称本来没有前缀‘chr’,可设置为True,自动加上。

strict_whitespace:是否严格以制表符‘\t’分隔数据。True则表示严格按制表符分,False表示可以夹杂空格。

encoding:文件编码。

[python] view plain copy

 

  1. >>> vcf_reader = vcf.Reader(open('vcf/test/example-4.0.vcf', 'r')) #fsock  
  2. >>> vcf_reader = vcf.Reader(filename=r'D:\test\example.hc.vcf.gz') #filename  

头文件信息主要保存在Reader对象的属性中,包括alts,contigs,filters,formats,infos,metadata。alts使用实例:[python] view plain copy

 

  1. >>> vcf_reader = vcf.Reader(filename=r'D:\test\example.hc.vcf.gz')  
  2. >>> vcf_reader.alts  
  3. OrderedDict([('NON_REF', Alt(id='NON_REF', desc='Represents any possible alternative allele at this location'))]) #字典类型  
  4. >>> vcf_reader.alts['NON_REF'].id  
  5. 'NON_REF'  
  6. >>> vcf_reader.alts['NON_REF'].desc  
  7. 'Represents any possible alternative allele at this location'  

其他的属性用法类似。

Reader对象实现了两个方法:

next():获得下一行的数据,也就是返回下一个_Record对象。可以显式调用next()得到下一行数据,也可以直接迭代Reader对象,它会自动调用next()函数以获得下一行数据。

fetch(chrom,start=None,end=None):返回chrom染色体从start+1到end坐标的所有突变位点。不给end,就返回chrom染色体从start+1到末尾的所有突变位点;start和end都不给,就返回chrom染色体所有的突变位点。这个方法需要用另一个第三方Python模块pysam来建立文件索引,如果没有安装这个模块,会导致错误。另外,使用这个方法之后,它会将对象的可迭代范围改成fetch()得到的突变位点,所以用这个方法,原来的迭代进度就失效了。

[html] view plain copy

 

  1. >>> vcf_reader = vcf.Reader(filename=r'D:\test\example.hc.vcf.gz')  
  2. >>> vcf_reader.next()  
  3. <vcf.model._Record object at 0x0000000003ED8780>  
  4. >>> record = vcf_reader.next()  
  5. >>> print record  
  6. Record(CHROM=chr1, POS=10347, REF=AACCCT, ALT=[A])  
  7. >>> for record in vcf_reader:  
  8.     print record  
  9. Record(CHROM=chr1, POS=10439, REF=AC, ALT=[A])  
  10. Record(CHROM=chr1, POS=10492, REF=C, ALT=[T])  

这个库还有一个Writer对象,在此就不详细介绍了,因为大部分对vcf文件的处理都可以用上面两个对象的知识搞定。

综合使用:

[python] view plain copy

 

  1. #!/usr/bin/env python  
  2. # -*- coding: utf-8 -*-  
  3.   
  4. import vcf  # 导入PyVCF库  
  5.   
  6. filename = r'D:\test\example.hc.vcf.gz'   
  7. vcf_reader = vcf.Reader(filename=filename) # 调用Reader对象处理vcf文件  
  8.   
  9. for record in vcf_reader: # 迭代Reader对象,返回的是_Record对象  
  10.     # record是_Record对象  
  11.     print record.CHROM, record.POS, record.ID, record.ALT  
  12.     if record.is_snp:# 判断是否是snp  
  13.         print "I'm a snp"  
  14.     elif record.var_type != 'sv': #和 elif record.is_sv:等价  
  15.         print "I'm not a sv"  
  16.     if record.heterozygosity == 0.5: # 判断是否为杂合突变  
  17.         print "I'm a heterozygous mutation"  
  18.     ...  
  19.     ...  
  20.       

这个库实现的所有功能,都可以自己写代码实现,而且实现方法比较简单。之所以要用这个库来处理vcf文件,是因为这个库考虑的东西可能比我们自己了解的更多,其实现也可能比我们自己的代码更加完备合理。

还有,重复造车总归是不好的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PyVCF 的相关文章

  • tomcat启动,报错Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]

    严重 RMI TCP Connection 3 127 0 0 1 org apache catalina core ContainerBase addChildInternal ContainerBase addChild start o
  • chrome扩展:manifest.json文件详解

    manifest json是扩展的配置文件 xff0c 指明了扩展的各种信息 一个manifest json格式如下 xff1a 必须的字段 3 个 34 name 34 34 MyExtension 34 扩展名称 34 version
  • 检测链表中是否存在回环(Java 版)

    检测链表中是否存在回环 xff0c 这里介绍两种方法 xff1a 快慢指针 xff1b HashSet 存储原理 xff1b 1 快慢指针 快慢指针检查 xff0c 就是定义两个指针 xff0c 一个走的快 xff0c 一个走的慢 xff0
  • 通过http接口进行批量post操作(json格式)

    通过 64 Test或者main方法来进行 相关依赖 poi lt dependency gt lt groupId gt org apache poi lt groupId gt lt artifactId gt poi lt artif
  • spring容器初始化bean后执行方法

    有时 xff0c 我们需要在启动bean时初始化bean属性 xff0c 例如读取perporties文件 xff0c 对属性进行赋值 xff1b 启动容器时让某个method方法执行等等 这时需要在进行配置 xff0c 让bean在注入时
  • 4个简单有效的网页视频下载方法,超级简单好用

    有很多网站的视频是没有下载功能的 xff0c 想要下载视频怎么办呢 xff1f 今天就分享给大家4个简单有效的网页视频下载方法 xff0c 多个平台都适用 xff0c 而且操作简单 xff0c 一看就会 xff01 一 审查元素下载 一个简
  • iptables详解

    5链 INPUT OUTPUT PREROUTING FORWARD POSTROUTING INPUT OUTPUT gt PREROUTING gt 是否为本机 gt FORWARD gt POSTROUTING gt 其他主机 所以
  • 浅谈一致性哈希算法 consistent hashing

    接触过分布式的小伙伴一定对一致性哈希算法这个词语不陌生 xff0c 那么到底什么是一致性哈希算法呢 xff1f 了解一致性哈希算法之前我们先了解下哈希取模 假设我们有三台服务器 xff0c 缓存3万张图片 当然我们可以均匀的分配到每个服务器
  • ubuntu20.04启用SSH

    新安装的ubuntu20 04默认是没有开启ssh的 xff0c 所以无法使用ssh登录系统 1 安装openssh server span class token function sudo span span class token f
  • 密码生成器

    import random def Range get num alist listout 61 while num gt 0 listout append alist random randint 0 len alist 1 num 61
  • centos7安装oracle中遇到的常见问题解决方法

    1 安装图形界面 yum y install gnome 2 安装vnc server yum y install vnc server vncpasswd 设置密码 vncserver启动vnc windows安装vnc客户端客户端 通过
  • java中keytool生成的jks证书转换为openssl格式证书

    一 通常jks文件包含了服务器的私钥 server key xff0c 服务器证书 server crt 根证书 ca crt 二 通过java的keytool工具导出成 PKCS12 格式文件 my p12 keytool importk
  • IBMX3650M4安装win2008Server操作指南

    IBMX3650M4安装win2008Server操作指南 由于IBM服务器是IBM原有的Linux系统 xff0c 所以需要在此硬件上安装Win 2008 Server系统 xff08 以下简称win8 xff09 xff0c 中间遇到了
  • windows远程桌面连接到服务器黑屏问题

    任务管理器使用组合键 Ctrl 43 Alt 43 End xff0c 于是打开了远程电脑的任务管理器 xff0c 取消 xff0c 即可返回桌面正常显示
  • p2p数据分析

    大数据在许多国家具有战略意义 xff0c 其原因不仅在少数巨头公司的应用 xff0c 而是大 中 小 微企业乃至个人 xff0c 都能利用大数据来创造新的价值 而互联网本身就是一个大数据的金矿 xff0c 利用它创造价值 xff0c 是时代
  • 关于The GPG keys listed for the "***" repository are already installed but they are not corret

    这个问题是在自己制作的repo源码库的时候出现的 xff0c 从字面上理解 xff0c 是 为 源码仓库出示的GPG密钥已经安装 xff0c 但不正确 首先 xff0c GPG密钥存在的目的是处于安全和规范考虑 xff0c RedHat在发
  • __stack_chk_fail问题分析

    一 问题 进程收到SIGABRT 信号异常退出 xff0c 异常调用栈显示 stack chk fail Build fingerprint 39 Pico A7H10 PICOA7H10 10 5 5 0 smartcm 16769120
  • 十套精美个人博客网站模板

    文件资源 点击下载 展示在下方 xff0c 点击你想下载的文件 xff0c 然后点击普通下载就能下载了 紫色的图片博客个人页面模板 红色的微博社交平台HTML模板 响应式生活博客设计网站HTML5模板 程序员个人博客模板 响应式的互联网IT
  • 高性能无锁环形队列 Disruptor

    Disruptor 环形队列 JLog 秒级百G级日志搜集 传输 存储解决方案 高性能无锁队列 Disruptor 高性能队列 Disruptor 使用教程 高性能队列Disruptor框架的详细说明与实战使用 SpringBoot 并发框

随机推荐

  • ubuntu20.04更换阿里的软件源

    新安装的ubuntu20 04的软件源是使用的国外的源 xff0c 因此在使用apt安装软件时速度并不怎么快 xff0c 建议大家更换为国内的源 xff0c 这样在使用apt安装软件时速度会有明显的提升的 ubuntu20 04 apt的配
  • mpi运行窗口无反应或者闪退

    原因有三 1 xff0c 服务未启动 2 xff0c 系统防火墙拦截
  • Newtonsoft.Json使用,C# Json文件读取,写入

    用学校作为例子 xff0c 有学校名称 xff0c 学校下面有班级 xff0c 班级有名字 xff0c 班级下面有学生 xff0c 这里面有数组 xff0c 有字段 using System using System Collections
  • Motrix全能下载工具使用

    Motrix是一款界面简约 功能丰富 专业可靠的全能下载工具 先下载 CSDN下载 Motrix zip下载 官方下载地址 Motrix 打开Motrix xff0c 将种子文件放到这里 开始下载
  • ActiveMQ-JMS(五):ObjectMessage的安全问题

    安全问题 按照apache官网的说明 xff0c 为了避免收到恶意代码 xff0c 引入了安全机制 xff0c 只允许指定的包里的对象能够被传输 原文如下 xff1a ObjectMessage objects depend on Java
  • 剑指offer 03

    span class token keyword class span span class token class name Solution span span class token punctuation span span cla
  • 「得印度者,得天下」聊聊你不知道的印度在线视频江湖

    印度 xff0c 一个神奇古老的国度 千百年来 xff0c 恒河水鉴证了古印度王朝的兴衰更迭 xff0c 壮丽的历史文化 xff0c 和印度文明缘起缘灭的生死轮回 时光飞转 xff0c 来到公元 2018年 恒河水波澜不惊一切如昨 xff0
  • Trinity简介(1)--用于无参考基因组的转录组de novo组装

    一 Trinity简介 Trinity xff0c 是由 the Broad Institute 开发的转录组de novo组装软件 xff0c 由三个独立的软件模块组成 xff1a Inchworm Chrysalis和Butterfly
  • Trinity进行转录组组装(2))

    1 Trinity进行转录组组装 Trinity进行转录组组装的典型命令如下 opt biosoft trinityrnaseq r20131110 Trinity pl seqType fq JM 50G left sample1 1 c
  • python的两种退出方式

    os exit vs sys exit 转自 xff1a http www cnblogs com gaott archive 2013 04 12 3016355 html 概述 python的程序有两种退出方式 xff1a os exi
  • R语言数据类型转化

    R语言数据类型转化 转自 xff1a http www wangluqing com 2014 09 10 r share34 有时候 xff0c 对于一些问题 xff0c 需要进行数据类型之间的转换 R提供了基本类型转换函数以解决数据类型
  • ubuntu20.04安装中文输入法

    虽然搜狗的官网已经宣传说已经支持2004 2010 xff0c 但是支持的并不完美 xff0c 闪退 xff0c 打不出字各种问题不断 xff0c 所以本文带领大家安装几款能够正常使用的中文输入法 但是正在我要发这篇博客的时候 xff0c
  • R语言做柱状图

    R语言做柱状图 转自 xff1a http www phperz com article 16 0102 180120 html 条形图代表在与条成比例的变量的值的长度矩形条数据 R使用函数barplot 来创建柱状图 R能够绘制柱状图垂直
  • R语言 PCA(主成分分析)

    R语言 PCA 转自 xff1a http www cnblogs com longzhongren p 4300593 html 1 关键点 综述 xff1a 主成分分析 因子分析 典型相关分析 xff0c 三种方法的共同点主要是用来对数
  • 使用Pandas对数据进行筛选和排序

    使用Pandas对数据进行筛选和排序 转自 xff1a http bluewhale cc 2016 08 06 use pandas filter and sort html 筛选和排序是Excel中使用频率最多的功能 xff0c 通过这
  • linux 下安装blat软件

    linux 下安装blat软件 blat是一款很经典的比对工具 xff0c 与blast相比 xff0c 具有速度快 共线性输出比对结果等优点 但是 xff0c blat源码包里面的README文件写得很不清楚 xff0c 这里 xff0c
  • 基于统计的压缩算法:游程编码

    原网址 xff1a http www cnblogs com xudong bupt p 3761417 html 基于统计的压缩算法 xff1a 游程编码 1 游程编码概念 游程编码又称 运行长度编码 或 行程编码 xff0c 是一种统计
  • BWT (Burrows–Wheeler_transform)数据转换算法

    原网址 xff1a https blog csdn net luanzheng 365 article details 78575429 BWT Burrows Wheeler transform 数据转换算法 1 什么是BWT 压缩技术主
  • pip使用豆瓣的镜像源

    抄自 xff1a https www cnblogs com ZhangRuoXu p 6370107 html pip使用豆瓣的镜像源 豆瓣镜像地址 xff1a https pypi douban com simple 虽然用easy i
  • PyVCF

    抄自 xff1a https www cnblogs com nkwy2012 p 9204088 html vcf文件的全称是variant call file xff0c 即突变识别文件 xff0c 它是基因组工作流程中产生的一种文件