Slice Tools libSlice |
libSliceExample.c00001 /* 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 } |