Re: Calculating values of a 2d array by comparison of 2 strings
- From: Pepetideo <pepetideo@xxxxxxxxxxx>
- Date: Fri, 15 Dec 2006 15:04:55 GMT
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
.
- Follow-Ups:
- Re: Calculating values of a 2d array by comparison of 2 strings
- From: anno4000
- Re: Calculating values of a 2d array by comparison of 2 strings
- From: Mark Donovan
- Re: Calculating values of a 2d array by comparison of 2 strings
- References:
- Calculating values of a 2d array by comparison of 2 strings
- From: Pepetideo
- Re: Calculating values of a 2d array by comparison of 2 strings
- From: anno4000
- Calculating values of a 2d array by comparison of 2 strings
- Prev by Date: Re: Calculating values of a 2d array by comparison of 2 strings
- Next by Date: Re: converting exponential format number to decimal format number
- Previous by thread: Re: Calculating values of a 2d array by comparison of 2 strings
- Next by thread: Re: Calculating values of a 2d array by comparison of 2 strings
- Index(es):
Relevant Pages
|