【问题标题】:Is it possible to partially unzip a .vcf file?是否可以部分解压缩 .vcf 文件?
【发布时间】:2019-05-08 18:32:49
【问题描述】:

我有一个约 300 GB 的压缩 vcf 文件 (.vcf.gz),其中包含大约 700 条狗的基因组。我只对其中的几只狗感兴趣,目前我没有足够的空间来解压缩整个文件,尽管我正在准备一台计算机来执行此操作。是否可以仅解压缩文件的一部分以开始测试我的脚本?

我正在尝试将特定 SNP 置于样本子集的某个位置。我尝试使用 bcftools 无济于事:(如果有人能找出问题所在,我也将不胜感激。我为输出创建了一个空文件(722g.990.SNP.INDEL。 chrAll.vcf.bgz) 但它返回以下错误)

bcftools view -f PASS --threads 8 -r chr9:55252802-55252810 -o 722g.990.SNP.INDEL.chrAll.vcf.gz -O z 722g.990.SNP.INDEL.chrAll.vcf.bgz

无法识别输出类型“722g.990.SNP.INDEL.chrAll.vcf.bgz”

我打算尝试awk,但需要先解压缩文件。是否可以部分解压缩,以便我可以试试这个?

【问题讨论】:

  • 也许这只是一个错字.vcf.bgz -> .vcf.bz?
  • 不幸的是,我尝试了很多不同的输出文件类型。我希望它像一个错字一样简单......
  • 我的意思是,您确定"722g.990.SNP.INDEL.chrAll.vcf.bgz" 在输出错误消息中吗?因为该术语不在您提供的命令中。
  • @davedwards 你是对的,错误信息与命令不匹配,但两者都不起作用。我会改正那个错字
  • 来自bcftools 的确切(逐字)错误消息是什么?如果对输入文件运行file 命令,它会打印什么?

标签: linux gzip bioinformatics bcftools vcf-variant-call-format


【解决方案1】:

仔细检查你的命令行是否有bcftools view

  1. 当您为 -O(大写 O)命令行指定无效值时,bcftools 会打印错误消息 “无法识别输出类型“某物”像这样的选项-O something。根据您收到的错误消息,您可能已将文件名放在那里。

  2. 检查您的命令中的输入和输出文件名是否错误。注意-o(小写o)命令行选项指定output文件名,命令行末尾的文件名是input文件名字。

另外,您写道,您为输出创建了一个空文件。您不需要这样做,bcftools 会创建输出文件。

【讨论】:

  • 好吧太棒了,我没有意识到那些应该是相反的。该错误消息似乎已消失。但是现在它说:“[W::hts_idx_load2] 索引文件比数据文件旧:Yadayada.vcf.gz.tbi,你知道这里发生了什么吗?
  • 我认为这可能是误报错误,因为我得到了一个包含数据的输出文件。不知道如何查看该数据...
  • 该消息只是说您拥有的索引是在它应该被索引的文件之前生成的。索引可能与 vcf 文件不匹配,如果使用会产生错误的结果。使用tabix 重新生成索引,然后重试vcftools 命令。
【解决方案2】:

我对 bcftools 没有太多经验,但一般来说,如果您想使用 awk 来操作 gzip 压缩文件,您可以通过管道传输到它以便仅根据需要解压缩文件,您也可以通过管道传输结果直接通过gzip,所以它也被压缩,例如

gzip -cd largeFile.vcf.gz | awk '{ <some awk> }' | gzip -c > newfile.txt.gz

另外,zcatgzip -cd 的别名,-c 是标准输出的输入/输出,-d 是解压缩。

附带说明,如果您尝试仅对大文件的一部分执行操作,您可能还会发现出色的工具 less 很有用,它可用于查看仅加载所需部分的大文件,@ 987654328@ 选项对于具有多列的宽格式特别有用,因为它停止换行,-N 用于显示行号。

less -S largefile.vcf.gz 

使用q 退出视图,g 会将您带到文件顶部。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-27
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多