/**
 * 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);
    }
  }
}
Beispiel #2
0
/*************************************************************************
 * 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;
}