Re: Calculating values of a 2d array by comparison of 2 strings



anno4000@xxxxxxxxxxxxxxxxxxxxxx wrote:
Pepetideo <pepetideo@xxxxxxxxxxx> wrote in comp.lang.perl.misc:
Hi. I am having a hard time dealing with a problem And I was wondering if anyone has a suggestion to how I should do this.

I have 2 strings that I want to compare. These strings are composed of amino acid residues (long sequences of any of 20 characters) these string are aligned to each other and I want to compare each position of the two strings and fill up a matrix of 21*21 so that for eg:

AAAAAA....
ATLL_Y....

1 pos: A-A -> counts 1 and adds to position [0][0] on the matrix
2 pos: A-T -> counts 1 and adds to position [0][1] on the matrix
3 pos: A-L -> counts 1 and adds to position [0][2] on the matrix
4 pos: A-L -> counts 1 and adds to position [0][2] on the matrix
5 pos: A-_ -> counts 1 and adds to position [0][21] on the matrix
6 pos: A-Y -> counts 1 and adds to position [0][10] on the matrix
...


I've been suggested by a friend to use a switch but this ends up needing 441 cases of assignments in other to fill up every position of the matrix.

Does anyone know of a better way of dealing with this? I appreciate any suggestions. Thanks

Probably. Use a two-dimensional hash to count the combinations
directly, without mapping the letters to array indices. Here is how:

my $str1 = 'AAAAAA';
my $str2 = 'ATLL_Y';

my %count;

my @str1 = split //, $str1;
my @str2 = split //, $str2;

for my $ch1 ( @str1 ) {
my $ch2 = shift @str2;
++ $count{ $ch1}->{ $ch2};
}

# example:
print "The count for 'A' and 'L' is $count{ A}->{ L}\n";

If you do need the array form you can generate it from the count hash.

Anno

Hi Anno.

Thank you very much for the suggestion... I think this is a good idea... My doubt is that I am going this to many sequences and the arrays have positions have to be the same... in order th convert the count ashe to the matrix would i not need to create 431 assignment statements like :

@matrix[0][0] = $count{a}->{l};

Best regards

Duarte
.



Relevant Pages

  • Re: Ascan with a Substr
    ... the above suggestion: ... operator to compare the strings. ... code block you originally used was just right, ...
    (comp.lang.clipper)
  • Re: Array comparison
    ... pointers are only going to compare their object pointers ... pointers and not the contents of the strings. ... things like array of Char, bytes, words, dword, int64's etc.. ...
    (alt.comp.lang.borland-delphi)
  • Re: Calculating values of a 2d array by comparison of 2 strings
    ... if anyone has a suggestion to how I should do this. ... I have 2 strings that I want to compare. ... I first perform an alignment that results in positioning the sequences inthe best alignment of characters possible. ...
    (comp.lang.perl.misc)
  • Re: Calculating values of a 2d array by comparison of 2 strings
    ... On 12/15/2006 08:48 AM, Pepetideo wrote: ... if anyone has a suggestion to how I should do this. ... I have 2 strings that I want to compare. ...
    (comp.lang.perl.misc)
  • RE: Error handling in a Do Loop
    ... I made the changes you suggested to my strings - blanking them correctly now. ... have any further suggestion or pointers, ... > When loop is able to ping a computer and able to pull the information, ... when the loop does not ping a computer/unable to ...
    (microsoft.public.windows.server.scripting)