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

Jay Hannah jay at jays.net
Fri Sep 29 05:57:49 PDT 2006


It's humbling when people reduce 18 lines of my code down to a  
command-line one liner. :)

j


Begin forwarded message:
> From: Jay Hannah <jay at jays.net>
> Date: September 29, 2006 7:49:53 AM CDT
> To: bioperl-l at bioperl.org
> Cc: kiran bina <kiranbina at gmail.com>
> 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.  :)
>
>



More information about the Omaha-pm mailing list