ivy.chars.mk module¶
- 
ivy.chars.mk.create_likelihood_function_mk(tree, chars, Qtype, pi=u'Equal', findmin=True)[source]¶
- Create a function that takes values for Q and returns likelihood. - Specify the Q to be ER, Sym, or ARD - Returned function to be passed into scipy.optimize - 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 
- Qtype (str) – What type of Q matrix to use. Either ER (equal rates), Sym (symmetric rates), or ARD (All rates different).
- pi (str) – Either “Equal”, “Equilibrium”, or “Fitzjohn”. How to weight values at root node.
- min (bool) – Whether the function is to be minimized (False means it will be maximized)
 - Returns: - Function accepting a list of parameters and returning
- log-likelihood. To be optmimized with NLOPT 
 - Return type: - function 
- 
ivy.chars.mk.create_mk_ar(tree, chars, findmin=True)[source]¶
- Create preallocated arrays. For use in mk function - Nodelist = edgelist of nodes in postorder sequence 
- 
ivy.chars.mk.fitMkARD(tree, chars, pi=u'Equal')[source]¶
- Estimate parameters of an all-rates-different Q matrix Return log-likelihood of mk equation using fitted Q - Multi-parameter model: all rates different - 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 
- pi (str) – Either “Equal” or “Fitzjohn”. How to weight values at root node. Defaults to “Equal” Method “Fitzjohn” is currently untested
 - Returns: - Fitted parameter, log-likelihood, and dictionary of weightings
- at the root. 
 - Return type: 
- 
ivy.chars.mk.fitMkER(tree, chars, pi=u'Equal')[source]¶
- Estimate parameter of an equal-rate Q matrix Return log-likelihood of mk equation using fitted Q - One-parameter model: alpha = beta - 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 
- pi (str) – Either “Equal” or “Fitzjohn”. How to weight values at root node. Defaults to “Equal”
 - Returns: - Fitted parameter, log-likelihood, and dictionary of weightings
- at the root. 
 - Return type: 
- 
ivy.chars.mk.fitMkSym(tree, chars, pi=u'Equal')[source]¶
- Estimate parameter of a symmetrical-rate Q matrix Return log-likelihood of mk equation using fitted Q - Multi-parameter model: forward = reverse - 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 
- pi (str) – Either “Equal” or “Fitzjohn”. How to weight values at root node. Defaults to “Equal” Method “Fitzjohn” is currently untested
 - Returns: - Fitted parameter, log-likelihood, and dictionary of weightings
- at the root. 
 - Return type: 
- 
ivy.chars.mk.fit_Mk(tree, chars, Q=u'Equal', pi=u'Equal')[source]¶
- Fit an mk model to a given tree and list of characters. Return fitted Q matrix and calculated likelihood. - 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 
- pi – Either “Equal”, “Equilibrium”, or “Fitzjohn”. How to weight values at root node. Defaults to “Equal” Method “Fitzjohn” is not thouroughly tested, use with caution
 - Returns: - Log-likelihood, fitted Q matrix, root prior, root likelihood - Return type: - Examples - from ivy.examples import primates, primate_data primate_eq = fit_Mk(primates,primate_data,Q=”Equal”) primate_ARD = fit_Mk(primates, primate_data,Q=”ARD”) 
- 
ivy.chars.mk.mk(tree, chars, Q, p=None, pi=u'Equal', returnPi=False, ar=None)[source]¶
- Fit mk model and return likelihood for the root node of a tree given a list of characters and a Q matrix - Convert tree and character data into a form that can be input into mk, which fits an mk model. - Note: internal calculations are log-transformed to avoid numeric underflow - 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 
- Q (np.array) – Instantaneous rate matrix
- p (np.array) – Optional pre-allocated p matrix
- pi (str or np.array) – Option to weight the root node by given values. Either a string containing the method or an array of weights. Weights should be given in order. Accepted methods of weighting root: Equal: flat prior Equilibrium: Prior equal to stationary distribution of Q matrix- Fitzjohn: Root states weighted by how well they
- explain the data at the tips.
 
- returnPi (bool) – Whether or not to return the final values of root node weighting
- ar (dict) – Dict of pre-allocated arrays to improve speed by avoiding creating and destroying new arrays
 - Returns: - log-likelihood of model - Return type: - Examples - from ivy.examples import primates, primate_data Q = np.array([[-0.1,0.1],[0.1,-0.1]]) mk(primates,primate_data,Q) 
- 
ivy.chars.mk.qsd(Q)[source]¶
- Calculate stationary distribution of Q, assuming each state has the same diversification rate. - Parameters: - Q (np.array) – Instantaneous rate matrix - Returns: - Stationary distribution of pi - Return type: - (np.array) - Eqn from Maddison et al 2007 - Referenced from Phytools (Revell 2013)