From a3ed8f31584639d7c56a496a63e297e7c0534700 Mon Sep 17 00:00:00 2001 From: Simon Crase Date: Mon, 3 Apr 2023 17:48:02 +1200 Subject: [PATCH] #46 compute F3 --- qrtd.py | 40 +++- rosalind.wpr | 548 ++++++++++++++++++++++++++++----------------------- 2 files changed, 338 insertions(+), 250 deletions(-) diff --git a/qrtd.py b/qrtd.py index 3b32e05..a387a3f 100644 --- a/qrtd.py +++ b/qrtd.py @@ -26,6 +26,7 @@ from Bio.Phylo.BaseTree import Clade, Tree from matplotlib.pyplot import figure, show import numpy as np +from scipy.special import binom from helpers import read_strings class Colour: @@ -49,6 +50,33 @@ def __init__(self,name=None,colour=None): self.name = name self.colour = colour + + +def F3(_tuple): + ''' + F3 + + This is the F function described in Lemma 5, for a component consisting of a single degree 3 node. + + ''' + def generate_cycles(n=3): + basic_cycle = np.array(list(range(n))) + for i in range(n): + yield np.roll(basic_cycle,i) + + def get_tuple_index(index,letter): + return 3*index+letter-1 + + def get_tuple_value(index,letter): + return _tuple[get_tuple_index(index,letter)] + + def get_term(index,letter): + return binom(get_tuple_value(index[0],letter[0]),2) *\ + (get_tuple_value(index[2],letter[1])*get_tuple_value(index[1],letter[2]) + \ + get_tuple_value(index[1],letter[1])*get_tuple_value(index[2],letter[2])) + + return sum([get_term(index,letter) for index in generate_cycles() for letter in generate_cycles()]) + class ComponentClade(Clade): ''' ComponentClade @@ -78,20 +106,23 @@ def get_label(clade): else: return ''.join(['i' for i in range(clade.composition_type)]) if clade.composition_type<4 else 'iv' + + def decorate(self,S): + def get_element(species,target): 1 if species.colour == target else 0 if self.composition_type==None: if self.name in S: species = S[self.name] - self.tuple = np.array([get_element(species,colour) for colour in range(Colour.n)]) + self._tuple = np.array([get_element(species,colour) for colour in range(Colour.n)]) self.F = lambda _: 0 else: - self.tuple = np.zeros((3)) - self.F = lambda x: 0 #TODO + self._tuple = np.zeros((3)) + self.F = F3 else: - self.tuple = sum([child.tuple for child in self.clades]) + self._tuple = sum([child._tuple for child in self.clades]) if self.composition_type==1: self.F = lambda a,b,c: 0 #TODO elif self.composition_type==2: @@ -349,6 +380,7 @@ def label_colors(name,S=[]): args = parser.parse_args() if args.paper: + F3((1,2,3,4,5,6,7,8,9)) species = ['a', 'b', 'c', 'd','e', 'f'] T0 = read(StringIO('a,((e,f),d),(b,c);'), 'newick') T1 = read(StringIO('a,((e,f),d),(b,c);'), 'newick') diff --git a/rosalind.wpr b/rosalind.wpr index 8ecf723..481b61d 100644 --- a/rosalind.wpr +++ b/rosalind.wpr @@ -674,10 +674,13 @@ debug.recent-run-args = {loc('2sat.py'): ['--rosalind', loc('qrt.py'): ['--rosalind', '--sample'], loc('qrtd.py'): ['--paper --show', - '--paper', + '--exercise', + '--help', + '--tests', '--sample', + '--align', '--rosalind', - '--align'], + '--paper'], loc('qrtd1.py'): ['--rosalind'], loc('revp.py'): ['--sample'], loc('rna.py'): ['--sample'], @@ -735,14 +738,14 @@ debug.show-args-dialog = {loc('../cluster/fcs_params.py'): False, loc('count-kmer-occurrences.py'): False, loc('newick.py'): False, loc('nwck.py'): False, - loc('unknown: #271'): False} + loc('unknown: #1'): False} guimgr.overall-gui-state = {'windowing-policy': 'combined-window', 'windows': [{'name': 'dtaAtJloNhSft7SabFzspl0xqEmVIDbK', 'size-state': 'maximized', 'type': 'dock', 'view': {'area': 'tall', 'constraint': None, - 'current_pages': [3], + 'current_pages': [2], 'full-screen': False, 'notebook_display': 'normal', 'notebook_percent': 0.2524199553239017, @@ -799,11 +802,14 @@ guimgr.overall-gui-state = {'windowing-policy': 'combined-window', 'Array')]}, loc('../AppData/Local/Programs/Python/Python311/Lib/site-packages/Bio/Phylo/BaseTree.py'): {'expanded-nodes': [[('class def', loc('../AppData/Local/Programs/Python/Python311/Lib/site-packages/Bio/Phylo/BaseTree.py'), - 'Tree')]], + 'TreeMixin')]], 'selected-nodes': [], - 'top-node': [('class def', + 'top-node': [('function def', + loc('../AppData/Local/Programs/Python/Python311/Lib/site-packages/Bio/Phylo/BaseTree.py'), + 'TreeMixin|0|.get_path'), + ('function def', loc('../AppData/Local/Programs/Python/Python311/Lib/site-packages/Bio/Phylo/BaseTree.py'), - 'BranchColor')]}, + 'TreeMixin|0|.get_path')]}, loc('../AppData/Local/Programs/Python/Python311/Lib/site-packages/Bio/Phylo/NewickIO.py'): {'expanded-nodes': [], 'selected-nodes': [], 'top-node': [('class def', @@ -1480,7 +1486,9 @@ guimgr.overall-gui-state = {'windowing-policy': 'combined-window', loc('qrt.py'), 'args')]}, loc('qrtd.py'): {'expanded-nodes': [], - 'selected-nodes': [], + 'selected-nodes': [[('function def', + loc('qrtd.py'), + 'F3')]], 'top-node': [('generic attribute', loc('qrtd.py'), 'args')]}, @@ -1646,11 +1654,11 @@ guimgr.overall-gui-state = {'windowing-policy': 'combined-window', 'top-node': [('function def', loc('ukkonen.py'), 'build')]}, - loc('unknown: #272'): {'expanded-nodes': [], - 'selected-nodes': [], - 'top-node': [('function def', - loc('unknown: #273'), - 'to_adjacency_matrix')]}}, + loc('unknown: #2'): {'expanded-nodes': [], + 'selected-nodes': [], + 'top-node': [('function def', + loc('unknown: #3'), + 'to_adjacency_matrix')]}}, 'browse_mode': 'Current Module', 'follow-selection': False, 'sort_mode': 'Alphabetically', @@ -1712,9 +1720,9 @@ guimgr.overall-gui-state = {'windowing-policy': 'combined-window', 'fMatchCase': False, 'fOmitBinary': True, 'fRegexFlags': 42, - 'fReplaceText': 'remaining_edges', + 'fReplaceText': '_tuple', 'fReverse': False, - 'fSearchText': 'next_edges', + 'fSearchText': 'tuple', 'fStartPos': 0, 'fStyle': 'text', 'fWholeWords': False, @@ -1748,14 +1756,24 @@ guimgr.overall-gui-state = {'windowing-policy': 'combined-window', -1), 'attrib-starts': [], 'code-line': '', - 'first-line': 0, + 'first-line': 34, 'folded-linenos': [], - 'history': {}, + 'history': {None: ['import numpy as np\n', + 'a=np.roll(a,1)\n', + 'np.roll(a,1)\n', + 'np.roll(a)\n', + 'a=[1,2,3]\n', + '[np.roll(a,i) for i in range(len(a))\n]\n', + 'def generate_cyclic(n):\n a = np.array(list(range(n)))\n for i in range(n):\n yield np.roll(a,i)\n', + 'list(generate_cyclic(3))\n', + 'list(generate_cyclic(5))\n', + '(1,2,3,4)[0]\n', + '(1,2,3,4)[2]\n']}, 'launch-id': None, - 'sel-line': 2, - 'sel-line-start': 159, - 'selection_end': 159, - 'selection_start': 159, + 'sel-line': 39, + 'sel-line-start': 1371, + 'selection_end': 1371, + 'selection_start': 1371, 'zoom': 0}), ('messages', 'wide', @@ -1768,270 +1786,309 @@ guimgr.overall-gui-state = {'windowing-policy': 'combined-window', 'toolbox-percent': 1.0, 'toolbox-tree-sel': ''})], 'primary_view_state': {'editor_states': ({'bookmarks': ([[loc('qrtd.py'), - {'attrib-starts': [('TreeRooter|0|', - 92), - ('TreeRooter|0|.create_rooted|0|', - 94)], - 'code-line': ' self.names = {}\r\n', - 'first-line': 92, + {'attrib-starts': [('Species|0|', + 43)], + 'code-line': ' The represents on Species; thr two trees are over the same set of species.\r\n', + 'first-line': 29, 'folded-linenos': [], - 'sel-line': 96, - 'sel-line-start': 3727, - 'selection_end': 3752, - 'selection_start': 3752, + 'sel-line': 45, + 'sel-line-start': 1566, + 'selection_end': 1644, + 'selection_start': 1644, 'zoom': 0}, - 1680125528.5775683], - [loc('../AppData/Local/Programs/Python/Python311/Lib/site-packages/Bio/Phylo/BaseTree.py'), - {'attrib-starts': [('Tree|0|', - 725)], - 'code-line': ' def root_with_outgroup(\r\n', - 'first-line': 801, + 1680407166.030706], + [loc('qrtd.py'), + {'attrib-starts': [('Species|0|', + 43)], + 'code-line': ' The represents on Species; thr two trees are over the same set of species.\r\n', + 'first-line': 62, 'folded-linenos': [], - 'sel-line': 813, - 'sel-line-start': 30671, - 'selection_end': 30697, - 'selection_start': 30679, + 'sel-line': 45, + 'sel-line-start': 1566, + 'selection_end': 1644, + 'selection_start': 1644, 'zoom': 0}, - 1680125540.0458999], - [loc('../AppData/Local/Programs/Python/Python311/Lib/site-packages/Bio/Phylo/BaseTree.py'), - {'attrib-starts': [('Tree|0|', - 725)], - 'code-line': ' def root_at_midpoint(self):\r\n', - 'first-line': 902, + 1680407181.9546034], + [loc('qrtd.py'), + {'attrib-starts': [], + 'code-line': ' ax = ax22,\r\n', + 'first-line': 356, 'folded-linenos': [], - 'sel-line': 908, - 'sel-line-start': 35103, - 'selection_end': 35127, - 'selection_start': 35111, + 'sel-line': 379, + 'sel-line-start': 12957, + 'selection_end': 12994, + 'selection_start': 12994, 'zoom': 0}, - 1680125561.1147149], - [loc('../AppData/Local/Programs/Python/Python311/Lib/site-packages/Bio/Phylo/BaseTree.py'), - {'attrib-starts': [('Tree|0|', - 725)], - 'code-line': ' def root_with_outgroup(\r\n', - 'first-line': 807, + 1680466905.9606388], + [loc('qrtd.py'), + {'attrib-starts': [], + 'code-line': 'from scipy.special import binom\r\n', + 'first-line': 15, 'folded-linenos': [], - 'sel-line': 813, - 'sel-line-start': 30671, - 'selection_end': 30697, - 'selection_start': 30679, + 'sel-line': 28, + 'sel-line-start': 1178, + 'selection_end': 1203, + 'selection_start': 1203, 'zoom': 0}, - 1680125597.0395968], - [loc('../AppData/Local/Programs/Python/Python311/Lib/site-packages/Bio/Phylo/BaseTree.py'), - {'attrib-starts': [('Tree|0|', - 725)], - 'code-line': ' def root_with_outgroup(\r\n', - 'first-line': 867, + 1680469389.9184635], + [loc('qrtd.py'), + {'attrib-starts': [('ComponentClade|0|', + 52), + ('ComponentClade|0|.decorate|0|', + 81)], + 'code-line': ' def F3(tuple):\r\n', + 'first-line': 77, 'folded-linenos': [], - 'sel-line': 813, - 'sel-line-start': 30671, - 'selection_end': 30697, - 'selection_start': 30679, + 'sel-line': 82, + 'sel-line-start': 2746, + 'selection_end': 2766, + 'selection_start': 2761, 'zoom': 0}, - 1680125604.2938643], + 1680471016.8194485], [loc('qrtd.py'), - {'attrib-starts': [('TreeRooter|0|', - 92), - ('TreeRooter|0|.create_rooted|0|', - 94)], - 'code-line': ' self.names = {}\r\n', - 'first-line': 92, + {'attrib-starts': [('ComponentClade|0|', + 52), + ('ComponentClade|0|.decorate|0|', + 81)], + 'code-line': ' self.tuple = np.array([get_element(species,colour) for colour in range(Colour.n)])\r\n', + 'first-line': 78, 'folded-linenos': [], - 'sel-line': 96, - 'sel-line-start': 3727, - 'selection_end': 3752, - 'selection_start': 3752, + 'sel-line': 90, + 'sel-line-start': 2994, + 'selection_end': 3020, + 'selection_start': 3015, 'zoom': 0}, - 1680125618.1758602], + 1680471028.7141204], [loc('qrtd.py'), - {'attrib-starts': [], - 'code-line': ' # ax21 = fig.add_subplot(223)\r\n', - 'first-line': 237, + {'attrib-starts': [('ComponentClade|0|', + 52), + ('ComponentClade|0|.decorate|0|', + 81)], + 'code-line': ' def F3(_tuple):\r\n', + 'first-line': 71, 'folded-linenos': [], - 'sel-line': 255, - 'sel-line-start': 8714, - 'selection_end': 8790, - 'selection_start': 8714, + 'sel-line': 82, + 'sel-line-start': 2746, + 'selection_end': 2767, + 'selection_start': 2761, 'zoom': 0}, - 1680125695.2669525], + 1680471033.3284695], [loc('qrtd.py'), - {'attrib-starts': [], - 'code-line': ' # ax21 = fig.add_subplot(223)\r\n', - 'first-line': 26, + {'attrib-starts': [('ComponentClade|0|', + 52), + ('ComponentClade|0|.decorate|0|', + 81)], + 'code-line': ' self._tuple = np.array([get_element(species,colour) for colour in range(Colour.n)])\r\n', + 'first-line': 78, 'folded-linenos': [], - 'sel-line': 255, - 'sel-line-start': 8714, - 'selection_end': 8790, - 'selection_start': 8714, + 'sel-line': 90, + 'sel-line-start': 2995, + 'selection_end': 3022, + 'selection_start': 3016, 'zoom': 0}, - 1680125707.060933], + 1680471034.786827], [loc('qrtd.py'), - {'attrib-starts': [], - 'code-line': ' T1.root_with\r\n', - 'first-line': 230, + {'attrib-starts': [('ComponentClade|0|', + 52), + ('ComponentClade|0|.decorate|0|', + 81)], + 'code-line': ' self._tuple = np.zeros((3))\r\n', + 'first-line': 78, 'folded-linenos': [], - 'sel-line': 242, - 'sel-line-start': 8370, - 'selection_end': 8390, - 'selection_start': 8390, + 'sel-line': 93, + 'sel-line-start': 3157, + 'selection_end': 3184, + 'selection_start': 3178, 'zoom': 0}, - 1680125732.2997246], - [loc('../AppData/Local/Programs/Python/Python311/Lib/site-packages/Bio/Phylo/BaseTree.py'), - {'attrib-starts': [('Tree|0|', - 725)], - 'code-line': ' def root_with_outgroup(\r\n', - 'first-line': 867, + 1680471035.6203895], + [loc('qrtd.py'), + {'attrib-starts': [('ComponentClade|0|', + 52), + ('ComponentClade|0|.decorate|0|', + 81)], + 'code-line': ' self._tuple = sum([child.tuple for child in self.clades])\r\n', + 'first-line': 78, 'folded-linenos': [], - 'sel-line': 813, - 'sel-line-start': 30671, - 'selection_end': 30697, - 'selection_start': 30679, + 'sel-line': 96, + 'sel-line-start': 3250, + 'selection_end': 3273, + 'selection_start': 3267, 'zoom': 0}, - 1680125741.3844233], - [loc('../AppData/Local/Programs/Python/Python311/Lib/site-packages/Bio/Phylo/BaseTree.py'), - {'attrib-starts': [('Tree|0|', - 725)], - 'code-line': ' def root_with_outgroup(\r\n', - 'first-line': 803, + 1680471036.4234135], + [loc('qrtd.py'), + {'attrib-starts': [('ComponentClade|0|', + 52), + ('ComponentClade|0|.decorate|0|', + 81)], + 'code-line': ' self._tuple = sum([child._tuple for child in self.clades])\r\n', + 'first-line': 78, 'folded-linenos': [], - 'sel-line': 813, - 'sel-line-start': 30671, - 'selection_end': 30697, - 'selection_start': 30679, + 'sel-line': 96, + 'sel-line-start': 3250, + 'selection_end': 3293, + 'selection_start': 3287, 'zoom': 0}, - 1680125794.5772424], + 1680471038.414642], [loc('qrtd.py'), - {'attrib-starts': [], - 'code-line': ' T1.root_with_outgroup([leaves[0]])\r\n', - 'first-line': 230, + {'attrib-starts': [('ComponentClade|0|', + 52), + ('ComponentClade|0|.decorate|0|', + 81)], + 'code-line': ' def F3(_tuple):\r\n', + 'first-line': 89, 'folded-linenos': [], - 'sel-line': 242, - 'sel-line-start': 8370, - 'selection_end': 8410, - 'selection_start': 8410, + 'sel-line': 82, + 'sel-line-start': 2746, + 'selection_end': 2767, + 'selection_start': 2762, 'zoom': 0}, - 1680125865.0371342], - [loc('../AppData/Local/Programs/Python/Python311/Lib/site-packages/Bio/Phylo/BaseTree.py'), - {'attrib-starts': [('Tree|0|', - 725)], - 'code-line': ' def root_with_outgroup(\r\n', - 'first-line': 812, + 1680471055.3030486], + [loc('qrtd.py'), + {'attrib-starts': [('ComponentClade|0|', + 52), + ('ComponentClade|0|.decorate|0|', + 81)], + 'code-line': ' def F3(_tuple):\r\n', + 'first-line': 131, 'folded-linenos': [], - 'sel-line': 813, - 'sel-line-start': 30671, - 'selection_end': 30697, - 'selection_start': 30679, + 'sel-line': 82, + 'sel-line-start': 2746, + 'selection_end': 2767, + 'selection_start': 2762, 'zoom': 0}, - 1680126144.439849], - [loc('../AppData/Local/Programs/Python/Python311/Lib/site-packages/Bio/Phylo/BaseTree.py'), - {'attrib-starts': [('Tree|0|', - 725)], - 'code-line': ' def root_with_outgroup(\r\n', - 'first-line': 31, + 1680471064.1788795], + [loc('qrtd.py'), + {'attrib-starts': [('ComponentClade|0|', + 52), + ('ComponentClade|0|.get_label|0|', + 70)], + 'code-line': ' \r\n', + 'first-line': 72, 'folded-linenos': [], - 'sel-line': 813, - 'sel-line-start': 30671, - 'selection_end': 30697, - 'selection_start': 30679, + 'sel-line': 81, + 'sel-line-start': 2719, + 'selection_end': 2720, + 'selection_start': 2720, 'zoom': 0}, - 1680126145.026554], + 1680471818.4865716], [loc('qrtd.py'), - {'attrib-starts': [], - 'code-line': ' tr = TreeRooter()\r\n', - 'first-line': 230, + {'attrib-starts': [('F3|0|', + 57)], + 'code-line': ' \r\n', + 'first-line': 49, 'folded-linenos': [], - 'sel-line': 241, - 'sel-line-start': 8338, - 'selection_end': 8366, - 'selection_start': 8356, + 'sel-line': 61, + 'sel-line-start': 2029, + 'selection_end': 2041, + 'selection_start': 2041, 'zoom': 0}, - 1680126155.290211], + 1680471911.6216774], [loc('qrtd.py'), - {'attrib-starts': [('tabulate_names|0|', - 92)], - 'code-line': ' if not clade.name:\r\n', - 'first-line': 87, + {'attrib-starts': [], + 'code-line': ' F3(())\r\n', + 'first-line': 362, 'folded-linenos': [], - 'sel-line': 95, - 'sel-line-start': 3740, - 'selection_end': 3766, - 'selection_start': 3766, + 'sel-line': 365, + 'sel-line-start': 12081, + 'selection_end': 12091, + 'selection_start': 12089, 'zoom': 0}, - 1680126278.578132], + 1680472006.7505684], [loc('qrtd.py'), - {'attrib-starts': [], - 'code-line': ' Factory = HTreeBuilder()\r\n', - 'first-line': 218, + {'attrib-starts': [('F3|0|', + 57), + ('F3|0|.get_tuple_value|0|', + 60)], + 'code-line': ' \r\n', + 'first-line': 51, 'folded-linenos': [], - 'sel-line': 229, - 'sel-line-start': 7871, - 'selection_end': 7901, - 'selection_start': 7889, + 'sel-line': 62, + 'sel-line-start': 2065, + 'selection_end': 2069, + 'selection_start': 2069, 'zoom': 0}, - 1680126539.2614048], + 1680473081.160088], [loc('qrtd.py'), - {'attrib-starts': [], - 'code-line': 'class HTreeBuilder(Tree):\r\n', - 'first-line': 18, + {'attrib-starts': [('F3|0|', + 57), + ('F3|0|.get_tuple_value|0|', + 60)], + 'code-line': ' \r\n', + 'first-line': 192, 'folded-linenos': [], - 'sel-line': 30, - 'sel-line-start': 1187, - 'selection_end': 1205, - 'selection_start': 1193, + 'sel-line': 62, + 'sel-line-start': 2065, + 'selection_end': 2069, + 'selection_start': 2069, 'zoom': 0}, - 1680126545.0642211], + 1680473960.2772217], [loc('qrtd.py'), - {'attrib-starts': [('root_with_specified_leaf|0|', - 100)], - 'code-line': ' root_name = leaves[index].name\r\n', - 'first-line': 90, + {'attrib-starts': [('F3|0|', + 57)], + 'code-line': ' def get_term(index,letter):\r\n', + 'first-line': 52, 'folded-linenos': [], - 'sel-line': 104, - 'sel-line-start': 4021, - 'selection_end': 4053, - 'selection_start': 4053, + 'sel-line': 62, + 'sel-line-start': 2065, + 'selection_end': 2076, + 'selection_start': 2076, 'zoom': 0}, - 1680126984.8743386], + 1680474440.9474528], [loc('qrtd.py'), - {'attrib-starts': [], - 'code-line': ' root_with_specified_leaf(T1)\r\n', - 'first-line': 226, + {'attrib-starts': [('F3|0|', + 57)], + 'code-line': ' def get_term(index,letter):\r\n', + 'first-line': 100, 'folded-linenos': [], - 'sel-line': 234, - 'sel-line-start': 8227, - 'selection_end': 8259, - 'selection_start': 8235, + 'sel-line': 62, + 'sel-line-start': 2065, + 'selection_end': 2076, + 'selection_start': 2076, 'zoom': 0}, - 1680127133.7006981]], + 1680474482.0603578]], 20), 'current-loc': loc('qrtd.py'), 'editor-state-list': [(loc('../AppData/Local/Programs/Python/Python311/Lib/site-packages/Bio/Phylo/BaseTree.py'), {'attrib-starts': [('Tree|0|', 725)], - 'code-line': ' def root_with_outgroup(\r\n', - 'first-line': 31, + 'code-line': ' def clade(self):\r\n', + 'first-line': 1187, 'folded-linenos': [], - 'sel-line': 813, - 'sel-line-start': 30671, - 'selection_end': 30697, - 'selection_start': 30679, + 'sel-line': 799, + 'sel-line-start': 30183, + 'selection_end': 30196, + 'selection_start': 30191, 'zoom': 0}), (loc('qrtd.py'), - {'attrib-starts': [('root_with_specified_leaf|0|', - 100)], - 'code-line': ' tabulate_names(T)\r\n', - 'first-line': 112, + {'attrib-starts': [('F3|0|', + 54), + ('F3|0|.get_term|0|', + 72)], + 'code-line': ' return binom(get_tuple_value(index[0],letter[0]),2) *\\\r\n', + 'first-line': 61, + 'folded-linenos': [], + 'sel-line': 73, + 'sel-line-start': 2312, + 'selection_end': 2312, + 'selection_start': 2312, + 'zoom': 0}), + (loc('../AppData/Local/Programs/Python/Python311/Lib/site-packages/Bio/Phylo/_utils.py'), + {'attrib-starts': [], + 'code-line': 'def draw(\r\n', + 'first-line': 221, 'folded-linenos': [], - 'sel-line': 106, - 'sel-line-start': 4069, - 'selection_end': 4073, - 'selection_start': 4073, + 'sel-line': 179, + 'sel-line-start': 6552, + 'selection_end': 6560, + 'selection_start': 6556, 'zoom': 0})], 'has-focus': True, 'locked': False}, [loc('../AppData/Local/Programs/Python/Python311/Lib/site-packages/Bio/Phylo/BaseTree.py'), - loc('qrtd.py')]), + loc('qrtd.py'), + loc('../AppData/Local/Programs/Python/Python311/Lib/site-packages/Bio/Phylo/_utils.py')]), 'open_files': ['../AppData/Local/Programs/Python/Python311/Lib/site-packages/Bio/Phylo/BaseTree.py', + '../AppData/Local/Programs/Python/Python311/Lib/site-packages/Bio/Phylo/_utils.py', 'qrtd.py']}, 'saved_notebook_display': None, 'split_percents': {0: 0.5}, @@ -2039,15 +2096,15 @@ guimgr.overall-gui-state = {'windowing-policy': 'combined-window', 'tab_location': 'top', 'traversal_pos': ((1, 0), - 1680127349.3549962), + 1680475394.2629938), 'user_data': {}}, 'saved_notebook_display': None, 'split_percents': {}, 'splits': 1, 'tab_location': 'left', 'traversal_pos': ((0, - 3), - 1680120788.1026347), + 2), + 1680475195.4342089), 'user_data': {}}, 'window-alloc': (28, -1, @@ -2120,15 +2177,14 @@ guimgr.visual-state = {loc('../../../Anaconda3/lib/site-packages/Bio/File.py'): 'selection_end': 54078, 'selection_start': 54074, 'zoom': 0}, - loc('../../../Program Files/Wing Personal 9/resources/builtin-pi-files/__os__/win32/3.11/builtins.pi'): {'attrib-starts': [('list|0|', - 1923)], - 'code-line': ' def reverse(self):\n', - 'first-line': 1961, + loc('../../../Program Files/Wing Personal 9/resources/builtin-pi-files/__os__/win32/3.11/builtins.pi'): {'attrib-starts': [], + 'code-line': 'class filter(object):\n', + 'first-line': 1587, 'folded-linenos': [], - 'sel-line': 1974, - 'sel-line-start': 58337, - 'selection_end': 58350, - 'selection_start': 58343, + 'sel-line': 1600, + 'sel-line-start': 47174, + 'selection_end': 47186, + 'selection_start': 47180, 'zoom': 0}, loc('../../../Program Files/Wing Personal 9/resources/builtin-pi-files/__os__/win32/3.11/math.pi'): {'attrib-starts': [], 'code-line': 'def isinf(x):\n', @@ -4347,7 +4403,11 @@ proj.build-cmd = {None: ('default', None)} proj.env-vars = {None: ('default', [''])} -search.replace-history = ['remaining_edges', +search.replace-history = ['_tuple', + 'self', + 'Count', + 'get_subtree', + 'remaining_edges', 'species_index', '#125', 'np', @@ -4362,12 +4422,15 @@ search.replace-history = ['remaining_edges', 'message', 'self.viterbi', 'successors', - 'StateSet.format', - 't', - 's', - 'i-1', - 'i'] -search.search-history = ['next_edges', + 'StateSet.format'] +search.search-history = ['tuple', + 'tabul', + 'clade', + 'print', + 'Mixin', + 'get_count', + 'get_small_large', + 'next_edges', 'fasta', 'rsub', 'FastaC', @@ -4379,11 +4442,4 @@ search.search-history = ['next_edges', 'create_tree', 'Hierarchy', 'seiceps', - 'strring', - 'newick_to_adjacency_list', - 'findall', - 'finda', - 'find', - 'fin', - 'parse', - 'chbp'] + 'strring']