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 55 56 57 58 59 60 61 62 63 64 65 66 67
|
package ReadTracker;
use strict;
use warnings;
use Carp;
use ReadManager;
sub new {
my ($packagename) = shift;
my $self = { reads => {}, # read indices, use ReadManager to hold full acc strings.
};
bless ($self, $packagename);
return($self);
}
sub track_reads {
my $self = shift;
my @reads = @_;
foreach my $read (@reads) {
my $index = &ReadManager::get_read_index($read);
$self->{reads}->{$index}++;
}
return;
}
sub append_to_ReadTracker {
my $self = shift;
my $to_add_ReadTracker = shift;
foreach my $read_index (keys %{$to_add_ReadTracker->{reads}}) {
$self->{reads}->{$read_index} += $to_add_ReadTracker->{reads}->{$read_index};
}
return;
}
sub get_tracked_read_indices {
my $self = shift;
return(keys %{$self->{reads}});
}
sub get_read_base_count {
my $self = shift;
my $read = shift;
unless (defined $self->{reads}->{$read}) {
confess "Error, no read index stored [$read] ";
}
return($self->{reads}->{$read});
}
1; #EOM
|