void convertPslFileRow(struct sqlConnection *conn, char **row, FILE *genePredFh) /* A row from the PSL file, getting CDS */ { struct psl *psl = pslLoad(row); struct genbankCds cds = getCds(conn, psl); convertPsl(psl, &cds, genePredFh); pslFree(&psl); }
void retroShowCdnaAli(char *mappedId) /* Show alignment for accession, mostly ripped off from htcCdnaAli */ { char *track = cartString(cart, "aliTable"); struct trackDb *tdb = hashMustFindVal(trackHash, track); char *table = cartString(cart, "table"); int start = cartInt(cart, "o"); struct sqlConnection *conn = hAllocConn(database); struct sqlConnection *defDbConn = NULL; struct mappingInfo *mi = mappingInfoNew(conn, table, mappedId); struct genbankCds cds = getCds(conn, mi); struct psl *psl; struct dnaSeq *rnaSeq = NULL; char *spec = trackDbRequiredSetting(tdb, BASE_COLOR_USE_SEQUENCE); char *specCopy = cloneString(spec); char *words[3]; int nwords = chopByWhite(specCopy, words, ArraySize(words)); char acc[512]; /* Print start of HTML. */ writeFramesetType(); puts("<HTML>"); printf("<HEAD>\n<TITLE>%s vs Genomic [%s]</TITLE>\n</HEAD>\n\n", mi->seqId, track); /* Look up alignment and sequence in database. Always get sequence * from defaultDb */ psl = loadAlign(conn, mi, start); if (startsWith("August",mi->geneSet)) safef(acc, sizeof(acc), "aug-%s.T1",mi->seqId); else safef(acc, sizeof(acc), "%s",mi->seqId); // value is: extFile seqTbl extFileTbl if ((nwords != (int)ArraySize(words)) || !sameString(words[0], "extFile")) errAbort("invalid %s track setting: %s ", BASE_COLOR_USE_SEQUENCE, spec); char *seqTable = words[1]; char *extTable = words[2]; rnaSeq = hDnaSeqGet(database, acc, seqTable, extTable); if (rnaSeq == NULL) { char *acc = mi->seqId; rnaSeq = hExtSeq(database, acc); if (rnaSeq == NULL) errAbort("can't get mRNA sequence from %s prefix %s for %s from %s mappedId %s", database, mi->geneSet, acc, track, mappedId); } sqlDisconnect(&defDbConn); showSomeAlignment(psl, rnaSeq, gftDna, 0, rnaSeq->size, NULL, cds.start, cds.end); pslFree(&psl); dnaSeqFree(&rnaSeq); mappingInfoFree(&mi); hFreeConn(&conn); }
static void processMetaData(FILE *fh, struct sqlConnection *conn, struct sqlConnection *conn2, struct refSeqVerInfo *rsvi) /* get meta data for an accession */ { boolean isCoding = genbankIsRefSeqCodingMRnaAcc(rsvi->acc); char query[256]; sqlSafef(query, sizeof(query), "SELECT rl.name,rl.product,rl.protAcc,rl.locusLinkId,rs.status FROM refLink rl, refSeqStatus rs WHERE (rl.mrnaAcc = \"%s\") and (rs.mrnaAcc = rl.mrnaAcc)", rsvi->acc); struct sqlResult *sr = sqlGetResult(conn, query); char **row = sqlNextRow(sr); if (row == NULL) errAbort("no RefLink entry for %s", rsvi->acc); char buf[32]; char *protAccVer = getProtAccVerIf(conn2, rsvi->acc, row[2], buf, sizeof(buf)); char *cds = isCoding ? getCds(conn2, rsvi->acc) : ""; fprintf(fh, "%s.%d\t%s\t%s\t%s\t%s\t%s\t%s\n", rsvi->acc, rsvi->ver, protAccVer, row[0], row[3], cds, row[1], row[4]); sqlFreeResult(&sr); if (isCoding) freeMem(cds); }
void getAccMrna(char *acc, struct sqlConnection *conn, FILE *outFa) /* get mrna for an accession */ { HGID seqId; char *faSeq; struct dnaSeq *dna; boolean cdsOk = TRUE; char accBuf[512]; struct genbankCds cds; faSeq = hGetSeqAndId(conn, acc, &seqId); if (faSeq == NULL) { fprintf(stderr, "%s\tsequence not in database\n", acc); return; } dna = faFromMemText(faSeq); if (cdsUpper || peptides) cdsOk = getCds(conn, acc, dna->size, !cdsUpperAll, &cds); if (cdsOk && cdsUpper) upperCaseCds(dna, &cds); if ((cdsOk || cdsUpperAll) && inclVer) { int ver = getVersion(conn, acc); safef(accBuf, sizeof(accBuf), "%s.%d", acc, ver); acc = accBuf; } if ((cdsOk || cdsUpperAll)) { if (peptides) writePeptide(outFa, acc, dna, &cds); else faWriteNext(outFa, acc, dna->dna, dna->size); } dnaSeqFree(&dna); }