struct dataVector *bedGraphDataVector(char *table, struct sqlConnection *conn, struct region *region) /* Read in bedGraph as dataVector and return it. Filtering, subtrack merge * and intersection are handled. */ { struct dataVector *dv = NULL; if (anySubtrackMerge(database, table)) dv = mergedWigDataVector(table, conn, region); else { struct trackDb *tdb; if (isCustomTrack(table)) { struct customTrack *ct = ctLookupName(table); tdb = ct->tdb; conn = hAllocConn(CUSTOM_TRASH); } else { tdb = hTrackDbForTrack(database, table); } struct trackTable *tt1 = trackTableNew(tdb, table, conn); dv = dataVectorFetchOneRegion(tt1, region, conn); intersectDataVector(table, dv, region, conn); if (isCustomTrack(table)) hFreeConn(&conn); } return dv; }
static int mergedWigOutRegion(char *table, struct sqlConnection *conn, struct region *region, int maxOut, enum wigOutputType wigOutType) /* Perform the specified subtrack merge wiggle-operation on table and * all other selected subtracks, intersect if necessary, and print out. */ { struct dataVector *dv = mergedWigDataVector(table, conn, region); int resultCount = wigPrintDataVectorOut(dv, wigOutType, maxOut, describeSubtrackMerge("#\t")); dataVectorFree(&dv); return resultCount; }
struct dataVector *bigWigDataVector(char *table, struct sqlConnection *conn, struct region *region) /* Read in bigWig as dataVector and return it. Filtering, subtrack merge * and intersection are handled. */ { if (anySubtrackMerge(database, table)) return mergedWigDataVector(table, conn, region); else { struct dataVector *dv = dataVectorNew(region->chrom, region->end - region->start); bigWigFillDataVector(table, region, conn, dv); return dv; } }
struct dataVector *wiggleDataVector(struct trackDb *tdb, char *table, struct sqlConnection *conn, struct region *region) /* Read in wiggle as dataVector and return it. Filtering, subtrack merge * and intersection are handled. */ { struct dataVector *dv = NULL; if (anySubtrackMerge(database, table)) dv = mergedWigDataVector(table, conn, region); else { struct trackTable *tt1 = trackTableNew(tdb, table, conn); dv = dataVectorFetchOneRegion(tt1, region, conn); } return dv; }