in reply to string complement question

Will this help?

use strict; my %sequences; while (<DATA>) { chomp; $sequences{$_} = $.; } for my $seq (keys %sequences) { my $rev_compl = get_rev_compl($seq); print "$seq matches $rev_compl on line $sequences{$rev_compl}\n" if exists $sequences{$rev_compl}; } sub get_rev_compl { my ($seq) = @_; $seq =~ tr/GCAT/CGTA/; return reverse $seq; } 1; __DATA__ GATTACA TTAGCAA CATCATC TTGCTAA TGTAATC GATGATG

I put the sequences into a hash instead of an array to (hopefully) increase the lookup speed. This won't work if the sequences aren't unique, though.

Hanlon's Razor - "Never attribute to malice that which can be adequately explained by stupidity"

Replies are listed 'Best First'.
Re: Re: string complement question
by thospel (Hermit) on Nov 21, 2003 at 16:44 UTC
    Easily fixed by remembering all indices, e.g. like this:
    #!/usr/bin/perl -w use strict; chomp(my @sequences = <DATA>); my (%sequences, $i); push @{$sequences{$_}}, $i++ for @sequences; for (keys %sequences) { my $complement = reverse; $complement =~ tr/GCAT/CGTA/; print "$_ complements sequence nr @{$sequences{$complement}}\n" if $sequences{$complement}; } __DATA__ GATTACA GATTACA TTAGCAA CATCATC TTGCTAA TGTAATC GATGATG