353a34ac7e7638457db3f55e57452069113d860b braney Sun Sep 6 13:34:28 2026 -0700 Add a bigNet track type, a net of alignments in a bigBed, refs #20824 Track hubs have had no way to show a real net. The usual stand-in is a net rendered as a maf, which loses the level structure that makes a net useful for establishing orthologous sequence. bigNet holds the netAlign columns in a bigBed, so a hub can carry the net itself. The format is bed6+20: the target in chrom/chromStart/chromEnd, the query sequence in name, the query strand in strand, then level and the rest of the netAlign fields. The trackDb line is type bigNet mirroring type netAlign. chainTrack is the plain trackDb name of the bigChain track in the same hub; hgc adds the hub prefix itself. chainNetLoadRangeHub() builds a chainNet from a bigBed range query and hands it to the same helpToNet() the SQL path uses, so the nesting is rebuilt the same way. netDraw picks its loader off tg->isBigBed and the drawing code below that is untouched. genericNetClick does the same for the details page and follows the named chain track for the alignment. Also bounds the level walk in helpToNet() by help->maxDepth. It could read one past the end of the levels array. netToBigNet converts a net file to bedToBigBed input. It writes the tab line itself rather than calling bigNetTabOut, because autoSql prints a double with %g and that drops digits off a chain score. diff --git src/hg/hgc/hgc.h src/hg/hgc/hgc.h index 251fde51f21..09e11dd6b76 100644 --- src/hg/hgc/hgc.h +++ src/hg/hgc/hgc.h @@ -87,30 +87,33 @@ * and other parameters. */ void hgcAnchorWindow(char *group, char *item, int thisWinStart, int thisWinEnd, char *other, char *chrom); /* Generate an anchor that calls click processing program with item * and other parameters, INCLUDING the ability to specify left and * right window positions different from the current window*/ void hgcAnchor(char *group, char *item, char *other); /* Generate an anchor that calls click processing program with item * and other parameters. */ struct trackDb *tdbForTableArg(); /* get trackDb for track passed in table arg */ +struct trackDb *getTdbForTrackName(char *trackName); +/* Given a track name (which may have ct_ or hub_ prepended), return its tdb. */ + void writeFramesetType(); /* Write document type that shows a frame set, rather than regular HTML. */ void htmlFramesetStart(char *title); /* Write DOCTYPE HTML and HEAD sections for framesets. */ void alnModernStart(char *classicTitle); /* Begin an alignment page: modern single-page chrome when the modernAlignPage hg.conf flag is set * (showSomeAlignment then renders the modern body), else the classic . */ struct psl *getAlignments(struct sqlConnection *conn, char *table, char *acc); /* get the list of alignments for the specified acc */ void printAlignmentsSimple(struct psl *pslList, int startFirst, char *hgcCommand, char *typeName, char *itemIn);