![]() Slice Tools libSlice |
libSliceExample.cSimple demonstration using libSlice.Demonstrates how to use the various functions provided by libSlice. /* $Id: libSliceExample.c,v 1.1 2005/07/29 02:55:17 mschatz Exp $ Simple Example of how to use the C interface to libSlice */ #include <stdio.h> #include <stdlib.h> #include "Slice.h" int main(int argc, char ** argv) { int dcov = 4; int len = 3; int i; libSlice_Slice *s = libSlice_newmem(len, sizeof(libSlice_Slice)); for (i = 0; i < len; i++) { s[i].bc = libSlice_newmem(dcov, sizeof(char)); s[i].qv = libSlice_newmem(dcov, sizeof(char)); s[i].rc = libSlice_newmem(dcov, sizeof(char)); s[i].dcov = dcov; } s[0].c = 'A'; s[0].bc[0] = 'A'; s[0].bc[1] = 'A'; s[0].bc[2] = 'T'; s[0].bc[3] = 'C'; s[0].qv[0] = 30; s[0].qv[1] = 25; s[0].qv[2] = 20; s[0].qv[3] = 15; s[0].rc[0] = 1; s[0].rc[1] = 1; s[0].rc[2] = 0; s[0].rc[3] = 0; s[1].c = 'T'; s[1].bc[0] = 'T'; s[1].bc[1] = 'T'; s[1].bc[2] = 'T'; s[1].bc[3] = 'T'; s[1].qv[0] = 30; s[1].qv[1] = 30; s[1].qv[2] = 20; s[1].qv[3] = 15; s[1].rc[0] = 1; s[1].rc[1] = 0; s[1].rc[2] = 1; s[1].rc[3] = 0; s[2].c = 'Y'; s[2].bc[0] = 'C'; s[2].bc[1] = 'T'; s[2].bc[2] = 'C'; s[2].bc[3] = 'T'; s[2].qv[0] = 30; s[2].qv[1] = 30; s[2].qv[2] = 30; s[2].qv[3] = 30; s[2].rc[0] = 1; s[2].rc[1] = 1; s[2].rc[2] = 0; s[2].rc[3] = 0; for (i = 0; i < len; i++) { int j; printf("\nslice i=%d, c=%c, dcov=%d\n", i, s[i].c, s[i].dcov); for (j = 0; j < s[i].dcov; j++) { printf(" j=%d bc=%c qv=%d rc=%d\n", j, s[i].bc[j], s[i].qv[j], s[i].rc[j]); } } // ================================= // // testing getConsQC(),getCons() // // ================================= // { libSlice_Consensus result; libSlice_getConsensus(&s[0], &result, NULL, 0); printf("\ntesting getConsQC(), getConsensus()\n"); printf("slice i=0 c=%c qc=%d qv=%d\n", result.consensus, libSlice_getConsQC(&s[0], 0), result.qvConsensus); printf("[qvA=%d qvC=%d qvG=%d qvT=%d qvGap=%d]\n\n", result.qvA, result.qvC, result.qvG, result.qvT, result.qvGap); } // =========================================== // // testing getConsQCRange(),getConsRange() // // =========================================== // { libSlice_Consensus results [len]; char *qc = libSlice_getConsQCRange(s, len, 0); libSlice_getConsensusRangeWithAmbiguity(s, results, len, NULL, 0); printf("testing getConsQCRange(), getConsensusRange()\n"); for (i = 0; i < len; i++) { printf("slice i=%d c=%c qc=%d qv=%d\n", i, results[i].consensus, qc[i], results[i].qvConsensus); printf("[qvA=%d qvC=%d qvG=%d qvT=%d qvGap=%d]\n\n", results[i].qvA, results[i].qvC, results[i].qvG, results[i].qvT, results[i].qvGap); } free(qc); } for (i = 0; i < len; i++) { free(s[i].bc); free(s[i].qv); free(s[i].rc); } free(s); return 0; } |