我已经从-https://gnomad.broadinstitute.org/downloads下载了gnomAD文件
这是bgz文件
当我使用扩展时:
zcat gnomad.genomes.r2.1.1.sites.2.vcf.bgz > gnomad.genomes.r2.1.1.sites.2.vcf
输出的VCF文件超过330GB。我的笔记本电脑上没有可用的空间。
有没有一种我可以扩展的方式-比如说1 GB的bgz文件或仅100000行来自bgz文件?
根据我的判断,bgz
文件与gzip
兼容,VCF
文件是纯文本文件。由于它是一个gzip
文件,而不是.tar.gz
,所以该解决方案不需要列出任何存档内容,并且可以简化一些事情。
这可能可以通过多种方式完成,我怀疑这是最好的方式,但是我已经能够使用python3
中的以下代码成功地将前100,000行解压缩到文件中(它也可以在较早的版本回到2.7
):
#!/usr/bin/env python3
import gzip
ifile = gzip.GzipFile("gnomad.genomes.r2.1.1.sites.2.vcf.bgz")
ofile = open("truncated.vcf", "wb")
LINES_TO_EXTRACT = 100000
for line in range(LINES_TO_EXTRACT):
ofile.write(ifile.readline())
ifile.close()
ofile.close()
我在您的示例文件中尝试过此操作,而截断后的文件约为1.4 GiB。在类似树莓派的计算机上花费了大约1分钟40秒,因此虽然速度很慢,但并非如此。
虽然此解决方案速度较慢,但由于以下原因,它对您的应用程序有好处:
它最大程度地减少了磁盘和内存的使用,否则对于像这样的大文件可能会出现问题。
它将文件精确地剪切到给定的行数,这避免了将输出文件中途截断。
如果要制作一个小型的CLI实用程序以这种方式解析其他文件,可以从命令行轻松解析这三个输入参数。