int main(int argc, char *argv[]) { FILE *inf; char *mrnaDate; int months; char dirName[PATH_MAX]; struct sqlConnection *conn, *conn3; char query[256]; struct sqlResult *sr; char **row; char *protAcc, *mrnaAcc, *matchStr; char *protSizeStr, *mrnaSizeStr; int protSize, mrnaSize, match; char *protMrnaTableName; char condStr[255]; int score; if (argc != 5) usage(); proteinDataDate = argv[1]; kgTempDb = argv[2]; genomeReadOnly = argv[3]; protMrnaTableName = argv[4]; sprintf(spDB, "sp%s", proteinDataDate); sprintf(proteinsDB, "proteins%s", proteinDataDate); sprintf(gbTempDB, "%sTemp", kgTempDb); inf = fopen("protein.lis", "r"); if ((FILE *) NULL == inf) errAbort("ERROR: Can not open input file: protein.lis"); o3 = fopen("kgBestMrna.out", "w"); if ((FILE *) NULL == o3) errAbort("ERROR: Can not open output file: kgBestMrna.out"); o7 = fopen("best.lis", "w"); if ((FILE *) NULL == o7) errAbort("ERROR: Can not open output file: best.lis"); conn = hAllocConn(genomeReadOnly); conn3= hAllocConn(genomeReadOnly); proteinCount = 0; snprintf(dirName, (size_t) sizeof(dirName), "%s", "./clusterRun" ); sqlSafef(query, sizeof query,"select qName, tName, matches, qSize, tSize from %s.%s", kgTempDb, protMrnaTableName); sr = sqlMustGetResult(conn, query); row = sqlNextRow(sr); while (row != NULL) { protAcc = row[0]; mrnaAcc = row[1]; matchStr = row[2]; protSizeStr = row[3]; mrnaSizeStr = row[4]; sscanf(matchStr, "%d", &match); sscanf(protSizeStr, "%d", &protSize); sscanf(mrnaSizeStr, "%d", &mrnaSize); sscanf(matchStr, "%d", &match); if ((float)match/(float)protSize > 0.3) { sqlSafefFrag(cond_str, sizeof cond_str, "acc='%s'", mrnaAcc); mrnaDate = sqlGetField(genomeReadOnly, "gbCdnaInfo", "moddate", condStr); if (mrnaDate != NULL) { months = cal_months(mrnaDate); score = mrnaSize + months*2 - (protSize - match) *50; printf("%s\t%s\t%d\n", protAcc, mrnaAcc, score);fflush(stdout); } } row = sqlNextRow(sr); } hFreeConn(&conn); hFreeConn(&conn3); fclose(o3); fclose(o7); return(0); }
void calScores(char *proteinID, int mrnaCount) { int ixm, maxixm; // index for mRNA int maxScore; int i, ii; char proteinName[20], mrnaName[20]; int diffs[500]; int monthss[500]; int mrnalens[500]; char line[2000]; char mrnaDate[20]; int months; int diff; int mrnalen; char *temp_str; struct dnaSeq *seq; struct sqlConnection *connR; connR = hAllocConn(); ixm = 0; maxScore = 0; strcpy(proteinName, proteinID); maxixm = -1; for (ii=0; ii<mrnaCount; ii++) { strcpy(mrnaName, mrnaNames[ii]); if (hRnaSeqAndIdx(mrnaNames[ii], &mSeq, &id, mrnaDate, connR)== -1) { printf("%s could not be found!!!\n", mrnaNames[ii]);fflush(stdout); exit(1); } strcpy(mrnaDates[ii], mrnaDate); mrnalen = strlen(mSeq->dna); months = cal_months(mrnaDate); diffs[ii] = diffIdent[ii]; mrnalens[ii] = mrnalen; monthss[ii] = months; mrnaScore[ii] = mrnalen + months*2 - diffs[ii]*50; if (mrnaScore[ii] > maxScore) { maxScore = mrnaScore[ii]; maxixm = ii; } } for (i=0; i<mrnaCount; i++) { if (diffIdent[i] != -1) { fprintf(o3, "%10s %10s %8s %5d %5d %5d %5d", proteinName, mrnaNames[i], mrnaDates[i], mrnaScore[i], mrnalens[i], monthss[i], diffs[i]); if (i == maxixm) { fprintf(o3, " *\n"); fprintf(o7, "%s\t%s\n", proteinName, mrnaNames[i]); fflush(o7); } else { fprintf(o3, "\n"); } fflush(o3); } } fprintf(o3, "\n"); fflush(o3); hFreeConn(&connR); }