FASTA格式是一種用於記錄序列的文本格式,在生信分析中經常會用到.fasta文件中往往儲存成千上萬條序列,而在某些時候,需要對文件進行分割,如分割成每個序列一個文件,或分割成較小的fasta文件
假如有如下數據:
Tricas1.fasta
$ head Tricas1.fasta
CM000276.2
tgatttttaggttagaaattgttttttaaacacgtgttcgcgccattttttttatttatt
tgccaattaagtgcacgtgtccgcgccatttaaaattttgttaccgatttagtgcgattt
tttaggttggcattactttttaaacacgtaactgcgccatttttttaatttagttacctg
tttagcgtgatttttaggttagaaattgttttttaaacacgtgttcgcgccatttttttt
atttatttgccaattaagtgcacgtgtccgcgccatttaaaattttgttaccgatttagt
gcgattttttaggttggcattactttttaaacacgtaactgcgccatttttttaatttag
ttacctgtttagcgtgatttttaggttagaaattgttttttaaacacgtgttcgcgccat
tttttttttatttatttaccgaataagtgcacgtgtccgctccatttaaaattttattag
cgatttagtgcgattttttaggttggcattactttttaaacacgtaactgcgccattttt
這里介紹幾種方法對fasta文件進行分割。
方法一:awk
這個方法將文件分割為每條序列一個文件
awk '/^>/{s=++num}{print > "Tricas1_"s".fa"}' Tricas1.fasta
awk 依次對文件的每一行進行處理,當遇到 > 開頭的行時,執行 ++num(即 num = num + 1),並將結果賦值給 s,然后將結果重定向給 example_s.fa(其中,在第一條序列時,s 為 1);當處理的行為序列時,語句 /^>/{s=++num} 不執行,直接執行 {print > "example_"s".fa"}(和 {print $0 > "example_"s".fa"} 一樣)。
基於以上原理,實現了 fasta 文件的分割。
方法二:perl
該程序可以通過參數 --n-parts num 設定需要將文件設定為 num份,如下面的示例將文件分為兩份(使得序列數目盡量相同);當將num 設置成序列的總數時,其效果與方法一
$ perl fasta-splitter.pl --n-parts 2 Tricas1.fasta
程序下載地址:http://kirill-kryukov.com/study/tools/fasta-splitter/files/fasta-splitter-0.2.6.zip
解壓即可使用:unzip fasta-splitter-0.2.6.zip