Sequenzlänge der FASTA-Datei

8

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.

    
cucurbit 02.06.2014, 10:44
quelle

2 Antworten

13

Eine awk / gawk Lösung kann aus drei Stufen bestehen:

  1. Jedes Mal, wenn header gefunden wird, sollten diese Aktionen ausgeführt werden:

    • Vorheriges Seqlen falls vorhanden .
    • drucken
    • Tag drucken.
    • Initialisieren seqlen .
  2. Für die sequence -Linien müssen wir nur Summen sammeln .
  3. Schließlich drucken wir auf der Stufe END die Restsequenz .

Kommentierter Code:

%Vor%

A oneliner :

%Vor%

Für die Summen:

%Vor%     
klashxx 02.06.2014, 10:51
quelle
0

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 .

%Vor%     
Nick S 16.02.2015 18:32
quelle

Tags und Links