次の側面を持つ.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
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
だから私は次のコマンドラインを作成しました。
zcat input.vcf.gz | sed 's/^chr//' > output.vcf.gz
効果がありました。問題は、出力ファイルを拡張子がvcf.gzの圧縮ファイルとして保存したいということです。 「output.vcf.gz」と書いても出力ファイルは圧縮されません。
圧縮ファイルを変更して圧縮ファイルとして保存するにはどうすればよいですか?
とても感謝しています!
答え1
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
# ^^^^
または
gunzip -c input.vcf.gz | sed 's/^chr//' | gzip > output.vcf.gz
#^^^^^^^^ ^^^^
一貫性が好きなら。
それはすべてです。ここにあるすべてがそれです。
ああ、賭けます。あなたは生物情報学をしており、vcfファイルは実際には「Variant Call Format」ファイルであり、おそらくかなり大きいでしょう。gzip
非常に高速の圧縮解除ではありませんが、かなり遅い圧縮機です。 gzip圧縮ファイル形式が利用できない場合、
unpigz -c input.vcf.gz | sed 's/^chr//' | pigz > output.vcf.gz
#^^^^^^^^ ^^^^
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
答え2
パイプラインにgzipを追加するだけです。
zcat input.vcf.gz | sed 's/^chr//' | gzip > output.vcf.gz