def _get_all_composables(tmp_dir_name): test_model1 = evo.model("HKY85") test_model2 = evo.model("GN") test_hyp = evo.hypothesis(test_model1, test_model2) test_num_reps = 100 applications = [ align.align_to_ref(), align.progressive_align(model="GY94"), evo.ancestral_states(), evo.bootstrap(hyp=test_hyp, num_reps=test_num_reps), evo.hypothesis(test_model1, test_model2), evo.model("GN"), evo.tabulate_stats(), sample.fixed_length(100), sample.min_length(100), io.write_db(tmp_dir_name, create=True), io.write_json(tmp_dir_name, create=True), io.write_seqs(tmp_dir_name, create=True), sample.omit_bad_seqs(), sample.omit_degenerates(), sample.omit_duplicated(), sample.take_codon_positions(1), sample.take_named_seqs(), sample.trim_stop_codons(gc=1), translate.select_translatable(), tree.quick_tree(), tree.scale_branches(), tree.uniformize_tree(), ] return applications
def test_composable_apps(self): """checks the ability of these two apps(fast_slow_dist and quick_tree) to communicate""" path = os.path.join(data_path, "brca1_5.paml") aln1 = load_aligned_seqs(path, moltype=DNA) fast_slow_dist = dist.fast_slow_dist(fast_calc="hamming", moltype="dna") quick = tree_app.quick_tree(drop_invalid=False) proc = fast_slow_dist + quick self.assertEqual( str(proc), "fast_slow_dist(type='distance', distance=None, moltype='dna',\n" "fast_calc='hamming', slow_calc=None) + quick_tree(type='tree',\n" "drop_invalid=False)", ) self.assertIsInstance(proc, tree_app.quick_tree) self.assertEqual(proc._type, "tree") self.assertIsInstance(proc.input, dist.fast_slow_dist) self.assertIs(proc.output, None) self.assertIsInstance(proc._input_types, frozenset) self.assertIsInstance(proc._output_types, frozenset) self.assertIsInstance(proc._in, dist.fast_slow_dist) self.assertIs(proc._out, None) tree1 = proc(aln1) self.assertIsInstance(tree1, PhyloNode) self.assertIsNotNone(tree1.children) self.assertEqual(set(tree1.get_tip_names()), set(aln1.names)) # tests when distances contain None data = dict( seq1="AGGGGGGGGGGCCCCCCCCCCCCCCCCCGGGGGGGGGGGGGGGCGGTTTTTTTTTTTTTTTTTT", seq2="TAAAAAAAAAAGGGGGGGGGGGGGGGGGGTTTTTTTTTTTTTTTTTTCCCCCCCCCCCCCCCCC", ) aln2 = make_aligned_seqs(data=data, moltype=DNA) tree2 = proc(aln2) self.assertIsInstance(tree2, NotCompleted)
def test_quick_tree(self): """correctly calc a nj tree""" path = os.path.join(data_path, "brca1_5.paml") aln = load_aligned_seqs(path, moltype=DNA) fast_slow_dist = dist.fast_slow_dist(fast_calc="hamming", moltype="dna") dist_matrix = fast_slow_dist(aln) quick1 = tree_app.quick_tree() tree1 = quick1.quick_tree(dist_matrix) self.assertEqual(set(tree1.get_tip_names()), set(aln.names))
def test_composite_pickleable(self): """composable functions should be pickleable""" from pickle import dumps from cogent3.app import io, sample, evo, tree, translate, align read = io.load_aligned(moltype="dna") dumps(read) trans = translate.select_translatable() dumps(trans) aln = align.progressive_align("nucleotide") dumps(aln) just_nucs = sample.omit_degenerates(moltype="dna") dumps(just_nucs) limit = sample.fixed_length(1000, random=True) dumps(limit) mod = evo.model("HKY85") dumps(mod) qt = tree.quick_tree() dumps(qt) proc = read + trans + aln + just_nucs + limit + mod dumps(proc)
def test_str(self): """str representation correctly represents parameterisations""" func = select_translatable() got = str(func) self.assertEqual( got, "select_translatable(type='sequences', " "moltype='dna', gc='Standard Nuclear', " "allow_rc=False, trim_terminal_stop=True)", ) func = select_translatable(allow_rc=True) got = str(func) self.assertEqual( got, "select_translatable(type='sequences', " "moltype='dna', gc='Standard Nuclear', " "allow_rc=True, trim_terminal_stop=True)", ) nodegen = omit_degenerates() got = str(nodegen) self.assertEqual( got, "omit_degenerates(type='aligned', moltype=None, " "gap_is_degen=True, motif_length=1)", ) ml = min_length(100) got = str(ml) self.assertEqual( got, "min_length(type='sequences', length=100, " "motif_length=1, subtract_degen=True, " "moltype=None)", ) qt = quick_tree() self.assertEqual(str(qt), "quick_tree(type='tree', drop_invalid=False)")
def test_quick_tree_taking_distance_matrix(self): """quick_tree should take a distance matrix""" quick_tree = tree_app.quick_tree() data = { ("ABAYE2984", "Avin_42730"): 0.638, ("Atu3667", "Avin_42730"): 2.368, ("Avin_42730", "ABAYE2984"): 0.638, ("Avin_42730", "Atu3667"): 2.368, ("Avin_42730", "BAA10469"): 1.85, ("BAA10469", "Avin_42730"): 1.85, } darr = DistanceMatrix(data) tree = quick_tree.quick_tree(darr) self.assertIsInstance(tree, PhyloNode) self.assertIsNotNone(tree.children) self.assertEqual(set(tree.get_tip_names()), set.union(*(set(tup) for tup in data.keys()))) data = { ("DogFaced", "FlyingFox"): 0.05, ("DogFaced", "FreeTaile"): 0.14, ("DogFaced", "LittleBro"): 0.16, ("DogFaced", "TombBat"): 0.15, ("FlyingFox", "DogFaced"): 0.05, ("FlyingFox", "FreeTaile"): 0.12, ("FlyingFox", "LittleBro"): 0.13, ("FlyingFox", "TombBat"): 0.14, ("FreeTaile", "DogFaced"): 0.14, ("FreeTaile", "FlyingFox"): 0.12, ("FreeTaile", "LittleBro"): 0.09, ("FreeTaile", "TombBat"): 0.1, ("LittleBro", "DogFaced"): 0.16, ("LittleBro", "FlyingFox"): 0.13, ("LittleBro", "FreeTaile"): 0.09, ("LittleBro", "TombBat"): 0.12, ("TombBat", "DogFaced"): 0.15, ("TombBat", "FlyingFox"): 0.14, ("TombBat", "FreeTaile"): 0.1, ("TombBat", "LittleBro"): 0.12, } darr = DistanceMatrix(data) tree = quick_tree.quick_tree(darr) self.assertIsInstance(tree, PhyloNode) self.assertIsNotNone(tree.children) self.assertEqual(set(tree.get_tip_names()), set.union(*(set(tup) for tup in data.keys()))) data = { ("ABAYE2984", "Atu3667"): 0.25, ("ABAYE2984", "Avin_42730"): 0.638, ("ABAYE2984", "BAA10469"): None, ("Atu3667", "ABAYE2984"): 0.25, ("Atu3667", "Avin_42730"): 2.368, ("Atu3667", "BAA10469"): 0.25, ("Avin_42730", "ABAYE2984"): 0.638, ("Avin_42730", "Atu3667"): 2.368, ("Avin_42730", "BAA10469"): 1.85, ("BAA10469", "ABAYE2984"): 0.25, ("BAA10469", "Atu3667"): 0.25, ("BAA10469", "Avin_42730"): 1.85, } darr = DistanceMatrix(data) tree = quick_tree.quick_tree(darr) self.assertIsInstance(tree, PhyloNode) self.assertIsNotNone(tree.children) self.assertEqual(set(tree.get_tip_names()), set.union(*(set(tup) for tup in data.keys()))) data = { ("ABAYE2984", "Atu3667"): None, ("ABAYE2984", "Avin_42730"): 0.638, ("ABAYE2984", "BAA10469"): None, ("Atu3667", "ABAYE2984"): None, ("Atu3667", "Avin_42730"): 2.368, ("Atu3667", "BAA10469"): None, ("Avin_42730", "ABAYE2984"): 0.638, ("Avin_42730", "Atu3667"): 2.368, ("Avin_42730", "BAA10469"): 1.85, ("BAA10469", "ABAYE2984"): None, ("BAA10469", "Atu3667"): None, ("BAA10469", "Avin_42730"): 1.85, } darr = DistanceMatrix(data) with self.assertRaises(KeyError): tree = quick_tree.quick_tree(darr) # when distance_matrix is None after dropping invalid with self.assertRaises(ValueError): quick_tree = tree_app.quick_tree(drop_invalid=True) tree = quick_tree.quick_tree(darr) data = { ("DogFaced", "FlyingFox"): 0.05, ("DogFaced", "FreeTaile"): 0.14, ("DogFaced", "LittleBro"): 0.16, ("DogFaced", "TombBat"): 0.15, ("FlyingFox", "DogFaced"): 0.05, ("FlyingFox", "FreeTaile"): 0.12, ("FlyingFox", "LittleBro"): 0.13, ("FlyingFox", "TombBat"): 0.14, ("FreeTaile", "DogFaced"): 0.14, ("FreeTaile", "FlyingFox"): 0.12, ("FreeTaile", "LittleBro"): 0.09, ("FreeTaile", "TombBat"): 0.1, ("LittleBro", "DogFaced"): 0.16, ("LittleBro", "FlyingFox"): 0.13, ("LittleBro", "FreeTaile"): 0.09, ("LittleBro", "TombBat"): 0.12, ("TombBat", "DogFaced"): 0.15, ("TombBat", "FlyingFox"): 0.14, ("TombBat", "FreeTaile"): 0.1, ("TombBat", "LittleBro"): 0.12, } darr = DistanceMatrix(data) tree = quick_tree.quick_tree(darr) self.assertIsInstance(tree, PhyloNode) self.assertIsNotNone(tree.children) self.assertEqual(set(tree.get_tip_names()), set.union(*(set(tup) for tup in data.keys())))