将 GNU parallel 与嵌套 for 循环和多个变量相结合
combine GNU parallel with nested for loops and multiple variables
我在 destdir 中有 n 个文件夹。每个文件夹包含两个文件:*R1.fastq 和 *R2.fastq。使用此脚本,它将一个接一个地完成工作 (bowtie2),并在 destdir 中输出 {name of the sub folder}.sam。
#!/bin/bash
mm9_index="/Users/bowtie2-2.2.6/indexes/mm9/mm9"
destdir=/Users/Desktop/test/outdir/
for f in $destdir/*
do
fbase=$(basename "$f")
echo "Sample $fbase"
bowtie2 -p 4 -x $mm9_index -X 2000 \
-1 "$f"/*R1.fastq \
-2 "$f"/*R2.fastq \
-S $destdir/${fbase}.sam
done
我想使用 gnu 并行工具来加快速度,你能帮忙吗?谢谢。
在最简单的情况下,您通常可以将 echo
放在命令的前面,然后将您本应顺序执行的命令列表发送到 GNU Parallel
,以并行执行,像这样:
for f in ...; do
echo bowtie2 -p 4 ....
done | parallel
使用bash函数:
#!/bin/bash
my_bowtie() {
mm9_index="/Users/bowtie2-2.2.6/indexes/mm9/mm9"
destdir=/Users/Desktop/test/outdir/
f=""
fbase=$(basename "$f")
echo "Sample $fbase"
bowtie2 -p 4 -x $mm9_index -X 2000 \
-1 "$f"/*R1.fastq \
-2 "$f"/*R2.fastq \
-S $destdir/${fbase}.sam
}
export -f my_bowtie
parallel my_bowtie ::: $destdir/*
更多详情:man parallel
或http://www.gnu.org/software/parallel/man.html#EXAMPLE:-Calling-Bash-functions
我在 destdir 中有 n 个文件夹。每个文件夹包含两个文件:*R1.fastq 和 *R2.fastq。使用此脚本,它将一个接一个地完成工作 (bowtie2),并在 destdir 中输出 {name of the sub folder}.sam。
#!/bin/bash
mm9_index="/Users/bowtie2-2.2.6/indexes/mm9/mm9"
destdir=/Users/Desktop/test/outdir/
for f in $destdir/*
do
fbase=$(basename "$f")
echo "Sample $fbase"
bowtie2 -p 4 -x $mm9_index -X 2000 \
-1 "$f"/*R1.fastq \
-2 "$f"/*R2.fastq \
-S $destdir/${fbase}.sam
done
我想使用 gnu 并行工具来加快速度,你能帮忙吗?谢谢。
在最简单的情况下,您通常可以将 echo
放在命令的前面,然后将您本应顺序执行的命令列表发送到 GNU Parallel
,以并行执行,像这样:
for f in ...; do
echo bowtie2 -p 4 ....
done | parallel
使用bash函数:
#!/bin/bash
my_bowtie() {
mm9_index="/Users/bowtie2-2.2.6/indexes/mm9/mm9"
destdir=/Users/Desktop/test/outdir/
f=""
fbase=$(basename "$f")
echo "Sample $fbase"
bowtie2 -p 4 -x $mm9_index -X 2000 \
-1 "$f"/*R1.fastq \
-2 "$f"/*R2.fastq \
-S $destdir/${fbase}.sam
}
export -f my_bowtie
parallel my_bowtie ::: $destdir/*
更多详情:man parallel
或http://www.gnu.org/software/parallel/man.html#EXAMPLE:-Calling-Bash-functions