Bio::SAGE::DataProcessing::AveragePhredFilter - A filter that validates sequences based on average Phred score.


Bio-SAGE-DataProcessing documentation Contained in the Bio-SAGE-DataProcessing distribution.

Index


Code Index:

NAME

Top

Bio::SAGE::DataProcessing::AveragePhredFilter - A filter that validates sequences based on average Phred score.

SYNOPSIS

Top

  use Bio::SAGE::DataProcessing::AveragePhredFilter;
  $filter = new Bio::SAGE::DataProcessing::AveragePhredFilter->new( 30, 15 );

DESCRIPTION

Top

This module is a concrete subclass of Bio::SAGE::DataProcessing::Filter. The implementation considers a sequence valid if the average quality of all nucleotides meet a given value.

INSTALLATION

Top

Included with Bio::SAGE::DataProcessing.

PREREQUISITES

Top

This module requires the Bio::SAGE::DataProcessing::Filter package.

CHANGES

Top

  1.10 2004.06.19 - Initial release.
  0.01 2004.05.02 - prototype

CLASS METHODS

Top

new $avgPhred, <$minPhred>

Constructor.

Arguments

$avgPhred

  The average phred value of all nucleotides required
  for a sequence to be considered valid.

$minPhred (optional)

  The minimum phred value that all nucleotides in a
  sequence must have in order to be considered valid.
  The default value if this argument is not specified
  is 0.

Usage

  my $filter = Bio::SAGE::DataProcessing::MinimumPhredFilter->new( 30, 20 );
  if( $filter->is_tag_valid( "AAAAAA", "20 40 40 40 30 35" ) ) {
      print "VALID!\n";
  }

INSTANCE METHODS

Top

is_valid $sequence, $scores

This implements the is_valid subroutine required in concrete subclasses of Bio::SAGE::DataProcessing::Filter.

Arguments

$sequence

  The tag sequence.

$scores

  A space-separated string of Phred scores for the
  specified sequence.

Returns

  Returns non-zero if the valid, zero if invalid.

Usage

  my $filter = Bio::SAGE::DataProcessing::MinimumPhredFilter->new();
  if( $filter->is_tag_valid( "AAAAAA", "20 40 40 40 30 35" ) ) {
      print "VALID!\n";
  }

compare $scores1, $scores2

The default implementation provided by the base class Bio::SAGE::DataProcessing::Filter is used. See the documentation for the base class for more information.

COPYRIGHT

Top

AUTHOR

Top

Scott Zuyderduyn <scottz@bccrc.ca> BC Cancer Research Centre

VERSION

Top

  1.20

SEE ALSO

Top

  Bio::SAGE::DataProcessing(1).
  Bio::SAGE::DataProcessing::Filter(1).

TODO

Top

  Nothing yet.


Bio-SAGE-DataProcessing documentation Contained in the Bio-SAGE-DataProcessing distribution.
# *%) $Id: AveragePhredFilter.pm,v 1.6 2004/10/15 22:30:46 scottz Exp $
#
# Copyright (c) 2004 Scott Zuyderduyn <scottz@bccrc.ca>.
# All rights reserved. This program is free software; you
# can redistribute it and/or modify it under the same
# terms as Perl itself.

package Bio::SAGE::DataProcessing::AveragePhredFilter;

use Bio::SAGE::DataProcessing::Filter;
use base qw( Bio::SAGE::DataProcessing::Filter );
use strict;
use diagnostics;
use vars qw( $VERSION @ISA @EXPORT @EXPORT_OK );

#require Exporter;
#require AutoLoader;

#@ISA = qw( Exporter AutoLoader );
@ISA = qw( Bio::SAGE::DataProcessing::Filter );
@EXPORT = qw();
$VERSION = $Bio::SAGE::DataProcessing::VERSION;

my $PACKAGE = "Bio::SAGE::DataProcessing::AveragePhredFilter";

#######################################################
sub new {
#######################################################
    my $class = shift;
    return $class->SUPER::new( @_ );

}

#######################################################
sub is_valid {
#######################################################
    my $this = shift;
    my $sequence = shift || die( $PACKAGE . "::is_valid no sequence defined." );
    my $scores = shift; # || die( $PACKAGE . "::is_valid no scores defined." );

    if( !defined( $scores ) ) { return 1; } # force valid

    if( $Bio::SAGE::DataProcessing::DEBUG >= 1 ) {
        print STDERR $PACKAGE . "::is_valid looking at " . $scores . "\n";
    }

    my $min_avg_phred = $this->{'args'}[0];
    my $min_phred = $this->{'args'}[1];

    my $avg = 0;

    my @scores = split( /\s/, $scores );
    foreach my $score ( @scores ) {
        if( $score < $min_phred ) {
            if( $Bio::SAGE::DataProcessing::DEBUG >= 1 ) {
                print STDERR "    $score does not meet minimum $min_phred\n";
            }
            return 0;
        }
        $avg += $score;
    }
    $avg /= scalar( @scores );

    if( $avg < $min_avg_phred ) {
        if( $Bio::SAGE::DataProcessing::DEBUG >= 1 ) {
            print STDERR "    $avg does not meet minimum avg. phred $min_avg_phred\n";
        }
        return 0;
    }

    return 1;

}

#######################################################
#######################################################
1;

__END__