Linux的parallel并行方法

我对于parallel并行的简单理解即同时执行多个命令语句。它与For循环语句的逐条运行的思路大相径庭。尽管目前很多生信软件支持多线程运行(一条命令语句内),但并不是设置的越多就越快,比如trim_galore命令建议对于一对fastq文件,不超过8个线程。因此,如果想尽可能利用计算机几十个线程的资源,可以同时运行多个trim_galore。诚然可以通过开启多个终端命令,但parallel提供了更加便捷的并行方式。

1、conda安装

#使用conda安装可以避免root权限的限制
conda install -c conda-forge parallel

parallel --help

2、调用方法

  • 常规命令语句 = 命令 + 参数
    由于命令是固定的(trim_galore...),但参数是根据任务量而定的(many pairs fastq.gz files)

2.1 ::: 传递参数

  • --dryrun 仅打印而不运行命令语句
echo A
echo B
echo C

parallel echo ::: A B C

2.2 :::: 将参数/命令储存到文件里,然后以文件名传递参数/命令

#传参数
cat > parameter.txt
A
B
C
parallel echo :::: parameter.txt
parallel --dryrun echo :::: parameter.txt
echo A
echo B
echo C

#传命令
for i in A B C
do
echo echo ${i} >> command.txt
done

parallel --dryrun :::: command.txt
parallel :::: command.txt

2.3 传递多参数

parallel  echo ::: A B C ::: D E F
#  A D
#  A E
#  A F
#  B D
#  B E
#  B F
#  C D
#  C E
#  C F

parallel --xapply echo ::: A B C ::: D E F
#  A D
#  B E
#  C F

parallel --xapply echo {1} {2} ::: A B C ::: D E F
#  A D
#  B E
#  C F

parallel --xapply echo {2} {1} ::: A B C ::: D E F
#  D A
#  E B
#  F C

2.4 关于大括号的使用

  • 如上当传递多个参数时,使用{数字}形式可以灵活指定参数的位置
  • 当参数为文件名(带路径)时,大括号的特殊用法可以实现巧妙组合
#组成字符串
parallel echo chr{}.fa ::: {1..22} X Y M 
chr1.fa
chr2.fa
chr3.fa
chr4.fa
chr5.fa
chr6.fa
chr7.fa
chr8.fa
chr9.fa
chr10.fa
chr11.fa
chr12.fa
chr13.fa
chr14.fa
chr15.fa
chr16.fa
chr17.fa
chr18.fa
chr19.fa
chr20.fa
chr21.fa
chr22.fa
chrX.fa
chrY.fa
chrM.fa

parallel echo cp {} {.}.test ::: ./*.txt
#  cp ./a.txt ./a.test
#  cp ./b.txt ./b.test
#  cp ./c.txt ./c.test

#如果只有一个参数,使用大括号即可指代该参数。如下,与上面命令等价
parallel echo cp {1} {1.}.test ::: ./*.txt
  • 大括号的妙用
    {} – full name 全名
    {.} – one less file extension 以(最后一个)逗号为分隔符的前半部分
    {/} – remove directory path 去除路径
    {//} – directory path 仅保留路径
    {/..} – remove directory path and two levels of file extension
echo dir1/dir2/file.txt.gz | parallel --plus 'echo -e {}\\n{.}\\n{/}\\n{//}\\n{/..}'
#  dir1/dir2/file.txt.gz
#  dir1/dir2/file.txt
#  file.txt.gz
#  dir1/dir2
#  file

3、生信分析实例

  • 由于生信软件大部分也支持多线程运行,因此再同时执行多条命令语句时,有可能会超过计算机的最大线程数;
  • 可以使用-j参数,指定同时执行的命令数;
  • --verbose参数可以在执行命令语句前,先打印出该命令;
  • --progress参数可以实时显示任务的完成进度

3.1 samtools flagstat

ls *bam
# SRR12720999.bam  SRR12721000.bam  SRR12721001.bam  SRR12721002.bam  SRR12721003.bam  SRR12721004.bam

# 复杂命令(这里主要指>重定向符号)部分建议加上引号
# 每次运行4条命令
parallel -j4 'samtools flagstat {} > {.}.stat' ::: *.bam

3.2 trim_galore

cat SraAccList.txt | while read id
do 
echo $id
echo trim_galore -j 8 -q 25 --phred33 --length 36 \
-paired -o trim \
${id}_1.fastq.gz \
${id}_2.fastq.gz >> parellel.txt
done
# 每次运行3条命令语句
parallel -j3 --verbose --progress :::: parellel.txt

参考链接:
https://www.jianshu.com/p/cc54a72616a1
https://davetang.org/muse/2013/11/18/using-gnu-parallel/
https://www.biostars.org/p/63816/
https://www.gnu.org/software/parallel/parallel_tutorial.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容