Linux下的轉(zhuǎn)錄組批量可控進程的示例

以RNA轉(zhuǎn)錄組為例:

#!/bin/bash
threads=16
#對于普玉
rawdata_in=/sharedata/home/likun/zengjigang/project/rnaseq/results/02_fastp
fastqc_out=/sharedata/home/likun/zengjigang/project/rnaseq/results/01_fastqc
hisat2_genome=/sharedata/home/likun/zengjigang/project/rnaseq/results/04_genomedata/genome_tran
hisat2_sam=/sharedata/home/likun/zengjigang/project/rnaseq/results/05_hisat2
sam_view=/sharedata/home/likun/zengjigang/project/rnaseq/results/06_samtools/umsorted
bam_sort=/sharedata/home/likun/zengjigang/project/rnaseq/results/06_samtools/sorted
sort_flagstat=/sharedata/home/likun/zengjigang/project/rnaseq/results/06_samtools/flagstat
gtf_path=/sharedata/home/likun/zengjigang/project/rnaseq/raw_data/reference/b73v4.gtf
featurecounts_out=/sharedata/home/likun/zengjigang/project/swrnaseq/results/09_featureCount
multiqc_out=/sharedata/home/likun/zengjigang/project/swrnaseq/results/10_multiqc
#--------------------------------------------------------------------------------------------------

#構(gòu)造命令的函數(shù)
function rnaseq() #和子進程中的命令相對應(yīng)
    {
     #fastqc -t ${threads} -q   -o  ${fastqc_out} \
    #               ${rawdata_in}/${name}_1.fastq.gz \
    #               ${rawdata_in}/${name}_2.fastq.gz \
    # &&
     hisat2 -p ${threads} --dta     -x ${hisat2_genome} \
                    -1 ${rawdata_in}/${name}_1.fastq.gz \
                    -2 ${rawdata_in}/${name}_2.fastq.gz \
                    -S /sharedata/home/likun/zengjigang/project/rnaseq/results/05_hisat2/${name}.sam &&

     samtools view -@ ${threads} -bS -1 /sharedata/home/likun/zengjigang/project/rnaseq/results/05_hisat2/${name}.sam > \
                    ${sam_view}/${name}.unsorted.bam &&

     samtools sort -@ ${threads} -m 800M -o ${bam_sort}/${name}.sort.bam \
                          ${sam_view}/${name}.unsorted.bam &&

     samtools flagstat -@ ${threads} ${bam_sort}/${name}.sort.bam > ${sort_flagstat}/${name}.sort.bam.flagstat                  
    }
# --------------------------------------------------------------------------------------------------

# 創(chuàng)建一個管道
mkfifo mylist
# 給子進程管道綁定文件描述符4
exec 4<>mylist
# 再創(chuàng)建一個管道(鎖文件)腕让,用于解決線程安全問題纯丸,和唯一子進程配對
mkfifo mylock
# 綁定文件描述符6
exec 6<>mylock

# 事先向鎖文件中插入1條數(shù)據(jù)(解鎖)
echo >mylock

# 開啟5個子進程
for ((i=1; i <= 5; i++)); do
    # 這里的 & 會開啟一個子進程執(zhí)行
    {
        # 先讀取鎖文件(加鎖)觉鼻,由于鎖文件中只有1條數(shù)據(jù)队橙,讀取完之后鎖文件空了其他子進程再讀取時只能等待
        while read -t 1 < mylock && read -t 1 name <mylist; do
            # 讀取到業(yè)務(wù)數(shù)據(jù)后立即向?qū)懭?條數(shù)據(jù)到鎖文件(解鎖),讓其他子進程繼續(xù)讀取數(shù)據(jù)
            echo >mylock

        #以下是子進程拿著for變量執(zhí)行命令仇矾,這時候子進程還沒還牌子
             name=`basename ${name/_1.fastq.gz}`  #basename是去掉路徑前綴只保留文件名前綴贮匕,“/”表示去掉變量截取的后綴
         echo "RNA_seq start ${name}"     #echo表示可視化輸出命令結(jié)果是什么樣
         rnaseq ${name}           #表示函數(shù)名和它一樣
           
        done
    } &
done

# for進行的循環(huán)收到子進程的牌子花枫,并將其處理的變量全部拿給管道
for name in `ls /sharedata/home/likun/zengjigang/project/rnaseq/results/02_fastp/*_1.fastq.gz`; do
    echo ${name} > mylist
done

# 使用 wait 命令阻塞當前進程,直到所有子進程全部執(zhí)行完
wait
echo "Finish all loops!!!"

# 全部結(jié)束后解綁文件描述符并刪除管道
exec 4<&-
exec 4>&-
rm -f mylist
exec 6<&-
exec 6>&-
rm -f mylock

#--------------------------------------------------------------
# 運行featureCounts對所有樣本進行基因水平定量
ls  ${bam_sort}/*.sort.bam |  do 
         featureCounts   -T ${threads} \
                         -p \
                         -t exon \
                         -g gene_id \
                         -a ${gtf_path} \
                         -o ${featurecounts_out}/sw_counts.280.txt \
                            ${bam_sort}/*.sort.bam 
 
          multiqc ${featurecounts_out}/sw_counts.280.txt.summary -o ${multiqc_out}/sw_counts.280.summary 
         multiqc ${sort_flagstat}/${name}.sort.bam.flagstat -o ${multiqc_out}/bam_sort_flagstat
#echo "Finish all analysis!!!"

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末敦锌,一起剝皮案震驚了整個濱河市乙墙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌悼做,老刑警劉巖肛走,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件录别,死亡現(xiàn)場離奇詭異组题,居然都是意外死亡,警方通過查閱死者的電腦和手機梢褐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門盈咳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來边翼,“玉大人组底,你說我怎么就攤上這事〗酰” “怎么了娘锁?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵间雀,是天一觀的道長镊屎。 經(jīng)常有香客問我,道長连锯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任拼弃,我火速辦了婚禮摇展,結(jié)果婚禮上咏连,老公的妹妹穿的比我還像新娘。我一直安慰自己祟滴,他們只是感情好,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著草慧,像睡著了一般冠蒋。 火紅的嫁衣襯著肌膚如雪乾胶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天斩郎,我揣著相機與錄音缩宜,去河邊找鬼锻煌。 笑死,一個胖子當著我的面吹牛宋梧,可吹牛的內(nèi)容都是我干的捂龄。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼唇撬,長吁一口氣:“原來是場噩夢啊……” “哼窖认!你這毒婦竟也來了耀态?” 一聲冷哼從身側(cè)響起首装,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤仙逻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后涧尿,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體系奉,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年姑廉,在試婚紗的時候發(fā)現(xiàn)自己被綠了缺亮。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡桥言,死狀恐怖萌踱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情号阿,我是刑警寧澤并鸵,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站扔涧,受9級特大地震影響园担,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜枯夜,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一蝙泼、第九天 我趴在偏房一處隱蔽的房頂上張望织鲸。 院中可真熱鬧,春花似錦哗脖、人聲如沸橱夭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽巧骚。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間驶兜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工灶芝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留属愤,地道東北人住诸。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓奄薇,卻偏偏與公主長得像,于是被迫代替她去往敵國和親远搪。 傳聞我的和親對象是個殘疾皇子谁鳍,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

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