SlideShare une entreprise Scribd logo
1  sur  51
Télécharger pour lire hors ligne
LAB MEETING—
TECHNICAL
TALK
COBY VINER
USE CASES
BASIC EXAMPLES
BASIC SYNTAX
ADDITIONAL
SYNTAX
MORE EXAMPLES
REAL EXAMPLES
LAB MEETING—TECHNICAL TALK
GNU PARALLEL
O. TANGE, “GNU PARALLEL - THE COMMAND-LINE
POWER TOOL”, ;login: The USENIX Magazine, VOL. 36, NO.
1, PP. 42–47, FEB. 2011
Coby Viner
Hoffman Lab
Wednesday, April 13, 2016
LAB MEETING—
TECHNICAL
TALK
COBY VINER
USE CASES
BASIC EXAMPLES
BASIC SYNTAX
ADDITIONAL
SYNTAX
MORE EXAMPLES
REAL EXAMPLES
OVERVIEW
WHY USE GNU PARALLEL?
BASIC EXAMPLES FROM THE TUTORIAL
BASIC ELEMENTS OF SYNTAX [FROM THE TUTORIAL]
MUCH MORE SYNTAX FOR MANY OTHER TASKS
MORE TUTORIAL EXAMPLES
SOME EXAMPLES OF MY GNU PARALLEL USAGE
LAB MEETING—
TECHNICAL
TALK
COBY VINER
USE CASES
BASIC EXAMPLES
BASIC SYNTAX
ADDITIONAL
SYNTAX
MORE EXAMPLES
REAL EXAMPLES
WHY USE GNU PARALLEL?
a shell tool for executing jobs in parallel using one
or more computers.
LAB MEETING—
TECHNICAL
TALK
COBY VINER
USE CASES
BASIC EXAMPLES
BASIC SYNTAX
ADDITIONAL
SYNTAX
MORE EXAMPLES
REAL EXAMPLES
WHY USE GNU PARALLEL?
a shell tool for executing jobs in parallel using one
or more computers.
Easily parallelize perfectly parallel tasks
LAB MEETING—
TECHNICAL
TALK
COBY VINER
USE CASES
BASIC EXAMPLES
BASIC SYNTAX
ADDITIONAL
SYNTAX
MORE EXAMPLES
REAL EXAMPLES
WHY USE GNU PARALLEL?
a shell tool for executing jobs in parallel using one
or more computers.
Easily parallelize perfectly parallel tasks
For each chromosome. . .
LAB MEETING—
TECHNICAL
TALK
COBY VINER
USE CASES
BASIC EXAMPLES
BASIC SYNTAX
ADDITIONAL
SYNTAX
MORE EXAMPLES
REAL EXAMPLES
WHY USE GNU PARALLEL?
a shell tool for executing jobs in parallel using one
or more computers.
Easily parallelize perfectly parallel tasks
For each chromosome. . .
For each sex, for each technical replicate, for each
hyper-parameter(s)
LAB MEETING—
TECHNICAL
TALK
COBY VINER
USE CASES
BASIC EXAMPLES
BASIC SYNTAX
ADDITIONAL
SYNTAX
MORE EXAMPLES
REAL EXAMPLES
WHY USE GNU PARALLEL?
a shell tool for executing jobs in parallel using one
or more computers.
Easily parallelize perfectly parallel tasks
For each chromosome. . .
For each sex, for each technical replicate, for each
hyper-parameter(s)
Job submission scripts within a for loop
LAB MEETING—
TECHNICAL
TALK
COBY VINER
USE CASES
BASIC EXAMPLES
BASIC SYNTAX
ADDITIONAL
SYNTAX
MORE EXAMPLES
REAL EXAMPLES
WHY USE GNU PARALLEL?
a shell tool for executing jobs in parallel using one
or more computers.
Easily parallelize perfectly parallel tasks
For each chromosome. . .
For each sex, for each technical replicate, for each
hyper-parameter(s)
Job submission scripts within a for loop
Improved, cleaner, syntax (for the programmer), even in
serial
LAB MEETING—
TECHNICAL
TALK
COBY VINER
USE CASES
BASIC EXAMPLES
BASIC SYNTAX
ADDITIONAL
SYNTAX
MORE EXAMPLES
REAL EXAMPLES
WHY USE GNU PARALLEL?
a shell tool for executing jobs in parallel using one
or more computers.
Easily parallelize perfectly parallel tasks
For each chromosome. . .
For each sex, for each technical replicate, for each
hyper-parameter(s)
Job submission scripts within a for loop
Improved, cleaner, syntax (for the programmer), even in
serial
Facile interleaving of tasks, in the order one is thinking
about them
A BASIC [MAN PAGE] EXAMPLE: “WORKING
AS XARGS -N1. ARGUMENT APPENDING”
find . -name '*.html' | parallel gzip --best
A BASIC [MAN PAGE] EXAMPLE: “WORKING
AS XARGS -N1. ARGUMENT APPENDING”
find . -name '*.html' | parallel gzip --best
find . -type f -print0 | 
parallel -q0 perl -i -pe 's/FOO BAR/FUBAR/g'
LAB MEETING—
TECHNICAL
TALK
COBY VINER
USE CASES
BASIC EXAMPLES
BASIC SYNTAX
ADDITIONAL
SYNTAX
MORE EXAMPLES
REAL EXAMPLES
EASY INSTALLATION FROM SOURCE
LAB MEETING—
TECHNICAL
TALK
COBY VINER
USE CASES
BASIC EXAMPLES
BASIC SYNTAX
ADDITIONAL
SYNTAX
MORE EXAMPLES
REAL EXAMPLES
EASY INSTALLATION FROM SOURCE
LAB MEETING—
TECHNICAL
TALK
COBY VINER
USE CASES
BASIC EXAMPLES
BASIC SYNTAX
ADDITIONAL
SYNTAX
MORE EXAMPLES
REAL EXAMPLES
EASY INSTALLATION FROM SOURCE
LAB MEETING—
TECHNICAL
TALK
COBY VINER
USE CASES
BASIC EXAMPLES
BASIC SYNTAX
ADDITIONAL
SYNTAX
MORE EXAMPLES
REAL EXAMPLES
EASY INSTALLATION FROM SOURCE
LAB MEETING—
TECHNICAL
TALK
COBY VINER
USE CASES
BASIC EXAMPLES
BASIC SYNTAX
ADDITIONAL
SYNTAX
MORE EXAMPLES
REAL EXAMPLES
EASY INSTALLATION FROM SOURCE
ANOTHER BASIC [MAN PAGE] EXAMPLE:
“INSERTING MULTIPLE ARGUMENTS”
bash: /bin/mv: Argument list too long
ls | grep -E '.log$' | parallel mv {} destdir
ANOTHER BASIC [MAN PAGE] EXAMPLE:
“INSERTING MULTIPLE ARGUMENTS”
bash: /bin/mv: Argument list too long
ls | grep -E '.log$' | parallel mv {} destdir
ls | grep -E '.log$' | parallel -m mv {} destdir
BASIC ELEMENTS OF SYNTAX [FROM THE
TUTORIAL]
Input:
parallel echo ::: A B C # command line
cat abc-file | parallel echo # from STDIN
parallel -a abc-file echo # from a file
BASIC ELEMENTS OF SYNTAX [FROM THE
TUTORIAL]
Input:
parallel echo ::: A B C # command line
cat abc-file | parallel echo # from STDIN
parallel -a abc-file echo # from a file
Output [line order may vary]:
A
B
C
BASIC ELEMENTS OF SYNTAX [FROM THE
TUTORIAL]
Multiple inputs.
Input:
parallel echo ::: A B C ::: D E F
cat abc-file | parallel -a - -a def-file echo
parallel -a abc-file -a def-file echo
cat abc-file | parallel echo :::: - def-file # alt. file
parallel echo ::: A B C :::: def-file # mix cmd. and file
BASIC ELEMENTS OF SYNTAX [FROM THE
TUTORIAL]
Multiple inputs.
Input:
parallel echo ::: A B C ::: D E F
cat abc-file | parallel -a - -a def-file echo
parallel -a abc-file -a def-file echo
cat abc-file | parallel echo :::: - def-file # alt. file
parallel echo ::: A B C :::: def-file # mix cmd. and file
Output [line order may vary]:
A D
A E
A F
B D
B E
B F
C D
C E
C F
BASIC ELEMENTS OF SYNTAX [FROM THE
TUTORIAL]
Matching input.
Input:
parallel --xapply echo ::: A B C ::: D E F
BASIC ELEMENTS OF SYNTAX [FROM THE
TUTORIAL]
Matching input.
Input:
parallel --xapply echo ::: A B C ::: D E F
Output [line order may vary]:
A D
B E
C F
BASIC ELEMENTS OF SYNTAX [FROM THE
TUTORIAL]
Matching input.
Input:
parallel --xapply echo ::: A B C ::: D E F
Output [line order may vary]:
A D
B E
C F
-xapply will wrap, if insufficient input is provided.
BASIC ELEMENTS OF SYNTAX [FROM THE
TUTORIAL]
Replacement strings: The 7 predefined replacement strings
Input:
parallel echo {} ::: A/B.C
parallel echo {.} ::: A/B.C
Output:
A/B.C
A/B
BASIC ELEMENTS OF SYNTAX [FROM THE
TUTORIAL]
Replacement strings: The 7 predefined replacement strings
Input:
parallel echo {} ::: A/B.C
parallel echo {.} ::: A/B.C
Output:
A/B.C
A/B
Rep. String Result
. remove ext.
/ remove path
// only path
/. only ext. and path
# job number
% job slot number
BASIC ELEMENTS OF SYNTAX [FROM THE
TUTORIAL]
Customizing replacement strings
-extensionreplace to change {.} etc.
Shorthand custom (PCRE+) replacement strings
GNU parallel’s 7 replacement strings:
--rpl '{} '
--rpl '{#} $_=$job->seq()'
--rpl '{%} $_=$job->slot()'
--rpl '{/} s:.*/::'
--rpl '{//} $Global::use{"File::Basename"} 
||= eval "use File::Basename; 1;"; $_ = dirname($_);'
--rpl '{/.} s:.*/::; s:.[^/.]+$::;'
--rpl '{.} s:.[^/.]+$::'
BASIC ELEMENTS OF SYNTAX [FROM THE
TUTORIAL]
Multiple input sources and positional replacement:
parallel echo {1} and {2} ::: A B ::: C D
BASIC ELEMENTS OF SYNTAX [FROM THE
TUTORIAL]
Multiple input sources and positional replacement:
parallel echo {1} and {2} ::: A B ::: C D
Always try to define replacements, with {<>} syntax.
BASIC ELEMENTS OF SYNTAX [FROM THE
TUTORIAL]
Multiple input sources and positional replacement:
parallel echo {1} and {2} ::: A B ::: C D
Always try to define replacements, with {<>} syntax.
Test with --dry-run first.
MUCH MORE SYNTAX FOR MANY OTHER TASKS
--pipe: instead of STDIN as command args, data sent to
STDIN of command
MUCH MORE SYNTAX FOR MANY OTHER TASKS
--pipe: instead of STDIN as command args, data sent to
STDIN of command
command_A | command_B | command_C, where
command_B is slow
MUCH MORE SYNTAX FOR MANY OTHER TASKS
--pipe: instead of STDIN as command args, data sent to
STDIN of command
command_A | command_B | command_C, where
command_B is slow
Remote execution to directly parallelize over multiple
machines
MUCH MORE SYNTAX FOR MANY OTHER TASKS
--pipe: instead of STDIN as command args, data sent to
STDIN of command
command_A | command_B | command_C, where
command_B is slow
Remote execution to directly parallelize over multiple
machines
Working directly with a SQL database
MUCH MORE SYNTAX FOR MANY OTHER TASKS
--pipe: instead of STDIN as command args, data sent to
STDIN of command
command_A | command_B | command_C, where
command_B is slow
Remote execution to directly parallelize over multiple
machines
Working directly with a SQL database
Shebang: often cat input_file | parallel command,
but can do #!/usr/bin/parallel --shebang -r echo
MUCH MORE SYNTAX FOR MANY OTHER TASKS
--pipe: instead of STDIN as command args, data sent to
STDIN of command
command_A | command_B | command_C, where
command_B is slow
Remote execution to directly parallelize over multiple
machines
Working directly with a SQL database
Shebang: often cat input_file | parallel command,
but can do #!/usr/bin/parallel --shebang -r echo
As a counting semaphore: parallel --semaphore or sem
MUCH MORE SYNTAX FOR MANY OTHER TASKS
--pipe: instead of STDIN as command args, data sent to
STDIN of command
command_A | command_B | command_C, where
command_B is slow
Remote execution to directly parallelize over multiple
machines
Working directly with a SQL database
Shebang: often cat input_file | parallel command,
but can do #!/usr/bin/parallel --shebang -r echo
As a counting semaphore: parallel --semaphore or sem
Default is one slot: a mutex
ANOTHER [MAN PAGE] EXAMPLE:
“AGGREGATING CONTENT OF FILES”
parallel --header : echo x{X}y{Y}z{Z} > 
x{X}y{Y}z{Z} 
::: X {1..5} ::: Y {01..10} ::: Z {1..5}
ANOTHER [MAN PAGE] EXAMPLE:
“AGGREGATING CONTENT OF FILES”
parallel --header : echo x{X}y{Y}z{Z} > 
x{X}y{Y}z{Z} 
::: X {1..5} ::: Y {01..10} ::: Z {1..5}
parallel eval 'cat {=s/y01/y*/=} > 
{=s/y01//=}' ::: *y01*
This runs: cat x1y*z1 > x1z1, ∀x∀z
POST-MEME2IMAGES INKSCAPE
CONVERSIONS FOR PUBLICATION-READY
CENTRIMO PLOTS AND SEQUENCE LOGOS
parallel inkscape --vacuum-defs --export-pdf={.}.pdf {} 
::: "$centrimo_eps_1" "$centrimo_eps_2"
POST-MEME2IMAGES INKSCAPE
CONVERSIONS FOR PUBLICATION-READY
CENTRIMO PLOTS AND SEQUENCE LOGOS
parallel inkscape --vacuum-defs --export-pdf={.}.pdf {} 
::: "$centrimo_eps_1" "$centrimo_eps_2"
parallel "inkscape --vacuum-defs --export-pdf={.}.pdf {};
pdfcrop --hires --clip --margins '0 0 0 -12' {.}.pdf;
mv -f {.}-crop.pdf {.}.pdf
" ::: logo+([:digit:])$VECTOR_FILE_EXT
FIXING DIRECTORY STRUCTURES—SYMBOLIC
LINK ISSUES (FOR DATA PROVENANCE)
parallel --dry-run -j 1 --rpl 
'{s} s@.*?((?:fe)?male_d+-d+).*@$1@' "{s}; 
ln -s /$(readlink {}) {}" 
::: $(find . -mindepth 3 -maxdepth 3 -xtype l)
FIXING DIRECTORY STRUCTURES—SYMBOLIC
LINK ISSUES (FOR DATA PROVENANCE)
parallel --dry-run -j 1 --rpl 
'{s} s@.*?((?:fe)?male_d+-d+).*@$1@' "{s}; 
ln -s /$(readlink {}) {}" 
::: $(find . -mindepth 3 -maxdepth 3 -xtype l)
parallel --rpl 
'{s} s:.+?/(.+?)_peaks.narrowPeak.gz$:
1_summits.bed.gz:' 
"ln -s ../../linked-2015-10-07-.../data/MACS/{s}
{//}/" ::: */*_peaks.narrowPeak.gz
FIXING DIRECTORY STRUCTURES—SYMBOLIC
LINK ISSUES (FOR DATA PROVENANCE)
parallel --dry-run -j 1 --rpl 
'{s} s@.*?((?:fe)?male_d+-d+).*@$1@' "{s}; 
ln -s /$(readlink {}) {}" 
::: $(find . -mindepth 3 -maxdepth 3 -xtype l)
parallel --rpl 
'{s} s:.+?/(.+?)_peaks.narrowPeak.gz$:
1_summits.bed.gz:' 
"ln -s ../../linked-2015-10-07-.../data/MACS/{s}
{//}/" ::: */*_peaks.narrowPeak.gz
parallel -j 1 --rpl '{...} s:/.*::;' 
"dir=$(readlink -f {} | 
sed -r 's:/linked.+?/:/{...}/:'); 
mkdir $dir; rm -f {}; ln -s $dir {//}/M-ChIP_runs" 
::: $(find linked-2016-01-31-* -type l -name 'M-ChIP_runs')
EXPLORING/COLLATING COMPLEX CENTRIMO
RESULTS
parallel --dry-run -j 1 
--rpl '{sex} s:.*?(w*male)-d+_d+.*:1:' 
--rpl '{rep} s:.*?male-(d+_d+).*:1:' 
--rpl "{TFinfo} s:.*?([^/]+)-expandedTo500bpRegions-
mod.*:1:" 
--rpl '{thresh} s:.*?d+_d+-(0.d+).*:1:' 
"awk '$0 !~ /^#/ {$1=""; $2=""; 
print "{TFinfo}","{sex}","{rep}","
{thresh}"$0;}' {} | 
sed -r 's/[[:space:]]+/t/g'" 
::: $(find ../MEME-ChIP_runs-initial_controls/ 
-mindepth 5 -wholename 
'*hypothesis_testing_selected_controlledVars/
centrimo_out/centrimo.txt' | head
)
PROCESSING CHIP-SEQ PEAK DATA WITH
MACS
parallel --rpl '{/..SRF} s:../w+[-.](SRFw*).*:$1:i;' 
macs14 callpeak -t {} -n {/..SRF} -g 'mm' 
-s 51 --bw 150 -S -p 0.0001 
::: ../*.alignment.mm8.bed.gz
PROCESSING CHIP-SEQ PEAK DATA WITH
MACS
parallel --rpl '{/..SRF} s:../w+[-.](SRFw*).*:$1:i;' 
macs14 callpeak -t {} -n {/..SRF} -g 'mm' 
-s 51 --bw 150 -S -p 0.0001 
::: ../*.alignment.mm8.bed.gz
parallel "zcat {} | awk 'BEGIN{FS=OFS="t"} NR > 1 
{print $2,$3,$4;}' | 
pigz -9 > {/.}.bed.gz" ::: ../*MACS_peaks_annot.txt.gz
liftoverAll '.bed.gz'
PROCESSING CHIP-SEQ PEAK DATA WITH
MACS
function liftoverAll {
parallel liftOver {} "$LIFTOVER_CHAIN_FILE_FULL_PATH" 
../$LIFTED_OVER_DIR_NAME/{/.}.liftedmm9 
../$LIFTED_OVER_DIR_NAME/{/.}.unlifted 
::: *"$1"
pigz -9 ../$LIFTED_OVER_DIR_NAME/*.liftedmm9 
../$LIFTED_OVER_DIR_NAME/*.unlifted
}
PROCESSING CHIP-SEQ PEAK DATA WITH
MACS
function liftoverAll {
parallel liftOver {} "$LIFTOVER_CHAIN_FILE_FULL_PATH" 
../$LIFTED_OVER_DIR_NAME/{/.}.liftedmm9 
../$LIFTED_OVER_DIR_NAME/{/.}.unlifted 
::: *"$1"
pigz -9 ../$LIFTED_OVER_DIR_NAME/*.liftedmm9 
../$LIFTED_OVER_DIR_NAME/*.unlifted
}
parallel -j ${NSLOTS:=1} --xapply 
--rpl '{r} s:.*RS(d+).*:1:' 
"$MACS_CMD_AND_COMMON_PARAMS -f BAMPE -n 'M-r{1r}' 
-t {1} -c {2} |& tee -a '$OUT_DIR/M-r{1r}.log'" 
::: $IN_DIR/1494*@(1|2|3).bam 
::: $IN_DIR/1494*@(4|5|6).bam
PIPELINE—PROCESSING BISULFITE
SEQUENCING DATA WITH METHPIPE
merge_methcount_cmds=$(
parallel -j $NSLOTS --joblog "x.log" 
--rpl '{-../} s:.*/::; s:(.[^.]+)+$::; s:-d+$::;' 
--dry-run 
"echo "$MODULE_LOAD_CMD export LC_ALL=C;
cat $ALIGNED_DIR/{-../}*.tomr | 
sort -k 1,1 -k 2,2n -k 3,3n -k 6,6 | ldots | 
methcounts -v -c $BISMARK_REF 
-o $COUNTS_DIR/{-../}_pool_ALL.meth /dev/stdin" 
| tee -a /dev/stderr | qsub ldots 
::: $IN_DIR/*.1.fastq.gz | sort -V | uniq
)

Contenu connexe

Tendances

Command Line Arguments with Getopt::Long
Command Line Arguments with Getopt::LongCommand Line Arguments with Getopt::Long
Command Line Arguments with Getopt::LongIan Kluft
 
From zero to gremlin hero - Part I
From zero to gremlin hero - Part IFrom zero to gremlin hero - Part I
From zero to gremlin hero - Part IGraphRM
 
Hacker Thursdays: An introduction to binary exploitation
Hacker Thursdays: An introduction to binary exploitationHacker Thursdays: An introduction to binary exploitation
Hacker Thursdays: An introduction to binary exploitationOWASP Hacker Thursday
 
Pwning Your Phone with Adhearsion and Asterisk
Pwning Your Phone with Adhearsion and AsteriskPwning Your Phone with Adhearsion and Asterisk
Pwning Your Phone with Adhearsion and Asteriskjicksta
 
Artificial Neural Network in a Tic Tac Toe Symfony Console Application - Symf...
Artificial Neural Network in a Tic Tac Toe Symfony Console Application - Symf...Artificial Neural Network in a Tic Tac Toe Symfony Console Application - Symf...
Artificial Neural Network in a Tic Tac Toe Symfony Console Application - Symf...aferrandini
 
Morpheus configuration engine (slides from Saint Perl-2 conference)
Morpheus configuration engine (slides from Saint Perl-2 conference)Morpheus configuration engine (slides from Saint Perl-2 conference)
Morpheus configuration engine (slides from Saint Perl-2 conference)Vyacheslav Matyukhin
 
Echtzeitapplikationen mit Elixir und GraphQL
Echtzeitapplikationen mit Elixir und GraphQLEchtzeitapplikationen mit Elixir und GraphQL
Echtzeitapplikationen mit Elixir und GraphQLMoritz Flucht
 
The Casting Demonstrator. Using the Raspberry Pi for graphics and simulated f...
The Casting Demonstrator. Using the Raspberry Pi for graphics and simulated f...The Casting Demonstrator. Using the Raspberry Pi for graphics and simulated f...
The Casting Demonstrator. Using the Raspberry Pi for graphics and simulated f...InfinIT - Innovationsnetværket for it
 
Dataflow: Declarative concurrency in Ruby
Dataflow: Declarative concurrency in RubyDataflow: Declarative concurrency in Ruby
Dataflow: Declarative concurrency in RubyLarry Diehl
 
Exploiting 101
Exploiting 101Exploiting 101
Exploiting 101Ackcent
 
Course lecture - An introduction to the Return Oriented Programming
Course lecture - An introduction to the Return Oriented ProgrammingCourse lecture - An introduction to the Return Oriented Programming
Course lecture - An introduction to the Return Oriented ProgrammingJonathan Salwan
 
[Quase] Tudo que você precisa saber sobre tarefas assíncronas
[Quase] Tudo que você precisa saber sobre  tarefas assíncronas[Quase] Tudo que você precisa saber sobre  tarefas assíncronas
[Quase] Tudo que você precisa saber sobre tarefas assíncronasFilipe Ximenes
 
Connecting C++ and JavaScript on the Web with Embind
Connecting C++ and JavaScript on the Web with EmbindConnecting C++ and JavaScript on the Web with Embind
Connecting C++ and JavaScript on the Web with EmbindChad Austin
 
Tasks: you gotta know how to run them
Tasks: you gotta know how to run themTasks: you gotta know how to run them
Tasks: you gotta know how to run themFilipe Ximenes
 
Seattle useR Group - R + Scala
Seattle useR Group - R + ScalaSeattle useR Group - R + Scala
Seattle useR Group - R + ScalaShouheng Yi
 

Tendances (20)

Command Line Arguments with Getopt::Long
Command Line Arguments with Getopt::LongCommand Line Arguments with Getopt::Long
Command Line Arguments with Getopt::Long
 
From zero to gremlin hero - Part I
From zero to gremlin hero - Part IFrom zero to gremlin hero - Part I
From zero to gremlin hero - Part I
 
PHP 5.3
PHP 5.3PHP 5.3
PHP 5.3
 
Hacker Thursdays: An introduction to binary exploitation
Hacker Thursdays: An introduction to binary exploitationHacker Thursdays: An introduction to binary exploitation
Hacker Thursdays: An introduction to binary exploitation
 
Pwning Your Phone with Adhearsion and Asterisk
Pwning Your Phone with Adhearsion and AsteriskPwning Your Phone with Adhearsion and Asterisk
Pwning Your Phone with Adhearsion and Asterisk
 
Artificial Neural Network in a Tic Tac Toe Symfony Console Application - Symf...
Artificial Neural Network in a Tic Tac Toe Symfony Console Application - Symf...Artificial Neural Network in a Tic Tac Toe Symfony Console Application - Symf...
Artificial Neural Network in a Tic Tac Toe Symfony Console Application - Symf...
 
Morpheus configuration engine (slides from Saint Perl-2 conference)
Morpheus configuration engine (slides from Saint Perl-2 conference)Morpheus configuration engine (slides from Saint Perl-2 conference)
Morpheus configuration engine (slides from Saint Perl-2 conference)
 
The Shellshocker
The ShellshockerThe Shellshocker
The Shellshocker
 
Echtzeitapplikationen mit Elixir und GraphQL
Echtzeitapplikationen mit Elixir und GraphQLEchtzeitapplikationen mit Elixir und GraphQL
Echtzeitapplikationen mit Elixir und GraphQL
 
The Casting Demonstrator. Using the Raspberry Pi for graphics and simulated f...
The Casting Demonstrator. Using the Raspberry Pi for graphics and simulated f...The Casting Demonstrator. Using the Raspberry Pi for graphics and simulated f...
The Casting Demonstrator. Using the Raspberry Pi for graphics and simulated f...
 
Dataflow: Declarative concurrency in Ruby
Dataflow: Declarative concurrency in RubyDataflow: Declarative concurrency in Ruby
Dataflow: Declarative concurrency in Ruby
 
Exploiting 101
Exploiting 101Exploiting 101
Exploiting 101
 
Inside Python
Inside PythonInside Python
Inside Python
 
Konstruktion omkring en Raspberry Pi
Konstruktion omkring en Raspberry PiKonstruktion omkring en Raspberry Pi
Konstruktion omkring en Raspberry Pi
 
Course lecture - An introduction to the Return Oriented Programming
Course lecture - An introduction to the Return Oriented ProgrammingCourse lecture - An introduction to the Return Oriented Programming
Course lecture - An introduction to the Return Oriented Programming
 
[Quase] Tudo que você precisa saber sobre tarefas assíncronas
[Quase] Tudo que você precisa saber sobre  tarefas assíncronas[Quase] Tudo que você precisa saber sobre  tarefas assíncronas
[Quase] Tudo que você precisa saber sobre tarefas assíncronas
 
Connecting C++ and JavaScript on the Web with Embind
Connecting C++ and JavaScript on the Web with EmbindConnecting C++ and JavaScript on the Web with Embind
Connecting C++ and JavaScript on the Web with Embind
 
Tasks: you gotta know how to run them
Tasks: you gotta know how to run themTasks: you gotta know how to run them
Tasks: you gotta know how to run them
 
test
testtest
test
 
Seattle useR Group - R + Scala
Seattle useR Group - R + ScalaSeattle useR Group - R + Scala
Seattle useR Group - R + Scala
 

Similaire à GNU Parallel

GNU Parallel: Lab meeting—technical talk
GNU Parallel: Lab meeting—technical talkGNU Parallel: Lab meeting—technical talk
GNU Parallel: Lab meeting—technical talkHoffman Lab
 
Incredible Machine with Pipelines and Generators
Incredible Machine with Pipelines and GeneratorsIncredible Machine with Pipelines and Generators
Incredible Machine with Pipelines and Generatorsdantleech
 
Can you upgrade to Puppet 4.x?
Can you upgrade to Puppet 4.x?Can you upgrade to Puppet 4.x?
Can you upgrade to Puppet 4.x?Martin Alfke
 
Python Programming Basics for begginners
Python Programming Basics for begginnersPython Programming Basics for begginners
Python Programming Basics for begginnersAbishek Purushothaman
 
Java 8 - A step closer to Parallelism
Java 8 - A step closer to ParallelismJava 8 - A step closer to Parallelism
Java 8 - A step closer to Parallelismjbugkorea
 
Introduction to Apache Beam & No Shard Left Behind: APIs for Massive Parallel...
Introduction to Apache Beam & No Shard Left Behind: APIs for Massive Parallel...Introduction to Apache Beam & No Shard Left Behind: APIs for Massive Parallel...
Introduction to Apache Beam & No Shard Left Behind: APIs for Massive Parallel...Dan Halperin
 
Automate_LSF_ppt_final
Automate_LSF_ppt_finalAutomate_LSF_ppt_final
Automate_LSF_ppt_finalSumit Ghosh
 
St Petersburg R user group meetup 2, Parallel R
St Petersburg R user group meetup 2, Parallel RSt Petersburg R user group meetup 2, Parallel R
St Petersburg R user group meetup 2, Parallel RAndrew Bzikadze
 
Puppet Camp Duesseldorf 2014: Martin Alfke - Can you upgrade to puppet 4.x?
Puppet Camp Duesseldorf 2014: Martin Alfke - Can you upgrade to puppet 4.x?Puppet Camp Duesseldorf 2014: Martin Alfke - Can you upgrade to puppet 4.x?
Puppet Camp Duesseldorf 2014: Martin Alfke - Can you upgrade to puppet 4.x?NETWAYS
 
Can you upgrade to Puppet 4.x? (Beginner) Can you upgrade to Puppet 4.x? (Beg...
Can you upgrade to Puppet 4.x? (Beginner) Can you upgrade to Puppet 4.x? (Beg...Can you upgrade to Puppet 4.x? (Beginner) Can you upgrade to Puppet 4.x? (Beg...
Can you upgrade to Puppet 4.x? (Beginner) Can you upgrade to Puppet 4.x? (Beg...Puppet
 
Loops and Unicorns - The Future of the Puppet Language - PuppetConf 2013
Loops and Unicorns - The Future of the Puppet Language - PuppetConf 2013Loops and Unicorns - The Future of the Puppet Language - PuppetConf 2013
Loops and Unicorns - The Future of the Puppet Language - PuppetConf 2013Puppet
 
Working Effectively With Legacy Perl Code
Working Effectively With Legacy Perl CodeWorking Effectively With Legacy Perl Code
Working Effectively With Legacy Perl Codeerikmsp
 
What we can learn from Rebol?
What we can learn from Rebol?What we can learn from Rebol?
What we can learn from Rebol?lichtkind
 
Dev8d 2011-pipe2 py
Dev8d 2011-pipe2 pyDev8d 2011-pipe2 py
Dev8d 2011-pipe2 pyTony Hirst
 
Docopt, beautiful command-line options for R, user2014
Docopt, beautiful command-line options for R,  user2014Docopt, beautiful command-line options for R,  user2014
Docopt, beautiful command-line options for R, user2014Edwin de Jonge
 
(1) c sharp introduction_basics_dot_net
(1) c sharp introduction_basics_dot_net(1) c sharp introduction_basics_dot_net
(1) c sharp introduction_basics_dot_netNico Ludwig
 

Similaire à GNU Parallel (20)

GNU Parallel: Lab meeting—technical talk
GNU Parallel: Lab meeting—technical talkGNU Parallel: Lab meeting—technical talk
GNU Parallel: Lab meeting—technical talk
 
Incredible Machine with Pipelines and Generators
Incredible Machine with Pipelines and GeneratorsIncredible Machine with Pipelines and Generators
Incredible Machine with Pipelines and Generators
 
Can you upgrade to Puppet 4.x?
Can you upgrade to Puppet 4.x?Can you upgrade to Puppet 4.x?
Can you upgrade to Puppet 4.x?
 
Python Programming Basics for begginners
Python Programming Basics for begginnersPython Programming Basics for begginners
Python Programming Basics for begginners
 
Java 8 - A step closer to Parallelism
Java 8 - A step closer to ParallelismJava 8 - A step closer to Parallelism
Java 8 - A step closer to Parallelism
 
Introduction to Apache Beam & No Shard Left Behind: APIs for Massive Parallel...
Introduction to Apache Beam & No Shard Left Behind: APIs for Massive Parallel...Introduction to Apache Beam & No Shard Left Behind: APIs for Massive Parallel...
Introduction to Apache Beam & No Shard Left Behind: APIs for Massive Parallel...
 
Automate_LSF_ppt_final
Automate_LSF_ppt_finalAutomate_LSF_ppt_final
Automate_LSF_ppt_final
 
St Petersburg R user group meetup 2, Parallel R
St Petersburg R user group meetup 2, Parallel RSt Petersburg R user group meetup 2, Parallel R
St Petersburg R user group meetup 2, Parallel R
 
Puppet Camp Duesseldorf 2014: Martin Alfke - Can you upgrade to puppet 4.x?
Puppet Camp Duesseldorf 2014: Martin Alfke - Can you upgrade to puppet 4.x?Puppet Camp Duesseldorf 2014: Martin Alfke - Can you upgrade to puppet 4.x?
Puppet Camp Duesseldorf 2014: Martin Alfke - Can you upgrade to puppet 4.x?
 
Can you upgrade to Puppet 4.x? (Beginner) Can you upgrade to Puppet 4.x? (Beg...
Can you upgrade to Puppet 4.x? (Beginner) Can you upgrade to Puppet 4.x? (Beg...Can you upgrade to Puppet 4.x? (Beginner) Can you upgrade to Puppet 4.x? (Beg...
Can you upgrade to Puppet 4.x? (Beginner) Can you upgrade to Puppet 4.x? (Beg...
 
Python1
Python1Python1
Python1
 
Loops and Unicorns - The Future of the Puppet Language - PuppetConf 2013
Loops and Unicorns - The Future of the Puppet Language - PuppetConf 2013Loops and Unicorns - The Future of the Puppet Language - PuppetConf 2013
Loops and Unicorns - The Future of the Puppet Language - PuppetConf 2013
 
Introducing Ansible
Introducing AnsibleIntroducing Ansible
Introducing Ansible
 
Intro to c++
Intro to c++Intro to c++
Intro to c++
 
Working Effectively With Legacy Perl Code
Working Effectively With Legacy Perl CodeWorking Effectively With Legacy Perl Code
Working Effectively With Legacy Perl Code
 
What we can learn from Rebol?
What we can learn from Rebol?What we can learn from Rebol?
What we can learn from Rebol?
 
Dev8d 2011-pipe2 py
Dev8d 2011-pipe2 pyDev8d 2011-pipe2 py
Dev8d 2011-pipe2 py
 
Automate Yo' Self
Automate Yo' SelfAutomate Yo' Self
Automate Yo' Self
 
Docopt, beautiful command-line options for R, user2014
Docopt, beautiful command-line options for R,  user2014Docopt, beautiful command-line options for R,  user2014
Docopt, beautiful command-line options for R, user2014
 
(1) c sharp introduction_basics_dot_net
(1) c sharp introduction_basics_dot_net(1) c sharp introduction_basics_dot_net
(1) c sharp introduction_basics_dot_net
 

Plus de Hoffman Lab

Efficient querying of genomic reference databases with gget
Efficient querying of genomic reference databases with ggetEfficient querying of genomic reference databases with gget
Efficient querying of genomic reference databases with ggetHoffman Lab
 
WashU Epigenome Browser
WashU Epigenome BrowserWashU Epigenome Browser
WashU Epigenome BrowserHoffman Lab
 
Wireguard: A Virtual Private Network Tunnel
Wireguard: A Virtual Private Network TunnelWireguard: A Virtual Private Network Tunnel
Wireguard: A Virtual Private Network TunnelHoffman Lab
 
Plotting heatmap with matplotlib/seaborn
Plotting heatmap with matplotlib/seabornPlotting heatmap with matplotlib/seaborn
Plotting heatmap with matplotlib/seabornHoffman Lab
 
Go Get Data (GGD)
Go Get Data (GGD)Go Get Data (GGD)
Go Get Data (GGD)Hoffman Lab
 
fastp: the FASTQ pre-processor
fastp: the FASTQ pre-processorfastp: the FASTQ pre-processor
fastp: the FASTQ pre-processorHoffman Lab
 
R markdown and Rmdformats
R markdown and RmdformatsR markdown and Rmdformats
R markdown and RmdformatsHoffman Lab
 
File searching tools
File searching toolsFile searching tools
File searching toolsHoffman Lab
 
Better BibTeX (BBT) for Zotero
Better BibTeX (BBT) for ZoteroBetter BibTeX (BBT) for Zotero
Better BibTeX (BBT) for ZoteroHoffman Lab
 
Awk primer and Bioawk
Awk primer and BioawkAwk primer and Bioawk
Awk primer and BioawkHoffman Lab
 
Terminals and Shells
Terminals and ShellsTerminals and Shells
Terminals and ShellsHoffman Lab
 
BioRender & Glossary/Acronym
BioRender & Glossary/AcronymBioRender & Glossary/Acronym
BioRender & Glossary/AcronymHoffman Lab
 
BioSyntax: syntax highlighting for computational biology
BioSyntax: syntax highlighting for computational biologyBioSyntax: syntax highlighting for computational biology
BioSyntax: syntax highlighting for computational biologyHoffman Lab
 
Get Good With Git
Get Good With GitGet Good With Git
Get Good With GitHoffman Lab
 
Tech Talk: UCSC Genome Browser
Tech Talk: UCSC Genome BrowserTech Talk: UCSC Genome Browser
Tech Talk: UCSC Genome BrowserHoffman Lab
 
MultiQC: summarize analysis results for multiple tools and samples in a singl...
MultiQC: summarize analysis results for multiple tools and samples in a singl...MultiQC: summarize analysis results for multiple tools and samples in a singl...
MultiQC: summarize analysis results for multiple tools and samples in a singl...Hoffman Lab
 
dreamRs: interactive ggplot2
dreamRs: interactive ggplot2dreamRs: interactive ggplot2
dreamRs: interactive ggplot2Hoffman Lab
 
Basic Cryptography & Security
Basic Cryptography & SecurityBasic Cryptography & Security
Basic Cryptography & SecurityHoffman Lab
 

Plus de Hoffman Lab (20)

TCRpower
TCRpowerTCRpower
TCRpower
 
Efficient querying of genomic reference databases with gget
Efficient querying of genomic reference databases with ggetEfficient querying of genomic reference databases with gget
Efficient querying of genomic reference databases with gget
 
WashU Epigenome Browser
WashU Epigenome BrowserWashU Epigenome Browser
WashU Epigenome Browser
 
Wireguard: A Virtual Private Network Tunnel
Wireguard: A Virtual Private Network TunnelWireguard: A Virtual Private Network Tunnel
Wireguard: A Virtual Private Network Tunnel
 
Plotting heatmap with matplotlib/seaborn
Plotting heatmap with matplotlib/seabornPlotting heatmap with matplotlib/seaborn
Plotting heatmap with matplotlib/seaborn
 
Go Get Data (GGD)
Go Get Data (GGD)Go Get Data (GGD)
Go Get Data (GGD)
 
fastp: the FASTQ pre-processor
fastp: the FASTQ pre-processorfastp: the FASTQ pre-processor
fastp: the FASTQ pre-processor
 
R markdown and Rmdformats
R markdown and RmdformatsR markdown and Rmdformats
R markdown and Rmdformats
 
File searching tools
File searching toolsFile searching tools
File searching tools
 
Better BibTeX (BBT) for Zotero
Better BibTeX (BBT) for ZoteroBetter BibTeX (BBT) for Zotero
Better BibTeX (BBT) for Zotero
 
Awk primer and Bioawk
Awk primer and BioawkAwk primer and Bioawk
Awk primer and Bioawk
 
Terminals and Shells
Terminals and ShellsTerminals and Shells
Terminals and Shells
 
BioRender & Glossary/Acronym
BioRender & Glossary/AcronymBioRender & Glossary/Acronym
BioRender & Glossary/Acronym
 
Linters in R
Linters in RLinters in R
Linters in R
 
BioSyntax: syntax highlighting for computational biology
BioSyntax: syntax highlighting for computational biologyBioSyntax: syntax highlighting for computational biology
BioSyntax: syntax highlighting for computational biology
 
Get Good With Git
Get Good With GitGet Good With Git
Get Good With Git
 
Tech Talk: UCSC Genome Browser
Tech Talk: UCSC Genome BrowserTech Talk: UCSC Genome Browser
Tech Talk: UCSC Genome Browser
 
MultiQC: summarize analysis results for multiple tools and samples in a singl...
MultiQC: summarize analysis results for multiple tools and samples in a singl...MultiQC: summarize analysis results for multiple tools and samples in a singl...
MultiQC: summarize analysis results for multiple tools and samples in a singl...
 
dreamRs: interactive ggplot2
dreamRs: interactive ggplot2dreamRs: interactive ggplot2
dreamRs: interactive ggplot2
 
Basic Cryptography & Security
Basic Cryptography & SecurityBasic Cryptography & Security
Basic Cryptography & Security
 

Dernier

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 

Dernier (20)

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 

GNU Parallel

  • 1. LAB MEETING— TECHNICAL TALK COBY VINER USE CASES BASIC EXAMPLES BASIC SYNTAX ADDITIONAL SYNTAX MORE EXAMPLES REAL EXAMPLES LAB MEETING—TECHNICAL TALK GNU PARALLEL O. TANGE, “GNU PARALLEL - THE COMMAND-LINE POWER TOOL”, ;login: The USENIX Magazine, VOL. 36, NO. 1, PP. 42–47, FEB. 2011 Coby Viner Hoffman Lab Wednesday, April 13, 2016
  • 2. LAB MEETING— TECHNICAL TALK COBY VINER USE CASES BASIC EXAMPLES BASIC SYNTAX ADDITIONAL SYNTAX MORE EXAMPLES REAL EXAMPLES OVERVIEW WHY USE GNU PARALLEL? BASIC EXAMPLES FROM THE TUTORIAL BASIC ELEMENTS OF SYNTAX [FROM THE TUTORIAL] MUCH MORE SYNTAX FOR MANY OTHER TASKS MORE TUTORIAL EXAMPLES SOME EXAMPLES OF MY GNU PARALLEL USAGE
  • 3. LAB MEETING— TECHNICAL TALK COBY VINER USE CASES BASIC EXAMPLES BASIC SYNTAX ADDITIONAL SYNTAX MORE EXAMPLES REAL EXAMPLES WHY USE GNU PARALLEL? a shell tool for executing jobs in parallel using one or more computers.
  • 4. LAB MEETING— TECHNICAL TALK COBY VINER USE CASES BASIC EXAMPLES BASIC SYNTAX ADDITIONAL SYNTAX MORE EXAMPLES REAL EXAMPLES WHY USE GNU PARALLEL? a shell tool for executing jobs in parallel using one or more computers. Easily parallelize perfectly parallel tasks
  • 5. LAB MEETING— TECHNICAL TALK COBY VINER USE CASES BASIC EXAMPLES BASIC SYNTAX ADDITIONAL SYNTAX MORE EXAMPLES REAL EXAMPLES WHY USE GNU PARALLEL? a shell tool for executing jobs in parallel using one or more computers. Easily parallelize perfectly parallel tasks For each chromosome. . .
  • 6. LAB MEETING— TECHNICAL TALK COBY VINER USE CASES BASIC EXAMPLES BASIC SYNTAX ADDITIONAL SYNTAX MORE EXAMPLES REAL EXAMPLES WHY USE GNU PARALLEL? a shell tool for executing jobs in parallel using one or more computers. Easily parallelize perfectly parallel tasks For each chromosome. . . For each sex, for each technical replicate, for each hyper-parameter(s)
  • 7. LAB MEETING— TECHNICAL TALK COBY VINER USE CASES BASIC EXAMPLES BASIC SYNTAX ADDITIONAL SYNTAX MORE EXAMPLES REAL EXAMPLES WHY USE GNU PARALLEL? a shell tool for executing jobs in parallel using one or more computers. Easily parallelize perfectly parallel tasks For each chromosome. . . For each sex, for each technical replicate, for each hyper-parameter(s) Job submission scripts within a for loop
  • 8. LAB MEETING— TECHNICAL TALK COBY VINER USE CASES BASIC EXAMPLES BASIC SYNTAX ADDITIONAL SYNTAX MORE EXAMPLES REAL EXAMPLES WHY USE GNU PARALLEL? a shell tool for executing jobs in parallel using one or more computers. Easily parallelize perfectly parallel tasks For each chromosome. . . For each sex, for each technical replicate, for each hyper-parameter(s) Job submission scripts within a for loop Improved, cleaner, syntax (for the programmer), even in serial
  • 9. LAB MEETING— TECHNICAL TALK COBY VINER USE CASES BASIC EXAMPLES BASIC SYNTAX ADDITIONAL SYNTAX MORE EXAMPLES REAL EXAMPLES WHY USE GNU PARALLEL? a shell tool for executing jobs in parallel using one or more computers. Easily parallelize perfectly parallel tasks For each chromosome. . . For each sex, for each technical replicate, for each hyper-parameter(s) Job submission scripts within a for loop Improved, cleaner, syntax (for the programmer), even in serial Facile interleaving of tasks, in the order one is thinking about them
  • 10. A BASIC [MAN PAGE] EXAMPLE: “WORKING AS XARGS -N1. ARGUMENT APPENDING” find . -name '*.html' | parallel gzip --best
  • 11. A BASIC [MAN PAGE] EXAMPLE: “WORKING AS XARGS -N1. ARGUMENT APPENDING” find . -name '*.html' | parallel gzip --best find . -type f -print0 | parallel -q0 perl -i -pe 's/FOO BAR/FUBAR/g'
  • 12. LAB MEETING— TECHNICAL TALK COBY VINER USE CASES BASIC EXAMPLES BASIC SYNTAX ADDITIONAL SYNTAX MORE EXAMPLES REAL EXAMPLES EASY INSTALLATION FROM SOURCE
  • 13. LAB MEETING— TECHNICAL TALK COBY VINER USE CASES BASIC EXAMPLES BASIC SYNTAX ADDITIONAL SYNTAX MORE EXAMPLES REAL EXAMPLES EASY INSTALLATION FROM SOURCE
  • 14. LAB MEETING— TECHNICAL TALK COBY VINER USE CASES BASIC EXAMPLES BASIC SYNTAX ADDITIONAL SYNTAX MORE EXAMPLES REAL EXAMPLES EASY INSTALLATION FROM SOURCE
  • 15. LAB MEETING— TECHNICAL TALK COBY VINER USE CASES BASIC EXAMPLES BASIC SYNTAX ADDITIONAL SYNTAX MORE EXAMPLES REAL EXAMPLES EASY INSTALLATION FROM SOURCE
  • 16. LAB MEETING— TECHNICAL TALK COBY VINER USE CASES BASIC EXAMPLES BASIC SYNTAX ADDITIONAL SYNTAX MORE EXAMPLES REAL EXAMPLES EASY INSTALLATION FROM SOURCE
  • 17. ANOTHER BASIC [MAN PAGE] EXAMPLE: “INSERTING MULTIPLE ARGUMENTS” bash: /bin/mv: Argument list too long ls | grep -E '.log$' | parallel mv {} destdir
  • 18. ANOTHER BASIC [MAN PAGE] EXAMPLE: “INSERTING MULTIPLE ARGUMENTS” bash: /bin/mv: Argument list too long ls | grep -E '.log$' | parallel mv {} destdir ls | grep -E '.log$' | parallel -m mv {} destdir
  • 19. BASIC ELEMENTS OF SYNTAX [FROM THE TUTORIAL] Input: parallel echo ::: A B C # command line cat abc-file | parallel echo # from STDIN parallel -a abc-file echo # from a file
  • 20. BASIC ELEMENTS OF SYNTAX [FROM THE TUTORIAL] Input: parallel echo ::: A B C # command line cat abc-file | parallel echo # from STDIN parallel -a abc-file echo # from a file Output [line order may vary]: A B C
  • 21. BASIC ELEMENTS OF SYNTAX [FROM THE TUTORIAL] Multiple inputs. Input: parallel echo ::: A B C ::: D E F cat abc-file | parallel -a - -a def-file echo parallel -a abc-file -a def-file echo cat abc-file | parallel echo :::: - def-file # alt. file parallel echo ::: A B C :::: def-file # mix cmd. and file
  • 22. BASIC ELEMENTS OF SYNTAX [FROM THE TUTORIAL] Multiple inputs. Input: parallel echo ::: A B C ::: D E F cat abc-file | parallel -a - -a def-file echo parallel -a abc-file -a def-file echo cat abc-file | parallel echo :::: - def-file # alt. file parallel echo ::: A B C :::: def-file # mix cmd. and file Output [line order may vary]: A D A E A F B D B E B F C D C E C F
  • 23. BASIC ELEMENTS OF SYNTAX [FROM THE TUTORIAL] Matching input. Input: parallel --xapply echo ::: A B C ::: D E F
  • 24. BASIC ELEMENTS OF SYNTAX [FROM THE TUTORIAL] Matching input. Input: parallel --xapply echo ::: A B C ::: D E F Output [line order may vary]: A D B E C F
  • 25. BASIC ELEMENTS OF SYNTAX [FROM THE TUTORIAL] Matching input. Input: parallel --xapply echo ::: A B C ::: D E F Output [line order may vary]: A D B E C F -xapply will wrap, if insufficient input is provided.
  • 26. BASIC ELEMENTS OF SYNTAX [FROM THE TUTORIAL] Replacement strings: The 7 predefined replacement strings Input: parallel echo {} ::: A/B.C parallel echo {.} ::: A/B.C Output: A/B.C A/B
  • 27. BASIC ELEMENTS OF SYNTAX [FROM THE TUTORIAL] Replacement strings: The 7 predefined replacement strings Input: parallel echo {} ::: A/B.C parallel echo {.} ::: A/B.C Output: A/B.C A/B Rep. String Result . remove ext. / remove path // only path /. only ext. and path # job number % job slot number
  • 28. BASIC ELEMENTS OF SYNTAX [FROM THE TUTORIAL] Customizing replacement strings -extensionreplace to change {.} etc. Shorthand custom (PCRE+) replacement strings GNU parallel’s 7 replacement strings: --rpl '{} ' --rpl '{#} $_=$job->seq()' --rpl '{%} $_=$job->slot()' --rpl '{/} s:.*/::' --rpl '{//} $Global::use{"File::Basename"} ||= eval "use File::Basename; 1;"; $_ = dirname($_);' --rpl '{/.} s:.*/::; s:.[^/.]+$::;' --rpl '{.} s:.[^/.]+$::'
  • 29. BASIC ELEMENTS OF SYNTAX [FROM THE TUTORIAL] Multiple input sources and positional replacement: parallel echo {1} and {2} ::: A B ::: C D
  • 30. BASIC ELEMENTS OF SYNTAX [FROM THE TUTORIAL] Multiple input sources and positional replacement: parallel echo {1} and {2} ::: A B ::: C D Always try to define replacements, with {<>} syntax.
  • 31. BASIC ELEMENTS OF SYNTAX [FROM THE TUTORIAL] Multiple input sources and positional replacement: parallel echo {1} and {2} ::: A B ::: C D Always try to define replacements, with {<>} syntax. Test with --dry-run first.
  • 32. MUCH MORE SYNTAX FOR MANY OTHER TASKS --pipe: instead of STDIN as command args, data sent to STDIN of command
  • 33. MUCH MORE SYNTAX FOR MANY OTHER TASKS --pipe: instead of STDIN as command args, data sent to STDIN of command command_A | command_B | command_C, where command_B is slow
  • 34. MUCH MORE SYNTAX FOR MANY OTHER TASKS --pipe: instead of STDIN as command args, data sent to STDIN of command command_A | command_B | command_C, where command_B is slow Remote execution to directly parallelize over multiple machines
  • 35. MUCH MORE SYNTAX FOR MANY OTHER TASKS --pipe: instead of STDIN as command args, data sent to STDIN of command command_A | command_B | command_C, where command_B is slow Remote execution to directly parallelize over multiple machines Working directly with a SQL database
  • 36. MUCH MORE SYNTAX FOR MANY OTHER TASKS --pipe: instead of STDIN as command args, data sent to STDIN of command command_A | command_B | command_C, where command_B is slow Remote execution to directly parallelize over multiple machines Working directly with a SQL database Shebang: often cat input_file | parallel command, but can do #!/usr/bin/parallel --shebang -r echo
  • 37. MUCH MORE SYNTAX FOR MANY OTHER TASKS --pipe: instead of STDIN as command args, data sent to STDIN of command command_A | command_B | command_C, where command_B is slow Remote execution to directly parallelize over multiple machines Working directly with a SQL database Shebang: often cat input_file | parallel command, but can do #!/usr/bin/parallel --shebang -r echo As a counting semaphore: parallel --semaphore or sem
  • 38. MUCH MORE SYNTAX FOR MANY OTHER TASKS --pipe: instead of STDIN as command args, data sent to STDIN of command command_A | command_B | command_C, where command_B is slow Remote execution to directly parallelize over multiple machines Working directly with a SQL database Shebang: often cat input_file | parallel command, but can do #!/usr/bin/parallel --shebang -r echo As a counting semaphore: parallel --semaphore or sem Default is one slot: a mutex
  • 39. ANOTHER [MAN PAGE] EXAMPLE: “AGGREGATING CONTENT OF FILES” parallel --header : echo x{X}y{Y}z{Z} > x{X}y{Y}z{Z} ::: X {1..5} ::: Y {01..10} ::: Z {1..5}
  • 40. ANOTHER [MAN PAGE] EXAMPLE: “AGGREGATING CONTENT OF FILES” parallel --header : echo x{X}y{Y}z{Z} > x{X}y{Y}z{Z} ::: X {1..5} ::: Y {01..10} ::: Z {1..5} parallel eval 'cat {=s/y01/y*/=} > {=s/y01//=}' ::: *y01* This runs: cat x1y*z1 > x1z1, ∀x∀z
  • 41. POST-MEME2IMAGES INKSCAPE CONVERSIONS FOR PUBLICATION-READY CENTRIMO PLOTS AND SEQUENCE LOGOS parallel inkscape --vacuum-defs --export-pdf={.}.pdf {} ::: "$centrimo_eps_1" "$centrimo_eps_2"
  • 42. POST-MEME2IMAGES INKSCAPE CONVERSIONS FOR PUBLICATION-READY CENTRIMO PLOTS AND SEQUENCE LOGOS parallel inkscape --vacuum-defs --export-pdf={.}.pdf {} ::: "$centrimo_eps_1" "$centrimo_eps_2" parallel "inkscape --vacuum-defs --export-pdf={.}.pdf {}; pdfcrop --hires --clip --margins '0 0 0 -12' {.}.pdf; mv -f {.}-crop.pdf {.}.pdf " ::: logo+([:digit:])$VECTOR_FILE_EXT
  • 43. FIXING DIRECTORY STRUCTURES—SYMBOLIC LINK ISSUES (FOR DATA PROVENANCE) parallel --dry-run -j 1 --rpl '{s} s@.*?((?:fe)?male_d+-d+).*@$1@' "{s}; ln -s /$(readlink {}) {}" ::: $(find . -mindepth 3 -maxdepth 3 -xtype l)
  • 44. FIXING DIRECTORY STRUCTURES—SYMBOLIC LINK ISSUES (FOR DATA PROVENANCE) parallel --dry-run -j 1 --rpl '{s} s@.*?((?:fe)?male_d+-d+).*@$1@' "{s}; ln -s /$(readlink {}) {}" ::: $(find . -mindepth 3 -maxdepth 3 -xtype l) parallel --rpl '{s} s:.+?/(.+?)_peaks.narrowPeak.gz$: 1_summits.bed.gz:' "ln -s ../../linked-2015-10-07-.../data/MACS/{s} {//}/" ::: */*_peaks.narrowPeak.gz
  • 45. FIXING DIRECTORY STRUCTURES—SYMBOLIC LINK ISSUES (FOR DATA PROVENANCE) parallel --dry-run -j 1 --rpl '{s} s@.*?((?:fe)?male_d+-d+).*@$1@' "{s}; ln -s /$(readlink {}) {}" ::: $(find . -mindepth 3 -maxdepth 3 -xtype l) parallel --rpl '{s} s:.+?/(.+?)_peaks.narrowPeak.gz$: 1_summits.bed.gz:' "ln -s ../../linked-2015-10-07-.../data/MACS/{s} {//}/" ::: */*_peaks.narrowPeak.gz parallel -j 1 --rpl '{...} s:/.*::;' "dir=$(readlink -f {} | sed -r 's:/linked.+?/:/{...}/:'); mkdir $dir; rm -f {}; ln -s $dir {//}/M-ChIP_runs" ::: $(find linked-2016-01-31-* -type l -name 'M-ChIP_runs')
  • 46. EXPLORING/COLLATING COMPLEX CENTRIMO RESULTS parallel --dry-run -j 1 --rpl '{sex} s:.*?(w*male)-d+_d+.*:1:' --rpl '{rep} s:.*?male-(d+_d+).*:1:' --rpl "{TFinfo} s:.*?([^/]+)-expandedTo500bpRegions- mod.*:1:" --rpl '{thresh} s:.*?d+_d+-(0.d+).*:1:' "awk '$0 !~ /^#/ {$1=""; $2=""; print "{TFinfo}","{sex}","{rep}"," {thresh}"$0;}' {} | sed -r 's/[[:space:]]+/t/g'" ::: $(find ../MEME-ChIP_runs-initial_controls/ -mindepth 5 -wholename '*hypothesis_testing_selected_controlledVars/ centrimo_out/centrimo.txt' | head )
  • 47. PROCESSING CHIP-SEQ PEAK DATA WITH MACS parallel --rpl '{/..SRF} s:../w+[-.](SRFw*).*:$1:i;' macs14 callpeak -t {} -n {/..SRF} -g 'mm' -s 51 --bw 150 -S -p 0.0001 ::: ../*.alignment.mm8.bed.gz
  • 48. PROCESSING CHIP-SEQ PEAK DATA WITH MACS parallel --rpl '{/..SRF} s:../w+[-.](SRFw*).*:$1:i;' macs14 callpeak -t {} -n {/..SRF} -g 'mm' -s 51 --bw 150 -S -p 0.0001 ::: ../*.alignment.mm8.bed.gz parallel "zcat {} | awk 'BEGIN{FS=OFS="t"} NR > 1 {print $2,$3,$4;}' | pigz -9 > {/.}.bed.gz" ::: ../*MACS_peaks_annot.txt.gz liftoverAll '.bed.gz'
  • 49. PROCESSING CHIP-SEQ PEAK DATA WITH MACS function liftoverAll { parallel liftOver {} "$LIFTOVER_CHAIN_FILE_FULL_PATH" ../$LIFTED_OVER_DIR_NAME/{/.}.liftedmm9 ../$LIFTED_OVER_DIR_NAME/{/.}.unlifted ::: *"$1" pigz -9 ../$LIFTED_OVER_DIR_NAME/*.liftedmm9 ../$LIFTED_OVER_DIR_NAME/*.unlifted }
  • 50. PROCESSING CHIP-SEQ PEAK DATA WITH MACS function liftoverAll { parallel liftOver {} "$LIFTOVER_CHAIN_FILE_FULL_PATH" ../$LIFTED_OVER_DIR_NAME/{/.}.liftedmm9 ../$LIFTED_OVER_DIR_NAME/{/.}.unlifted ::: *"$1" pigz -9 ../$LIFTED_OVER_DIR_NAME/*.liftedmm9 ../$LIFTED_OVER_DIR_NAME/*.unlifted } parallel -j ${NSLOTS:=1} --xapply --rpl '{r} s:.*RS(d+).*:1:' "$MACS_CMD_AND_COMMON_PARAMS -f BAMPE -n 'M-r{1r}' -t {1} -c {2} |& tee -a '$OUT_DIR/M-r{1r}.log'" ::: $IN_DIR/1494*@(1|2|3).bam ::: $IN_DIR/1494*@(4|5|6).bam
  • 51. PIPELINE—PROCESSING BISULFITE SEQUENCING DATA WITH METHPIPE merge_methcount_cmds=$( parallel -j $NSLOTS --joblog "x.log" --rpl '{-../} s:.*/::; s:(.[^.]+)+$::; s:-d+$::;' --dry-run "echo "$MODULE_LOAD_CMD export LC_ALL=C; cat $ALIGNED_DIR/{-../}*.tomr | sort -k 1,1 -k 2,2n -k 3,3n -k 6,6 | ldots | methcounts -v -c $BISMARK_REF -o $COUNTS_DIR/{-../}_pool_ALL.meth /dev/stdin" | tee -a /dev/stderr | qsub ldots ::: $IN_DIR/*.1.fastq.gz | sort -V | uniq )