/* File: glfMain.c * Author: Richard Durbin (rd@sanger.ac.uk) * Copyright (C) Genome Research Limited, 2008 *------------------------------------------------------------------- * Description: main() for glf software * Exported functions: * HISTORY: * Last edited: Dec 9 17:53 2008 (rd) * Created: Fri Sep 19 15:01:50 2008 (rd) *------------------------------------------------------------------- */ #include #include #include #include #include #include "glf.h" /*****************************************/ /* functions for adding likelihoods */ int qAddTable[1024] ; static void qAddTableInit (void) { int i ; for (i = 0 ; i < 1000 ; ++i) { double e = 1 + expPhred(i-512) ; qAddTable[i] = -logPhred(e) ; } } /*****************************************/ /* functions for scoring quality */ int qsumbit ; int quality (glf3_t *g) { int k, q, qsum = 255, n0 = 0 ; /* use information that best (least) score is 0 */ for (k = 0 ; k < 10 ; ++k) { if (g->lk[k]) qsum = qAdd (qsum, g->lk[k]) ; else ++n0 ; } qsumbit = -logPhred (n0 + expPhred(qsum)) ; /* recall that logPhred(x) is -10log_10(x), so this will be positive if non-zero */ if (n0 == 1) q = qsum + qsumbit ; else q = logPhred ((n0-1+expPhred(qsum))) + qsumbit ; return q ; } /****************************************/ int main (int argc, char *argv[]) { --argc ; ++argv ; /* remove program command */ if (!argc || !strcmp (*argv, "-help") || !strcmp(*argv, "-h")) { fprintf (stderr, "Usage: glf \n") ; fprintf (stderr, "Commands:\n") ; fprintf (stderr, " checkGenotype check genotype\n") ; fprintf (stderr, " soloPrior apply prior for a single sequence\n") ; fprintf (stderr, " trioPrior apply prior for a mother/father/child trio\n") ; fprintf (stderr, " snpCall call SNPs from posterior odds glf (after applying a prior)\n") ; fprintf (stderr, " subCall call sites listed in a file from posterior odds glf\n") ; fprintf (stderr, " dump write out (a section of) glf file in text\n") ; fprintf (stderr, " extract extract a portion of a glf file into another file\n") ; fprintf (stderr, " stats information about the content of a glf file\n") ; fprintf (stderr, " import convert a glf dump to a glf\n") ; fprintf (stderr, "For specific help on any command type: glf -help\n") ; exit (1) ; } /* if (!strcmp (*argv, "soloPrior")) */ /* return glfSoloPrior (argc, argv) ; */ /* else if (!strcmp (*argv, "trioPrior")) */ /* return glfTrioPrior (argc, argv) ; */ qAddTableInit(); if (!strcmp (*argv, "dump")) return glfDump (argc, argv) ; else if (!strcmp (*argv, "extract")) return glfExtract (argc, argv) ; else if (!strcmp (*argv, "snpCall")) return glfSnpCall (argc, argv) ; else if (!strcmp (*argv, "soloPrior")) return glfSoloPrior (argc, argv) ; else if (!strcmp (*argv, "subCall")) return glfSubCall (argc, argv) ; else if (!strcmp (*argv, "stats")) return glfStats (argc, argv) ; else if (!strcmp (*argv, "checkGenotype")) return glfCheckGenotype (argc, argv) ; else if (!strcmp(*argv, "import")) return glfImport (argc,argv); fprintf (stderr, "Unknown command %s - type \"glf -help\" for help\n", *argv) ; exit (-1) ; } /************** end of file ************/