int main(int argc, char *argv[]) { if (argc != 4) usage(); database = argv[1]; hSetDb(database); snpSimpleTable = argv[2]; if (!hTableExistsDb(database, snpSimpleTable)) errAbort("can't get table %s\n", snpSimpleTable); orthoTable = argv[3]; if (!hTableExistsDb(database, orthoTable)) errAbort("can't get table %s\n", orthoTable); outputFileHandle = mustOpen("snpOrthoJoin.tab", "w"); missingFileHandle = mustOpen("snpOrthoJoin.missing", "w"); chimpHash = getOrtho(orthoTable, "panTro2"); macaqueHash = getOrtho(orthoTable, "rheMac2"); writeResults(snpSimpleTable); carefulClose(&outputFileHandle); carefulClose(&missingFileHandle); return 0; }
int main(int argc, char *argv[]) /* Read ContigInfo into hash. */ /* Filter ContigLocusId and write to ContigLocusIdFilter. */ { if (argc != 3) usage(); snpDb = argv[1]; contigGroup = argv[2]; hSetDb(snpDb); /* check for needed tables */ if(!hTableExistsDb(snpDb, "ContigLocusId")) errAbort("no ContigLocusId table in %s\n", snpDb); if(!hTableExistsDb(snpDb, "ContigInfo")) errAbort("no ContigInfo table in %s\n", snpDb); contigHash = loadContigs(contigGroup); if (contigHash == NULL) { verbose(1, "couldn't get ContigInfo hash\n"); return 1; } filterSNPs(); createTable(); loadDatabase(); return 0; }
int main(int argc, char *argv[]) /* hash subsnp_class and var_str from UniVariation */ /* read SNP for univar_id, lookup into univarHash */ /* store univarHash elements in snpHash */ /* read through chrN_snpTmp, rewrite with extensions to individual chrom tables */ { struct slName *chromList, *chromPtr; char tableName[64]; if (argc != 2) usage(); snpDb = argv[1]; hSetDb(snpDb); /* check for necessary tables */ if(!hTableExistsDb(snpDb, "SNP")) errAbort("missing SNP table"); if(!hTableExistsDb(snpDb, "UniVariation")) errAbort("missing UniVariation table"); chromList = hAllChromNamesDb(snpDb); errorFileHandle = mustOpen("snpClassAndObserved.errors", "w"); univarHash = getUnivarHash(); snpHash = getSNPHash(); for (chromPtr = chromList; chromPtr != NULL; chromPtr = chromPtr->next) { safef(tableName, ArraySize(tableName), "%s_snpTmp", chromPtr->name); if (!hTableExists(tableName)) continue; verbose(1, "chrom = %s\n", chromPtr->name); processSnps(chromPtr->name); } carefulClose(&errorFileHandle); for (chromPtr = chromList; chromPtr != NULL; chromPtr = chromPtr->next) { safef(tableName, ArraySize(tableName), "%s_snpTmp", chromPtr->name); if (!hTableExists(tableName)) continue; recreateDatabaseTable(chromPtr->name); verbose(1, "loading chrom = %s\n", chromPtr->name); loadDatabase(chromPtr->name); } return 0; }
int main(int argc, char *argv[]) /* read ContigLocFilter, writing to individual chrom tables */ { struct hashCookie cookie; struct hashEl *hel; char *chromName; if (argc != 3) usage(); snpDb = argv[1]; contigGroup = argv[2]; hSetDb(snpDb); /* check for needed tables */ if(!hTableExistsDb(snpDb, "ContigLocFilter")) errAbort("no ContigLocFilter table in %s\n", snpDb); if(!hTableExistsDb(snpDb, "ContigInfo")) errAbort("no ContigInfo table in %s\n", snpDb); chromHash = loadChroms(contigGroup); if (chromHash == NULL) { verbose(1, "couldn't get chrom info\n"); return 1; } writeSplitTables(); verbose(1, "closing files...\n"); cookie = hashFirst(chromHash); while (hel = hashNext(&cookie)) fclose(hel->val); verbose(1, "creating tables...\n"); cookie = hashFirst(chromHash); while ((chromName = hashNextName(&cookie)) != NULL) createTable(chromName); verbose(1, "loading database...\n"); cookie = hashFirst(chromHash); while ((chromName = hashNextName(&cookie)) != NULL) { verbose(1, "chrom = %s\n", chromName); loadDatabase(chromName); } return 0; }
struct hash *readFasta(char *chromName) /* read moltype from chrN_fasta into hash. */ /* Read again for random */ /* Also called to create the chrN_multi hash. */ { char query[512]; struct sqlConnection *conn = hAllocConn(); struct sqlResult *sr; char **row; char fastaTableName[64]; struct hash *newChromHash = NULL; char *adjustedChromName = cloneString(chromName); char *randomSubstring = NULL; newChromHash = newHash(0); randomSubstring = strstr(chromName, "random"); if (randomSubstring != NULL) stripString(adjustedChromName, "_random"); safef(fastaTableName, ArraySize(fastaTableName), "%s_snpFasta", adjustedChromName); if(!hTableExistsDb(snpDb, fastaTableName)) errAbort("can't get table %s\n", fastaTableName); safef(query, sizeof(query), "select rsId, molType from %s", fastaTableName); sr = sqlGetResult(conn, query); while ((row = sqlNextRow(sr)) != NULL) /* could check for duplicates here */ hashAdd(newChromHash, cloneString(row[0]), cloneString(row[1])); sqlFreeResult(&sr); hFreeConn(&conn); return newChromHash; }
int main(int argc, char *argv[]) /* Read chromInfo into hash. */ /* Read ContigLocusIdCondense into hash. */ /* Recreate chrN_snpTmp, adding fxn_classes. */ { struct slName *chromList, *chromPtr; char tableName[64]; if (argc != 2) usage(); snpDb = argv[1]; hSetDb(snpDb); chromList = hAllChromNamesDb(snpDb); /* check for needed tables */ if(!hTableExistsDb(snpDb, "ContigLocusIdCondense")) errAbort("no ContigLocusIdCondense table in %s\n", snpDb); if(!hTableExistsDb(snpDb, "chromInfo")) errAbort("no chromInfo table in %s\n", snpDb); functionHash = createFunctionHash(); for (chromPtr = chromList; chromPtr != NULL; chromPtr = chromPtr->next) { safef(tableName, ArraySize(tableName), "%s_snpTmp", chromPtr->name); if (!hTableExists(tableName)) continue; verbose(1, "chrom = %s\n", chromPtr->name); addFunction(chromPtr->name); } for (chromPtr = chromList; chromPtr != NULL; chromPtr = chromPtr->next) { safef(tableName, ArraySize(tableName), "%s_snpTmp", chromPtr->name); if (!hTableExists(tableName)) continue; verbose(1, "loading chrom = %s\n", chromPtr->name); recreateDatabaseTable(chromPtr->name); loadDatabase(chromPtr->name); } return 0; }
int main(int argc, char *argv[]) { if (argc != 4) usage(); database = argv[1]; hSetDb(database); snpTable = argv[2]; if (!hTableExistsDb(database, snpTable)) errAbort("can't get table %s\n", snpTable); orthoTable = argv[3]; if (!hTableExistsDb(database, orthoTable)) errAbort("can't get table %s\n", orthoTable); snpHash = getBaseSnpData(snpTable); outputFileHandle = mustOpen("snpOrthoLookup.tab", "w"); writeResults(orthoTable); carefulClose(&outputFileHandle); return 0; }
int main(int argc, char *argv[]) /* generate snpOrtho table from snp ortho file */ /* combine with snp table */ { if (argc != 4) usage(); hSetDb(argv[1]); if (!hTableExistsDb(argv[1], argv[2])) errAbort("can't get table %s\n", argv[2]); if (!fileExists(argv[3])) errAbort("can't find %s\n", argv[3]); orthoHash = getOrtho(argv[3]); writeResults(argv[2]); return 0; }
int main(int argc, char *argv[]) /* Check args and call snpMaskGenes. */ { if (argc != 5) usage(); database = argv[1]; if(!hDbExists(database)) errAbort("%s does not exist\n", database); hSetDb(database); if(!hTableExistsDb(database, "snp")) errAbort("no snp table in %s\n", database); chromName = argv[2]; if(hgOfficialChromName(chromName) == NULL) errAbort("no such chromosome %s in %s\n", chromName, database); // check that nib file exists // or, use hNibForChrom from hdb.c snpMaskGenes(argv[3], argv[4]); return 0; }
int main(int argc, char *argv[]) /* Condense ContigLocusIdFilter and write to ContigLocusIdCondense. */ { if (argc != 2) usage(); snpDb = argv[1]; hSetDb(snpDb); /* check for needed tables */ if(!hTableExistsDb(snpDb, "ContigLocusIdFilter")) errAbort("no ContigLocusIdFilter table in %s\n", snpDb); condenseFunctionValues(); createTable(); loadDatabase(); return 0; }
int main(int argc, char *argv[]) /* Condense SNPSubSNPLinkand write to SNPSubSNPLinkCondense. */ { if (argc != 2) usage(); snpDb = argv[1]; hSetDb(snpDb); /* check for needed tables */ if(!hTableExistsDb(snpDb, "SNPSubSNPLink")) errAbort("no SNPSubSNPLink table in %s\n", snpDb); condenseValues(); createTable(); loadDatabase(); return 0; }
struct genePred *getOverlappingGeneDb(struct genePred **list, char *table, char *chrom, int cStart, int cEnd, char *name, int *retOverlap, char *db) { /* read all genes from a table find the gene with the biggest overlap. Cache the list of genes to so we only read it once */ struct genePred *el = NULL, *bestMatch = NULL, *gp = NULL; int overlap = 0 , bestOverlap = 0, i; int *eFrames; if (list == NULL) return NULL; if (*list == NULL) { struct genePred *gpList = NULL; struct sqlConnection *conn = sqlConnect(db); struct genePredReader *gpr = NULL; if (!hTableExistsDb(db,table)) table = altTable; if (!hTableExistsDb(db,table)) { verbose(2,"no table %s in %s\n",table, db); return NULL; } gpr = genePredReaderQuery(conn, table, NULL); verbose(1,"Loading Predictions from %s in %s\n",table, db); gpList = genePredReaderAll(gpr); if (gpList != NULL) { hashAdd(geneListHash, db, gpList); *list = gpList; } sqlDisconnect(&conn); } for (el = *list; el != NULL; el = el->next) { if (chrom != NULL && el->chrom != NULL) { overlap = 0; if ( sameString(chrom, el->chrom)) { for (i = 0 ; i<(el->exonCount); i++) { overlap += positiveRangeIntersection(cStart,cEnd, el->exonStarts[i], el->exonEnds[i]) ; } if (overlap > 20 && sameString(name, el->name)) { bestMatch = el; bestOverlap = overlap; *retOverlap = bestOverlap; } if (overlap > bestOverlap) { bestMatch = el; bestOverlap = overlap; *retOverlap = bestOverlap; } } } } if (bestMatch != NULL) { /* Allocate genePred and fill in values. */ AllocVar(gp); gp->name = cloneString(bestMatch->name); gp->chrom = cloneString(bestMatch->chrom); gp->strand[1] = bestMatch->strand[1]; gp->strand[0] = bestMatch->strand[0]; gp->txStart = bestMatch->txStart; gp->txEnd = bestMatch->txEnd; gp->cdsStart = bestMatch->cdsStart; gp->cdsEnd = bestMatch->cdsEnd; gp->exonCount = bestMatch->exonCount; AllocArray(gp->exonStarts, bestMatch->exonCount); AllocArray(gp->exonEnds, bestMatch->exonCount); for (i=0; i<bestMatch->exonCount; ++i) { gp->exonStarts[i] = bestMatch->exonStarts[i] ; gp->exonEnds[i] = bestMatch->exonEnds[i] ; } gp->optFields = bestMatch->optFields; gp->id = bestMatch->id; if (bestMatch->optFields & genePredName2Fld) gp->name2 = cloneString(bestMatch->name2); else gp->name2 = NULL; if (bestMatch->optFields & genePredCdsStatFld) { gp->cdsStartStat = bestMatch->cdsStartStat; gp->cdsEndStat = bestMatch->cdsEndStat; } if (bestMatch->optFields & genePredExonFramesFld) { gp->exonFrames = AllocArray(eFrames, bestMatch->exonCount); for (i = 0; i < bestMatch->exonCount; i++) gp->exonFrames[i] = bestMatch->exonFrames[i]; } eFrames = gp->exonFrames; } return gp; }
void doMiddle(struct cart *theCart) /* Set up pretty web display. */ { struct sqlConnection *conn, *conn2; struct sqlConnection *connCentral = hConnectCentral(); char query[256], query2[256]; struct sqlResult *sr, *sr2; char **row, **row2; char buf[128]; char *answer; char *database; char *genome, *genomeDesc; char *kgID, *chrom, *txStart, *txEnd; int iCnt = 1; cart = theCart; cartWebStart(theCart, database, "UCSC Known Genes List \n"); getDbAndGenome(cart, &database, &genome, oldVars); if (!hTableExistsDb(database, "knownGene")) { printf("<br>Database %s currently does not have UCSC Known Genes.", database); cartWebEnd(); return; } sprintf(query, "select description from dbDb where name = '%s'", database); genomeDesc = strdup(sqlQuickQuery(connCentral, query, buf, sizeof(buf))); hDisconnectCentral(&connCentral); printf("<H2>%s Genome (%s Assembly)</H2>\n", genome, genomeDesc); conn = hAllocConn(database); conn2= hAllocConn(database); sprintf(query2,"select kgID from %s.kgXref order by geneSymbol;", database); /* use the following for quck testing */ /*sprintf(query2,"select kgID, geneSymbol, description, spID, refseq from %s.kgXref order by geneSymbol limit 10;", database); */ sr2 = sqlMustGetResult(conn2, query2); row2 = sqlNextRow(sr2); while (row2 != NULL) { kgID = row2[0]; sprintf(query,"select chrom, txSTart, txEnd from %s.knownGene where name='%s'", database, kgID); sr = sqlMustGetResult(conn, query); row = sqlNextRow(sr); chrom = row[0]; txStart = row[1]; txEnd = row[2]; printf("<A href=\"/cgi-bin/hgGene?db=%s&hgg_gene=%s", database, kgID); printf("&hgg_chrom=%s&hgg_start=%s&hgg_end=%s\">", chrom, txStart, txEnd); printf("%d</A><BR>\n", iCnt); iCnt++; if ((iCnt % 1000) == 0) fflush(stdout); sqlFreeResult(&sr); row2 = sqlNextRow(sr2); } sqlFreeResult(&sr2); cartWebEnd(); }