使用pyvcf库操作VCF文件

基因组与Python --PyVCF 好用的vcf文件处理器 vcf文件解析器——PyVCF 阅读详情

pyvcf是一个用于处理VCF(Variant Call Format)文件的 Python 库。VCF文件是一种存储基因变异信息的文本格式,pyvcf库提供了便捷的接口来读取、写入和操作VCF文件中的数据。

1. 安装pyvcf

pip install pyvcf

2. 使用pyvcf库读取VCF文件

import vcf

# 定义读取的vcf文件路径
input_vcf_path = 'sample.vcf'

# 读取VCF文件
vcf_reader = vcf.Reader(open(input_vcf_path, 'r'))

# 获取VCF头信息
vcf_metadata = vcf_reader.metadata
vcf_filters = vcf_reader.filters
vcf_formats = vcf_reader.formats
vcf_infos = vcf_reader.infos

# 获取样本列表
samples = vcf_reader.samples

print('*' * 15 + 'vcf_metadata' + '*' * 15)
for key, value in vcf_metadata.items():
    print(f"{key}: {value}")
print('\n')

print('*' * 15 + 'vcf_filters' + '*' * 15)
for key, value in vcf_filters.items():
    print(f"{key}: {value}")
print('\n')

print('*' * 15 + 'vcf_formats' + '*' * 15)
for key, value in vcf_formats.items():
    print(f"{key}: {value}")
print('\n') 

print('*' * 15 + 'vcf_infos' + '*' * 15)
for key, value in vcf_infos.items():
    print(f"{key}: {value}")
print('\n')

print('*' * 15 + 'Samples' + '*' * 15)
for sample in samples:
    print(sample)
print('\n')

# 遍历VCF记录
for record in vcf_reader:
    # 获取基本信息
    # 染色体
    chrom = record.CHROM    
    # 位置  
    pos = record.POS    
    # 参考等位基因    
    ref = record.REF      
    # 替代等位基因    
    alt = record.ALT      
    # 质量值    
    qual = record.QUAL        
    # 过滤结果
    filter_result = record.FILTER  
    
    # 获取depth信息
    if 'DP' in record.INFO:
        depth = record.INFO['DP']
        
    # 获取样本信息
    for sample in record.samples:
        sample_name = sample.sample
        # 获取当前位点样本的基因型
        genotype = sample['GT']
        
        if 'DP' in sample.data._fields:
            # 获取样本当前位点的测序深度
            sample_depth = sample['DP']

        if 'GQ' in sample.data._fields:
            # 获取样本当前位点的基因型质量值
            genotype_quality = sample['GQ']
            
    # 打印一行结果, break结束循环
    print(f"chrom: {chrom}, pos: {pos}, ref: {ref}, alt: {alt}, qual: {qual}, "
          f"filter_result: {filter_result}, depth: {depth}, sample_name: {sample_name}, "
          f"genotype: {genotype}, sample_depth: {sample_depth}, genotype_quality: {genotype_quality}")

    break


pyvcf库

3. 使用pyvcf库写入变异信息至VCF文件

import vcf

# 写入的vcf文件路径
output_vcf_path = 'output.vcf'

# 读取VCF文件
vcf_reader = vcf.Reader(open(input_vcf_path, 'r'))

# 写入VCF文件
vcf_writer = vcf.Writer(open(output_vcf_path, 'w'), vcf_reader)

# 创建新的VCF记录
new_record = vcf.model._Record(
    CHROM='chr1',
    POS=10000,
    ID='.',
    REF='A',
    ALT=[vcf.model._Substitution('G')],
    QUAL=None,
    FILTER=None,
    INFO={},
    FORMAT='GT',
    sample_indexes=None,
    samples=None
)

# 写入记录
vcf_writer.write_record(new_record)

# 关闭写入器
vcf_writer.close()

4. 过滤 VCF 文件

# 根据染色体编号过滤,下列为提取chr1染色体的VCF记录
filtered_records = []
for record in vcf_reader:
    if record.CHROM == 'chr1':
        filtered_records.append(record)

# 根据基因型质量GQ和测序深度DP过滤VCF记录
filtered_records = []
  for record in vcf_reader:
  		 # 遍历全部样本
       for sample in record.samples:
           if 'GQ' in sample and sample['GQ'] > 20 and 'DP' in sample and sample['DP'] > 10:
               filtered_records.append(record)
生信软件44 - 比PyVCF更高效的VCF解析Python库cyvcf2 cyvcf2 是一个基于 Cython 的高性能 VCF 文件解析库,专门用于快速读取和处理基因组变异数据(VCF 格式)。与传统的 Python VCF 解析库(如 PyVCF)相比,cyvcf2 的解析速度可提升10-100 倍,尤其适合处理大规模基因组数据(如全基因组测序数据)。直接读取压缩的.vcf.gz文件,无需预先解压基于 C 语言优化,内存占用低,解析速度快提供类似 Python 列表的迭代接口,支持按染色体或区域查询可访问 VCF 头部的所有信息。 阅读详情

相关推荐

关于vcf文件的读取

vcf文件是生物信息学对SNP和indel进行数据分析不可绕开的一种文件格式,但是作为一种不常见的文件格式,我们时常需要对编写代码来对其进行读取。 class Record(object): ''' One line information in vcf file ''' def __init__(self, line): info = line.split("\t") self.line = line self.CHROM =

m0_46171081的博客 4100

自制手机联系人导入工具:用python生成VCF文件

工作中经常批量导入联系人,比如红米手机就不能直接导入excel表。第一个文件,是生成一个excel模板,方便我们把已有的联系人及电话号码复制到这个模板上。于是,我们用python来写一个小程序,实现这个功能。CHARSET=UTF-8:张三。CHARSET=UTF-8:张三。需要exe文件或者有何建议请留言。

weiqigreen的博客 2752

如何下载、选择dbSNP数据库的变异位点vcf文件(hg19/hg38)

创作日志: 下载的增强子数据文件里,没给增强子中包含的SNP信息,所以要自己写脚本补充。本来是想通过爬虫的方法在dbSNP的网站上边爬取边补充,但是谁知道dbSNP的搜索功能做得那么垃圾!于是就只能下载dbSNP的变异位点文件,然后再自己做处理。 当我经历了九九八十一难终于下载并解压好了120+G的vcf文件后,打印信息的时候tmd发现自己下载错了版本,我要用的是hg19,却下载成了hg38,欲哭无泪… 文件名不标版本真的很气人。于是读了读README文档,谁让以前不读呢。 具体步骤 注意:由于下载的v

qq_43722079的博客 1万+

利用PyVCF模块处理VCF文件

利用PyVCF模块处理VCF文件 转载自:微信公众号 生信说 欢迎大家扫码关注                       工欲善其事,必先利其器。 VCF,全称Variant Call Format,是生物信息学领域最常用的遗传突变存储格式。对VCF格式中遗传突变信息的挖掘是分析DNA突变的基础。本文将带你探究如何使用python的PyVCF模块解析VCF文件。   VC...

whenfree的博客 6433

Python实战:5分钟搞定VCF文件中每个样本的SNP统计(附bcftools安装指南)

本文介绍了三种高效统计VCF文件中每个样本SNP数量的Python方法,包括原生解析、结合bcftools的推荐方案以及使用PyVCF3专业库。特别推荐bcftools结合Python的方法,适用于中大型VCF文件,显著提升处理效率。文章还提供了bcftools安装指南和进阶统计技巧,帮助生物信息学分析人员快速完成SNP统计任务。

weixin_30555125的博客 493

PyVCF 变异基因数据处理

PyVCF是一个用于处理VCF(Variant CallFormat)文件的python库。它提供了许多功能来读取,过滤和修改VCF文件中的变异PyVCF是一个用于读取和写入VCF格式文件的Python库。主要功能包括:1、读取VCF文件:PyVCF提供了一个vcf.Reader()函数,可以用来打开并读取VCF文件。读取后的文件可以进行遍历,每个元素是一个vcf.model._Record的实例2、写入VCF文件: PyVCF提供了一个vcf.Writer()函数,用来写入VCF文件。

weixin_42357472的博客 1164

VCF格式解读与Pyvcf模块对其的处理

一、VCF格式解读 1、vcf格式说明 VCF格式:Variant Call Format,用于记录variants (SNP / InDel)的文件格式,关于其说明,详见:http://gatkforums.broadinstitute.org/discussion/1268/how-should-i-interpret-vcf-files-produced-by-the-gatk 2、vcf文...

小青儿的生信小课堂 3326

python操作VCF文件

安装 pip install PyVCF 使用 #如果有多个样本,可以这样访问,例如双样本,0为normal,1为tumor record.samples[0] 对vcf进行筛选,并重新生成vcf 切记用完一定要close import vcf tumor_idx=1 vcf_reader = vcf.Reader(open(filename1, 'r')) vcf_writer = vcf.Writer(open(filename2,'w'),vcf_reader) for r.

晏九的博客 4789

PyVCF 使用教程

PyVCF 使用教程 1. 项目介绍 PyVCF 是一个用于处理 Variant Call Format (VCF) 文件的开源 Python 库。VCF 是一种用于表示基因组变异的标准文件格式,广泛用于基因组学研究中。PyVCF 提供了读取、解析和写入 VCF 文件的功能,使得用户可以轻松地处理基因组变异数据。 2. 项目快速启动 首先,确保你已经安装了 Python 环境。然后,你可以使用 p...

gitblog_00156的博客 1054

python通用读取vcf文件的类(复制粘贴即可用)

主要介绍了python通用读取vcf文件的类(可以直接复制粘贴使用) ,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

转录组数据提取技巧汇总

数据整理是数据分析的前提,而数据的正确提取则是数据整理的前提。

zfyyzhys的博客 1781

vcf样本基因型提取--PyVCF处理

需要提取vcf文件的样本基因型,原始文件: 代码: import vcf vcf_reader = vcf.Reader(filename=r"I:/1000GenomeProject/vcftools_filter/chr22_filter.recode.vcf") genomeType=[] for record in vcf_reader: # 样本个数 # print(record._sample_indexes) # 样本基因型 # 把FORMAT信息作为键,后

weixin_42594968的博客 2503

新手必看!无人机定高PID调参避坑指南:从理论到实战的完整流程

本文为无人机新手提供定高PID调参的完整指南,从传感器融合到抗风策略,详细解析多传感器融合、PID控制参数调试及环境干扰应对。通过实战案例和代码示例,帮助开发者快速掌握无人机定高技术,避免常见调参陷阱,提升飞行稳定性。

spark7igniter的博客 221

在生信分析中,处理vcf 比较好用的python包推荐

(推荐)(高性能推荐)(数据分析通用)(多功能)(高级分析)

qq_40256654的博客 1074

ComfyUI的G-Dino模型加载器报错解决方案:从崩溃到重生

遇到G-Dino模型加载器报错不要慌,按照本文的步骤操作,99%的问题都能解决。模型文件正确下载到指定位置segment_anything节点安装完整且无冲突需要补充更多细节或故障排除方法吗?可以随时告诉我。

2301_78150483的博客 4019

AI应用架构师总结:智能问答系统用户意图识别的8种方法与实践!

意图识别是智能问答系统的大脑入口,其技术水平决定了系统能否准确捕捉用户的核心诉求。本文系统剖析了从基础规则到前沿PLM的8种核心意图识别方法透明简单,冷启动快,维护成本高。中等规模场景基线,依赖特征工程。利用词义和局部/序列信息,训练成本高。当前最优精度,需大量资源。添加意图灵活,冷启动友好,精度可能略逊。提升鲁棒性,系统变复杂。解决歧义和自然交互的关键(多轮)。增强专业领域理解和推理能力。成功的意图识别模块需要:精准的意图定义(Schema)是前提!

AI云原生与云计算技术学院 1631

PyVCF

抄自:https://www.cnblogs.com/nkwy2012/p/9204088.html vcf文件的全称是variant call file,即突变识别文件,它是基因组工作流程中产生的一种文件,保存的是基因组上的突变信息。通过对vcf文件进行分析,可以得到个体的变异信息。嗯,总之,这是很重要的文件,所以怎么处理它也显得十分重要。它的文件信息如下: 文件的开头是一堆以“##”开...

悠悠的博客 2090

深度学习---双层神经网络中矩阵的运算及其含义记录

深度学习---双层神经网络中矩阵的运算及其含义记录神经网络的正向传播与反向传播正向传播第一层的权重矩阵第一层的输入矩阵Z^1^ = W^1^X^1^ + b^1^A^1^ = σ(Z^1^)第二层的权重矩阵第二层的输入矩阵Z^2^ = W^2^A^1^ + b^2^反向传播dz^2^ = A^2^ - Ydw^2^ = 1/n dz^2^A^1T^db^2^ = 1/n np.sum(dz^2...

qq_43228441的博客 3742

基因组与Python --PyVCF 好用的vcf文件处理器

vcf文件的全称是variant call file,即突变识别文件,它是基因组工作流程中产生的一种文件,保存的是基因组上的突变信息。通过对vcf文件进行分析,可以得到个体的变异信息。嗯,总之,这是很重要的文件,所以怎么处理它也显得十分重要。它的文件信息如下: 文件的开头是一堆以“##”开始的注释行,包含了文件的基本信息。然后是以“#”开头的一行,共9+n个部分,前九部分标注的是后面行每部分代表...

weixin_34200628的博客 541

【S32K3 MCAL配置】-4.1-CAN Driver:如何解决CAN帧发送丢帧问题

【S32K3 MCAL配置】-4.1-CAN Driver:如何解决CAN帧发送丢帧问题

「汽车电子助手」的博客 1438

Verilog HDL 100道面试题及参考答案

在 Verilog HDL 中,参数(parameter)和宏定义(define)都可用于定义常量,但它们存在诸多不同之处。参数(parameter)是模块内部的常量定义,具有局部性。它在模块内部起作用,不同模块可以有同名的参数,且值可以不同。参数通常用于定义模块的一些配置信息,例如数据位宽、延迟时间等。参数的定义和使用是在模块的作用域内进行的,通过参数传递可以方便地对模块进行配置。endmodule在上述代码中,WIDTH是一个参数,用于定义加法器的位宽。通过改变WIDTH。

大模型大数据攻城狮的专栏 1728

VCF文件处理工具PyVCF

vcf格式示例 ##fileformat=VCFv4.1 ##FILTER=<ID=LowQual,Description=”Low quality”> ##FORMAT=<ID=AD,Number=.,Type=Integer,Description=”Allelic depths for the ref and alt alleles in the ...

weixin_30628077的博客 691

Vibe Coding 实战指南:用 3 类社区资源实现每周高效追新

介绍一种分层技术雷达校准方法,通过领域过滤器(L1技术栈锚定、L2能力映射、L3场景收敛)精准筛选AI编程相关更新,结合可验证的Shell命令与CI任务卡,将信息过载压缩为可执行、可审计的工程实践。

weixin_27251469的博客 329

基因数据:使用Python处理vcf文件

使用pyvcf扩展包:good site: https://pypi.python.org/pypi/PyVCF/      http://pyvcf.readthedocs.io/en/latest/使用pysam扩展包:good site: http://pysam.readthedocs.io/en/latest/index.html        http://www.cnblogs

vickyleexy's blog 6813

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

pyvcf 模块

安装: sudo pip install pyvcf 然后报错说没有counter模块,于是: sudo pip install counter 然后就安装好了   简单实用: import vcf  myvcf = vcf.Reader(open('testpyvcf', 'r'))   #和python内置的文件类型一样,循环完不会从头开始。  f

高锦的博客 2312

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

上一篇: 生信技能62 - 常用机器学习算法的R语言实现
下一篇: 测序深度、测序覆盖度以及RPKM-FPKM-TPM-CPM
生信与基因组学
博客等级 码龄9年 7202粉丝 257原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

生信与基因组学

每一份鼓励是我坚持下去动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值