src/hg/instinct/bioInt2/bioIntDriver.h 1.1

1.1 2009/03/20 06:06:32 jsanborn
initial commit
Index: src/hg/instinct/bioInt2/bioIntDriver.h
===================================================================
RCS file: src/hg/instinct/bioInt2/bioIntDriver.h
diff -N src/hg/instinct/bioInt2/bioIntDriver.h
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/hg/instinct/bioInt2/bioIntDriver.h	20 Mar 2009 06:06:32 -0000	1.1
@@ -0,0 +1,152 @@
+/* bioIntDriver.h 
+ * All rights reserved -- J. Zachary Sanborn
+ */
+
+#ifndef BIOINTDRIVER_H
+#define BIOINTDRIVER_H 
+
+#include "common.h"
+#include "bioIntDb.h"
+
+#define DBL_NULL  -9999.98  /* fairly unique number... TODO: better way? */
+#define DEBUG 0
+
+struct biQuery {
+    struct biQuery *next;
+
+    char *db;
+    char *dataset;
+
+    boolean getAllProbes;
+
+    struct slName *pathwayList;
+    struct slName *probeList;
+    struct slName *geneList;
+    struct slName *sampleList;
+    struct slName *featureValList;
+    struct slName *featureCodeList; 
+
+    /* Methods */
+    int (*addPathways)(struct biQuery *bq, char *str, char sep);
+    int (*addProbes)(struct biQuery *bq, char *str, char sep);
+    int (*addGenes)(struct biQuery *bq, char *str, char sep);
+    int (*addSamples)(struct biQuery *bq, char *str, char sep);
+    int (*addFeatureVals)(struct biQuery *bq, char *str, char sep);
+    int (*addFeatureCodes)(struct biQuery *bq, char *str, char sep);
+};
+
+struct biData {
+    struct biData *next;
+    char *name;
+    char *type;
+
+    struct slDouble *data;
+    struct hash *hash;
+};
+
+struct biOmics {
+    struct biOmics *next;
+
+    char *db;
+    char *name;
+    char *type;       // data type (cnv, expression, etc.)
+
+    struct hash *sampleIndices;
+    struct hash *geneAliases;
+    struct hash *datasetProbes;
+
+    struct datasets *dataset;
+
+    struct samples *samples;
+    struct hash *samplesHash;
+
+    struct probeInfo *probeInfo;
+    struct hash *probeInfoHash;
+
+    /* Probe data */
+    struct slPair *probes;
+    struct hash *probesHash;
+
+    /* Methods */
+    int (*populate)(struct biOmics *bi, struct biQuery *bq);
+    int (*populateAll)(struct biOmics *bi, struct biQuery *bq);
+    int (*populateRandom)(struct biOmics *bi, struct biQuery *bq, int numProbes);
+    
+    void (*loadData)(struct sqlConnection *conn, struct biOmics *bi, boolean allData);
+    void (*freeData)(struct slPair **pList);
+    struct slName *(*allSamples)(struct biOmics *bi);  
+    struct slName *(*allProbes)(struct biOmics *bi); 
+ 
+    struct slName *(*probesForGene)(struct biOmics *bi, char *gene);  
+    
+    struct biData *(*dataForProbe)(struct biOmics *bi, char *probe);
+    struct biData *(*dataForSample)(struct biOmics *bi, char *sample);
+    double (*dataForProbeSample)(struct biOmics *bi, char *probe, char *sample);
+    
+    void (*toZscores)(struct biOmics *bi);
+    void (*toLogP)(struct biOmics *bi);
+};
+
+struct biResults {
+    struct biOmics *datasets;
+
+    /* Methods */
+    struct slName *(*allDatasets)(struct biResults *br);
+
+    struct slName *(*allProbes)(struct biResults *br);
+    struct slName *(*allProbesInDataset)(struct biResults *br, char *dataset);
+
+    struct slName *(*allSamples)(struct biResults *br);
+    struct slName *(*allSamplesInCommon)(struct biResults *br);
+    struct slName *(*allSamplesInDataset)(struct biResults *br, char *dataset);
+
+    struct slName *(*probesForGene)(struct biResults *br, char *gene);  
+    struct slName *(*probesForGeneInDataset)(struct biResults *br, char *gene, char *dataset); 
+
+    struct biData *(*dataForProbe)(struct biResults *br, char *probe);  
+    struct biData *(*dataForProbeInDataset)(struct biResults *br, char *probe, char *dataset);  
+
+    struct biData *(*dataForSample)(struct biResults *br, char *sample);
+    struct biData *(*dataForSampleInDataset)(struct biResults *br, char *sample, char *dataset);
+
+    struct biData *(*dataForProbeSample)(struct biResults *br, char *probe, char *sample);
+    double (*dataForProbeSampleInDataset)(struct biResults *br, char *probe, char *sample, char *dataset);
+
+    void (*toZscores)(struct biResults *br);
+    void (*toLogP)(struct biResults *br);
+};
+
+
+void slPairSampleValFreeList(struct slPair **pList);
+
+void slPairValsFreeList(struct slPair **pList); 
+
+struct biOmics *newBiOmics(char *db, char *dataset);
+
+void biOmicsFree(struct biOmics **ptr);
+
+struct biQuery *biQueryNew(char *db, char *dataset);
+
+void biQueryAppend(struct biQuery **list, struct biQuery *bq);
+
+void biQueryFree(struct biQuery **pEl);
+
+void biQueryFreeList(struct biQuery **pList);
+
+struct biResults *biQueryResults(struct biQuery *bqList);
+
+struct biResults *biQueryResultsRandomize(struct biQuery *bqList, int numProbes);
+
+void biResultsFree(struct biResults **pEl);
+
+void biDataAppendName(struct biData *bd, char *name);
+ 
+struct biData *biDataNew(char *name);
+
+void biDataFree(struct biData **pEl);
+
+void biDataFreeList(struct biData **pList);
+
+struct biData *biDataFind(struct biData *bdList, char *name);
+
+#endif /* BIOINTDRIVER_H */