def independent_beta_binomial_log_likelihood( data, parameters ):
    a = data.a
    b = data.b
    
    d = a + b
    
    alpha = parameters['alpha']
    beta = parameters['beta']
    
    log_likelihoods = log_beta_binomial_likelihood( a, d, alpha, beta )

    pi = parameters['pi']
    log_likelihoods = log_likelihoods + np.log( pi )
    
    return log_likelihoods
def joint_beta_binomial_log_likelihood( data, parameters ):    
    log_likelihoods = {}
    
    for genome in constants.genomes:
        a = data.a[genome]
        b = data.b[genome]
        d = a + b
        
        alpha = parameters[genome]['alpha']
        beta = parameters[genome]['beta']
    
        log_likelihoods[genome] = log_beta_binomial_likelihood( a, d, alpha, beta )

    pi = parameters['pi']

    log_likelihoods = get_joint_log_likelihoods( log_likelihoods, pi )
    
    return log_likelihoods