FASTA文件分割


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM