def filter_strand_balance(c, pval):
    '''
    returns True if binomial test pvalue for strand balance is greater than
    'pval', False otherwise
    '''
    p = binomial_cdf(0.5, c.encompassing_reads, min(c.strand_reads))        
    if p < pval:
        logging.warning("Filtered chimera reads=%d '+'=%d '-'=%d pval=%f" %
                        (c.encompassing_reads, c.strand_reads[0], 
                         c.strand_reads[1], p))
    return p >= pval
def filter_read_balance(c, pval):
    '''
    returns True if binomial test pvalue for strand balance is greater than
    'pval', False otherwise
    '''    
    # count reads on either strand
    mate_counts = [0, 0]
    for r in c.spanning_reads:
        mate_counts[r.mate] += 1
    p = binomial_cdf(0.5, c.num_spanning_reads, min(mate_counts))        
    if p <= pval:
        logging.warning("Filtered chimera spanning reads=%d read1=%d read2=%d pval=%f" %
                        (c.num_spanning_reads, mate_counts[0], mate_counts[1], p))
    return p > pval
def filter_read_balance(c, pval):
    '''
    returns True if binomial test pvalue for strand balance is greater than
    'pval', False otherwise
    '''
    # count reads on either strand
    mate_counts = [0, 0]
    for r in c.spanning_reads:
        mate_counts[r.mate] += 1
    p = binomial_cdf(0.5, c.num_spanning_reads, min(mate_counts))
    if p <= pval:
        logging.warning(
            "Filtered chimera spanning reads=%d read1=%d read2=%d pval=%f" %
            (c.num_spanning_reads, mate_counts[0], mate_counts[1], p))
    return p > pval