def testParseModel(self): res_dir = os.path.join(self.results_dir, "baseml", "model") for results_file in os.listdir(res_dir): version = results_file.split('-')[1].split('.')[0] model = results_file[5] version_msg = "Improper parsing for model %s version %s" \ % (model, version.replace('_', '.')) results_path = os.path.join(res_dir, results_file) results = baseml.read(results_path) # There are 6 top-levels: parameters, tree, lnL, version, # tree length and lnL max self.assertEqual(len(results), 6, version_msg) self.assertTrue("parameters" in results, version_msg) params = results["parameters"] self.assertTrue("alpha" in params, version_msg) self.assertTrue("rates" in params, version_msg) self.assertTrue("parameter list" in params, version_msg) self.assertTrue("rate frequencies" in params, version_msg) if model in ["1", "3", "4", "5", "6"]: self.assertTrue("kappa" in params, version_msg) if model in ["7", "8"]: self.assertTrue("base frequencies" in params, version_msg) self.assertTrue("rate parameters" in params, version_msg) self.assertTrue("Q matrix" in params, version_msg) qmat = params["Q matrix"] self.assertEqual(len(qmat), 2, version_msg) self.assertTrue("matrix" in qmat) matrix = qmat["matrix"] self.assertEqual(len(matrix), 4, version_msg) self.assertEqual(len(matrix[0]), 4, version_msg)
def testParseAllVersions(self): folder = os.path.join("PAML","Results", "baseml", "versions") for results_file in os.listdir(folder): file_path = os.path.join(folder, results_file) if os.path.isfile(file_path) and results_file[:6] == "baseml": results = baseml.read(file_path) self.assertEqual(len(results), 6) self.assertEqual(len(results["parameters"]), 7)
def testParseAllVersions(self): folder = os.path.join("PAML", "Results", "baseml", "versions") for results_file in os.listdir(folder): file_path = os.path.join(folder, results_file) if os.path.isfile(file_path) and results_file[:6] == "baseml": results = baseml.read(file_path) self.assertEqual(len(results), 6) self.assertEqual(len(results["parameters"]), 7)
def testParseSEs(self): res_dir = os.path.join(self.results_dir, "baseml", "SE") for results_file in os.listdir(res_dir): version = results_file.split("-")[1].split(".")[0] version_msg = f"Improper parsing for version {version.replace('_', '.')}" results_path = os.path.join(res_dir, results_file) results = baseml.read(results_path) # There are 6 top-levels: parameters, tree, lnL, version, # tree length and lnL max self.assertEqual(len(results), 6, version_msg) self.assertIn("parameters", results, version_msg) params = results["parameters"] self.assertIn("SEs", params, version_msg)
def testParseSEs(self): res_dir = os.path.join(self.results_dir, "baseml", "SE") for results_file in os.listdir(res_dir): version = results_file.split('-')[1].split('.')[0] version_msg = "Improper parsing for version %s" \ % version.replace('_', '.') results_path = os.path.join(res_dir, results_file) results = baseml.read(results_path) # There are 6 top-levels: parameters, tree, lnL, version, # tree length and lnL max self.assertEqual(len(results), 6, version_msg) self.assertTrue("parameters" in results, version_msg) params = results["parameters"] self.assertTrue("SEs" in params, version_msg)
def testParseNhomo(self): res_dir = os.path.join(self.results_dir, "baseml", "nhomo") for results_file in os.listdir(res_dir): version = results_file.split('-')[1].split('.')[0] n = results_file[5] version_msg = "Improper parsing for nhomo %s version %s" \ % (n, version.replace('_', '.')) results_path = os.path.join(res_dir, results_file) results = baseml.read(results_path) # There are 6 top-levels: parameters, tree, lnL, version, # tree length and lnL max self.assertEqual(len(results), 6, version_msg) self.assertTrue("parameters" in results, version_msg) params = results["parameters"] if n == "1": self.assertTrue("base frequencies" in params, version_msg) else: self.assertTrue("nodes" in params) nodes = params["nodes"] self.assertEqual(len(nodes), 8, version_msg) self.assertEqual(len(nodes[1]), 2, version_msg)
def testParseAlpha1Rho1(self): # Test the auto-discrete gamma model # Cannot test for baseml 4.3-4.5 due to bug in the program which # prevents this analysis from completing res_dir = os.path.join(self.results_dir, "baseml", "alpha1rho1") for results_file in os.listdir(res_dir): version = results_file.split('-')[1].split('.')[0] model = results_file[5] version_msg = "Improper parsing for model %s version %s" \ % (model, version.replace('_', '.')) results_path = os.path.join(res_dir, results_file) results = baseml.read(results_path) # There are 6 top-levels: parameters, tree, lnL, version, # tree length and lnL max self.assertEqual(len(results), 6, version_msg) self.assertTrue("parameters" in results, version_msg) params = results["parameters"] self.assertTrue("rho" in params, version_msg) self.assertTrue("transition probs." in params, version_msg) trans_p = params["transition probs."] self.assertEqual(len(trans_p), 5, version_msg) self.assertEqual(len(trans_p[0]), 5, version_msg)
def testParseSEs(self): SE_results_file = os.path.join("PAML", "Results", "baseml", "baseml_SE.out") SE_results = baseml.read(SE_results_file) SE_parameters = SE_results.get("parameters") self.assertNotEqual(SE_parameters.get("SEs"), None)