Biology Stack Exchange is a question and answer site for biology researchers, academics, and students. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am working with a set of DNA motifs that are predicted as potential regulatory motifs (e.g. transcription factor binding sites). The motifs belong to several species, and I wanted to cluster these motifs via their Position Weight Matrices (PWMs) (also known as PSSMs) to collapse similar motifs together into groups.

There is a tool called MATLIGN (website here) that does what I need, but their required format for the PWMs are different to what I have, they claim:

"Matrices must be in the frequency matrix format (only integer numbers are acceptable)"

The problem is that my PWM matrices do not have integer numbers but decimals instead. e.g.:

     A        C        G        T
1    0.000000 1.000000 0.000000 0.000000
2    1.000000 0.000000 0.000000 0.000000
3    0.000000 0.000000 1.000000 0.000000
4    0.000000 0.421755 0.000000 0.578245
5    0.289407 0.000000 0.282556 0.428038

In other words, instead of the decimal values I have in my matrix I need to have integer counts. Could anybody suggest what I can do? Would I need to create artificial "pseudo-counts"?

share|improve this question
Could it be so simple that they want counts of nucleotide occurances (the frequency) instead of proportions (e.g. your row 5 as (using n=60): 17 0 17 26)? Where do your numbers come from - I assume you have counts as raw data to calculate the proportions? Mind you, I have no experiance with these particular methods at all. – fileunderwater Mar 17 '14 at 19:13
Thank you @fileunderwater for your comment. The problem is that the raw data is not available to me, what I have are the high level outputs the program had generated. I presume the whole integer counts are required by this software since proportions remain constant no matter how large the total. – hello_there_andy Mar 17 '14 at 22:21
ok, well then you have a problem, since there is no way of knowing the margin of error of the proportions. However, to get counts these proportions should just be multiplied by the number of binding sites included in the study. Don't you have that info (e.g. the number of sequnces that have been analysed)? – fileunderwater Mar 18 '14 at 0:16
Why not just multiply everything by 10? The PWM will still be correct since its values are relative to each other, you just make 1.00 into 10 and 0.28 into 28 etc. – terdon Mar 18 '14 at 15:25
I'm not familiar with this program either but PWMs in general are always relative. What you get is a value indicating how often a particular residue is found a t a given position. Multiplying with an arbitrary value shouldn't affect the result in any way, as long as you multiple all values. Basically 1 means you always have that residue at that position. If you multiply by say 100, you can treat them as percentages. But yes, the implementations could vary depending on what you're feeding them to. – terdon Mar 18 '14 at 18:06
up vote 3 down vote accepted

So what you need is basically your data expressed as counts instead of proportions. Even if you do not have the matrix of counts as raw data, these proportions only needs to be multiplied by the total number of binding sites used in the study (e.g. the number of sequences that have been analysed) to get the counts (since proportion = count/total number of binding sites). You should have that information somewhere.

@hello_there_andy: indeed there was this missing piece of information available to me, it came in the form of a variable called nsites which equates to the total number of DNA sites that the PWM was generated from.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.