cyvcf2简介
cyvcf2 是一个基于 Cython 的高性能 VCF 文件解析库,专门用于快速读取和处理基因组变异数据(VCF 格式)。与传统的 Python VCF 解析库(如 PyVCF)相比,cyvcf2 的解析速度可提升 10-100 倍,尤其适合处理大规模基因组数据(如全基因组测序数据)。
特点:
- 直接读取压缩的
.vcf.gz
文件,无需预先解压 - 基于 C 语言优化,内存占用低,解析速度快
- 提供类似 Python 列表的迭代接口,支持按染色体或区域查询
- 可访问 VCF 头部的所有信息
- 速度比PyVCF快,读取1GB大小的VCF,cyvcf2耗时10s, PyVCF大约5min
- 占用内存比PyVCF小很多
1. 安装
对于Ubuntu等linux系统,安装出错可尝试安装 Cython 和 zlib 开发库。
# Ubuntu安装依赖
sudo apt install python3-dev zlib1g-dev
# Centos安装依赖
sudo yum install python3-devel zlib-devel
pip install cyvcf2
# 无法调用库可尝试: python -m pip install --user cyvcf2
2. 基本用法
cyvcf2读取的VCF文件最好是压缩格式,并创建索引。
# vcf压缩, 并创建gz文件索引
bgzip sample.vcf && tabix -p vcf sample.vcf.gz
2.1 读取VCF文件
from cyvcf2 import VCF
# 读取压缩的 VCF 文件
vcf = VCF("sample.vcf.gz")
# 查看样本列表
print("样本:", vcf.samples)
# 输出: ['Sample1']
# 查看染色体列表(前三个)
print("染色体:", list(set(vcf.seqnames))[:3])
# 处理完成后手动关闭文件
vcf.close()
2.2 遍历变异位点
基因型中的 -1
表示缺失。