diff variant_effect_predictor/Bio/Variation/SNP.pm @ 0:2bc9b66ada89 draft default tip

Uploaded
author mahtabm
date Thu, 11 Apr 2013 06:29:17 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/variant_effect_predictor/Bio/Variation/SNP.pm	Thu Apr 11 06:29:17 2013 -0400
@@ -0,0 +1,222 @@
+# $Id: SNP.pm,v 1.9 2002/10/22 07:38:49 lapp Exp $
+# bioperl module for Bio::Variation::SNP
+#
+# Copyright Allen Day <allenday@ucla.edu>, Stan Nelson <snelson@ucla.edu>
+# Human Genetics, UCLA Medical School, University of California, Los Angeles
+
+=head1 NAME
+
+Bio::Variation::SNP - submitted SNP
+
+=head1 SYNOPSIS
+
+  $SNP = Bio::Variation::SNP->new ();
+
+=head1 DESCRIPTION
+
+Inherits from Bio::Variation::SeqDiff and Bio::Variation::Allele, with 
+additional methods that are (db)SNP specific (ie, refSNP/subSNP IDs, batch
+IDs, validation methods).
+
+=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 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
+
+Allen Day E<lt>allenday@ucla.eduE<gt>
+
+=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::Variation::SNP;
+my $VERSION=1.0;
+
+use strict;
+use vars qw($VERSION @ISA $AUTOLOAD);
+use Bio::Root::Root;
+use Bio::Variation::SeqDiff;
+use Bio::Variation::Allele;
+
+@ISA = qw( Bio::Variation::SeqDiff Bio::Variation::Allele);
+
+=head2 get/set-able methods
+
+ Usage   : $is = $snp->method()
+ Function: for getting/setting attributes
+ Returns : a value.  probably a scalar.
+ Args    : if you're trying to set an attribute, pass in the new value.
+
+ Methods:
+ --------
+ id
+ type
+ observed
+ seq_5
+ seq_3
+ ncbi_build
+ ncbi_chr_hits
+ ncbi_ctg_hits
+ ncbi_seq_loc
+ ucsc_build 
+ ucsc_chr_hits
+ ucsc_ctg_hits
+ heterozygous
+ heterozygous_SE
+ validated
+ genotype
+ handle
+ batch_id
+ method
+ locus_id
+ symbol
+ mrna
+ protein
+ functional_class
+
+
+=cut
+
+
+my %OK_AUTOLOAD = (
+		id			=> '',
+		type			=> '',
+		observed		=> [],
+		seq_5			=> '',
+		seq_3			=> '',
+		ncbi_build		=> '',
+		ncbi_chr_hits		=> '',
+		ncbi_ctg_hits		=> '',
+		ncbi_seq_loc		=> '',
+		ucsc_build		=> '',
+		ucsc_chr_hits		=> '',
+		ucsc_ctg_hits		=> '',
+		heterozygous		=> '',
+		heterozygous_SE		=> '',
+		validated		=> '',
+		genotype		=> '',
+		handle			=> '',
+		batch_id		=> '',
+		method			=> '',
+		locus_id		=> '',
+		symbol			=> '',
+		mrna			=> '',
+		protein			=> '',
+		functional_class	=> '',
+		);
+
+sub AUTOLOAD {
+	my $self = shift;
+	my $param = $AUTOLOAD;
+	$param =~ s/.*:://;
+	$self->throw(__PACKAGE__." doesn't implement $param") unless defined $OK_AUTOLOAD{$param};
+
+	if( ref $OK_AUTOLOAD{$param} eq 'ARRAY' ) {
+		push @{$self->{$param}}, shift if @_;
+		return $self->{$param}->[scalar(@{$self->{$param}}) - 1];
+	} else {
+		$self->{$param} = shift if @_;
+		return $self->{$param};
+	}
+}
+
+
+#foreach my $slot (keys %RWSLOT){
+#	no strict "refs"; #add class methods to package
+#	*$slot = sub {
+#		shift;
+#		$RWSLOT{$slot} = shift if @_;
+#		return $RWSLOT{$slot};
+#	};
+#}
+
+
+=head2 is_subsnp
+
+ Title   : is_subsnp
+ Usage   : $is = $snp->is_subsnp()
+ Function: returns 1 if $snp is a subSNP
+ Returns : 1 or undef
+ Args    : NONE
+
+=cut
+
+sub is_subsnp {
+	return shift->{is_subsnp};
+}
+
+=head2 subsnp
+
+ Title   : subsnp
+ Usage   : $subsnp = $snp->subsnp()
+ Function: returns the currently active subSNP of $snp
+ Returns : Bio::Variation::SNP
+ Args    : NONE
+
+=cut
+
+sub subsnp {
+	my $self = shift;
+	return $self->{subsnps}->[ scalar($self->each_subsnp) - 1 ];
+}
+
+=head2 add_subsnp
+
+ Title   : add_subsnp
+ Usage   : $subsnp = $snp->add_subsnp()
+ Function: pushes the previous value returned by subsnp() onto a stack, accessible with each_subsnp().
+           sets return value of subsnp() to a new Bio::Variation::SNP object, and returns that object.
+ Returns : Bio::Varitiation::SNP
+ Args    : NONE
+
+=cut
+
+sub add_subsnp {
+	my $self = shift;
+	$self->throw("add_subsnp(): cannot add sunSNP to subSNP, only refSNP") if $self->is_subsnp;
+
+	my $subsnp = Bio::Variation::SNP->new;
+	push @{$self->{subsnps}}, $subsnp;
+	$self->subsnp->{is_subsnp} = 1;
+	return $self->subsnp;
+}
+
+=head2 each_subsnp
+
+ Title   : each_subsnp
+ Usage   : @subsnps = $snp->each_subsnp()
+ Function: returns a list of the subSNPs of a refSNP
+ Returns : list
+ Args    : NONE
+
+=cut
+
+sub each_subsnp {
+	my $self = shift;
+	$self->throw("each_subsnp(): cannot be called on a subSNP") if $self->is_subsnp;
+	return @{$self->{subsnps}};
+}
+
+1;