src/hg/hgGenome/hgGenome.h 1.37
1.37 2009/04/10 20:02:13 tdreszer
Replaced lookupCt with macro to ctFind() common subroutine
Index: src/hg/hgGenome/hgGenome.h
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/hgGenome/hgGenome.h,v
retrieving revision 1.36
retrieving revision 1.37
diff -b -B -U 1000000 -r1.36 -r1.37
--- src/hg/hgGenome/hgGenome.h 16 Nov 2007 14:52:55 -0000 1.36
+++ src/hg/hgGenome/hgGenome.h 10 Apr 2009 20:02:13 -0000 1.37
@@ -1,332 +1,332 @@
/* hgGenome.h - Include file used by all modules in hgGenome.
* hgGenome is a CGI script that produces a web page containing
* a graphic with all chromosomes in genome, and a graph or two
* on top of them. */
#ifndef HGGENOME_H
#define HGGENOME_H
#include "grp.h"
#include "hPrint.h"
+#include "customTrack.h"
/*** Prefixes for variables in cart we don't share with other apps. ***/
#define hggPrefix "hgGenome_"
#define hggDo hggPrefix "do"
/*** Our various cart variables. ***/
#define hggGraphPrefix hggPrefix "graph"
#define hggGraphColorPrefix hggPrefix "graphColor"
#define hggGraphHeight hggPrefix "graphHeight"
#define hggLabels hggPrefix "labels"
#define hggThreshold hggPrefix "threshold"
#define defaultThreshold 3.5
#define hggGraphsPerLine hggPrefix "graphsPerLine"
#define hggChromLayout hggPrefix "chromLayout"
#define hggLinesOfGraphs hggPrefix "linesOfGraphs"
#define hggDataSetName hggPrefix "dataSetName"
#define hggDataSetDescription hggPrefix "dataSetDescription"
#define hggMarkerType hggPrefix "markerType"
#define hggFormatType hggPrefix "formatType"
#define hggColumnLabels hggPrefix "columnLabels"
#define hggMinVal hggPrefix "minVal"
#define hggMaxVal hggPrefix "maxVal"
#define hggLabelVals hggPrefix "labelVals"
#define hggMaxGapToFill hggPrefix "maxGapToFill"
#define hggUploadFile hggPrefix "uploadFile"
#define hggUploadUrl hggPrefix "uploadUrl"
#define hggUploadRa hggPrefix "uploadRa"
#define hggImageWidth hggPrefix "imageWidth"
#define hggRegionPad hggPrefix "regionPad"
#define hggYellowMissing hggPrefix "yellowMissing"
#define hggRegionPadDefault 25000
/*** Command variables. ***/
#define hggConfigure hggDo "Configure"
#define hggConfigureOne hggDo "ConfigureOne"
#define hggBrowse hggDo "Browse"
#define hggSort hggDo "Sort"
#define hggCorrelate hggDo "Correlate"
#define hggUpload hggDo "Upload"
#define hggSubmitUpload hggDo "SubmitUpload"
#define hggImport hggDo "Import"
#define hggSubmitImport hggDo "SubmitImport"
#define hggClick hggDo "Click"
#define hggPsOutput hggDo "PsOutput"
#define hggClickX hggClick ".x"
#define hggClickY hggClick ".y"
/* -- import-track related -- */
#define hggGroup hggPrefix "group"
#define hggTrack hggPrefix "track"
#define hggTable hggPrefix "table"
#define hggBedConvertType hggPrefix "bedConvertType"
#define hggBedConvertTypeJs "js_bedConvertType"
#define hggBedCoverage "coverage"
#define hggBedDepth "depth"
/* Global variables - generally set during initialization and then read-only. */
extern char *curTable; /* Current selected table. */
extern struct trackDb *curTrack; /* Currently selected track. */
struct trackDb *getFullTrackList();
/* Get all tracks including custom tracks if any. */
struct customTrack *getCustomTracks();
/* Get custom track list. */
struct trackDb *findSelectedTrack(struct trackDb *trackList,
struct grp *group, char *varName);
/* Find selected track - from CGI variable if possible, else
* via various defaults. */
-struct customTrack *lookupCt(char *name);
-/* Find named custom track. */
+#define lookupCt(name) ctFind(getCustomTracks(),name)
struct customTrack *newCt(char *ctName, char *ctDesc, int visNum, char *ctUrl,
int fields);
/* Make a new custom track record for the query results. */
void removeNamedCustom(struct customTrack **pList, char *name);
/* Remove named custom track from list if it's on there. */
struct hTableInfo *ctToHti(struct customTrack *ct);
/* Create an hTableInfo from a customTrack. */
struct hTableInfo *getHti(char *db, char *table);
/* Return primary table info. */
struct hTableInfo *maybeGetHti(char *db, char *table);
/* Return primary table info, but don't abort if table not there. */
#define hgtaCtName "hgta_ctName"
#define hgtaCtDesc "hgta_ctDesc"
#define hgtaCtVis "hgta_ctVis"
#define hgtaCtUrl "hgta_ctUrl"
#define hgtaCtWigOutType "hgta_ctWigOutType"
/* Prefix for temp name files created for custom tracks */
#define hgtaCtTempNamePrefix "hgtct"
/* Prefix for variables containing filters themselves. */
#define hgtaFilterVarPrefix hgtaFilterPrefix "v."
/* Prefix for variables managed by filter page. */
#define hgtaFilterPrefix "hgta_fil."
#define hgtaPrintCustomTrackHeaders "hgta_printCustomTrackHeaders"
#define outWigData "wigData"
#define hgtaIntersectTable "hgta_intersectTable"
#define hgtaIntersectTrack "hgta_intersectTrack"
#define hgtaInvertTable2 "hgta_invertTable2"
#define hgtaIntersectOp "hgta_intersectOp"
/*** External vars declared in hgGenome.c ***/
extern struct cart *cart;
extern struct hash *oldCart;
extern char *database;
extern char *genome;
extern struct genoGraph *ggUserList; /* List of user graphs */
extern struct genoGraph *ggDbList; /* List of graphs in database. */
extern struct trackLayout tl; /* Dimensions of things, fonts, etc. */
extern struct slRef *ggList; /* List of active genome graphs */
extern struct hash *ggHash; /* Hash of active genome graphs */
extern boolean withLabels; /* Draw labels? */
/*** Name prefixes to separate user from db graphs. */
#define hggUserTag "user_"
#define hggDbTag ""
/*** Info on a single graph. ***/
struct genoGraph
/* A genomic graph */
{
struct genoGraph *next; /* Next in list. */
char *name; /* Graph name. */
char *shortLabel; /* Short label. */
char *longLabel; /* Long label. */
char *binFileName; /* Binary file associated with graph. */
struct chromGraphSettings *settings; /* Display settings */
boolean didRefine; /* Set to true after refined */
struct chromGraphBin *cgb; /* Binary data handle. */
boolean isSubGraph; /* Set to TRUE if the graph is part of a composite. */
boolean isComposite; /* Set to TRUE if this just has composite settings. */
};
/*** Routines from hgGenome.h ***/
int regionPad();
/* Number of bases to pad regions by. */
char *getThresholdName();
/* Return threshold name. */
double getThreshold();
/* Return user-set threshold */
boolean getYellowMissing();
/* Return draw background in yellow for missing data flag. */
struct bed3 *regionsOverThreshold();
/* Get list of regions over threshold */
int graphHeight();
/* Return height of graph. */
#define betweenRowPad 3
#define minGraphsPerLine 1
#define maxGraphsPerLine 4
#define defaultGraphsPerLine 2
int graphsPerLine();
/* Return number of graphs to draw per line. */
#define minLinesOfGraphs 1
#define maxLinesOfGraphs 10
#define defaultLinesOfGraphs 1
int linesOfGraphs();
/* Return number of lines of graphs */
#define layTwoPerLine "two per line"
#define layOnePerLine "one per line"
#define layAllOneLine "all in one line"
char *chromLayout();
/* Return one of above strings specifying layout. */
void getGenoGraphs(struct sqlConnection *conn);
/* Set up ggList and ggHash with all available genome graphs */
char *graphVarName(int row, int col);
/* Get graph data source variable for given row and column. Returns
* static buffer. */
char *graphColorVarName(int row, int col);
/* Get graph color variable for givein row and column. Returns
* static buffer. */
char *graphSourceAt(int row, int col);
/* Return graph source at given row/column, NULL if none. */
char *graphColorAt(int row, int col);
/* Return graph color at given row/column, NULL if nonw. */
struct genoLay *ggLayout(struct sqlConnection *conn,
int graphRows, int graphCols);
/* Figure out how to lay out image. */
struct genoGraph *ggFirstVisible();
/* Return first visible graph, or NULL if none. */
struct slRef *ggAllVisible();
/* Return list of references to all visible graphs */
void hggDoUsualHttp();
/* Wrap html page dispatcher with code that writes out
* HTTP header and write cart back to database. */
/*** Functions imported from other modules. ***/
void handlePostscript(struct sqlConnection *conn);
/* Do graphic as eps/pdf. */
void mainPage(struct sqlConnection *conn);
/* Do main page of application: hotlinks bar, controls, graphic. */
void printMainHelp();
/* Put up main page help info. */
void uploadPage();
/* Put up initial upload page. */
void importPage();
/* Put up initial import page. */
void configurePage();
/* Put up configuration page. */
void configureOnePage();
/* Put up configuration for one graph. */
void correlatePage(struct sqlConnection *conn);
/* Put up correlation page. */
void submitUpload(struct sqlConnection *conn);
/* Called when they've submitted from uploads page */
void submitUpload2(struct sqlConnection *conn);
/* Called when they've submitted from uploads page */
void submitImport(struct sqlConnection *conn);
/* Called when they've submitted from import page */
void browseRegions(struct sqlConnection *conn);
/* Put up a frame with a list of links on the left and the
* first link selected on the right. */
void sortGenes(struct sqlConnection *conn);
/* Put up sort gene page. */
void clickOnImage(struct sqlConnection *conn);
/* Handle click on image - calculate position in forward to genome browser. */
/* ----------- Wiggle business in wiggle.c -------------------- */
#define MAX_REGION_DISPLAY 1000
boolean isWiggle(char *db, char *table);
/* Return TRUE if db.table is a wiggle. */
boolean isBedGraph(char *table);
/* Return TRUE if table is specified as a bedGraph in the current database's
* trackDb. */
void wiggleMinMax(struct trackDb *tdb, double *min, double *max);
/* obtain wiggle data limits from trackDb or cart or settings */
struct wiggleDataStream *wigChromRawStats(char *chrom);
/* Fetch stats for wig data in chrom.
* Returns a wiggleDataStream, free it with wiggleDataStreamFree() */
/* ------------ */
struct sqlResult *chromQuery(struct sqlConnection *conn, char *table,
char *fields, char *chrom, boolean isPositional,
char *extraWhere);
/* Construct and execute query for table on chrom. Returns NULL if
* table doesn't exist (e.g. missing split table for chrom). */
struct bed *getBeds(char *chrom, struct lm *lm, int *retFieldCount);
/* Get list of beds on single chrom. */
struct bed *customTrackGetBedsForChrom(char *name, char *chrom,
struct lm *lm, int *retFieldCount);
/* Get list of beds from custom track of given name that are
* in given chrom. You can bedFree this when done. */
boolean isMafTable(char *database, struct trackDb *track, char *table);
/* Return TRUE if table is maf. */
boolean isChromGraph(struct trackDb *track);
/* Return TRUE if it's a chromGraph track */
char *getBedGraphField(char *table, char *type);
/* get the bedGraph dataValue field name from the track type */
#endif /* HGGENOME_H */