Ich habe die folgende FASTA-Datei:
%Vor%Meine gewünschte Ausgabe:
%Vor%Das ist mein Code:
%Vor%Die Ausgabe, die ich mit diesem Code bekomme, lautet:
%Vor%Ich brauche eine kleine Modifikation, um mit mehreren Sequenzzeilen umgehen zu können.
Ich brauche auch einen Weg, um die Gesamtsequenzen und die Gesamtlänge zu haben. Jeder Vorschlag ist willkommen ... in bash oder awk bitte. Ich weiß, dass es in Perl / BioPerl einfach ist, und tatsächlich habe ich ein Skript, um es auf diese Art zu machen.
Eine awk
/ gawk
Lösung kann aus drei Stufen bestehen:
Jedes Mal, wenn header
gefunden wird, sollten diese Aktionen ausgeführt werden:
sequence
-Linien müssen wir nur Summen sammeln . END
die Restsequenz . Kommentierter Code:
%Vor%A oneliner :
%Vor%Für die Summen:
%Vor%Ich wollte einige Verbesserungen an klashxx's Antwort weitergeben, die nützlich sein könnten. Die Ausgabe unterscheidet sich dadurch, dass sie die Sequenz-ID und ihre Länge auf einer Zeile ausgibt. Es ist nicht länger ein Einzeiler, der Nachteil ist, dass Sie es als Skriptdatei speichern müssen.
Es analysiert auch die Sequenz-ID aus der Kopfzeile basierend auf Leerzeichen ( chrM
in >chrM gi|251831106|ref|NC_012920.1|
). Anschließend können Sie anhand der ID eine spezifische Sequenz auswählen, indem Sie die Variable target
wie folgt festlegen: $ awk -f seqlen.awk -v target=chrM seq.fa
.