Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_roundtrip_hypothesis_result(self):
"""nested items retain the correct type after roundtrip"""
from cogent3.app import evo as evo_app
from cogent3.evolve.parameter_controller import (
AlignmentLikelihoodFunction,
)
_data = {
"Human": "ATGCGGCTCGCGGAGGCCGCGCTCGCGGAG",
"Mouse": "ATGCCCGGCGCCAAGGCAGCGCTGGCGGAG",
"Opossum": "ATGCCAGTGAAAGTGGCGGCGGTGGCTGAG",
}
aln = make_aligned_seqs(data=_data, moltype="dna")
opt_args = dict(max_evaluations=10, limit_action="ignore")
m1 = evo_app.model("F81", split_codons=True, opt_args=opt_args)
m2 = evo_app.model("GTR", split_codons=True, opt_args=opt_args)
hyp = evo_app.hypothesis(m1, m2)
result = hyp(aln)
self.assertIsInstance(result["F81"][1], AlignmentLikelihoodFunction)
data = result.to_json()
got_obj = deserialise_object(data)
for i in range(1, 4):
for sm in ("F81", "GTR"):
self.assertIsInstance(got_obj[sm][i], dict)
# but after invoking deserialised_values
got_obj.deserialised_values()
for i in range(1, 4):
for sm in ("F81", "GTR"):
self.assertIsInstance(got_obj[sm][i], AlignmentLikelihoodFunction)
def test_model_str(self):
"""correct str representation"""
model = evo_app.model("HKY85", time_het="max")
got = str(model)
self.assertEqual(
got,
(
"model(type='model', sm='HKY85', tree=None, "
"name=None, sm_args=None, lf_args=None, "
def test_model_result_simulate_alignment(self):
"""returns tree from lf with split codon positions"""
_data = {
"Human": "ATGCGGCTCGCGGAGGCCGCGCTCGCGGAG",
"Mouse": "ATGCCCGGCGCCAAGGCAGCGCTGGCGGAG",
"Opossum": "ATGCCAGTGAAAGTGGCGGCGGTGGCTGAG",
}
aln = make_aligned_seqs(data=_data, moltype="dna")
mod = evo_app.model(
"F81",
split_codons=True,
show_progress=False,
opt_args=dict(max_evaluations=55, limit_action="ignore"),
)
result = mod(aln)
got = result.simulate_alignment()
self.assertEqual(len(aln), len(got))
self.assertNotEqual(aln.to_dict(), got.to_dict())
def test_model_param_rules(self):
"""applies upper bound if sensible"""
mod = evo_app.model(
"GN",
param_rules=[dict(par_name="length", edge="Mouse", is_independent=False)],
)
self.assertEqual(mod._param_rules[0].get("upper"), 50)
mod = evo_app.model(
"GN", param_rules=[dict(par_name="length", edge="Mouse", is_constant=True)]
)
self.assertEqual(mod._param_rules[0].get("upper", None), None)
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(),
def test_model_tree(self):
"""allows tree to be string, None or tree"""
treestring = "(a,b,c)"
for tree in (treestring, make_tree(treestring=treestring), None):
mod = evo_app.model("HKY85", tree=tree)
expect = None if tree is None else make_tree(treestring=treestring)
self.assertIsInstance(mod._tree, expect.__class__)
def test_hypothesis_str(self):
"""correct str representation"""
model1 = evo_app.model("HKY85")
model2 = evo_app.model("HKY85", name="hky85-max-het", time_het="max")
hyp = evo_app.hypothesis(model1, model2)
got = str(hyp)
expect = (
"hypothesis(type='hypothesis', null='HKY85', "
"alternates=(model(type='model', sm='HKY85', tree=None, "
"name='hky85-max-het', sm_args=None, lf_args=None, "
"time_het='max', param_rules=None, opt_args=None,"
" split_codons=False, show_progress=False, verbose=False),),"
" init_alt=None)"
)
self.assertEqual(got, expect)
def test_model_time_het(self):
"""support lf time-het argument edge_sets"""
_data = {
"Human": "ATGCGGCTCGCGGAGGCCGCGCTCGCGGAG",
"Mouse": "ATGCCCGGCGCCAAGGCAGCGCTGGCGGAG",
"Opossum": "ATGCCAGTGAAAGTGGCGGCGGTGGCTGAG",
}
aln = make_aligned_seqs(data=_data, moltype="dna")
mod = evo_app.model(
"GN",
time_het=[dict(edges=["Mouse", "Human"], is_independent=False)],
opt_args=dict(max_evaluations=25, limit_action="ignore"),
)
result = mod(aln)
# 11 free params per calibrated GN matrix, there are 2
# 3 params for root motif probs, 3 branch lengths
expect_nfp = 11 * 2 + 3 + 3
self.assertEqual(result.lf.nfp, expect_nfp)
def test_hypothesis_str(self):
"""correct str representation"""
model1 = evo_app.model("HKY85")
model2 = evo_app.model("HKY85", name="hky85-max-het", time_het="max")
hyp = evo_app.hypothesis(model1, model2)
got = str(hyp)
expect = (
"hypothesis(type='hypothesis', null='HKY85', "
"alternates=(model(type='model', sm='HKY85', tree=None, "
"name='hky85-max-het', sm_args=None, lf_args=None, "
"time_het='max', param_rules=None, opt_args=None,"
" split_codons=False, show_progress=False, verbose=False),),"
" init_alt=None)"
)
self.assertEqual(got, expect)