Example #1
0
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);
}