diff variant_effect_predictor/Bio/SearchIO/SearchWriterI.pm @ 0:1f6dce3d34e0

Uploaded
author mahtabm
date Thu, 11 Apr 2013 02:01:53 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/variant_effect_predictor/Bio/SearchIO/SearchWriterI.pm	Thu Apr 11 02:01:53 2013 -0400
@@ -0,0 +1,127 @@
+#-----------------------------------------------------------------
+# $Id: SearchWriterI.pm,v 1.7 2002/12/01 00:05:01 jason Exp $
+#
+# BioPerl module Bio::SearchIO::SearchWriterI
+#
+# Cared for by Steve Chervitz <sac@bioperl.org>
+#
+# You may distribute this module under the same terms as perl itself
+#-----------------------------------------------------------------
+
+=head1 NAME
+
+Bio::SearchIO::SearchWriterI - Interface for outputting parsed Search results
+
+=head1 SYNOPSIS
+
+Bio::SearchIO::SearchWriterI objects cannot be instantiated since this
+module defines a pure interface.
+
+Given an object that implements the Bio::SearchIO::SearchWriterI interface,
+you can do the following things with it:
+
+    print $writer->to_string( $result_obj, @args );
+
+=head1 DESCRIPTION
+
+This module defines abstract methods that all subclasses must implement
+to be used for outputting results from B<Bio::Search::Result::ResultI>
+objects.
+
+=head1 AUTHOR
+
+Steve Chervitz E<lt>sac@bioperl.orgE<gt>
+
+=head1 DISCLAIMER
+
+This software is provided "as is" without warranty of any kind.
+
+=head1 APPENDIX
+
+The rest of the documentation details each of the object methods.
+
+=cut
+
+package Bio::SearchIO::SearchWriterI;
+
+use Bio::Root::RootI;
+
+@ISA = qw( Bio::Root::RootI );
+
+=head2 to_string
+
+ Purpose   : Produces data for each Search::Result::ResultI in a string.
+           : This is an abstract method. For some useful implementations,
+           : see ResultTableWriter.pm, HitTableWriter.pm, 
+           : and HSPTableWriter.pm.
+ Usage     : print $writer->to_string( $result_obj, @args );
+ Argument  : $result_obj = A Bio::Search::Result::ResultI object
+           : @args = any additional arguments used by your implementation.
+ Returns   : String containing data for each search Result or any of its
+           : sub-objects (Hits and HSPs).
+ Throws    : n/a
+
+=cut
+
+sub to_string {
+    my ($self, $result, @args) = @_;
+    $self->throw_not_implemented;
+}
+
+=head2 end_report
+
+ Title   : end_report
+ Usage   : $self->end_report()
+ Function: The method to call when ending a report, this is
+           mostly for cleanup for formats which require you to 
+           have something at the end of the document (</BODY></HTML>)
+           for HTML
+ Returns : string
+ Args    : none
+
+
+=cut
+
+sub end_report { 
+    my $self = shift;
+    return '';
+}
+
+=head2 filter
+
+ Title   : filter
+ Usage   : $writer->filter('hsp', \&hsp_filter);
+ Function: Filter out either at HSP,Hit,or Result level
+ Returns : none
+ Args    : string => data type,
+           CODE reference
+
+
+=cut
+
+# yes this is an implementation in the interface, 
+# yes it assumes that the underlying class is hash-based
+# yes that might not be a good idea, but until people
+# start extending the SearchWriterI interface I think
+# this is an okay way to go
+
+sub filter {
+    my ($self,$method,$code) = @_;    
+    return undef unless $method;
+    $method = uc($method);
+    if( $method ne 'HSP' &&
+	$method ne 'HIT' &&
+	$method ne 'RESULT' ) {
+	$self->warn("Unknown method $method");
+	return undef;
+    }
+    if( $code )  {
+	$self->throw("Must provide a valid code reference") unless ref($code) =~ /CODE/;
+	$self->{$method} = $code;
+    }
+    return $self->{$method};
+}
+
+1;
+
+