Shell三劍客 與 核酸序列


寫(xiě)在前面:我是想著給課題組師弟師妹們培訓(xùn)出的一些例題。哈哈哈颅湘,沒(méi)想到也難到了自己戳稽,因此花上了一些時(shí)間思考著這些平時(shí)我們用python或者其他現(xiàn)有的軟件實(shí)現(xiàn)的功能灸芳,如何用三劍客解決察署?<br />只能說(shuō)三劍客真的比我想象中還有強(qiáng)大吧闷游,我對(duì)他們了解還不夠,日后加深了解贴汪。

Shell命令與生物信息相關(guān)的示例用法

  • CDS文件內(nèi)提取對(duì)應(yīng)ID的命令- grep&sed
  • 檢測(cè)CDS可編碼力 - grep & awk
  • fastq轉(zhuǎn)fasta -awk
  • 序列反向互補(bǔ)- awk&sed

CDS文件內(nèi)提取對(duì)應(yīng)ID的命令

ID:Acyan01G0000500.1 <br />file : final.gene.cds.fa

# 了解文件格式
less -S  final.gene.cds.fa
#格式屬于一行ID一行序列
grep Acyan01G0000500.1  final.gene.cds.fa -A1
  • 如果要搜索多個(gè)ID: Acyan01G0000500.1 Acyan01G0000800.1 Acyan03G0000900.1 的序列脐往?
vi idfile
grep -f idfile  final.gene.cds.fa  -A1 
grep -f idfile  final.gene.cds.fa  -A1 |grep -v "^-"

了解 -f, -v的含義 "^" "$" 的含義

#grep參數(shù)學(xué)習(xí):
-A n 指定輸出搜索目標(biāo)的后n行
-B n 指定輸出搜索目標(biāo)的前n行
-f <file> 以文件內(nèi)容為搜索目標(biāo)
-v 排除搜索到的行
"^" 行頭符號(hào)
"$" 行尾符號(hào)

思考題:對(duì)于不是一行ID+一行序列的如何提取扳埂?

sed -n '/LITCHI014205.m1/, /^>/p' Lchinesis_genome.Chr.cds| sed '$d'

事實(shí)上钙勃,這個(gè)方法我也想不到,全靠百度找答案聂喇。<br />思路:我們需要打印ID匹配到的一行到下一個(gè)基因的一行。參數(shù) -n 只輸出符合要求的行蔚携,其他行都不打酉L; 匹配具有ID和起始為">"字符之間的行內(nèi)容都實(shí)現(xiàn)打印酝蜒,最后我們的內(nèi)容是會(huì)包括了下一個(gè)基因ID行誊辉,所以刪除最后一行就可以實(shí)現(xiàn)了。

檢測(cè)CDS序列的編碼性

判斷ATG 起始位點(diǎn)

grep -v ">"  final.gene.cds.fa |  grep -v "^ATG" |head 
grep -v ">"  final.gene.cds.fa |  grep -v "^ATG" > tmp
grep -f tmp  final.gene.cds.fa -B1 |grep ">"

如何更加優(yōu)雅亡脑?

grep -f tmp  final.gene.cds.fa -B1 |grep ">" > tmp &&  grep -f tmp  final.gene.cds.fa -B1 |grep ">" |head
grep -f tmp  final.gene.cds.fa -B1 |grep ">" |grep -f -  final.gene.cds.fa -B1 |grep ">" > fail.id

如果遇到非一行名字一行序列格式的文件堕澄?
File : Lchinesis_genome.Chr.cds

grep ">" Lchinesis_genome.Chr.cds -A1|head
grep ">" Lchinesis_genome.Chr.cds -A1|grep -v ">"|grep -v "^-" | grep   -v '^ATG'
grep ">" Lchinesis_genome.Chr.cds -A1|grep -v ">"|grep -v "^-" | grep   -v '^ATG' |grep  -f - Lchinesis_genome.Chr.cds -B1 |grep ">"

判斷是否滿(mǎn)足三的倍數(shù)邀跃?

awk -F "" '{if($1~/>/){print}else{print NF}}' final.gene.cds.fa

awk -F "" '{if($1~/>/){print}else{print NF}}' final.gene.cds.fa |cut -f1 -d" " |head
#整理可看格式
awk -F "" '{if($1~/>/){print}else{print NF%3}}' tmp|cut -f1 -d" " |sed ':a;N; s/\n/\t/'|sed 's/>//' | sort -k2,2nr
  • 參數(shù)解析:
-F 指定分隔符,上述例子制定了分割符號(hào)為無(wú)
NF 是一個(gè)變量指代【域的數(shù)量】蛙紫,指代以分隔符為分割的域的總數(shù)拍屑;很復(fù)雜,如果分隔符默認(rèn)為"\t"坑傅,那么NF就是列數(shù)僵驰,但是由于我們分割符已經(jīng)設(shè)定了為無(wú),所以是指代一行的總數(shù)唁毒;
$1 第一域蒜茴, ~ 一般是用于正則表達(dá)式上是否符合的符號(hào) // 用于正則式的包裝
所以第一個(gè)命令指代的是,如果行頭是以">"為符號(hào)的話浆西,我們就直接打臃鬯健;如果不是近零,我們就統(tǒng)計(jì)行的總字符數(shù)(核酸長(zhǎng)度)诺核;

NF%3 就是核酸長(zhǎng)度是否能整除3,如果有余數(shù)就是非3的倍數(shù)秒赤;

最后再用sed來(lái)去替換換行符為tab分隔符猪瞬;
關(guān)于:a;N; 這個(gè)陌生的符號(hào),我下面有一個(gè)圖入篮,我感覺(jué)我也說(shuō)的不太清楚陈瘦。

最后的最后排序查看是否有余數(shù)不為0的ID

fastq-fasta轉(zhuǎn)換

#行首匹配@字符
awk '{if($1~/^@/){print}}' test1_R1.fq|head
#捕獲測(cè)序序列
awk '{if($1~/^[ATCG]/){print}}' test1_R1.fq|head
#捕獲測(cè)序序列為帶@和ATCG序列
awk '{if($1~/^@/){print}if($1~/^[ATCG]/){print}}' test1_R1.fq |head
#整理格式
awk '{if($1~/^@/){print}if($1~/^[ATCG]/){print}}' test1_R1.fq |sed 's/@/>/'|head
#重定向到新文件
awk '{if($1~/^@/){print}if($1~/^[ATCG]/){print}}' test1_R1.fq |sed 's/@/>/' > test_R1.fastq

相對(duì)上面的一些例子,fastq-fasta轉(zhuǎn)換就變得更加簡(jiǎn)單了潮售。

序列反向互補(bǔ)配對(duì)

實(shí)現(xiàn)反向

  • file=test.seq
awk -F "" '{if($1~/>/){print}else{{for(i=NF;i>0;i--)printf $i}printf"\n"}}' test.seq|head -n2

awk -F "" '{if($1~/>/){print}else{{for(i=NF;i>0;i--)printf $i}printf"\n"}}' test_rev.seq
同樣設(shè)置分割符為無(wú)痊项,說(shuō)明逐個(gè)字符查看;
用到一個(gè)awk內(nèi)置判斷酥诽,if(){} else{}
如果以">"起始鞍泉,我們直接打印,否則我們就實(shí)現(xiàn)反向

實(shí)現(xiàn)反向用到了一個(gè)內(nèi)置的for()循環(huán)肮帐,i=NF 定義變量i為行數(shù)咖驮;i>0 必須大于0;i-- 實(shí)現(xiàn)每循環(huán)減i=i-1
然后逐一輸出域值(堿基); 
注意這里用到的是printf不是print训枢。其兩個(gè)區(qū)別在于托修,printf只輸出字符,不自帶換行符恒界,而print會(huì)在字符后加換行符睦刃。
當(dāng)完成所有else里的內(nèi)容再額外補(bǔ)充一次換行符,進(jìn)入下一個(gè)基因十酣;

實(shí)現(xiàn)互補(bǔ)

sed '/^[ATCG]/y/ATCG/TAGC/' test_rev.seq > test_rev_comp.seq
  • 解析: 針對(duì)開(kāi)頭異ATCG的行進(jìn)行逐一替換涩拙;
sed 匹配條件/^[ATCG]/ 滿(mǎn)足以A/T/C/G開(kāi)頭的行际长,就可以排除了ID行;
然后再進(jìn)行y動(dòng)作的替換兴泥,這個(gè)替換在很多教程都沒(méi)怎么提及工育;也是一個(gè)替換動(dòng)作,但跟s有點(diǎn)不一樣郁轻;
它是一個(gè)逐一替換的動(dòng)作翅娶,A-T,T-A,C-G,G-C 同時(shí)實(shí)現(xiàn)替換,不會(huì)重復(fù)替換好唯;
進(jìn)一步實(shí)現(xiàn)了互補(bǔ)動(dòng)作

因?yàn)榧磳⒋蛩阒v解的內(nèi)容是三劍客竭沫,所以以上都以三劍客進(jìn)行整理命令;事實(shí)上同等替換的骑篙,容易理解的命令還是很多蜕提; 反向可以用rev, 替換可以用tr

ps: 真實(shí)數(shù)據(jù)是很多已經(jīng)造好的車(chē)子靶端,如:seqkit谎势。也不需要我們折騰著造輪子,但是知識(shí)往往都是在造輪子的過(guò)程中積累杨名。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末脏榆,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子台谍,更是在濱河造成了極大的恐慌须喂,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件趁蕊,死亡現(xiàn)場(chǎng)離奇詭異坞生,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)掷伙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)是己,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人任柜,你說(shuō)我怎么就攤上這事卒废。” “怎么了宙地?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵升熊,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我绸栅,道長(zhǎng),這世上最難降的妖魔是什么页屠? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任粹胯,我火速辦了婚禮蓖柔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘风纠。我一直安慰自己况鸣,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布竹观。 她就那樣靜靜地躺著镐捧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪臭增。 梳的紋絲不亂的頭發(fā)上懂酱,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音誊抛,去河邊找鬼列牺。 笑死,一個(gè)胖子當(dāng)著我的面吹牛拗窃,可吹牛的內(nèi)容都是我干的瞎领。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼随夸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼九默!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起宾毒,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤驼修,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后伍俘,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體邪锌,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年癌瘾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了觅丰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡妨退,死狀恐怖妇萄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情咬荷,我是刑警寧澤冠句,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站幸乒,受9級(jí)特大地震影響懦底,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜罕扎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一聚唐、第九天 我趴在偏房一處隱蔽的房頂上張望丐重。 院中可真熱鬧,春花似錦杆查、人聲如沸扮惦。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)崖蜜。三九已至,卻和暖如春客峭,著一層夾襖步出監(jiān)牢的瞬間豫领,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工桃笙, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留氏堤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓搏明,卻偏偏與公主長(zhǎng)得像鼠锈,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子星著,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

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

  • 三劍客基礎(chǔ)詳解 [TOC] 三劍客之grep詳解 通配符與正則表達(dá)式這兩口子可以說(shuō)貫穿三劍客始終购笆,甚至?xí)r貫穿lin...
    淵亭無(wú)跡閱讀 422評(píng)論 0 0
  • 通配符 通配符 三劍客老三 sed 常用參數(shù)及說(shuō)明 正則使用 與 grep一樣,sed 在文件中查找模式時(shí)也可以使...
    智銳閱讀 489評(píng)論 1 1
  • shell piping管道 shell輸入輸出 read 用來(lái)讀取輸入虚循,并賦值給變量 echo同欠,printf ...
    芝芝復(fù)吱吱閱讀 1,403評(píng)論 0 0
  • [TOC] awk铺遂、grep、sed是linux操作文本的三大利器茎刚,合稱(chēng)文本三劍客襟锐,也是必須掌握的linux命令之...
    米不開(kāi)朗基羅閱讀 216評(píng)論 0 1
  • “ 每個(gè)Linux老鳥(niǎo)都知道,在Linux中 一切皆文件 ,那么對(duì)于文件的處理就至關(guān)重要膛锭,所以我們今天開(kāi)始學(xué)習(xí)Li...
    onlybugs閱讀 202評(píng)論 0 0