425fe0ac9cdc7f91527b942b83d51fda439dcde5 larrym Mon Jul 19 00:27:41 2010 -0700 add dnaMotifBitScoreWithMark0Bg diff --git src/lib/dnaMotif.c src/lib/dnaMotif.c index 74ae4a5..950bc02 100644 --- src/lib/dnaMotif.c +++ src/lib/dnaMotif.c @@ -170,6 +170,18 @@ return p; } +static float dnaMotifSequenceProbWithMark0(struct dnaMotif *motif, DNA *dna, double mark0[5]) +{ +float p = 1.0; +int i; +for (i=0; icolumnCount; ++i) + { + int val = ntVal[(int) dna[i]] + 1; + p *= (mark0[val]/mark0[0]); + } +return p; +} + static float dnaMotifSequenceProbLog(struct dnaMotif *motif, DNA *dna) { float p = 0; @@ -229,6 +241,15 @@ return logBase2(odds); } +double dnaMotifBitScoreWithMark0Bg(struct dnaMotif *motif, DNA *dna, double mark0[5]) +/* Return logBase2-odds score of dna given a probabalistic motif and using a 0-order markov model for the background. */ +{ +double p = dnaMotifSequenceProb(motif, dna); +double q = dnaMotifSequenceProbWithMark0(motif, dna, mark0); +double odds = p/q; +return logBase2(odds); +} + double dnaMotifBitScoreWithMarkovBg(struct dnaMotif *motif, DNA *dna, double mark2[5][5][5]) /* Return logBase2-odds score of dna given a probabalistic motif using a 2nd-order markov model for the background. motif and markd2 must be in log2 format.