/******************************************************************** * FILE: pmp_bf.c * AUTHOR: Timothy L. Bailey * CREATE DATE: 12/12/2007 * PROJECT: PMP * COPYRIGHT: 2007, UQ ********************************************************************/ #include #include #include #include "matrix.h" // avoid complaint when including array.h #include "alphabet.h" #include "evomodel.h" #include "motif-in.h" #include "mhmm-state.h" #include "motif.h" #include "motiph-scoring.h" #include "pssm.h" #include "seq.h" #include "simple-getopt.h" #include "tree.h" #include "object-list.h" char* program_name = NULL; VERBOSE_T verbosity = NORMAL_VERBOSE; // Nucleotide alphabet order as in motif.h extern char alphabet[]; static void print_col_frequencies(ALPH_T alph, ARRAY_T* alignment_col_freqs); /************************************************************************* * Entry point for pmp_bf *************************************************************************/ int main(int argc, char *argv[]) { char* bg_filename = NULL; char* motif_name = "motif"; // Use this motif name in the output. STRING_LIST_T* selected_motifs = NULL; double fg_rate = 1.0; double bg_rate = 1.0; double purine_pyrimidine = 1.0; // r double transition_transversion = 0.5; // R double pseudocount = 0.1; GAP_SUPPORT_T gap_support = SKIP_GAPS; MODEL_TYPE_T model_type = F81_MODEL; BOOLEAN_T use_halpern_bruno = FALSE; char* ustar_label = NULL; // TLB; create uniform star tree int i; program_name = "pmp_bf"; /********************************************** * COMMAND LINE PROCESSING **********************************************/ // Define command line options. (FIXME: Repeated code) // FIXME: Note that if you add or remove options you // must change n_options. int n_options = 12; cmdoption const pmp_options[] = { {"hb", NO_VALUE}, {"ustar", REQUIRED_VALUE}, {"model", REQUIRED_VALUE}, {"pur-pyr", REQUIRED_VALUE}, {"transition-transversion", REQUIRED_VALUE}, {"bg", REQUIRED_VALUE}, {"fg", REQUIRED_VALUE}, {"motif", REQUIRED_VALUE}, {"motif-name", REQUIRED_VALUE}, {"bgfile", REQUIRED_VALUE}, {"pseudocount", REQUIRED_VALUE}, {"verbosity", REQUIRED_VALUE} }; int option_index = 0; // Define the usage message. char usage[1000] = ""; strcat(usage, "USAGE: pmp [options] \n"); strcat(usage, "\n"); strcat(usage, " Options:\n"); // Evolutionary model parameters. strcat(usage, " --hb\n"); strcat(usage, " --model single|average|jc|k2|f81|f84|hky|tn"); strcat(usage, " (default=f81)\n"); strcat(usage, " --pur-pyr (default=1.0)\n"); strcat(usage, " --transition-transversion (default=0.5)\n"); strcat(usage, " --bg (default=1.0)\n"); strcat(usage, " --fg (default=1.0)\n"); // Motif parameters. strcat(usage, " --motif (default=all)\n"); strcat(usage, " --motif-name (default from motif file)\n"); // Miscellaneous parameters strcat(usage, " --bgfile (default from motif file)\n"); strcat(usage, " --pseudocount (default=0.1)\n"); strcat(usage, " --ustar