None available.
sub filter_results
{ my ($self, $transcripts) = @_;
my (@keep, %by_hit);
foreach my $t (@$transcripts) {
my ($sf) = @{$t->get_all_supporting_features};
next if $sf->percent_id < $self->min_percent;
next if $sf->score < $self->min_score;
push @{$by_hit{$sf->hseqname}}, [$t, $sf];
}
foreach my $hid (keys %by_hit) {
my @entries = @{$by_hit{$hid}};
my $best_cov = $entries[0]->[1]->score;
my $best_percent = $entries[0]->[1]->percent_id;
foreach my $hit (@entries) {
if ($hit->[1]->score >= $best_cov and
($hit->[1]->percent_id >= $best_percent or
$best_percent - $hit->[-1]->percent_id <= $self->percent_range)) {
push @keep, $hit->[0];
}
}
}
return\@ keep; } |
sub min_percent
{ my ($self, $val) = @_;
if (defined $val) {
$self->{_min_percent} = $val;
}
if (exists $self->{_min_percent}) {
return $self->{_min_percent};
} else {
return 0;
} } |
sub min_score
{ my ($self, $val) = @_;
if (defined $val) {
$self->{_min_score} = $val;
}
if (exists $self->{_min_score}) {
return $self->{_min_score};
} else {
return 0;
}
}
1; } |
sub new
{ my ($class, @args) = @_;
my $self = bless {},$class;
my ($percent_range,
$min_percent,
$min_score) =
rearrange([
'PERCENTRANGE',
'MINPERCENT',
'MINSCORE'
], @args);
$self->percent_range($percent_range) if defined $percent_range;
$self->min_percent($min_percent) if defined $min_percent;
$self->min_score($min_score) if defined $min_score;
return $self; } |
sub percent_range
{ my ($self, $val) = @_;
if (defined $val) {
$self->{_percent_range} = $val;
}
if (exists $self->{_percent_range}) {
return $self->{_percent_range};
} else {
return 0;
} } |