Download gui.py from jpuglia/ProteinLocationPredictor: direct link, hf CLI and curl.
- Browser
- Download file 4.95 kB
-
https://huggingface.co/jpuglia/ProteinLocationPredictor/resolve/main/gui.py
- Command line
-
hf download hf://jpuglia/ProteinLocationPredictor/gui.py
-
curl -L -o gui.py https://huggingface.co/jpuglia/ProteinLocationPredictor/resolve/main/gui.py
4.95 kB
| """ | |
| Protein Location Predictor GUI | |
| This module provides a Tkinter-based GUI for loading FASTA files | |
| and running protein location prediction tools. | |
| """ | |
| import tkinter as tk | |
| from tkinter import Menu, filedialog, messagebox | |
| import torch | |
| from src.my_utils import predict_with_prost, predict_with_esm | |
| FASTA_FILE_PATH = None # Global or instance variable | |
| def load_fasta_file(): | |
| """ | |
| Opens a file dialog for the user to select a FASTA file and | |
| stores the selected file path in a global variable. | |
| If a file is selected, displays an information message with the file path. | |
| If no file is selected, displays a warning message. | |
| Uses: | |
| - filedialog.askopenfilename for file selection. | |
| - messagebox.showinfo and messagebox.showwarning for user feedback. | |
| Global Variables: | |
| FASTA_FILE_PATH (str): Path to the selected FASTA file. | |
| """ | |
| global FASTA_FILE_PATH # pylint: disable=global-statement | |
| FASTA_FILE_PATH = filedialog.askopenfilename( | |
| filetypes=[("FASTA files", "*.fasta *.fa")], | |
| title="Select a FASTA file" | |
| ) | |
| if FASTA_FILE_PATH: | |
| messagebox.showinfo("File Loaded", f"Loaded file:\n{FASTA_FILE_PATH}") | |
| else: | |
| messagebox.showwarning("No file", "No file was selected.") | |
| def run_prost(): | |
| """ | |
| Runs the protein location prediction process. | |
| Checks if a FASTA file path is provided. If not, displays an error message to the user. | |
| If a FASTA file is loaded, proceeds to run the prediction using the PROST model. | |
| Raises: | |
| Shows a message box error if no FASTA file is loaded. | |
| """ | |
| if not FASTA_FILE_PATH: | |
| messagebox.showerror("Error", "Please load a FASTA file first.") | |
| return | |
| predict_with_prost(FASTA_FILE_PATH) | |
| torch.cuda.empty_cache() | |
| def run_esm300(): | |
| """ | |
| Runs the protein location prediction process. | |
| Checks if a FASTA file path is provided. If not, displays an error message to the user. | |
| If a FASTA file is loaded, proceeds to run the prediction using the PROST model. | |
| Raises: | |
| Shows a message box error if no FASTA file is loaded. | |
| """ | |
| if not FASTA_FILE_PATH: | |
| messagebox.showerror("Error", "Please load a FASTA file first.") | |
| return | |
| predict_with_esm(fasta_path = FASTA_FILE_PATH, | |
| model = 'esmc_300m') | |
| torch.cuda.empty_cache() | |
| def run_esm600(): | |
| """ | |
| Runs the protein location prediction process. | |
| Checks if a FASTA file path is provided. If not, displays an error message to the user. | |
| If a FASTA file is loaded, proceeds to run the prediction using the PROST model. | |
| Raises: | |
| Shows a message box error if no FASTA file is loaded. | |
| """ | |
| if not FASTA_FILE_PATH: | |
| messagebox.showerror("Error", "Please load a FASTA file first.") | |
| return | |
| predict_with_esm(fasta_path = FASTA_FILE_PATH, | |
| model = 'esmc_600m') | |
| torch.cuda.empty_cache() | |
| def menu(): | |
| """ | |
| Displays the main GUI menu for the Protein Tools application. | |
| This function creates a Tkinter window with a menu bar containing 'File' and 'Help' menus, | |
| and buttons for running protein prediction tools and exiting the application. | |
| Menus: | |
| - File: Options to load a FASTA file or close the application. | |
| - Help: Options for welcome information and about dialog. | |
| Buttons: | |
| - Predict with Prost: Runs the Prost prediction tool. | |
| - Predict with ESM C: Placeholder for ESM prediction functionality (not yet implemented). | |
| - Exit: Closes the application. | |
| """ | |
| # root window | |
| root = tk.Tk() | |
| root.geometry('320x200') | |
| root.title('Protein Location Predictor') | |
| # create a menubar | |
| menubar = Menu(root) | |
| root.config(menu=menubar) | |
| # create the file_menu | |
| file_menu = Menu(menubar, tearoff=0) | |
| file_menu.add_command(label='Load FASTA', command=load_fasta_file) | |
| file_menu.add_command(label='Close', command=root.quit) | |
| file_menu.add_separator() | |
| menubar.add_cascade(label="File", menu=file_menu, underline=0) | |
| # help menu | |
| help_menu = Menu(menubar, tearoff=0) | |
| help_menu.add_command(label='Welcome') | |
| help_menu.add_command(label='About...') | |
| menubar.add_cascade(label="Help", menu=help_menu, underline=0) | |
| btn_prost = tk.Button(root, text="Predict with Prost T5", | |
| command=run_prost) #Predict with Prost | |
| btn_prost.pack(pady=5) | |
| btn_esm300 = tk.Button(root, text="Predict with ESM C 300m", | |
| command = run_esm300) #Predict with ESM C 300m | |
| btn_esm300.pack(pady=5) | |
| btn_esm300 = tk.Button(root, text="Predict with ESM C 600m", | |
| command = run_esm600) #Predict with ESM C 600m | |
| btn_esm300.pack(pady=5) | |
| btn_exit = tk.Button(root, text="Exit", command=root.quit) | |
| btn_exit.pack(pady=5) | |
| root.mainloop() | |
| if __name__ == "__main__": | |
| menu() | |
| # End-of-file (EOF) | |