Linux的parallel并行方法

我對于parallel并行的簡單理解即同時執(zhí)行多個命令語句。它與For循環(huán)語句的逐條運行的思路大相徑庭翼雀。盡管目前很多生信軟件支持多線程運行(一條命令語句內(nèi)),但并不是設(shè)置的越多就越快瓦呼,比如trim_galore命令建議對于一對fastq文件销斟,不超過8個線程庐椒。因此,如果想盡可能利用計算機幾十個線程的資源蚂踊,可以同時運行多個trim_galore约谈。誠然可以通過開啟多個終端命令,但parallel提供了更加便捷的并行方式。

1棱诱、conda安裝

#使用conda安裝可以避免root權(quán)限的限制
conda install -c conda-forge parallel

parallel --help

2泼橘、調(diào)用方法

  • 常規(guī)命令語句 = 命令 + 參數(shù)
    由于命令是固定的(trim_galore...),但參數(shù)是根據(jù)任務(wù)量而定的(many pairs fastq.gz files)

2.1 ::: 傳遞參數(shù)

  • --dryrun 僅打印而不運行命令語句
echo A
echo B
echo C

parallel echo ::: A B C

2.2 :::: 將參數(shù)/命令儲存到文件里迈勋,然后以文件名傳遞參數(shù)/命令

#傳參數(shù)
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 傳遞多參數(shù)

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 關(guān)于大括號的使用

  • 如上當傳遞多個參數(shù)時炬灭,使用{數(shù)字}形式可以靈活指定參數(shù)的位置
  • 當參數(shù)為文件名(帶路徑)時,大括號的特殊用法可以實現(xiàn)巧妙組合
#組成字符串
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

#如果只有一個參數(shù)靡菇,使用大括號即可指代該參數(shù)重归。如下,與上面命令等價
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镰官、生信分析實例

  • 由于生信軟件大部分也支持多線程運行提前,因此再同時執(zhí)行多條命令語句時吗货,有可能會超過計算機的最大線程數(shù)泳唠;
  • 可以使用-j參數(shù),指定同時執(zhí)行的命令數(shù)宙搬;
  • --verbose參數(shù)可以在執(zhí)行命令語句前笨腥,先打印出該命令;
  • --progress參數(shù)可以實時顯示任務(wù)的完成進度

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

參考鏈接:
http://www.reibang.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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末勇垛,一起剝皮案震驚了整個濱河市脖母,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌闲孤,老刑警劉巖谆级,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異讼积,居然都是意外死亡肥照,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門勤众,熙熙樓的掌柜王于貴愁眉苦臉地迎上來舆绎,“玉大人,你說我怎么就攤上這事们颜÷蓝洌” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵窥突,是天一觀的道長努溃。 經(jīng)常有香客問我,道長阻问,這世上最難降的妖魔是什么梧税? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上贡蓖,老公的妹妹穿的比我還像新娘曹鸠。我一直安慰自己,他們只是感情好斥铺,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布彻桃。 她就那樣靜靜地躺著,像睡著了一般晾蜘。 火紅的嫁衣襯著肌膚如雪邻眷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天剔交,我揣著相機與錄音肆饶,去河邊找鬼。 笑死岖常,一個胖子當著我的面吹牛驯镊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播竭鞍,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼板惑,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了偎快?” 一聲冷哼從身側(cè)響起冯乘,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎晒夹,沒想到半個月后裆馒,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡丐怯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年喷好,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片响逢。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡绒窑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出舔亭,到底是詐尸還是另有隱情些膨,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布钦铺,位于F島的核電站订雾,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏矛洞。R本人自食惡果不足惜洼哎,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一烫映、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧噩峦,春花似錦锭沟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至凭涂,卻和暖如春祝辣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背切油。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工蝙斜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人澎胡。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓孕荠,卻偏偏與公主長得像,于是被迫代替她去往敵國和親滤馍。 傳聞我的和親對象是個殘疾皇子岛琼,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容