ivy.chars.hrm_bayesian module

class ivy.chars.hrm_bayesian.QmatMetropolis(stochastic, nparam, nchar, nregime)[source]

Bases: pymc.StepMethods.Metropolis

Custom step algorithm for selecting a new model

propose()[source]
reject()[source]
class ivy.chars.hrm_bayesian.QmatMetropolis_mk(stochastic, all_mods)[source]

Bases: pymc.StepMethods.Metropolis

Custom step algorithm for selecting a new model

propose()[source]
reject()[source]
ivy.chars.hrm_bayesian.ShiftedGamma(shape, shift=1, name=u'ShiftedGamma')[source]

Gamma distribution that has been shifted by some constant.

ivy.chars.hrm_bayesian.fill_model_Q(mod, Qparams, Q)[source]

Create Q matrix given model and parameters.

Parameters:
  • mod (list) –

    List of tuples. Code for the mode used. The first nregime tuples correspond to the within-regime transition rates for each regime. The last tuple corresponds to the between-regime transition rates. Ex. [(1, 2), (3, 4), (5, 6, 7, 8)] corresponds to a matrix of:

    [-,1,5,-] [2,-,-,6] [7,-,-,3] [-,8,4,-]
  • Qparams (list) – List of floats corresponding to the values for slow, medium, fast, etc. rates. The first is always 0
  • Q (np.array) – Pre-allocated Q matrix
ivy.chars.hrm_bayesian.fill_model_mk(mod, Qparams, Q, mask)[source]

Fill cells of Q with Qparams based on mod

ivy.chars.hrm_bayesian.hrm_allmodels_bayes(tree, chars, nregime, nparam, modseed, pi=u'Equal', dbname=None)[source]

Use an MCMC chain to fit a hrm model with a limited number of parameters.

The chain will step through different models, placing a prior on simpler models

Parameters:
  • tree (Node) – Root node of a tree. All branch lengths must be greater than 0 (except root)
  • chars (dict) –

    Dict mapping character states to tip labels. Character states should be coded 0,1,2...

    Can also be a list with tip states in preorder sequence

  • nregime (int) – Number of regimes
  • nparam (int) – Number of unique parameters to allow in a model
  • modseed (tuple) – Starting model for the MCMC chain. A tuple of ints. Must be a valid model or adjacent to at least one valid model.
  • pi (str) – Either “Equal”, “Equilibrium”, or “Fitzjohn”. How to weight values at root node. Defaults to “Equal” Method “Fitzjohn” is not thouroughly tested, use with caution
ivy.chars.hrm_bayesian.is_valid_model(mod, nparam, nchar, nregime, mod_order)[source]

Check if a given model is valid

ivy.chars.hrm_bayesian.make_qmat_stoch(nobschar, nregime, nparam, mod_order_list, modseed, name=u'qmat_stoch')[source]

Make a stochastic to use for a model-changing step

ivy.chars.hrm_bayesian.make_qmat_stoch_mk(all_mods, name=u'qmat_stoch')[source]

Stochastic for use in model-changing step

ivy.chars.hrm_bayesian.mk_allmodels_bayes(tree, chars, nparam, pi=u'Equal', dbname=None)[source]

Fit an mk model with nparam parameters distributed about the Q matrix.

ivy.chars.hrm_bayesian.new_hrm_model(mod, nparam, nchar, nregime, mod_order)[source]

Return new, valid model by changing one parameter of current model

ivy.chars.hrm_bayesian.number_connected(mod, nchar, nregime, n_wr, n_br)[source]

Test how many regimes are connected in some way

ivy.chars.hrm_bayesian.unique_models(nchar, nregime, nparam)[source]

Create a list of all possible models for a Q matrix with nchar distinct character states and nregime distinct regimes, filling all cells with nparam + 0.

Parameters:
  • nchar (int) – Number of observed characters
  • nregime (int) – Number of regimes in model
  • nparam (int) – Number of unique parameters in model (not including 0)
Returns:

List of all unique models. Each item contains a tuple of the

within-regime parameters and a tuple of the between-regime parameters.

Return type:

list