Exemplo n.º 1
0
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()
Exemplo n.º 2
0
 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")
Exemplo n.º 3
0
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()
Exemplo n.º 4
0
Arquivo: main.py Projeto: Enlux/bioinf
        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)