Compression of files in parallel using GNU parallel
*Update*
In the comments, Ole Tange (GNU Parallel's author!) himself weighed in with a much more elegant method than what I previously wrote.
*Resuming previous post*
I'm very fond of GNU parallel for making it easy to parallelize commands. Here is an example of using it to parallelize gzip compression and decompression of a set of fastq format files. The --gnu option designates that we want to use GNU parallel, and the -j-2 option designates that we want to use 2 less than the number of available processors.
In the comments, Ole Tange (GNU Parallel's author!) himself weighed in with a much more elegant method than what I previously wrote.
parallel --gnu -j-2 --eta gzip ::: *.fastq parallel --gnu -j-2 --eta gunzip ::: *.fastq.gzAnd pointed out the helpful bibtex option:
parallel --gnu --bibtexWhich returns the bibtex citation:
@article{Tange2011a,
title = {GNU Parallel - The Command-Line Power Tool},
author = {O. Tange},
address = {Frederiksberg, Denmark},
journal = {;login: The USENIX Magazine},
month = {Feb},
number = {1},
volume = {36},
url = {http://www.gnu.org/s/parallel},
year = {2011},
pages = {42-47}
}
*Resuming previous post*
I'm very fond of GNU parallel for making it easy to parallelize commands. Here is an example of using it to parallelize gzip compression and decompression of a set of fastq format files. The --gnu option designates that we want to use GNU parallel, and the -j-2 option designates that we want to use 2 less than the number of available processors.
#!/bin/bash
#Gzip compress files with GNU parallel
#Use this for compression
ls ./*.fastq | parallel --gnu -j-2 --eta \
'gzip {}'
#Use this for decompression
ls ./*.fastq.gz | parallel --gnu -j-2 --eta \
'gzip -d {}'
Helpful documentation for GNU parallel can be found here.

It may be easier to read:
ReplyDeleteparallel --gnu -j-2 --eta gzip ::: *.fastq
parallel --gnu -j-2 --eta gunzip ::: *.fastq.gz
Also when using GNU Parallel for research remember --bibtex.
Thank you for the more elegant solution, and for writing GNU Parallel!
Delete