/* xenWorm.c - CGI script to align a piece of DNA from another species * to C. elegans. */ /* dynAlign.c - align using dynamic programming. */ #include "common.h" #include "memalloc.h" #include "portable.h" #include "cheapcgi.h" #include "htmshell.h" #include "dnautil.h" #include "dnaseq.h" #include "nt4.h" #include "fa.h" #include "wormdna.h" #include "crudeali.h" #include "xenalign.h" boolean isOnWeb; /* True if run from Web rather than command line. */ struct nt4 **chrom; int chromCount; void dustData(char *in,char *out) /* Clean up data by getting rid non-alphabet stuff. */ { char c; while ((c = *in++) != 0) if (isalpha(c)) *out++ = tolower(c); *out++ = 0; } void doMiddle() { char *query = cgiString("sequence"); int qSize; int maxQ = 8000; long startTime, endTime; long clock1000(); dustData(query, query); printf("
");
qSize = strlen(query);
printf("query size %d\n", qSize);
if ( qSize <= maxQ)
    {
    printf("This will take about %4.1f minutes to align on a vintage 1999 server\n",
        (double)qSize*14.5/5000.0 + 0.5);
    fflush(stdout);
    startTime = clock1000();
    xenAlignWorm(query, qSize, stdout, TRUE);
    endTime = clock1000();
    printf("%4.2f minutes to align\n", (double)(endTime-startTime)/(60*1000));
    }
else
    errAbort("%d bases in query - too big to handle.\n"
             "Maximum is %d bases in query.",
             qSize, maxQ);
}

int main(int argc, char *argv[])
{
dnaUtilOpen();
if ((isOnWeb = cgiIsOnWeb()) == TRUE)
    {
    htmShell("X to C. elegans Results", doMiddle, NULL);
    }
return 0;
}