Ich führe eine Regex-Suche durch und möchte nur die Treffer im Fasta-Format ausdrucken (zwei Zeilen Daten: der erste beginnt mit einer Karotte ">" gefolgt vom Treffer und der zweiten Zeile) ohne Karotte, aber immer noch die Trefferinformationen enthalten).
Ich kann erfolgreich eine Ausgabe Multifasta-Datei erstellen, aber die Karotte und Zeilenumbrüche sind in der Ausgabedatei enthalten, ob es einen Treffer gibt oder nicht.Leere Regex-Treffer aus einem Array entfernen
Erzeugte Ausgabe:
>
>
>TAGCTAGC
TAGCTAGC
>
>GCTAGCTA
GCTAGCTA
gewünschte Ausgabe:
>TAGCTAGC
TAGCTAGC
>GCTAGCTA
GCTAGCTA
Hier ist mein Code:
#!/usr/bin/perl
use warnings;
use strict;
open(CLUSTER, ">", "SequencesToCluster.txt") or die $!;
my @TrimmedSequences;
my @ArrayofFiles = glob ("~/BLASTdb/Individual_Sequences_*");
foreach my $file (@ArrayofFiles){
open (my $sequence, $file) or die "can't open file: $!";
while (my $line = <$sequence>){
if ($line !~/^>/){
my $seq = $line;
$seq =~ s/\R//g;
$seq =~ m/([TAGC]{16})(CGGAGCTTTA|GCCATTTCT|TAAAGCTCCG|AGAAATGGGC/;
push(@TrimmedSequences, ">", $1, "\n", $1, "\n");
}
}
}
#Here I believe I need to manipulate the array to get rid of blank fastas
print CLUSTER @TrimmedSequences;
Sie könnten überprüfen, dass '$ 1' in Ihrer inneren while-Schleife definiert ist, und nicht die leeren Zeilen an erster Stelle schieben. –
Dein letztes '$ seq = ~' scheint eins zu fehlen ')' –
Es ist immer gut, ein zweites Paar Augen zu haben, die mein Tippen überprüfen! Entschuldigung für den Tippfehler. Guter Fang. – Rob