我有一个 .vcf.gz 文件,具有以下方面:
#CHROM POS ID REF ALT
chr1 10894 chr1:10894:G:A G A
chr1 10915 chr1:10915:G:A G A
chr1 10930 chr1:10930:G:A G A
Run Code Online (Sandbox Code Playgroud)
我想修改 CHROM 列以删除“chr”并将其替换为任何内容,因此我希望得到如下结果:
#CHROM POS ID REF ALT
1 10894 chr1:10894:G:A G A
1 10915 chr1:10915:G:A G A
1 10930 chr1:10930:G:A G A
Run Code Online (Sandbox Code Playgroud)
因此,我编写了以下命令行:
zcat input.vcf.gz | sed 's/^chr//' > output.vcf.gz
Run Code Online (Sandbox Code Playgroud)
它起作用了。问题是我想将输出文件保存为压缩文件,扩展名为 vcf.gz。即使我写了“output.vcf.gz”,输出文件也不会被压缩。
如何修改压缩文件然后再次将其另存为压缩文件?
非常感谢!
Mar*_*ler 12
zcat
实际上只是 的一个便利函数gzip
;gzip
//引用gunzip
手册zcat
页( man zcat
):
该
zcat
命令与 相同gunzip -c
。
正如您可以在管道程序链中使用gunzip -c
(或) 一样,您可以使用再次压缩:zcat
gzip
zcat input.vcf.gz | sed 's/^chr//' | gzip > output.vcf.gz
# ^^^^
Run Code Online (Sandbox Code Playgroud)
或者
gunzip -c input.vcf.gz | sed 's/^chr//' | gzip > output.vcf.gz
#^^^^^^^^ ^^^^
Run Code Online (Sandbox Code Playgroud)
如果你喜欢一致性。
就是这样。这里的所有都是它的。
哦,在这里打赌:你正在做生物信息学,你的 vcf 文件实际上是一个“Variant Call Format”文件,并且可能相当大。gzip
不是一个非常快的解压缩器,而是一个相当慢的压缩器。如果您无法使用 gzip 压缩文件格式,
unpigz -c input.vcf.gz | sed 's/^chr//' | pigz > output.vcf.gz
#^^^^^^^^ ^^^^
Run Code Online (Sandbox Code Playgroud)
pigz
与 完全相同gzip
,但可扩展到多个 CPU 核心。用它。
如果您不必将这些文件保存在 gzip 容器中,但可以自由选择更现代的格式,
unpigz -c input.vcf.gz | sed 's/^chr//' | zstd -T0 -8 > output.vcf.zst
# decompress using | | ^^^^ ^^^ ^^
# unpigz instead of | modify | \--\ \-\ \\ compression ratio
# gzip/zcat | | \ \ \ -0=very fast 18=very compressed
# | | \ \ -8 is much better compressed
# | | \ \ than gzip --best, but faster
# | | \ \
# | | \ \- Use as many threads as CPU cores
# | | \
# | | \
# | | \---- Use zstd instead of gzip
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
974 次 |
最近记录: |