wgetを使用して圧縮(bgz)ファイルの特定の列のみをダウンロードする方法は?

wgetを使用して圧縮(bgz)ファイルの特定の列のみをダウンロードする方法は?

182 GBの圧縮ファイル(圧縮されていないファイル)をダウンロードする必要があります。シリコンを通して)。ただし、ファイルの最初の5列(約1 GB)のみが必要です。

ファイルのサブセットをダウンロードするために使用できる素晴らしいシェル魔法はありますか?

コンテンツの99%を削除するためにファイル全体をダウンロードすると、サーバーのストレージ容量が実際に消費されます。

ダウンロード中のアイテム: gnomad.genomes.v3.1.2.sites.chr1.vcf.bgz~からgnomad.broadinstitute.org

代替ソリューションを歓迎します。圧縮されていないファイルにも機能するソリューションに興味があります。

要点は、ファイルのサブセットのみが必要なときに大容量ファイルをダウンロードしたくない場合はどうすればよいですか?

ベストアンサー1

ファイルをダウンロードし、フィルタリングし、結果をローカルディスクに書き込むことができます。

curl https://storage.googleapis.com/gcp-public-data--gnomad/release/3.1.2/vcf/genomes/gnomad.genomes.v3.1.2.sites.chr1.vcf.bgz |
    bgzip -d |
    cut -f1-5

ファイル全体をダウンロードする必要がありますが、フィルタ処理されたファイルのみがディスクに書き込まれます。

Debian では、このbgzipコマンドはパッケージによって提供されますtabix。ただし、インストールされていない場合は(gzip)を使用して圧縮ファイルをzcat読み取ることもできます。bgzipcurl … | zcat | cut -f1-5


このパイプラインに必要なデータ記憶容量についていくつかの質問があります。これは実際の実行です。このシステムでは、圧縮しても、利用可能な合計ストレージ容量はわずか2GBで、ファイルをダウンロードして保存するのに必要な182GBとは離れています。

# How much disk space available in my current directory?
df -h .
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       7.9G  5.6G  2.0G  75% /

# Download and filter the file, saving only the result
curl https://storage.googleapis.com/gcp-public-data--gnomad/release/3.1.2/vcf/genomes/gnomad.genomes.v3.1.2.sites.chr1.vcf.bgz |
bgzip -d |
cut -f1-5 > bigfile

# What did we get, and how much disk space remains?
ls -lh bigfile
-rw-r--r-- 1 roaima roaima 1.7G Feb  7 05:09 bigfile

df -h .
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       7.9G  7.2G  347M  96% /

興味深いことに、ファイルは次のように見えました。厳しくないTSV(タブ区切り値)形式。 59,160,934行のうち942行にはタブ区切りデータは含まれていません。

file bigfile
bigfile: Variant Call Format (VCF) version 4.2, ASCII text, with very long lines

おすすめ記事