(持續整理)Linux-shell tricks for bioinformatics.

由一個純生物背景的人,轉到生物信息學領域之後。剛開始學會寫腳本的時候,彷彿開啟了一扇通往新世界的大門。好多以前覺得很難完成的事,寫個腳本輕鬆完成。隨著時間的推移,攢下了越來越多的小腳本。伴隨著技能樹的拓展,知道了很多事根本不用寫腳本,直接用shell一行搞定。

並且用shell來處理這些小事的時候,還有一個好處就是通過管道符將這些linux操作串聯以來,形成一套pipeline。 誠然,寫腳本也可以,但是用linux代碼更加符合自己對簡單,優雅的審美要求,所以告別dirty code,擁抱Shell。

因為突然想要將這些trick整理下來,而這些腳本可能零碎地存在於自己的筆記當中,所以會持續更新。

1. 將一個文件按行倒序排列,即將第一行變為倒數第一行,第二行變為倒數第二行,一次類推。

tac test.fastan

2. 對於Rfam資料庫下下來的noncoding RNAs的fasta文件,注釋信息就在fasta文件的header裡面,如果我們想要提取所有的sequence的注釋信息。Shell code如下:

grep "^>" rfam.fasta | tr -d ">" |le n

3. 用Trinity坐組裝的之後得到的轉錄組文件,我們要做注釋的話,有些header可能過長,所以我們要將header給截短些,僅保留最關鍵的信息。Shell code如下:

cut -f 1 -d " " trinity.fasta |le n

4. 統計fastq的所有鹼基的數目。

awk BEGIN{sum=0;}{if(NR%4==2){sum+=length($0);}}END{print sum;} your.fqn

5. SAM文件中根據某一行的數值進行篩選,並且保留header. 以RSV這種病毒為例。這種病毒有四條RNA,因此有五行header,保留header,再根據某行值進行過濾。

awk $3<1000 || NR <= 5 your.SAMn

6. 將fastq文件轉化為fasta。

sed /^@/!d;s//>/;N your.fq > your.fan

7. 當我們得到基因的注釋之後,得到了two column的基因注釋table, 但是裡面有很多NA值。但我們不想看到NA,怎麼辦呢。方法很多。

perl -ne print unlesss /NA/ filenawk {if(!/NA/){print $0}} filenawk $0 !~ /NA/ {print} file ngrep -v "NA" filensed -e /*NA*/d filen

8. 遞歸地查找當前目錄下所有以"fasta"為後綴的文件,統計其行數。

find . -name "*.fasta " | xargs wc -ln

9. 當你有兩個gene list的文件,要找出僅在gene.file2中存在的行,不在gene.file1中出現的gene用來做GO分析。

grep -Fxv -f gene.file1 gene.file2n

10. 在某個目錄下有很多文件,你想看看你最感興趣的基因名字出現在哪個文件里,文件很多,並且子文件夾還有很多文件,即在一個目錄下遞歸地查找匹配某字元串的文件。怎麼辦呢。

grep -Hrn "P53" .n

推薦閱讀:

生物信息晉級之路
數據分析進階之路

TAG:Linux | 生物信息学 | Shell语言 |