GWAS批量流程傻瓜式(1)——STAR

讀研期間摸索的linux無名管道,這是個(gè)神器。GWAS第一步——STAR原始基因組測(cè)序數(shù)據(jù)代碼如下:

#!/bin/bash

## path 
star_index=/sharedata/home/xxx/xxx/project/GWAS/genome/star
star_mapping1=/sharedata/home/xxx/xxx/project/GWAS/07_star
rawdata=/sharedata/home/xxx/xxx/project/swrnaseq/raw_data/sweet/cleandata
sample_list=/sharedata/home/xxx/xxx/project/GWAS/script/list.txt


# 讀取樣本列表文件中的樣本名
samples=$(cat "$sample_list")

# arrange tasks by IP adrress.
# 獲取本機(jī)IP地址
ip_address=$(ip addr show enp89s0f1 | grep -oP '(?<=inet\s)\d+(\.\d+){3}')

# 根據(jù)IP地址的最后一位數(shù)字決定處理前100個(gè)還是后100個(gè)數(shù)據(jù)
last_digit=$(echo "$ip_address" | cut -d'.' -f4)

# 根據(jù)不同的條件處理文件列表
if [ "$last_digit" -eq 11 ]; then
    files_to_process=$(ls ${gatk_markup}/*.q30.sort.markdup.bam | head -n 140)
    threads1=16
    threads2=16
    key=75
elif [ "$last_digit" -eq 12 ]; then
    files_to_process=${samples}  
    threads1=32
    threads2=10
    key=30
else
    echo "Unsupported IP address configuration!"
    exit 1
fi

# structure core function
function GWAS_genotype()  # 和子進(jìn)程中的命令相對(duì)應(yīng)
{
STAR --runMode alignReads --runThreadN ${threads1} --genomeDir ${star_index} --outFileNamePrefix ${star_mapping1}/${name} --outSAMmapqUnique 255 --outSAMtype BAM SortedByCoordinate --outBAMsortingThreadN ${threads2} --readFilesCommand gunzip -c --outSJfilterReads Unique --readFilesIn ${rawdata}/${name}_1.fq.gz ${rawdata}/${name}_2.fq.gz  
}

# using pipe

# 創(chuàng)建一個(gè)管道
mkfifo melist
# 給子進(jìn)程管道綁定文件描述符6
exec 7<>melist
# 再創(chuàng)建一個(gè)管道(鎖文件),用于解決線程安全問題给猾,和唯一子進(jìn)程配對(duì)
mkfifo melock
# 綁定文件描述符3
exec 8<>melock

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

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

            # 以下是子進(jìn)程拿著for變量執(zhí)行命令,這時(shí)候子進(jìn)程還沒還牌子
            name=$(basename "${name/_1.fq.gz}")  # basename是去掉路徑前綴只保留文件名前綴
            echo "GWAS_analysis start ${name}"    # echo表示可視化輸出命令結(jié)果是什么樣
            GWAS_genotype "${name}"               # 表示函數(shù)名和它一樣

        done
    } &
done

# for進(jìn)行的循環(huán)收到子進(jìn)程的牌子蟹瘾,并將其處理的變量全部拿給管道
echo "$files_to_process" | while read -r name; do
    echo "${name}" > melist
done

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

# 全部結(jié)束后解綁文件描述符并刪除管道
exec 7<&-
exec 7>&-
rm -f melist
exec 8<&-
exec 8>&-
rm -f melock

#--------------------------------------------------------------
echo "Finish all analysis!!!"
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末掠手,一起剝皮案震驚了整個(gè)濱河市憾朴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌喷鸽,老刑警劉巖众雷,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異魁衙,居然都是意外死亡报腔,警方通過查閱死者的電腦和手機(jī)株搔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門剖淀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人纤房,你說我怎么就攤上這事纵隔。” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵捌刮,是天一觀的道長(zhǎng)碰煌。 經(jīng)常有香客問我,道長(zhǎng)绅作,這世上最難降的妖魔是什么芦圾? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮俄认,結(jié)果婚禮上个少,老公的妹妹穿的比我還像新娘。我一直安慰自己眯杏,他們只是感情好夜焦,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著岂贩,像睡著了一般茫经。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上萎津,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天卸伞,我揣著相機(jī)與錄音,去河邊找鬼姜性。 笑死瞪慧,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的部念。 我是一名探鬼主播弃酌,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼儡炼!你這毒婦竟也來了妓湘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤乌询,失蹤者是張志新(化名)和其女友劉穎榜贴,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體妹田,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡唬党,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鬼佣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片驶拱。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖晶衷,靈堂內(nèi)的尸體忽然破棺而出蓝纲,到底是詐尸還是另有隱情阴孟,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布税迷,位于F島的核電站永丝,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏箭养。R本人自食惡果不足惜慕嚷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望毕泌。 院中可真熱鬧闯冷,春花似錦、人聲如沸懈词。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽坎弯。三九已至纺涤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間抠忘,已是汗流浹背撩炊。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留崎脉,地道東北人拧咳。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像囚灼,于是被迫代替她去往敵國(guó)和親骆膝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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

  • 重演一篇傻瓜式GWAS分析|培養(yǎng)興趣專用[https://zhuanlan.zhihu.com/p/1394287...
    Zukunft_Lab閱讀 3,655評(píng)論 4 29
  • 這資源實(shí)在太贊灶体,情不自禁想要分享與大家一同學(xué)習(xí)阅签。我是一個(gè)不喜歡用手機(jī)看公眾號(hào)文章的人,但與每一個(gè)生信入門者一樣急切...
    王詩翔閱讀 7,859評(píng)論 0 75
  • 概念 (1)GWAS: 全稱“全基因組關(guān)聯(lián)分析”蝎抽,使用統(tǒng)計(jì)模型找到與性狀關(guān)聯(lián)的位點(diǎn)政钟,用于分子標(biāo)記選擇(MAS)或者...
    Making閱讀 5,206評(píng)論 0 1
  • author: "余順太"date: "2020-03-23" 主要參考的生信技能樹文章:原創(chuàng)10000+生信教程...
    余順太閱讀 4,644評(píng)論 0 11
  • 自己找了一些文章和視頻,先總結(jié)了一部分樟结,后面再做補(bǔ)充和實(shí)操 一. 相關(guān)概念理解 (1)GWAS: 全稱“全基因組關(guān)...
    奔跑的Forrest閱讀 15,943評(píng)論 2 38