def independent_binomial_log_likelihood( data, parameters ):
    a = data.a
    b = data.b
    
    d = a + b
    
    mu = parameters['mu']

    log_likelihoods = log_binomial_likelihood( a, d, mu )

    pi = parameters['pi']
    log_pi = np.log( pi )

    log_likelihoods = log_likelihoods + log_pi
    
    return log_likelihoods
def joint_binomial_log_likelihood( data, parameters ):
    log_likelihoods = {}
    
    for genome in constants.genomes:
        a = data.a[genome]
        b = data.b[genome]
        d = a + b
        
        mu = parameters[genome]['mu']
    
        log_likelihoods[genome] = log_binomial_likelihood( a, d, mu )

    pi = parameters['pi']

    log_likelihoods = get_joint_log_likelihoods( log_likelihoods, pi )
    
    return log_likelihoods