Bio::Prospect::File - interface to Prospect Files


Bio-Prospect documentation Contained in the Bio-Prospect distribution.

Index


Code Index:

NAME

Top

Bio::Prospect::File -- interface to Prospect Files

$Id: File.pm,v 1.15 2003/11/18 19:45:45 rkh Exp $

SYNOPSIS

Top

 use Bio::Prospect::File;

 my $pf = new Bio::Prospect::File( $fn );

 while( my $t = $pf->next_thread() ) {
   printf("%s->%s   raw=%d mut=%d pair=%d\n",
      $t->qname(), $t->tname(), $t->raw_score(), 
      $t->mutation_score(), $t->pair_score() );
   print $t->alignment();
 }

DESCRIPTION

Top

Bio::Prospect::File is a subclass of IO::File and is intended for use for parsing Prospect XML files. It is used by Bio::Prospect::LocalClient to return Thread objects from Prospect output.

METHODS

Top

new()

 Name:      new()
 Purpose:   constructor
 Arguments: 
 Returns:   Bio::Prospect::File

fdopen()

 Name:      fdopen()
 Purpose:   overrides fdopen in IO::File
 Arguments: same as IO::File::fdopen
 Returns:   nothing

open()

 Name:      open()
 Purpose:   overrides open in IO::File
 Arguments: same as IO::File::open
 Returns:   nothing

next_thread()

 Name:      next_thread()
 Purpose:   return next Thread object
 Arguments: none
 Returns:   Bio::Prospect::Thread

next_thread_as_xml()

 Name:      next_thread_as_xml()
 Purpose:   return next threading xml tag
 Arguments: none
 Returns:   xml string

fdopen()

 Name:      _advance()
 Purpose:   INTERNAL METHOD: check if proper Prospect xml
 Arguments: none
 Returns:   1 - okay, 0 - bad xml


Bio-Prospect documentation Contained in the Bio-Prospect distribution.
# Bio::Prospect::File
# $Id: File.pm,v 1.15 2003/11/18 19:45:45 rkh Exp $
# @@banner@@


package Bio::Prospect::File;

# ISA:
use base IO::File;

use strict;
use warnings;
use Carp;
use Bio::Prospect::Thread;
use vars qw( $VERSION );
$VERSION = sprintf( "%d.%02d", q$Revision: 1.15 $ =~ /(\d+)\.(\d+)/ );



#-------------------------------------------------------------------------------
# new()
#-------------------------------------------------------------------------------

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


#-------------------------------------------------------------------------------
# fdopen()
#-------------------------------------------------------------------------------

sub fdopen {
  my $self = shift;
  my $rv = $self->SUPER::fdopen( @_ );
  if (not $self->_advance()) {
    throw Bio::Prospect::RuntimeError("file doesn't look like a Prospect XML file\n");
  }
  return 1;
}


#-------------------------------------------------------------------------------
# open()
#-------------------------------------------------------------------------------

sub open {
  my $self = shift;
  my $rv = $self->SUPER::open( @_ );
  if (not $self->_advance()) {
    throw Bio::Prospect::RuntimeError("file doesn't look like a Prospect XML file\n");
  }
  return 1;
}




#-------------------------------------------------------------------------------
# next_thread()
#-------------------------------------------------------------------------------

sub next_thread {
  my $self = shift;

  my $xml = $self->next_thread_as_xml();
  return unless defined $xml;

  return( new Bio::Prospect::Thread( $xml ) );
}


#-------------------------------------------------------------------------------
# next_thread_as_xml()
#-------------------------------------------------------------------------------

sub next_thread_as_xml {
  my $self = shift;
  local $/ = '</threading>';
  my $retval = $self->SUPER::getline();
  if ( !defined $retval or
    $retval !~ m/<threading/ ) {
     return();
  } else {
    return( $retval );
  }
}


#---------------------------------------------
# INTERNAL METHODS
#---------------------------------------------

#-------------------------------------------------------------------------------
# _advance()
#-------------------------------------------------------------------------------

sub _advance {
  my $self = shift;
  my $firstline = $self->getline();
  return( (defined $firstline) and ($firstline =~ m/^<prospectOutput>/) );
}


1;