diff variant_effect_predictor/Bio/Seq/TraceI.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/Seq/TraceI.pm	Thu Apr 11 02:01:53 2013 -0400
@@ -0,0 +1,237 @@
+# BioPerl module for Bio::Seq::TraceI
+#
+# Cared for by Chad Matsalla <bioinformatics@dieselwurks.com
+#
+# Copyright Chad Matsalla
+#
+# You may distribute this module under the same terms as perl itself
+
+# POD documentation - main docs before the code
+
+=head1 NAME
+
+Bio::Seq::TraceI - Interface definition for a Bio::Seq::Trace
+
+=head1 SYNOPSIS
+
+    # get a Bio::Seq::Qual compliant object somehow
+          $st = &get_object_somehow();
+
+    # to test this is a seq object
+          $st->isa("Bio::Seq::TraceI") 
+               || $obj->throw("$obj does not implement the Bio::Seq::TraceI interface");
+
+          # set the trace for T to be @trace_points
+     my $arrayref = $st->trace("T",\@trace_points);
+          # get the trace points for "C"
+     my $arrayref = $st->trace("C");
+          # get a subtrace for "G" from 10 to 100 
+     $arrayref = $st->subtrace("G",10,100);
+          # what is the trace value for "A" at position 355?
+     my $trace_calue = $st->traceat("A",355);
+          # create a false trace for "A" with $accuracy
+     $arrayref = $st->false_trace("A",Bio::Seq::SeqWithQuality, $accuracy);
+          # does this trace have entries for each base?
+     $bool = $st->is_complete();
+          # how many entries are there in this trace?
+     $length = $st->length();
+
+
+
+=head1 DESCRIPTION
+
+This object defines an abstract interface to basic trace information. This
+information may have come from an ABI- or scf- formatted file or may have been
+made up.
+
+=head1 FEEDBACK
+
+=head2 Mailing Lists
+
+User feedback is an integral part of the evolution of this and other
+Bioperl modules. Send your comments and suggestions preferably to one
+of the Bioperl mailing lists.  Your participation is much appreciated.
+
+  bioperl-l@bioperl.org          - General discussion
+  http://bio.perl.org/MailList.html             - About the mailing lists
+
+=head2 Reporting Bugs
+
+Report bugs to the Bioperl bug tracking system to help us keep track
+the bugs and their resolution.  Bug reports can be submitted via email
+or the web:
+
+  bioperl-bugs@bio.perl.org
+  http://bugzilla.bioperl.org/
+
+=head1 AUTHOR - Chad Matsalla
+
+Email bioinformatics@dieselwurks.com
+
+=head1 APPENDIX
+
+The rest of the documentation details each of the object methods.
+Internal methods are usually preceded with a _
+
+=cut
+
+
+# Let the code begin...
+
+
+package Bio::Seq::TraceI;
+use vars qw(@ISA);
+use strict;
+use Carp;
+use Dumpvalue;
+
+=head1 Implementation Specific Functions
+
+These functions are the ones that a specific implementation must
+define.
+
+=head2 trace($base,\@new_values)
+
+ Title   : trace($base,\@new_values)
+ Usage   : @trace_Values  = @{$obj->trace($base,\@new_values)};
+ Function: Returns the trace values as a reference to an array containing the
+     trace values. The individual elements of the trace array are not validated
+     and can be any numeric value.
+ Returns : A reference to an array.
+ Status  : 
+Arguments: $base : which color channel would you like the trace values for?
+               - $base must be one of "A","T","G","C"
+          \@new_values : a reference to an array of values containing trace
+               data for this base
+
+=cut
+
+sub trace {
+   my ($self) = @_;
+   if( $self->can('throw') ) {
+       $self->throw("Bio::Seq::TraceI definition of trace - implementing class did not provide this method");
+   } else {
+       confess("Bio::Seq::TraceI definition of trace - implementing class did not provide this method");
+   }
+}
+
+=head2 subtrace($base,$start,$end)
+
+ Title   : subtrace($base,$start,$end)
+ Usage   : @subset_of_traces = @{$obj->subtrace("A",10,40)};
+ Function: returns the trace values from $start to $end, where the
+	first value is 1 and the number is inclusive, ie 1-2 are the first
+	two trace values of this base. Start cannot be larger than end but can
+	be equal.
+ Returns : A reference to an array.
+ Args    : $base: "A","T","G" or "C"
+          $start: a start position
+          $end  : an end position
+
+=cut
+
+sub subtrace {
+   my ($self) = @_;
+
+   if( $self->can('throw') ) {
+       $self->throw("Bio::Seq::TraceI definition of subtrace - implementing class did not provide this method");
+   } else {
+       confess("Bio::Seq::TraceI definition of subtrace - implementing class did not provide this method");
+   }
+
+}
+
+=head2 can_call_new()
+
+ Title   : can_call_new()
+ Usage   : if( $obj->can_call_new ) {
+             $newobj = $obj->new( %param );
+	 }
+ Function: can_call_new returns 1 or 0 depending on whether an
+	implementation allows new constructor to be called. If a new
+	constructor is allowed, then it should take the followed hashed
+	constructor list.
+           $myobject->new( -qual => $quality_as_string,
+			   -display_id  => $id,
+			   -accession_number => $accession,
+			   );
+ Example :
+ Returns : 1 or 0
+ Args    :
+
+
+=cut
+
+sub can_call_new{
+   my ($self,@args) = @_;
+   # we default to 0 here
+   return 0;
+}
+
+=head2 traceat($channel,$position)
+
+ Title   : qualat($channel,$position)
+ Usage   : $trace = $obj->traceat(500);
+ Function: Return the trace value at the given location, where the
+        first value is 1 and the number is inclusive, ie 1-2 are the first
+        two bases of the sequence. Start cannot be larger than end but can
+        be equal.
+ Returns : A scalar.
+ Args    : A base and a position.
+
+=cut
+
+sub traceat {
+   my ($self,$value) = @_;
+   if( $self->can('warn') ) {
+       $self->warn("Bio::Seq::TraceI definition of traceat - implementing class did not provide this method");
+   } else {
+       warn("Bio::Seq::TraceI definition of traceat - implementing class did not provide this method");
+   }
+   return '';
+} 
+
+=head2 length()
+
+ Title   : length()
+ Usage   : $length = $obj->length("A");
+ Function: Return the length of the array holding the trace values for the "A"
+     channel. A check should be done to make sure that this Trace object
+     is_complete() before doing this to prevent hazardous results.
+ Returns : A scalar (the number of elements in the quality array).
+ Args    : If used, get the traces from that channel. Default to "A"
+
+=cut
+
+sub length {
+   my ($self)= @_;
+   if( $self->can('throw') ) {
+       $self->throw("Bio::Seq::TraceI definition of length - implementing class did not provide this method");
+   } else {
+       confess("Bio::Seq::TraceI definition of length - implementing class did not provide this method");
+   }
+}
+
+=head2 trace_indices($new_indices)
+
+ Title   : trace_indices($new_indices)
+ Usage   : $indices = $obj->trace_indices($new_indices);
+ Function: Return the trace iindex points for this object.
+ Returns : A scalar
+ Args    : If used, the trace indices will be set to the provided value.
+
+=cut
+
+sub trace_indices {
+   my ($self)= @_;
+   if( $self->can('throw') ) {
+       $self->throw("Bio::Seq::TraceI definition of trace_indices - implementing class did not provide this method");
+   } else {
+       confess("Bio::Seq::TraceI definition of trace_indices - implementing class did not provide this method");
+   }
+}
+
+
+
+
+1;