-
Notifications
You must be signed in to change notification settings - Fork 0
/
fasta_qual_to_fasta.pl
executable file
·54 lines (40 loc) · 1.11 KB
/
fasta_qual_to_fasta.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/usr/bin/perl -w
use strict;
use Bio::SeqIO;
use Bio::Seq::Quality;
use Getopt::Long;
die "pass a fasta and a fasta-quality file\n"
unless @ARGV;
my ($seq_infile,$qual_infile)
= (scalar @ARGV == 1) ?($ARGV[0], "$ARGV[0].qual") : @ARGV;
## Create input objects for both a seq (fasta) and qual file
my $in_seq_obj =
Bio::SeqIO->new( -file => $seq_infile,
-format => 'fasta',
);
my $in_qual_obj =
Bio::SeqIO->new( -file => $qual_infile,
-format => 'qual',
);
my $out_fastq_obj =
Bio::SeqIO->new( -format => 'fastq'
);
while (1){
## create objects for both a seq and its associated qual
my $seq_obj = $in_seq_obj->next_seq || last;
my $qual_obj = $in_qual_obj->next_seq;
die "foo!\n"
unless
$seq_obj->id eq
$qual_obj->id;
## Here we use seq and qual object methods feed info for new BSQ
## object.
my $bsq_obj =
Bio::Seq::Quality->
new( -id => $seq_obj->id,
-seq => $seq_obj->seq,
-qual => $qual_obj->qual,
);
## and print it out.
$out_fastq_obj->write_fastq($bsq_obj);
}