Raw content of Bio::Expression::FeatureGroup # $Id: FeatureGroup.pm,v 1.1.2.2 2003/09/17 09:19:21 allenday Exp $ # BioPerl module for Bio::Expression::FeatureGroup # # Copyright Allen Day <allenday@ucla.edu>, Stanley Nelson <snelson@ucla.edu> # Human Genetics, UCLA Medical School, University of California, Los Angeles # POD documentation - main docs before the code =head1 NAME Bio::Expression::FeatureGroup - a set of DNA/RNA features. ISA Bio::Expression::FeatureI =head1 SYNOPSIS # =head1 DESCRIPTION A set of DNA/RNA features. =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://bioperl.org/MailList.shtml - 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::Expression::FeatureGroup; use strict; use base qw(Bio::Root::Root Bio::Expression::FeatureI); use vars qw($DEBUG); =head2 new Title : new Usage : $featuregroup = Bio::Expression::FeatureGroup->new(%args); Function: create a new featuregroup object Returns : a Bio::Expression::FeatureGroup object Args : an optional hash of parameters to be used in initialization: -id -- the featuregroup ID -type -- the featuregroup type =cut sub new { my($class,@args) = @_; my $self = bless {}, $class; $self->_initialize(@args); return $self; } =head2 _initialize Title : _initialize Usage : $featuregroup->_initialize(@args); Function: initialize the featuregroup object Returns : nothing Args : @args =cut sub _initialize{ my ($self,@args) = @_; my %param = @args; $self->type($param{-type}); $self->id($param{-id} ); $self->SUPER::_initialize(@args); $DEBUG = 1 if( ! defined $DEBUG && $self->verbose > 0); } =head2 type Title : type Usage : $featuregroup->type($optional_arg); Function: get/set the type of the featuregroup Comments: this is probably going to be a string like "quality control", "mismatch blah blah", etc. Returns : the featuregroup type Args : a new value for the featuregroup type =cut sub type { my $self = shift; $self->{type} = shift if @_; return $self->{type}; } =head2 id Title : id Usage : $featuregroup->id($optional_arg); Function: get/set the id of the featuregroup Returns : the featuregroup id Args : a new value for the featuregroup id =cut sub id { my $self = shift; $self->{id} = shift if @_; return $self->{id}; } =head2 standard_deviation Title : standard_deviation Usage : $featuregroup->standard_deviation($optional_arg); Function: get/set the standard deviation of the featuregroup value Returns : the featuregroup standard deviation Args : a new value for the featuregroup standard deviation Notes : this method does no calculation, it merely holds a value =cut sub standard_deviation { my $self = shift; $self->{standard_deviation} = shift if @_; return $self->{standard_deviation}; } =head2 quantitation Title : quantitation Usage : $featuregroup->quantitation($optional_arg); Function: get/set the quantitation of the featuregroup Returns : the featuregroup's quantitated value Args : a new value for the featuregroup's quantitated value Notes : this method does no calculation, it merely holds a value =cut sub quantitation { my $self = shift; $self->{quantitation} = shift if @_; return $self->{quantitation}; } =head2 quantitation_units Title : quantitation_units Usage : $featuregroup->quantitation_units($optional_arg); Function: get/set the quantitation units of the featuregroup Returns : the featuregroup's quantitated value units Args : a new value for the featuregroup's quantitated value units =cut sub quantitation_units { my $self = shift; $self->{quantitation_units} = shift if @_; return $self->{quantitation_units}; } =head2 presence Title : presence Usage : $featuregroup->presence($optional_arg); Function: get/set the presence call of the featuregroup Returns : the featuregroup's presence call Args : a new value for the featuregroup's presence call =cut sub presence { my $self = shift; $self->{presence} = shift if @_; return $self->{presence}; } =head2 add_feature Title : add_feature Usage : $feature_copy = $featuregroup->add_feature($feature); Function: add a feature to the featuregroup Returns : see this_feature() Args : a Bio::Expression::FeatureI compliant object =cut sub add_feature { my($self,@args) = @_; foreach my $feature (@args){ $self->throw('Features must be Bio::Expression::FeatureI compliant') unless $feature->isa('Bio::Expression::FeatureI'); push @{$self->{features}}, $feature; } return $self->{features} ? $self->{features}->[-1] : undef; } =head2 this_feature Title : this_feature Usage : $feature = $featuregroup->this_feature Function: access the last feature added to the featuregroup Returns : the last feature added to the featuregroup Args : none =cut sub this_feature { my $self = shift; return $self->{features} ? $self->{features}->[-1] : undef; } =head2 each_feature Title : each_feature Usage : @features = $featuregroup->each_feature Function: returns a list of Bio::Expression::FeatureI compliant objects Returns : a list of objects Args : none =cut sub each_feature { my $self = shift; return @{$self->{features}} if defined($self->{features}); return (); } =head2 each_feature_quantitation Title : each_feature_quantitation Usage : @featurequantitions = $featuregroup->each_feature_quantitation; Function: returns an list of quantitations of the features in the featuregroup Returns : a list of numeric values Args : none =cut sub each_feature_quantitation { my $self = shift; my @values = (); push @values, $_->value foreach $self->each_feature; return @values; } =head2 is_qc Title : is_qc Usage : $is_quality_control = $featuregroup->is_qc Function: get/set whether or not the featuregroup is used for quality control purposes Returns : a boolean (equivalent) Args : a new value =cut sub is_qc { my $self = shift; $self->{is_qc} = shift if defined @_; return $self->{is_qc}; } 1;