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, "
RNA secondary structure drawing
");
+ fprintf(f,"");
+
+ // Could consider to serve up all EvoFold .png files from our public server in the future
+ // fprintf(f,"
",
+ fprintf(f,"
",
+ database, item->chrom, item->name);
+ fprintf(f,"");
+ }
+
+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);
}