7cc2ad1ed09ac992db9cd5d783e871cbdba4dba3
larrym
  Mon Jul 19 00:25:27 2010 -0700
add dnaMotifBitScoreWithMark0Bg
diff --git src/inc/dnaMotif.h src/inc/dnaMotif.h
index 54aecc4..6d4f7b1 100644
--- src/inc/dnaMotif.h
+++ src/inc/dnaMotif.h
@@ -1,123 +1,126 @@
 /* dnaMotif.h was originally generated by the autoSql program, which also 
  * generated dnaMotif.c and dnaMotif.sql.  This header links the database and
  * the RAM representation of objects. */
 
 #ifndef DNAMOTIF_H
 #define DNAMOTIF_H
 
 #ifndef DNAUTIL_H
 #include "dnautil.h"
 #endif
 
 struct dnaMotif
 /* A gapless DNA motif */
 {
     struct dnaMotif *next;  /* Next in singly linked list. */
     char *name; /* Motif name. */
     int columnCount;    /* Count of columns in motif. */ 
     float *aProb;       /* Probability of A's in each column. */ 
     float *cProb;       /* Probability of C's in each column. */
     float *gProb;       /* Probability of G's in each column. */
     float *tProb;       /* Probability of T's in each column. */
 };
 
 struct dnaMotif *dnaMotifCommaIn(char **pS, struct dnaMotif *ret);
 /* Create a dnaMotif out of a comma separated string. 
  * This will fill in ret if non-null, otherwise will
  * return a new dnaMotif */
 
 void dnaMotifFree(struct dnaMotif **pEl);
 /* Free a single dynamically allocated dnaMotif such as created
  * with dnaMotifLoad(). */
 
 void dnaMotifFreeList(struct dnaMotif **pList);
 /* Free a list of dynamically allocated dnaMotif's */
 
 void dnaMotifOutput(struct dnaMotif *el, FILE *f, char sep, char lastSep);
 /* Print out dnaMotif.  Separate fields with sep. Follow last field with lastSep. */
 
 #define dnaMotifTabOut(el,f) dnaMotifOutput(el,f,'\t','\n');
 /* Print out dnaMotif as a line in a tab-separated file. */
 
 #define dnaMotifCommaOut(el,f) dnaMotifOutput(el,f,',',',');
 /* Print out dnaMotif as a comma separated list including final comma. */
 
 float dnaMotifSequenceProb(struct dnaMotif *motif, DNA *dna);
 /* Return probability of dna according to motif.  Make sure
  * motif is probabalistic (with call to dnaMotifMakeProbabalistic
  * if you're not sure) before calling this. */
 
 char dnaMotifBestStrand(struct dnaMotif *motif, DNA *dna);
 /* Figure out which strand of DNA is better for probabalistic motif. */
 
 double dnaMotifBitScore(struct dnaMotif *motif, DNA *dna);
 /* Return logBase2-odds score of dna given a probabalistic motif. */
 
+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 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.
    Seq must contain an extra two bases at the front (i.e. we start scoring from dna + 2). */
 
 void dnaMotifMakeLog2(struct dnaMotif *motif);
 
 void dnaMotifNormalize(struct dnaMotif *motif);
 /* Make all columns of motif sum to one. */
 
 boolean dnaMotifIsScoreBased(struct dnaMotif *motif);
 /* Return TRUE if dnaMotif is score-based (which we decide by
  * the presense of negative values. */
 
 void dnaMotifScoreToProb(struct dnaMotif *motif);
 /* Convert motif that is log-odds score based to motif
  * that is probability based.  This assumes that the
  * background distribution is simple: 25% for each base */
 
 void dnaMotifMakeProbabalistic(struct dnaMotif *motif);
 /* Change motif, which may be score or count based, to 
  * probabalistic one, where each column adds to 1.0 */
 
 double dnaMotifBitsOfInfo(struct dnaMotif *motif, int pos);
 /* Return bits of information at position. */
 
 void dnaMotifPrintProb(struct dnaMotif *motif, FILE *f);
 /* Print DNA motif probabilities. */
 
 void dnaMotifToLogoPs2(struct dnaMotif *motif, double widthPerBase, double height, 
                        double minHeight, char *fileName);
 /* Write logo corresponding to motif to postScript file, with extended options. minHeight
  * is the minimum height that is excluded from information content scaling.  This allows
  * something to show up in columns with very little information content.  Setting this
  * to be the same as height creates an frequency-based logo.
  */
 
 void dnaMotifToLogoPs(struct dnaMotif *motif, double widthPerBase, double height, 
 	char *fileName);
 /* Write logo corresponding to motif to postScript file. */
 
 void dnaMotifToLogoPsW(struct dnaMotif *motif, double widthPerBase, double width,
 	double height, char *fileName);
 /* Write logo corresponding to motif to postScript file. 
  * use the whole window width, rather than just incrementing
  * by widthPerBase */
 
 void dnaMotifToLogoPng(
 	struct dnaMotif *motif,	/* Motif to draw. */
 	double widthPerBase, 	/* Width of each base. */
 	double height, 		/* Max height. */
 	char *gsExe, 		/* ghostscript executable, NULL for default */
 	char *tempDir,          /* temp dir , NULL for default */
 	char *fileName);	/* output png file name. */
 /* Write logo corresponding to motif to png file. */
 
 void dnaMotifToLogoPGM(
 	struct dnaMotif *motif,	/* Motif to draw. */
 	double widthPerBase, 	/* Width of each base. */
 	double width, 		/* Max width. */
 	double height, 		/* Max height. */
 	char *gsExe, 		/* ghostscript executable, NULL for default */
 	char *tempDir,          /* temp dir , NULL for default */
 	char *fileName);	/* output png file name. */
 /* Write logo corresponding to motif to PGM file. */
 
 #endif /* DNAMOTIF_H */