38df39129282c979360585e60168d2a5b22fcf7c fanhsu Fri Apr 29 15:33:58 2011 -0700 Added RNA picture plotted by VARNA for EvoFold. diff --git src/hg/hgc/rnaFoldClick.c src/hg/hgc/rnaFoldClick.c index 504eae0..5bf87f5 100644 --- src/hg/hgc/rnaFoldClick.c +++ src/hg/hgc/rnaFoldClick.c @@ -305,30 +305,57 @@ if ((mcThis = mafMayFindCompSpecies(maf, species[i], '.')) == NULL) continue; newOrder[mcCount++] = mcThis; } maf->components = NULL; for (i = 0; i < mcCount; i++) { newOrder[i]->next = 0; slAddHead(&maf->components, newOrder[i]); } slReverse(&maf->components); } +void htmlPrintSecStrDrawing(FILE *f, struct rnaSecStr *item) +{ +char fileName[512]; +struct dnaSeq *seq; +seq = hChromSeq(database, item->chrom, item->chromStart, item->chromEnd); +touppers(seq->dna); +if (item->strand[0] == '-') + reverseComplement(seq->dna, seq->size); +memSwapChar(seq->dna, seq->size, 'T', 'U'); + +safef(fileName, sizeof(fileName), "/gbdb/%s/evoFold/%s/%s.png", + database, item->chrom, item->name); +if (fileExists(fileName)) + { + fprintf(f, "<center><h2> RNA secondary structure drawing </h2></center>"); + fprintf(f,"<B>"); + + // Could consider to serve up all EvoFold .png files from our public server in the future + // fprintf(f,"<IMG SRC=\"http://genome.ucsc.edu/evoFold/%s/%s/%s.png\" border = '2' ALT=\"ERROR: VARA plotting failed.\"</B><BR>", + fprintf(f,"<IMG SRC=\"../evoFold/%s/%s/%s.png\" border = '2' ALT=\"ERROR: VARA plotting failed.\"</B><BR>", + database, item->chrom, item->name); + fprintf(f,"</B>"); + } + +freeMem(seq); +} + void doRnaSecStr(struct trackDb *tdb, char *itemName) /* Handle click on rnaSecStr type elements. */ { char *table = tdb->table; struct sqlConnection *conn = hAllocConn(database); struct sqlResult *sr; struct rnaSecStr *item; char extraWhere[256]; char **row; int rowOffset = 0; char *mafTrack = trackDbRequiredSetting(tdb, "mafTrack"); int start = cartInt(cart, "o"); struct mafAli *maf; char option[128]; char *speciesOrder = NULL; @@ -346,24 +373,29 @@ item = rnaSecStrLoad(row + rowOffset); maf = mafFromRnaSecStrItem(mafTrack, item); /* order maf by species */ safef(option, sizeof(option), "%s.speciesOrder", tdb->track); speciesOrder = cartUsualString(cart, option, NULL); if (speciesOrder == NULL) speciesOrder = trackDbSetting(tdb, "speciesOrder"); if (speciesOrder) mafSortBySpeciesOrder(maf, speciesOrder); mafAndFoldHeader(stdout); htmlPrintMafAndFold(stdout, maf, item->secStr, item->conf, 100); mafAndFoldLegend(stdout); + +/* Draw structure */ +htmlHorizontalLine(); +htmlPrintSecStrDrawing(stdout, item); + /* track specific html */ printTrackHtml(tdb); /* clean up */ mafAliFree(&maf); rnaSecStrFree(&item); sqlFreeResult(&sr); hFreeConn(&conn); }