Slice Tools
  • Home
  • SourceForge Page


  • libSlice
  • Home
  • Modules
  • Files
  • Examples
  • Additional Information


  • SourceForge.net Logo
     

    libSliceExample.c

    00001 /*
    00002   $Id: libSliceExample.c,v 1.1 2005/07/29 02:55:17 mschatz Exp $
    00003   
    00004   Simple Example of how to use the C interface to libSlice
    00005 */
    00006 
    00007 #include <stdio.h>
    00008 #include <stdlib.h>
    00009 #include "Slice.h"
    00010 
    00011 int main(int argc, char ** argv)
    00012 {
    00013   int dcov = 4;
    00014   int len  = 3;
    00015   int i;
    00016 
    00017   libSlice_Slice *s = libSlice_newmem(len, sizeof(libSlice_Slice));
    00018 
    00019   for (i = 0; i < len; i++)
    00020   {
    00021     s[i].bc = libSlice_newmem(dcov, sizeof(char));
    00022     s[i].qv = libSlice_newmem(dcov, sizeof(char));
    00023     s[i].rc = libSlice_newmem(dcov, sizeof(char));
    00024     s[i].dcov = dcov;
    00025   }
    00026 
    00027   s[0].c = 'A';
    00028   s[0].bc[0] = 'A'; s[0].bc[1] = 'A'; s[0].bc[2] = 'T'; s[0].bc[3] = 'C';
    00029   s[0].qv[0] = 30;  s[0].qv[1] = 25;  s[0].qv[2] = 20;  s[0].qv[3] = 15; 
    00030   s[0].rc[0] = 1;   s[0].rc[1] = 1;   s[0].rc[2] = 0;   s[0].rc[3] = 0;
    00031   
    00032   s[1].c = 'T';
    00033   s[1].bc[0] = 'T'; s[1].bc[1] = 'T'; s[1].bc[2] = 'T'; s[1].bc[3] = 'T';
    00034   s[1].qv[0] = 30;  s[1].qv[1] = 30;  s[1].qv[2] = 20;  s[1].qv[3] = 15;
    00035   s[1].rc[0] = 1;   s[1].rc[1] = 0;   s[1].rc[2] = 1;   s[1].rc[3] = 0;
    00036 
    00037   s[2].c = 'Y';
    00038   s[2].bc[0] = 'C'; s[2].bc[1] = 'T'; s[2].bc[2] = 'C'; s[2].bc[3] = 'T';
    00039   s[2].qv[0] = 30;  s[2].qv[1] = 30;  s[2].qv[2] = 30;  s[2].qv[3] = 30;
    00040   s[2].rc[0] = 1;   s[2].rc[1] = 1;   s[2].rc[2] = 0;   s[2].rc[3] = 0;
    00041 
    00042   for (i = 0; i < len; i++)
    00043   {
    00044     int j;
    00045     printf("\nslice i=%d, c=%c, dcov=%d\n", i, s[i].c, s[i].dcov);
    00046 
    00047     for (j = 0; j < s[i].dcov; j++)
    00048     {
    00049       printf("  j=%d bc=%c qv=%d rc=%d\n", j, s[i].bc[j], s[i].qv[j], s[i].rc[j]);
    00050     }
    00051   }
    00052 
    00053   // ================================= //
    00054   //   testing getConsQC(),getCons()   //
    00055   // ================================= //
    00056   {
    00057     libSlice_Consensus result;
    00058     libSlice_getConsensus(&s[0], &result, NULL, 0);
    00059 
    00060     printf("\ntesting getConsQC(), getConsensus()\n");
    00061     printf("slice i=0 c=%c qc=%d qv=%d\n", 
    00062            result.consensus,
    00063            libSlice_getConsQC(&s[0], 0), 
    00064            result.qvConsensus);
    00065 
    00066     printf("[qvA=%d qvC=%d qvG=%d qvT=%d qvGap=%d]\n\n", 
    00067            result.qvA, 
    00068            result.qvC, 
    00069            result.qvG, 
    00070            result.qvT, 
    00071            result.qvGap);
    00072   }
    00073 
    00074   // =========================================== //
    00075   //   testing getConsQCRange(),getConsRange()   //
    00076   // =========================================== //
    00077   {
    00078     libSlice_Consensus results [len];
    00079 
    00080     char *qc = libSlice_getConsQCRange(s, len, 0);
    00081     libSlice_getConsensusRangeWithAmbiguity(s, results, len, NULL, 0);
    00082 
    00083     printf("testing getConsQCRange(), getConsensusRange()\n");
    00084     for (i = 0; i < len; i++)
    00085     {
    00086       printf("slice i=%d c=%c qc=%d qv=%d\n", 
    00087              i,
    00088              results[i].consensus,
    00089              qc[i], 
    00090              results[i].qvConsensus);
    00091 
    00092       printf("[qvA=%d qvC=%d qvG=%d qvT=%d qvGap=%d]\n\n", 
    00093              results[i].qvA, 
    00094              results[i].qvC, 
    00095              results[i].qvG, 
    00096              results[i].qvT, 
    00097              results[i].qvGap);
    00098     }
    00099 
    00100     free(qc);
    00101   }
    00102 
    00103   for (i = 0; i < len; i++)
    00104   {
    00105     free(s[i].bc);
    00106     free(s[i].qv);
    00107     free(s[i].rc);
    00108   }
    00109 
    00110   free(s);
    00111   return 0;
    00112 }