[Bioperl-l] Re: sub_Location in Bio::Location::Simple?

Hilmar Lapp hlapp@gnf.org
Mon, 1 Jul 2002 11:52:12 -0700


Also, there is Heikki's AtomicLocation-triggered dispute going on -- but that shouldn't affect this one. Just go ahead. -hilmar

> -----Original Message-----
> From: Charles Tilford [mailto:charles.tilford@bms.com]
> Sent: Monday, July 01, 2002 5:55 AM
> To: Jason Stajich; Bioperl
> Subject: [Bioperl-l] Re: sub_Location in Bio::Location::Simple?
> 
> 
> I'm not sure what the Bioperl-culturally-appropriate-interpretation of
> "null comment" is - should I add each_location() to the appropriate
> modules? Uncertain whether the lack of response indicates quiet
> satisfaction or stunned shock...
> 
> -CAT
> 
> Charles Tilford wrote:
> > 
> > Jason Stajich wrote:
> > 
> > >I'd rather create a new method, something like:
> > >each_Location().
> > >
> > >This can be implemented as a recursive method to handle 
> the case when
> > >split locations contain other split locations.
> > >
> > >I don't want to make Simple locations explictly act like 
> Split locations
> > >with a single loc since that defeats the purpose of separating the
> > >interfaces.
> > >
> > >Other people may have input?
> > >-j
> > >
> >
> > I'm happy with a new method. How about these changes then?
> > 
> > Bio::Location::Split
> > 
> > sub each_Location {
> >     my ($self, $order) = @_;
> >     my @locs = ();
> >     foreach my $subloc ($self->sub_Location($order)) {
> >     # Recursively check to get hierarchical split locations:
> >     push @locs, $subloc->each_Location($order);
> >     }
> >     return @locs;
> > }
> > 
> > Bio::Location::Simple
> > 
> > sub each_Location {
> >     my ($self) = @_;
> >     return $self;
> > }
> > 
> > Bio::LocationI
> > 
> > sub each_Location {
> >     my ($self,@args) = @_;
> >     $self->throw_not_implemented();
> >     return undef;
> > }
> > 
> > -Charles
> > 
> > >On Tue, 28 May 2002, Charles Tilford wrote:
> > >
> > >
> > >
> > >>Hi Jason,
> > >>
> > >>Would you mind if I added a sub_Location method in
> > >>Bio::Location::Simple? It would look like this:
> > >>
> > >>=head2 sub_Location
> > >>
> > >>  Title   : sub_Location
> > >>  Usage   : $loc = $loc->sub_Location();
> > >>  Function: compatibility method to allow this single 
> method to get
> > >>locations from either Simple or Split locations.
> > >>  Returns : the Bio::Location::Simple object itself
> > >>  Args    :
> > >>
> > >>=cut
> > >>
> > >>sub start {
> > >>  my ($self) = @_;
> > >>  return $self;
> > >>}
> > >>
> > >>I find myself doing this frequently, to grab all the 
> locations in a
> > >>given feature:
> > >>
> > >>        my $fLoc = $feat->location;
> > >>        my $locs = ($fLoc =~ /Split/) ? 
> [$fLoc->sub_Location()] : [$fLoc];
> > >>
> > >>If ::Simple had a sub_Location method, then I could just say:
> > >>
> > >>my @locs = $feat->location->sub_Location();
> > >>
> > >>Not sure if I am overlooking a gotcha here...
> > >>
> > >>-Charles
> 
> -- 
> Charles Tilford, Bioinformatics-Applied Genomics
> Bristol-Myers Squibb PRI, Hopewell 3A039
> P.O. Box 5400, Princeton, NJ 08543-5400, (609) 818-3213
> charles.tilford@bms.com
> _______________________________________________
> Bioperl-l mailing list
> Bioperl-l@bioperl.org
> http://bioperl.org/mailman/listinfo/bioperl-l
>