/** * Given a bg frequency matrix and a phospho count matrix, we will convert the bg * freq matrix into a binomial matrix. No reason to keep a bg freq matrix, so we will recycle. */ void convert_bg_freqs_to_binomial(MATRIX_T* phospho_count, MATRIX_T* bg_freqs, int num_phospho_seqs) { int i; int j; for (i = 0; i < get_num_rows(bg_freqs); ++i) { for (j = 0; j < get_num_cols(bg_freqs); ++j) { double p = get_matrix_cell_defcheck(i, j, bg_freqs); double cxj = get_matrix_cell_defcheck(i, j, phospho_count); int n = num_phospho_seqs; double log_value = log_betai(cxj, n-cxj+1, p); set_matrix_cell_defcheck(i, j, log_value, bg_freqs); } } }
/************************************************************************* * Compute the enrichment of a central window *************************************************************************/ static double window_enrichment(int window, double window_sites, long total_sites, int bins, int max_bins) { // p-value vars double log_p_value; // calculate the log p-value if (window_sites == 0 || bins == max_bins) { log_p_value = 0; // pvalue of 1 } else { double n_trials, n_successes, p_success; n_trials = (double)total_sites; n_successes = window_sites; p_success = (double)bins / (double)max_bins; log_p_value = log_betai(n_successes, n_trials - n_successes + 1.0, p_success); DEBUG_FMT(DUMP_VERBOSE, "window: %4d p_success: %20.15e " "successes: %10.4f trials: %5.0f = log_p-value: %10.5e\n", window, p_success, n_successes, n_trials, log_p_value); } return log_p_value; }