0

我是python和生物信息学的新手。

我正在尝试首先将 VCF 文件加载到内存中,然后使用 pyvcf 库对其进行解析,但出现此错误:“IndexError: list index out of range*” 我在互联网上搜索过,但我没有找不到任何答案。

顺便说一句,代码是:

import mmap
import vcf
file_chr_mt_vcf = 'ALL.chrMT.phase3_callmom-v0_4.20130502.genotypes.vcf'
chr_mt = open(file_chr_mt_vcf, 'rb')
m = mmap.mmap(chr_mt.fileno(), 0, access = True)
chr_mt = vcf.Reader(m)
for i in chr_mt:
    print i.is_snp 

我应该怎么办?有没有更好的方法来做到这一点?

应该提到的是,更改 pyvcf 库并移动到另一个库是不可能的,因为我已经编写了数百行代码来完成一些任务。我只想将 vcf 文件加载到内存中,然后使用 pyvcf 执行这些任务。

4

1 回答 1

0

我想您必须重新检查“m = mmap.mmap(chr_mt.fileno(), 0, access = True)”代码。如果这引发错误,则不会在以下代码行中读取 vcf。此外,即使读取了 vcf 文件,如果您尝试通过执行 for 循环来获取 vcf 中的每个条目。你应该试试:

for record in chr_mt:
    print(record)

这是为了检查 vcf 是否被正确读取。for 循环中使用的“记录”一词我猜是默认名称。尝试这个。

于 2021-03-16T10:12:59.647 回答