[Bioperl-l] calculate the frequency of occurrence of the mostcommonly observed amino acid at each position of multiplesequence alignment
Mark A. Jensen
maj at fortinbras.us
Sat Feb 7 11:56:30 EST 2009
Dylan- It's worth mentioning that the BioPerl method is very overhead-heavy; all
the objects make it easy to just write a few lines, but probably won't be the absolute
fastest way to do what you want. Another path to follow would be
# your seqs are plain strings in the array @seqs, and are aligned and same length
my $len = length($seqs[0]);
my @residue_counts;
foreach (0..$len-1) {
my %h = ();
foreach $seq (@seqs) {
$h{ substr($seq, $_, 1) }++;
}
push @residue_counts, \%h;
}
Now, for each elt in @residue_counts (each elt is a reference to a hash), look for the
key that has the maximum hash value. The snippet above is also worth working
through for the educational value, esp. w/r to using hashes, which (IMHO) are one of
the absolutely coolest thing about Perl.
cheers- MAJ
----- Original Message -----
From: Dylan Krishnan
To: Mark A. Jensen
Cc: bioperl-l at lists.open-bio.org
Sent: Saturday, February 07, 2009 11:43 AM
Subject: Re: [Bioperl-l] calculate the frequency of occurrence of the mostcommonly observed amino acid at each position of multiplesequence alignment
thanks mark!
the authors other approach is to load the alignment into a MS Excel worksheet and use the "autofilter" procedure to count the occurrences of any residue position of the alignment. the claim is "that excel is uselful for this purpose."sounds reasonable for 10 alignments but not 2000!
again, many thanks.
-dylan
On Sat, Feb 7, 2009 at 10:25 AM, Mark A. Jensen <maj at fortinbras.us> wrote:
Dylan,
This is an extremely good exercise for anyone learning Perl to do bioinformatics.
When you have done many exercises like this, you will see what people mean
when they say it is very straightforward.
Here are some hints:
Use the "entropy" scrap at http://www.bioperl.org/wiki/Site_entropy_in_an_alignment .
You will convert the function entropy_by_column() into the function you need.
Replace the line
$ent{$col} = entropy(values %res);
with a line you will write using the "hash key at max value" scrap, found
here: http://www.bioperl.org/wiki/Hash_key_at_the_max_value .
Happy coding!
Mark
----- Original Message ----- From: "Dylan Krishnan" <dylankrishnan at gmail.com>
To: <bioperl-l at lists.open-bio.org>
Sent: Saturday, February 07, 2009 11:10 AM
Subject: [Bioperl-l] calculate the frequency of occurrence of the mostcommonly observed amino acid at each position of multiplesequence alignment
I am new to perl but this is somethign I am seeking to do either through a
bioperl module or just perl. Apparently, this is quite "straightforward
using PERL," but I beg to differ.
Any assistance regarding this matter would be greatly appreciated.
Thanks!
-dylan
_______________________________________________
Bioperl-l mailing list
Bioperl-l at lists.open-bio.org
http://lists.open-bio.org/mailman/listinfo/bioperl-l
More information about the Bioperl-l
mailing list