[Bioperl-l] Bio::SeqIO -- add an ugly but fast grep hack?

Chris Fields cjfields at uiuc.edu
Fri Sep 29 09:55:35 EDT 2006


If you think that was crazy, wait 'til Perl6!

Christopher Fields
Postdoctoral Researcher - Switzer Lab
Dept. of Biochemistry
University of Illinois Urbana-Champaign 


> -----Original Message-----
> From: bioperl-l-bounces at lists.open-bio.org [mailto:bioperl-l-
> bounces at lists.open-bio.org] On Behalf Of Jay Hannah
> Sent: Friday, September 29, 2006 7:50 AM
> To: bioperl-l at bioperl.org
> Cc: kiran bina
> Subject: Re: [Bioperl-l] Bio::SeqIO -- add an ugly but fast grep hack?
> 
> On Sep 14, 2006, at 10:58 AM, Amir Karger wrote:
> > From: Chris Fields [mailto:cjfields at uiuc.edu]
> >> {
> >>     local $/ = "//\n";
> >>     while (my $gb = <>) {
> >>         print $gb if $gb =~ m/Staphylococcus\sepidermidis/im;
> >>     }
> >> }
> >
> > Perl Golf! (Untested, as all good Perl Golf should be.)
> >
> > perl -wne 'BEGIN {$/="//\n"} print if /Staphylococcus\sepidermidis/
> > im/'
> > blah.gb > filtered.gb
> 
> Wow. You guys are amazing.
> 
> My version was a lot longer (Reverse Perl Golf!!):
> 
>     my @files = @{$self->{files}};
>     my $file;
>     foreach $file (@files) {
>        open (IN, $file);
>        my $locus;
>        while (<IN>) {
>           if (/^LOCUS/) {
>              # A locus has begun.
>              $locus = $_;
>           } elsif (/^\/\//) {
>              # A locus ends.
>              $locus .= $_;
>              if ($locus =~ /$args{grep}/s) {
>                 print OUT $locus;
>              }
>           } else {
>              # A row inside a locus.
>              $locus .= $_;
>           }
>        }
>     }
> 
> I'm playing with an abstraction layer I'm calling "OpenLab". Here the
> grep() method does the work:
> 
> my $ol  = OpenLab->new();
> # Load up just the "ATCC 12228" sequences from a directory...
> my $ss1 = $ol->new_SequenceSet(name => "Organism1");
> $ss1->load(files => "$data_dir/*");
> $ss1->grep(
>     grep    => "ATCC 12228",
>     storage => $data_tmp
> );
> 
> I'll be replacing the implementation inside my class with your wizardry.
> 
> Thanks!
> 
> j
> 12 years of Perl later, still learning new tricks.  :)
> 
> 
> _______________________________________________
> Bioperl-l mailing list
> Bioperl-l at lists.open-bio.org
> http://lists.open-bio.org/mailman/listinfo/bioperl-l



More information about the Bioperl-l mailing list