def main(): #Data Structures LinkedList.test() QueueArray.test() QueueLL.test() ResizingArray.test() HashTable.test() BinarySearchTree.test() Heap.test() Trie.test() GraphTraversal.test() #Search / Sort BinarySearch.test() BubbleSort.test()
def set_file(self): """ Build get GraphTraversal object """ self.filename = askdirectory(**{"initialdir": "C:\\Users\\b0467851\\WORK\\school\\DataAssignment_1\\DataAssignment_1"}) try: self.gt = GraphTraversal(self.filename) except Exception as e: self.text.delete("1.0", END) self.text.insert(END, "Invalid directory, make sure directory has adjacency matrix and node info files from assignment 1")
class gui: def __init__(self): """ Construct gui elements """ self.filename = None self.gt = None self.cont = None self.play = None self.pause_timer = False def set_file(self): """ Build get GraphTraversal object """ self.filename = askdirectory(**{"initialdir": "C:\\Users\\b0467851\\WORK\\school\\DataAssignment_1\\DataAssignment_1"}) try: self.gt = GraphTraversal(self.filename) except Exception as e: self.text.delete("1.0", END) self.text.insert(END, "Invalid directory, make sure directory has adjacency matrix and node info files from assignment 1") def bfs(self): """ Event triggered when BFS butotn is clicked """ if self.gt is None: # Don't do anything if we dont have our graph traversal object self.text.delete("1.0", END) self.text.insert(END, "Select source directory first") return self.ops = self.gt.bfs(False) # Set iterator self.it = 0 # Reset text and play button self.text.delete("1.0", END) self.text.insert(END, "READY") self.play = Button(self.panel_top, text = "|>", width = 10, height =1, command=self.first_play).grid(row=0, column=2) self.pause_timer = True def dfs(self): """ Event triggered when dfs_rec button is clicked """ if self.gt is None: # Don't do anything if we dont have our graph traversal object self.text.delete("1.0", END) self.text.insert(END, "Select source directory first") return self.ops = self.gt.dfs(False) # set iterator self.it = 0 # Reset text and play button self.text.delete("1.0", END) self.text.insert(END, "READY") self.play = Button(self.panel_top, text = "|>", width = 10, height =1, command=self.first_play).grid(row=0, column=2) self.pause_timer = True def dfs_iter(self): """ Event triggered when dfs_iter button is clicked """ if self.gt is None: # Don't do anything if we dont have our graph traversal object self.text.delete("1.0", END) self.text.insert(END, "Select source directory first") return self.ops = self.gt.dfs_iter(False) # Set iterator self.it = 0 # Reset text and play button self.text.delete("1.0", END) self.text.insert(END, "READY") self.play = Button(self.panel_top, text = "|>", width = 10, height =1, command=self.first_play).grid(row=0, column=2) self.pause_timer = True def play_btn(self): """ Recursively update text area with new line from recursive algorithm """ if self.it >= len(self.ops) or self.pause_timer: return else: self.text.insert(END, str(self.it+1) + ": " + str(self.ops[self.it]) + "\n") self.it += 1 self.text.after(1000, self.play_btn) def first_play(self): """ Stars play process """ if self.gt is None or self.ops is None: # Only allow if we have everything we need self.text.delete("1.0", END) self.text.insert(END, "Select source directory AND algorithm before playing") return if self.it == 0: # Clear input if we are starting a fresh iteration self.text.delete("1.0", END) # Start printing lines to screen self.pause_timer = False # Show pause button self.pause = Button(self.panel_top, text = "||", width = 10, height =1, command=self.pause_btn).grid(row=0, column=2) self.play_btn() def pause_btn(self): """ Event tirggered by clicking pause button """ # Show play button self.play = Button(self.panel_top, text = "|>", width = 10, height =1, command=self.first_play).grid(row=0, column=2) # Stop timer self.pause_timer = True def next(self): """ Event triggered when clicking next """ if self.gt is None or self.ops is None: # Don't allow access if we dont have what we need to display lines self.text.delete("1.0", END) self.text.insert(END, "Select source directory AND algorithm before playing") return if self.it == 0: # If we havent started playing, clear any messages on screen self.text.delete("1.0", END) self.text.insert(END, str(self.it+1) + ": " + str(self.ops[self.it]) + "\n") # Increase iterator self.it += 1 def prev(self): """ Event triggered by clicking previous """ if self.gt is None or self.ops is None: # Don't do anything if we dont have what we need self.text.delete("1.0", END) self.text.insert(END, "Select source directory AND algorithm before playing") return # Get current values in text # Remove everything but last line and update text current = self.text.get("1.0", END) second_index = current.rfind("\n", 0, current.rfind("\n")-1) now = current[:second_index] self.text.delete("1.0", END) self.text.insert(END, str(now)+"\n") self.it -= 1 def launch(self): """ Launch the GUI """ root = Tk() root.geometry("600x500") # Get main contianer self.cont = Frame(root) # Add diretory chooser file_chooser = Button(self.cont, height=2, width=100, text="Choose file directory", command=self.set_file) file_chooser.pack() # Add top panel to display play buttons self.panel_top = Frame(self.cont, width=100, height=2) self.panel_top.grid(row=1, column=3, columnspan=3) # Add play buttons self.play = Button(self.panel_top, text = "|>", width = 10, height =1, command=self.first_play).grid(row=0, column=2) next = Button(self.panel_top, text = ">", width = 10, height =1, command=self.next).grid(row=0, column=3) prev = Button(self.panel_top, text = "<", width = 10, height =1, command=self.prev).grid(row=0, column=1) self.panel_top.pack() # Add scrollbar scrollbar = Scrollbar(root) scrollbar.pack(side=RIGHT, fill = Y) # Add text feild self.text = Text(self.cont, yscrollcommand=scrollbar.set) self.text.insert(END, "Select directory with matrix and info files first then select algorithm, then click play") self.text.pack() # Add bottom panel to display algorithms panel = Frame(self.cont, width=100, height=2) panel.grid(row=1, column=3, columnspan=3) bfs = Button(panel, text="BFS", width=20, height=2, command=self.bfs).grid(row=0, column=1) dfs_iter = Button(panel, text="DFS ITER", width=20, height=2, command=self.dfs_iter).grid(row=0, column=2) dfs_rec = Button(panel, text="DFS REC", width=20, height=2, command=self.dfs).grid(row=0, column=0) panel.pack() self.cont.pack() root.mainloop()
extKmer = (kmer[1:] + e) if extKmer.encode() in bloom: P.append(extKmer) P = list(set(P)) #just a check print("Cheking length of kmers dataset vs P (from bloom)") print(len(kmers), len(P)) print("Building cFP") #build cfp structure, again KISS approach of algo (page 3, algorithm 1) D = P cFP = [] print("TODO uncomment cFP") ''' for m in D: itsIn = False for kmer in kmers: if m == kmer: itsIn = True break if not itsIn: cFP.append(m) print(cFP) ''' result = GraphTraversal(bloom, cFP, kmers, kmerSize, outputFilename)