def simulate_branch_path(tree, node): """ Simulate the nucleotide history on the path between a node and its parent. This simulated path is conditional on known values at each node. Purines are red; pyrimidines are blue. A and T are brighter; G and C are darker. @param tree: a SpatialTree with simulated nucleotides at each node @param node: the node that defines the branch on which to simulate a history """ nucleotide_to_color = { 'A': 'FF4444', 'G': 'FF8888', 'T': '4444FF', 'C': '8888FF' } node.branch_color = nucleotide_to_color[node.state] rate_matrix = RateMatrix.get_jukes_cantor_rate_matrix() initial_state = node.parent.state terminal_state = node.state states = 'ACGT' events = None while events is None: events = PathSampler.get_nielsen_sample(initial_state, terminal_state, states, node.blen, rate_matrix) parent = node.parent last_t = 0 for t, state in events: new = SpatialTree.SpatialTreeNode() new.name = node.name new.state = state new.branch_color = nucleotide_to_color[parent.state] tree.insert_node(new, parent, node, (t - last_t) / float(node.blen)) last_t = t parent = new
def simulate_branch_path(tree, node): """ Simulate the nucleotide history on the path between a node and its parent. This simulated path is conditional on known values at each node. Purines are red; pyrimidines are blue. A and T are brighter; G and C are darker. @param tree: a SpatialTree with simulated nucleotides at each node @param node: the node that defines the branch on which to simulate a history """ nucleotide_to_color = { 'A':'FF4444', 'G':'FF8888', 'T':'4444FF', 'C':'8888FF'} node.branch_color = nucleotide_to_color[node.state] rate_matrix = RateMatrix.get_jukes_cantor_rate_matrix() initial_state = node.parent.state terminal_state = node.state states = 'ACGT' events = None while events is None: events = PathSampler.get_nielsen_sample( initial_state, terminal_state, states, node.blen, rate_matrix) parent = node.parent last_t = 0 for t, state in events: new = SpatialTree.SpatialTreeNode() new.name = node.name new.state = state new.branch_color = nucleotide_to_color[parent.state] tree.insert_node(new, parent, node, (t - last_t) / float(node.blen)) last_t = t parent = new
def simulate_branch_path(tree, node, rate_matrix_object): # purines are red; pyrimidines are blue # A and T are brighter, G and C are darker nt_to_color = {'A':'ff4444', 'G':'ffaaaa', 'T':'4444ff', 'C':'aaaaff'} node.branch_color = nt_to_color[node.state] rate_matrix = rate_matrix_object.dictionary_rate_matrix initial_state = node.parent.state terminal_state = node.state states = 'ACGT' events = None while events is None: events = PathSampler.get_nielsen_sample( initial_state, terminal_state, states, node.blen, rate_matrix) parent = node.parent last_t = 0 for t, state in events: new = SpatialTree.SpatialTreeNode() new.name = node.name new.state = state new.branch_color = nt_to_color[parent.state] tree.insert_node(new, parent, node, (t - last_t) / float(node.blen)) last_t = t parent = new