treetime/gtr_site_specific.py
def assign_rates(self, mu=1.0, pi=None, W=None):
        """
        Overwrite the GTR model given the provided data

        Parameters
        ----------

         mu : float
            Substitution rate

         W : nxn matrix
            Substitution matrix

         pi : n vector
            Equilibrium frequencies

        """
        n = len(self.alphabet)
        self.mu = np.copy(mu)

        if pi is not None and pi.shape[0]==n:
            self.seq_len = pi.shape[-1]
            Pi = np.copy(pi)
        else:
            if pi is not None and len(pi)!=n:
                self.logger("length of equilibrium frequency vector does not match alphabet length", 4, warn=True)
                self.logger("Ignoring input equilibrium frequencies", 4, warn=True)
            Pi = np.ones(shape=(n,self.seq_len))

        self.Pi = Pi/np.sum(Pi, axis=0)

        if W is None or W.shape!=(n,n):
            if (W is not None) and W.shape!=(n,n):
                self.logger("Substitution matrix size does not match alphabet size", 4, warn=True)
                self.logger("Ignoring input substitution matrix", 4, warn=True)
            # flow matrix
            W = np.ones((n,n))
        else:
            W=0.5*(np.copy(W)+np.copy(W).T)

        np.fill_diagonal(W,0)
        avg_pi = self.Pi.mean(axis=-1)
        average_rate = W.dot(avg_pi).dot(avg_pi)
        self.W = W/average_rate
        self.mu *=average_rate

        self._eig()
def assign_rates(self, mu=1.0, pi=None, W=None):
        """
        Overwrite the GTR model given the provided data

        Parameters
        ----------

         mu : float
            Substitution rate

         W : nxn matrix
            Substitution matrix

         pi : n vector
            Equilibrium frequencies

        """
        n = len(self.alphabet)
        self.mu = np.copy(mu)

        if pi is not None and pi.shape[0]==n:
            self.seq_len = pi.shape[-1]
            Pi = np.copy(pi)
        else:
            if pi is not None and len(pi)!=n:
                self.logger("length of equilibrium frequency vector does not match alphabet length", 4, warn=True)
                self.logger("Ignoring input equilibrium frequencies", 4, warn=True)
            Pi = np.ones(shape=(n,self.seq_len))

        self.Pi = Pi/np.sum(Pi, axis=0)

        if W is None or W.shape!=(n,n):
            if (W is not None) and W.shape!=(n,n):
                self.logger("Substitution matrix size does not match alphabet size", 4, warn=True)
                self.logger("Ignoring input substitution matrix", 4, warn=True)
            # flow matrix
            W = np.ones((n,n))
        else:
            W=0.5*(np.copy(W)+np.copy(W).T)

        np.fill_diagonal(W,0)
        avg_pi = self.Pi.mean(axis=-1)
        average_rate = W.dot(avg_pi).dot(avg_pi)
        self.W = W/average_rate
        self.mu *=average_rate

        self._eig()
def assign_rates ( self , mu = 1.0 , pi = None , W = None ) : n = len ( self . alphabet ) self . mu = np . copy ( mu ) if pi is not None and pi . shape [ 0 ] == n : self . seq_len = pi . shape [ - 1 ] Pi = np . copy ( pi ) else : if pi is not None and len ( pi ) != n : self . logger ( "length of equilibrium frequency vector does not match alphabet length" , 4 , warn = True ) self . logger ( "Ignoring input equilibrium frequencies" , 4 , warn = True ) Pi = np . ones ( shape = ( n , self . seq_len ) ) self . Pi = Pi / np . sum ( Pi , axis = 0 ) if W is None or W . shape != ( n , n ) : if ( W is not None ) and W . shape != ( n , n ) : self . logger ( "Substitution matrix size does not match alphabet size" , 4 , warn = True ) self . logger ( "Ignoring input substitution matrix" , 4 , warn = True ) # flow matrix W = np . ones ( ( n , n ) ) else : W = 0.5 * ( np . copy ( W ) + np . copy ( W ) . T ) np . fill_diagonal ( W , 0 ) avg_pi = self . Pi . mean ( axis = - 1 ) average_rate = W . dot ( avg_pi ) . dot ( avg_pi ) self . W = W / average_rate self . mu *= average_rate self . _eig ( )
Overwrite the GTR model given the provided data

        Parameters
        ----------

         mu : float
            Substitution rate

         W : nxn matrix
            Substitution matrix

         pi : n vector
            Equilibrium frequencies
Overwrite the GTR model given the provided data