Create a phylo_utils.likelihood.GammaMixture for calculating
    likelihood on a tree, from a treeCl.Alignment and its matching 
    treeCl.Parameters

def create_gamma_model(alignment, missing_data=None, ncat=4):
    """ Create a phylo_utils.likelihood.GammaMixture for calculating
    likelihood on a tree, from a treeCl.Alignment and its matching 
    treeCl.Parameters """
    model = alignment.parameters.partitions.model
    freqs = alignment.parameters.partitions.frequencies
    alpha = alignment.parameters.partitions.alpha
    if model == 'LG':
        subs_model = LG(freqs)
    elif model == 'WAG':
        subs_model = WAG(freqs)
    elif model == 'GTR':
        rates = alignment.parameters.partitions.rates
        subs_model = GTR(rates, freqs, True)
    else:
        raise ValueError("Can't handle this model: {}".format(model))
    tm = TransitionMatrix(subs_model)
    gamma = GammaMixture(alpha, ncat)
    gamma.init_models(tm, alignment_to_partials(alignment, missing_data))
    return gamma