Wenn Sie wie üblich über mehrzeilige Fasta-Dateien verfügen, können Sie diese Skripte 1 sup> verwenden, um zwischen fasta und tbl (Sequenzname <TAB>
Sequenz) zu konvertieren:
FastaToTbl
#! / usr / bin / awk -f {if (substr ($ 1 , 1,1) == ">") if (NR>1) printf "\ n% s \ t", substr ($ 0,2, Länge ($ 0) -1) sonst printf "% s \ t", substr ($ 0 , 2, Länge ($ 0) -1) sonst printf "% s", $ 0} END {printf "\ n"}
TblToFasta p>
#! / usr / bin / awk -f {Sequenz = $ NF ls = Länge (Sequenz) ist = 1 fld = 1 während (fld < NF) {if (fld == 1) {printf ">"} printf "% s" , $ fld if (fld == NF-1) {printf "\ n"} fld = fld + 1} while (ist < = ls) {printf "% s \ n", substr (Sequenz, ist, 60) ist = is + 60}}
Speichern Sie diese in Ihrem $ PATH
, machen Sie sie ausführbar, und Sie können dann Folgendes tun:
$ cat file.fa>sequence1 ATGCGGAGCTTAGATTCTCGAGATCTCGATATCGCGCTTATAAAAGGCCCGGATTAGGGCTAGCTAGATATCGCGATAGCTAGGGATATCGAGATGCGATACG>sequence2 GTACTCGATACGCTACGCGATATTGCGCGATACGCATAGCTAACGATCGACTAGTGATGCATAGAGCTAGATCAGCTACGATAGCATCGATCGACTACGATCAGCATCAC $ FastaToTbl file.fa Sequence1 ATGCGGAGCTTAGATTCTCGAGATCTCGATATCGCGCTTATAAAAGGCCCGGATTAGGGCTAGCTAGATATCGCGATAGCTAGGGATATCGAGATGCGATACGsequence2 GTACTCGATACGCTACGCGATATTGCGCGATACGCATAGCTAACGATCGACTAGTGATGCATAGAGCTAGATCAGCTACGATAGCATCGATCGACTACGATCAGCATCAC
Und , um die Fasta zurückzubekommen:
$ FastaToTbl file.fa | TblToFasta>sequence1 ATGCGGAGCTTAGATTCTCGAGATCTCGATATCGCGCTTATAAAAGGCCCGGATTAGGGCTAGCTAGATATCGCGATAGCTAGGGATATCGAGATGCGATACG>sequence2 GTACTCGATACGCTACGCGATATTGCGCGATACGCATAGCTAACGATCGACTAGTGATGCATAGAGCTAGATCAGCTACGATAGCATCGATCGACTACGATCAGCATCAC
Dies kann ein sehr nützlicher Trick sein, wenn Sie eine Fasta-Datei nach einer Zeichenfolge durchsuchen:
TblToFasta file.fa | grep 'foo' | FastaToTbl
Wenn Sie wirklich den führenden >
des Headers behalten möchten (was nicht sehr nützlich zu sein scheint), können Sie so etwas tun :
$ perl -0pe 's / \ n // g; s / .> / \ n> / g; s / $ / \ n /; ' file.fa >sequence1 ATGCGGAGCTTAGATTCTCGAGATCTCGATATCGCGCTTATAAAAGGCCCGGATTAGGGCTAGCTAGATATCGCGATAGCTAGGGATATCGAGATGCGATAC>sequence2 GTACTCGATACGCTACGCGATATTGCGCGATACGCATAGCTAACGATCGACTAGTGATGCATAGAGCTAGATCAGCTACGATAGCATCGATCGACTACGATCAGCATCAC
Aber das wird die gesamte Datei in den Speicher gelesen. Wenn dies ein Problem ist, fügen Sie zwischen jedem Fasta-Datensatz eine leere Zeile ein und verwenden Sie dann den Absatzmodus von Perl, um jeden "Absatz" (Sequenz) gleichzeitig zu verarbeiten:
perl -pe 's / > / \ n> / 'file.fa | perl -00pe 's / \ n // g; s / .> / \ n> / g; s / $ / \ n /; '
1 sup> Dank an Josep Abril, der diese Skripte vor mehr als einem Jahrzehnt geschrieben hat. sub>