0a01f6a29963ba42555b02782532a5702b649f29
braney
  Fri Mar 10 10:18:36 2023 -0800
first cut at drawing base probability logos in wiggle tracks calculated
at run time using an associated MAF
related

diff --git src/hg/inc/hgMaf.h src/hg/inc/hgMaf.h
index 6ea52b2..beee708 100644
--- src/hg/inc/hgMaf.h
+++ src/hg/inc/hgMaf.h
@@ -1,110 +1,125 @@
 /* hgMaf.h - Stuff to load up mafs from the browser database.
  *           Also, items for maf track display */
 
 /* Copyright (C) 2012 The Regents of the University of California 
  * See kent/LICENSE or http://genome.ucsc.edu/license/ for licensing information. */
 #ifndef HGMAF_H
 #define HGMAF_H
 
 
 #include "trackDb.h"
 #include "cart.h"
 #include "bbiFile.h"
 
 /* Track settings and variables */
 #define SPECIES_TREE_VAR        "speciesTree"
 #define SPECIES_ORDER_VAR       "speciesOrder"
 #define SPECIES_GROUP_VAR       "speciesGroups"
 #define SPECIES_TARGET_VAR      "speciesTarget"
 #define SPECIES_DEFAULT_OFF_VAR "speciesDefaultOff"
 #define SPECIES_GROUP_PREFIX    "sGroup_"
 #define SPECIES_HTML_TARGET	"sT"
 #define SPECIES_CODON_DEFAULT	"speciesCodonDefault"
 #define SPECIES_USE_FILE        "speciesUseFile"
 #define SPECIES_LABELS          "speciesLabels"
 #define PAIRWISE_VAR            "pairwise"
 #define PAIRWISE_HEIGHT         "pairwiseHeight"
 #define SUMMARY_VAR             "summary"
 #define BASE_COLORS_VAR         "baseColors"
 #define BASE_COLORS_OFFSET_VAR  "baseColorsOffset"
 #define CONS_WIGGLE             "wiggle"
 #define ITEM_FIRST_CHAR_CASE	"itemFirstCharCase"
 #define DEFAULT_CONS_LABEL      "Conservation"
 
 #define gsidSubjList "gsidTable.gsidSubjList"
 #define gsidSeqList "gsidTable.gsidSeqList"
 
 #define gisaidSubjList "gisaidTable.gisaidSubjList"
 #define gisaidSeqList "gisaidTable.gisaidSeqList"
 
 struct mafAli *mafLoadInRegion2(struct sqlConnection *conn,
         struct sqlConnection *conn2, char *table, char *chrom,
         int start, int end, char *file);
 /* Return list of alignments in region. */
 
 struct mafAli *mafLoadInRegion(struct sqlConnection *conn, char *table,
 	char *chrom, int start, int end);
 /* Return list of alignments in region. */
 
 struct mafAli *axtLoadAsMafInRegion(struct sqlConnection *conn, char *table,
 	char *chrom, int start, int end,
 	char *tPrefix, char *qPrefix, int tSize,  struct hash *qSizeHash);
 /* Return list of alignments in region from axt external file as a maf. */
 
+struct mafBaseProbs 
+// the probability of each nucleotide being in a certain colum
+    {
+    double aProb, cProb, gProb, tProb;
+    };
+
+struct mafBaseProbs *hgMafProbs(
+	char *database,     /* Database, must already have hSetDb to this */
+	char *track, 	    /* Name of MAF track */
+	char *chrom, 	    /* Chromosome (in database genome) */
+	int start, int end, /* start/end in chromosome */
+	char strand 	    /* Chromosome strand. */
+        );
+/* calculate the probability of each nucleotide in each column of a maf. */
+
 struct mafAli *hgMafFrag(
 	char *database,     /* Database, must already have hSetDb to this */
 	char *track, 	    /* Name of MAF track */
 	char *chrom, 	    /* Chromosome (in database genome) */
 	int start, int end, /* start/end in chromosome */
 	char strand, 	    /* Chromosome strand. */
 	char *outName, 	    /* Optional name to use in first component */
 	struct slName *orderList /* Optional order of organisms. */
 	);
 /* mafFrag- Extract maf sequences for a region from database.
  * This creates a somewhat unusual MAF that extends from start
  * to end whether or not there are actually alignments.  Where
  * there are no alignments (or alignments missing a species)
  * a . character fills in.   The score is always zero, and
  * the sources just indicate the species.  You can mafFree this
  * as normal. */
 
 int mafCmp(const void *va, const void *vb);
 /* Compare to sort based on start of first component. */
 
 struct consWiggle {
     struct consWiggle *next;    /* Next in list */
     char *table;                /* phastCons table */
     char *leftLabel;            /* Left label for hgTracks */
     char *uiLabel;              /* Label to print on trackUi */
 };
 
 struct consWiggle *wigMafWiggles(char *db, struct trackDb *tdb);
 /* get conservation wiggle table names and labels from trackDb setting,
    ignoring those where table doesn't exist */
 
 char *wigMafWiggleVar(char *prefix, struct consWiggle *wig,char **suffix);
 // Return name of cart variable (and optionally the suffix) for this cons wiggle
 
 struct wigMafSpecies
     {
     struct wigMafSpecies *next;
     char *name;
     int group;
     boolean on;
     };
 
 struct wigMafSpecies * wigMafSpeciesTable(struct cart *cart,
     struct trackDb *tdb, char *name, char *db) ;
 char **wigMafGetSpecies(struct cart *cart, struct trackDb *tdb, char *prefix, char *db, 
                         struct wigMafSpecies **list, int *groupCt);
 
 struct consWiggle *consWiggleFind(char *db,struct trackDb *parent,char *table);
 /* Return conservation wig if it is found in the parent. */
 
 struct mafAli *bigMafLoadInRegion( struct bbiFile *bbi, char *chrom, int start, int end);
 /* Read in MAF blocks from bigBed. */
 
 struct hash *mafGetLabelHash(struct trackDb *tdb);
 /* Get mapping of sequence name to label. */
 
 #endif//ndef HGMAF_H