def test_is_generator_unique(self): """ is_generator_unique should identify non-unique primary roots or raise a NotImplementedError for non-primary roots""" q_fail = array( [ [-9.08955989, 4.50419008, 2.93729567, 1.64807414], [3.0820101213, -11.867582855, 3.0196380713, 5.7659346624], [3.1293061336, 0.6470353007, -4.340134955, 0.5637935206], [9.95494662, 0.63789574, 1.39069539, -11.98353775], ] ) self.assertFalse(is_generator_unique(q_fail)) q_pass = array( [ [-3.764760594, 1.1273556812, 1.3310122018, 1.3063927109], [0.920950736, -2.6797373188, 0.4269374722, 1.3318491106], [1.1327752022, 1.1606494551, -2.7789984239, 0.4855737666], [1.2387180594, 0.1873997167, 0.9202488686, -2.3463666447], ] ) self.assertTrue(is_generator_unique(q_pass)) q_raise = array( [ [-2.77453845e-03, 2.77453817e-03, 1.00809110e-10, 1.74200370e-10], [6.81595242e-11, -3.43166912e-10, 1.00810050e-10, 1.74197338e-10], [6.81605094e-11, 2.77453817e-03, -2.77453841e-03, 1.74198726e-10], [6.81594144e-11, 1.38727059e-10, 1.00808021e-04, -1.00808228e-04], ] ) self.assertRaises(NotImplementedError, is_generator_unique, q_raise)
def allRateMatricesUnique(self): """Returns True if every rate matrix is unique for its Psub matrix""" for edge in self.tree.getEdgeVector(include_root=False): Q = self.getRateMatrixForEdge(edge.Name).asarray() t = self.getParamValue("length", edge=edge.Name) if not is_generator_unique(Q * t): return False return True
def allRateMatricesUnique(self): """Returns True if every rate matrix is unique for its Psub matrix""" for edge in self.tree.getEdgeVector(include_root=False): Q = self.getRateMatrixForEdge(edge.Name).asarray() t = self.getParamValue('length', edge=edge.Name) if not is_generator_unique(Q * t): return False return True
def test_is_generator_unique(self): """ is_generator_unique should identify non-unique primary roots or raise a NotImplementedError for non-primary roots""" q_fail = array([[ -9.08955989, 4.50419008, 2.93729567, 1.64807414 ], [ 3.0820101213, -11.867582855 , 3.0196380713, 5.7659346624], [ 3.1293061336, 0.6470353007, -4.340134955 , 0.5637935206], [ 9.95494662 , 0.63789574 , 1.39069539 , -11.98353775 ]]) self.assertFalse(is_generator_unique(q_fail)) q_pass = array([[-3.764760594, 1.1273556812, 1.3310122018, 1.3063927109], [0.920950736 , -2.6797373188, 0.4269374722, 1.3318491106], [1.1327752022, 1.1606494551, -2.7789984239, 0.4855737666], [1.2387180594, 0.1873997167, 0.9202488686, -2.3463666447]]) self.assertTrue(is_generator_unique(q_pass)) q_raise = array([ [-2.77453845e-03, 2.77453817e-03, 1.00809110e-10, 1.74200370e-10], [6.81595242e-11, -3.43166912e-10, 1.00810050e-10, 1.74197338e-10], [6.81605094e-11, 2.77453817e-03, -2.77453841e-03, 1.74198726e-10], [6.81594144e-11, 1.38727059e-10, 1.00808021e-04, -1.00808228e-04]]) self.assertRaises(NotImplementedError, is_generator_unique, q_raise)