You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中读取vcf.gz格式文件?

报错原因

bgzip file_name.vcf、tabix file_name.vcf.gz属于Shell命令,只能在系统终端(Windows下为CMD/PowerShell、macOS/Linux下为Terminal)执行。直接在Python交互解释器中运行这类命令,Python无法识别Shell语法,就会抛出SyntaxError: invalid syntax错误。
读取vcf.gz格式文件不需要提前手动解压,以下两种方案可直接生效:

方案1:Python标准库直接读取(无额外依赖)

使用Python内置的gzip库直接打开压缩文件逐行解析,不需要安装任何第三方包,适合简单读取场景:

import gzip

vcf_file = "file_name.vcf.gz"
# 以文本模式打开压缩vcf
with gzip.open(vcf_file, "rt", encoding="utf-8") as f:
    for line in f:
        # 跳过元信息注释行
        if line.startswith("##"):
            continue
        # 按制表符分割每行内容,可自行扩展解析逻辑
        line_content = line.strip().split("\t")
        print(line_content)
方案2:专用生物信息库读取(适合专业分析场景)

如果需要做位点过滤、基因型提取等专业vcf操作,使用pysam库可以省去手动解析格式的工作量:

  1. 先在系统终端执行安装命令(不要在Python环境内执行):
    pip install pysam
    
  2. 安装完成后在Python代码中调用读取接口:
    import pysam
    
    vcf_file = "file_name.vcf.gz"
    vcf_handle = pysam.VariantFile(vcf_file)
    # 遍历所有变异记录
    for variant in vcf_handle.fetch():
        # 可直接调用属性获取染色体、位置、参考碱基、变异碱基等信息
        print(variant.chrom, variant.pos, variant.ref, variant.alts)
    
操作提示
  • 所有命令行操作(包括安装依赖、执行bgzip/tabix建索引)都需要在系统终端完成,不要在Python的>>>交互提示符下输入非Python语法的命令。
  • 若需要使用bgzip/tabix工具,需提前在系统中部署htslib工具集,否则终端会返回命令不存在的报错。

内容的提问来源于stack exchange,提问作者Elisa L.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 13:45:30