Convert fastq to fasta
Converting fasq to fasta can sometimes be useful. Here a simple perl script is described that can do this. The script works on a stream, and will output to STDOUT. Optional is filtering for reads that have a certain minimum length
Example for invoking the script, assuming the script is named fastq_to_fasta.pl: <source lang='bash'> gunzip -c fastqfile.fq.gz | perl fastq_to_fasta.pl -l 50 | gzip -c >fastafile.fa.gz </source>
Here is the perl script itself:
<source lang='perl'>
#!/usr/bin/perl -w
use strict;
use warnings;
use Getopt::Std;
my %opts = ();
$opts{l}=60;
getopt('l', \%opts);
my $minlength = $opts{l};
my $count=0;
my $name='nn';
while (<>){
my $line = $_;
chomp $line;
++$count;
if ($count==1){
$name = $line;
$name =~ s/^@/>/;
}
if ($count==2){
if (length $line > 60){
print "$name\n$line\n";
}
}
if ($count==4){
$count=0;
}
}
exit;
</source>