src/inc/dnaMotif.h 1.4

1.4 2009/09/07 23:40:21 markd
added option to control minimum height of a sequence logo column
Index: src/inc/dnaMotif.h
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/inc/dnaMotif.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -b -B -U 1000000 -r1.3 -r1.4
--- src/inc/dnaMotif.h	14 Sep 2006 20:45:36 -0000	1.3
+++ src/inc/dnaMotif.h	7 Sep 2009 23:40:21 -0000	1.4
@@ -1,108 +1,116 @@
 /* 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. */
 
 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 */