revamped source code

abez abez at abez.ca
Thu Jun 20 15:28:24 CDT 2002


What was the change in performance?

On Thu, 20 Jun 2002, nkuipers wrote:

> Hey all,
> 
> I implemented *some* of the changes y'all suggested yesterday...the parts I 
> could follow, basically. =)  You'll note the shorter regexes, passing by 
> reference, and the complete absence of any arrays.
> 
> Here is what I have, and [I think] it works; at least, it is giving output 
> that looks suspiciously like what I am looking for.  So now it's just running 
> it by more brains to make sure I am not being hoodwinked by some Perl internal 
> I am not aware of, and see if I can squeak by with some more speed...
> 
> Eventually it will accept multiple filter strengths at the command line and 
> iterate through all of them, each iteration being faster than the last because 
> of the delete call to the "find-this" hash (%queryid).
> 
> #Program name: getparsedfasta
> #Author: Nathanael Kuipers, nkuipers at uvic.ca
> #Date written: June 12, 2002
> #Last updated: June 20, 2002
> #Purpose: conditionally formats parsed blastn xml as FASTA
> #Use: >perl getparsedfasta inputfilename int
> 
> #!/usr/bin/perl -w
> 
> use strict;
> 
> my $infile = shift;
> my $filterstrength = shift;
> my %queryid = ();
> my $header = '';
> my %wholeid = ();
> 
> open IN, "$infile" or die;
> for (<IN>) {
> 	if (/(\(query:.*)/) {
> 	$queryid{$1}++;}
> }
> close IN;
> 
> &build_filter($filterstrength, \%queryid);
> 
> open IN, "$infile" or die;
> for (<IN>) {
> 	if (/Hit:\s(.*)/) {
> 	$header = "$1"; next;}
> 	elsif (s/\s+HSP\s\d+\s=\s//) {
>     	chomp $_;
>     	$wholeid{$_} = $header
> 	unless exists $wholeid{$_};
>     	next;}
>  }	
> close IN;
> 
> &get_filtered($filterstrength, \%queryid, \%wholeid);
> 
> #########################################################
> 
> sub build_filter {
>   my ($int, $href) = @_;
>   while (my $key = each %$href) {
> 	delete $$href{$key} if $$href{$key} < $int;}
> }
> 
> sub get_filtered {
>   my ($int, $href1, $href2) = @_;
>   my $regex = '';
>   open OUT, ">$infile" . ".fil." . "$int" or die;
>   while (my $key1 = each %$href1) {
>   	 $regex = quotemeta $key1;
>   	 while (my $key2 = each %$href2) {
> 		if ($$href2{$key2} =~ /${regex}/) {
> 		print OUT ">$$href2{$key2}\n$key2\n";}
> 	 }
>   }
> }
> 
> #########################################################
> 
> "Luckily, we have computers."
> 

-- 
ABeZ------------ ------- ------ - ---------- -- ------------
http://www.indexdirect.com/abez/ Abram Hindle (abez at abez.ca)
---- ------- ----------- ----------- - - ------ --------ABeZ




More information about the Victoria-pm mailing list