Exemplo n.º 1
0
    def __init__(self, tab, config):
        self.root = tab
        self.config = config

        # 需要保存的参数
        self.input_format = None
        self.choose_ligands_entry = None

        self.output_format = None
        self.gen3d = None
        self.ph = None
        self.is_minimize = None

        self.choose_output_dir_entry = None

        self._create_choose_ligand_frame()
        self._create_output_ligand_frame()

        # 开始转换
        self._create_convert()

        # 帮助按钮
        help_button = HelpButton(root=self.root,
                                 help_text=TAB3_HELP_TEXT,
                                 x=410,
                                 y=300,
                                 width=80)
        create_tooltip(help_button.help_button, "获取帮助")
Exemplo n.º 2
0
    def __init__(self, tab, config):
        self.root = tab
        self.config = config

        # 需要保存的参数
        self.choose_ligand_entry = None
        self.choose_proteins_entry = None
        self.choose_output_entry = None
        self.times_entry = None

        # 不需要保存的参数
        self.docking_time_label = None

        self._choose_ligand_frame()
        self._choose_protein_frame()
        self._choose_output_frame()
        self._choose_docking_config()

        self._start_docking()

        # 帮助按钮
        help_button = HelpButton(root=self.root,
                                 help_text=TAB4_HELP_TEXT,
                                 x=410,
                                 y=300,
                                 width=80)
        create_tooltip(help_button.help_button, "获取帮助")
Exemplo n.º 3
0
    def __init__(self, tab, config):
        self.root = tab
        self.config = config

        # 需要保存的参数
        self.choose_ligand_entry = None
        self.choose_receptor_entry = None
        self.choose_pdbqt_dir_entry = None
        self.choose_scores_entry = None
        self.choose_output_entry = None
        self.choose_extract_folder_entry = None

        # 创建窗体
        self.create_all_config()
        self.create_move_pdbqt()
        self.create_extract_scores()
        self.extract_from_file()

        # 帮助按钮
        help_button = HelpButton(root=self.root,
                                 help_text=TAB5_HELP_TEXT,
                                 x=410,
                                 y=300,
                                 width=80)
        create_tooltip(help_button.help_button, "获取帮助")
Exemplo n.º 4
0
    def _start_docking(self):
        y = 250
        docking_button = SButton(root=self.root, text="开始对接", x=10, y=y)
        create_tooltip(docking_button.button, "使用Vina进行对接")

        self.progress = Progressbar(self.root, mode="determinate")
        self.progress.place(x=100, y=y + 2, width=400)
        create_tooltip(self.progress, "对接进度")

        self.progress_label = SLabel(self.root, text="没有任务", x=510, y=y)
        docking_button.button.bind("<Button-1>", self._docking)

        text_y = 276
        current_protein_frame = Frame(self.root, width=200, height=40)
        current_protein_frame.place(x=10, y=text_y)
        self.current_protein = SLabel(root=current_protein_frame,
                                      text="",
                                      x=0,
                                      y=0)
        current_ligand_frame = Frame(self.root, width=200, height=50)
        current_ligand_frame.place(x=220, y=text_y)
        self.current_ligand = SLabel(root=current_ligand_frame,
                                     text="",
                                     x=0,
                                     y=0)
        current_time_frame = Frame(self.root, width=150, height=50)
        current_time_frame.place(x=430, y=text_y)
        self.current_time = SLabel(root=current_time_frame, text="", x=0, y=0)
Exemplo n.º 5
0
 def create_config_button(self):
     # 脚本配置
     config_button = Button(self.main_window,
                            text="脚本配置",
                            command=self.set_config)
     config_button.place(x=CONFIG_BUTTON_X,
                         y=CONFIG_BUTTON_Y,
                         width=BUTTON_WIDTH)
     create_tooltip(config_button, "设置脚本所需路径")
Exemplo n.º 6
0
 def create_exit_button(self):
     """
     创建退出按钮
     """
     exit_button = Button(self.main_window,
                          text="退出",
                          command=self.save_para)
     exit_button.place(x=EXIT_BUTTON_X, y=EXIT_BUTTON_Y, width=BUTTON_WIDTH)
     create_tooltip(exit_button, "保存参数并退出软件")
Exemplo n.º 7
0
 def _create_convert(self):
     y = 230
     convert_button = SButton(root=self.root, x=10, y=y, text="开始转换")
     create_tooltip(convert_button.button, "开始转换")
     self.progress = Progressbar(self.root, mode="determinate")
     self.progress.place(x=100, y=y + 2, width=400)
     create_tooltip(self.progress, "转换进度")
     self.progress_label = SLabel(self.root, text="没有任务", x=510, y=y)
     convert_button.button.bind("<Button-1>", self._start_convert)
Exemplo n.º 8
0
    def _choose_output_frame(self):
        choose_output_labelframe = LabelFrame(self.root, text="复合物输出")
        choose_output_labelframe.place(x=10, y=190, width=570, height=50)

        choose_output = SButton(root=choose_output_labelframe, text="选择输出文件夹", x=10, y=0)
        create_tooltip(choose_output.button, "选择复合物输出目录")
        self.choose_output_entry = SEntry(root=choose_output_labelframe, textvariable=StringVar(),
                                          text=Configer.get_para("choose_complex_output"),
                                          x=110, y=4, width=450)
        create_tooltip(self.choose_output_entry.entry, "所选的复合物输出目录")
        choose_output.bind_open_dir(entry_text=self.choose_output_entry.textvariable,
                                    title="选择复合物输出的文件夹")
Exemplo n.º 9
0
    def _choose_protein_frame(self):
        choose_protein_labelframe = LabelFrame(self.root, text="选择受体")
        choose_protein_labelframe.place(x=10, y=135, width=570, height=50)

        choose_proteins = SButton(root=choose_protein_labelframe, text="选择受体", x=10, y=0)
        create_tooltip(choose_proteins.button, "选择pdbqt格式的受体")
        self.choose_proteins_entry = SEntry(root=choose_protein_labelframe, textvariable=StringVar(),
                                            text=Configer.get_para("choose_complex_proteins"),
                                            x=110, y=4, width=450)
        create_tooltip(self.choose_proteins_entry.entry, "受体文件")
        choose_proteins.bind_open_file(entry_text=self.choose_proteins_entry.textvariable,
                                       title="选择蛋白受体", file_type="pdbqt")
Exemplo n.º 10
0
    def choose_ligand(self):
        self.ligand_list = Listbox(self.choose_ligand_tab, width=30, height=10)
        self.ligand_list.place(x=10, y=10, width=255, height=150)
        scroll = Scrollbar(self.ligand_list)
        scroll.pack(side=RIGHT, fill=Y)
        self.ligand_list.configure(yscrollcommand=scroll.set)
        scroll.config(command=self.ligand_list.yview)

        pre_button = SButton(self.choose_ligand_tab, "上一步", 10, 170)
        pre_button.button.bind("<Button-1>", self.jump_chain)

        next_button = SButton(self.choose_ligand_tab, "提取配体", 165, 170)
        create_tooltip(next_button.button, "提取选中的配体为pdbqt格式")
        next_button.button.bind("<Button-1>", self.save_ligand)
Exemplo n.º 11
0
    def create_download_receptor(self):
        # frame创建
        download_receptor_labelframe = LabelFrame(self.root, text="下载受体")
        download_receptor_labelframe.place(x=LEFT_X,
                                           y=LEFT_Y,
                                           width=FULL_NOTEBOOK_WIDTH,
                                           height=TAB1_LABEL_FRAME_HEIGHT)

        # 第一排,输入pdbid
        SLabel(download_receptor_labelframe, "PDBID:", x=LEFT_X, y=0)
        self.pdb_id_entry = SEntry(download_receptor_labelframe,
                                   textvariable=StringVar(),
                                   text=Configer.get_para("pdbid"),
                                   x=70,
                                   y=0,
                                   width=50)
        create_tooltip(self.pdb_id_entry.entry, "请输入四位PDB的ID")

        # 第二排,保存位置
        pdb_save_path_button = SButton(download_receptor_labelframe,
                                       text="选择保存的路径",
                                       x=LEFT_X,
                                       y=30)
        create_tooltip(pdb_save_path_button.button, "选择下载受体要保存的位置")
        self.pdb_save_path_entry = SEntry(download_receptor_labelframe,
                                          textvariable=StringVar(),
                                          text=Configer.get_para("pdb_path"),
                                          x=110,
                                          y=34,
                                          width=440)
        create_tooltip(self.pdb_save_path_entry.entry, "文件将要保存的目录,不存在将创建文件夹")
        pdb_save_path_button.bind_open_dir(
            entry_text=self.pdb_save_path_entry.textvariable, title="选择要保存的路径")

        # 第三排,开始下载
        download_pdb_button = SButton(download_receptor_labelframe,
                                      text="开始下载",
                                      x=LEFT_X,
                                      y=60)
        create_tooltip(download_pdb_button.button, "从Protein Data Bank下载受体")
        download_pdb_button.button.bind("<Button-1>", self.download_pdb)
        self.download_progressbar = Progressbar(download_receptor_labelframe,
                                                mode="determinate")
        self.download_progressbar.place(x=100, y=62, width=380)
        create_tooltip(self.download_progressbar, "下载进度")

        self.download_state_label = SLabel(download_receptor_labelframe,
                                           text="没有下载",
                                           x=490,
                                           y=60)
Exemplo n.º 12
0
 def choose_obabel(self):
     y = 50  # python路径
     choose_obabel_path = SButton(self.top,
                                  text="选择obabel.exe的路径",
                                  x=10, y=y)
     create_tooltip(choose_obabel_path.button, "选择obabel.exe文件")
     self.choose_obabel_path_entry = SEntry(root=self.top,
                                            textvariable=StringVar(),
                                            text=Configer.get_para("obabel_path"),
                                            x=150, y=y + 4, width=230)
     create_tooltip(self.choose_obabel_path_entry.entry, "obabel.exe位置")
     choose_obabel_path.bind_open_file(entry_text=self.choose_obabel_path_entry.textvariable,
                                       title="选择obabel.exe",
                                       file_type="exe", parent=self.top)
Exemplo n.º 13
0
    def create_extract_scores(self):
        extract_scores_labelframe = Labelframe(self.root, text="提取分数")
        extract_scores_labelframe.place(x=10, y=155, width=570, height=50)

        choose_score = SButton(root=extract_scores_labelframe,
                               text="选择单个文件",
                               x=10,
                               y=0)
        create_tooltip(choose_score.button, "选择单个打分结果pdbqt文件")
        choose_scores_dir = SButton(root=extract_scores_labelframe,
                                    text="选择文件夹",
                                    x=100,
                                    y=0)
        create_tooltip(choose_scores_dir.button, "选择多个打分结果所在的文件夹")
        self.choose_scores_entry = SEntry(
            root=extract_scores_labelframe,
            textvariable=StringVar(),
            text=Configer.get_para("choose_score_file"),
            x=190,
            y=4,
            width=260)
        create_tooltip(self.choose_scores_entry.entry, "选择的文件/文件夹")
        choose_score.bind_open_file(self.choose_scores_entry.textvariable,
                                    title="选择对接结果pdbqt文件",
                                    file_type="pdbqt")
        choose_scores_dir.bind_open_dir(self.choose_scores_entry.textvariable,
                                        title="选择含有对接结果的文件夹")
        extract_button = SButton(extract_scores_labelframe,
                                 text="提取分数",
                                 x=460,
                                 y=0,
                                 width=90)
        create_tooltip(extract_button.button, "提取分数结果。如果是单个文件直接显示窗口。"
                       "如果选择文件夹,则输出txt文件到选择的文件夹")
        extract_button.button.bind("<Button-1>", self.extract_score)
Exemplo n.º 14
0
    def _choose_docking_config(self):
        choose_config_labelframe = LabelFrame(self.root, text="对接配置")
        choose_config_labelframe.place(x=10, y=190, width=570, height=50)

        self.docking_time_label = SLabel(root=choose_config_labelframe,
                                         text="对接次数:",
                                         x=10,
                                         y=0)

        self.times_entry = SEntry(root=choose_config_labelframe,
                                  textvariable=StringVar(),
                                  text=Configer.get_para("docking_times"),
                                  x=80,
                                  y=0,
                                  width=20)
        create_tooltip(self.times_entry.entry, "每个配体需要对接的次数")
Exemplo n.º 15
0
 def choose_python(self):
     y = 10
     # python路径
     choose_python_path = SButton(self.top,
                                  text="选择ADT的python路径",
                                  x=10, y=y)
     create_tooltip(choose_python_path.button, "必须选择mgltools目录里面的python.exe文件!\n"
                                               "比如:\nC:/mgltools/python.exe")
     self.choose_python_path_entry = SEntry(root=self.top,
                                            textvariable=StringVar(),
                                            text=Configer.get_para("python_path"),
                                            x=150, y=y + 4, width=230)
     create_tooltip(self.choose_python_path_entry.entry, "ADT的python路径")
     choose_python_path.bind_open_file(entry_text=self.choose_python_path_entry.textvariable,
                                       title="选择ADT中的python.exe",
                                       file_type="exe", parent=self.top)
Exemplo n.º 16
0
    def __init__(self, root, help_text, x, y, width):
        """

        :param root: 要放置到哪里
        :param help_text: 弹出提示框显示的文字
        :param x: 位置x
        :param y: 位置y
        :param width: 按钮宽度
        """
        self.root = root
        self.help_text = help_text
        self.x = x
        self.y = y
        self.width = width

        self.help_button = Button(self.root, text="帮助", command=self.show_help)
        create_tooltip(self.help_button, "获取帮助")
        self.help_button.place(x=self.x, y=self.y, width=self.width)
Exemplo n.º 17
0
    def extract_from_file(self):
        extract_from_file_labelframe = Labelframe(self.root, text="从文件提取配体")
        extract_from_file_labelframe.place(x=10, y=210, width=570, height=85)

        choose_file_button = SButton(extract_from_file_labelframe,
                                     text="选择输入文件",
                                     x=10,
                                     y=0)
        create_tooltip(choose_file_button.button, "选择输入的txt文件")
        self.choose_output_entry = SEntry(extract_from_file_labelframe,
                                          textvariable=StringVar(),
                                          text=Configer.get_para("output_txt"),
                                          x=100,
                                          y=3,
                                          width=450)
        create_tooltip(self.choose_output_entry.entry, "选择的txt文件")
        choose_file_button.bind_open_file(
            entry_text=self.choose_output_entry.textvariable,
            title="选择输入的txt文件",
            file_type="txt")

        choose_output_button = SButton(extract_from_file_labelframe,
                                       text="选择提取目录",
                                       x=10,
                                       y=33)
        create_tooltip(choose_output_button.button, "选择提取输出的目录")
        self.choose_extract_folder_entry = SEntry(
            extract_from_file_labelframe,
            textvariable=StringVar(),
            text=Configer.get_para("extract_folder"),
            x=100,
            y=33,
            width=350)
        create_tooltip(self.choose_extract_folder_entry.entry, "选择提取输出的目录")
        choose_output_button.bind_open_dir(
            entry_text=self.choose_extract_folder_entry.textvariable,
            title="选择输出目录")
        extract_button = SButton(extract_from_file_labelframe,
                                 text="提取配体",
                                 x=460,
                                 y=30,
                                 width=90)
        create_tooltip(extract_button.button, "根据输入的文件提取配体")
        extract_button.button.bind("<Button-1>", self.extract_file)
Exemplo n.º 18
0
    def getinfo(self, event):
        # 获取受体
        receptor = self.choose_raw_receptor_entry.textvariable.get()

        if not receptor.endswith(".pdb"):
            messagebox.showerror("错误!", "只支持查看单个pdb格式的文件信息!")
            return
        if Check.check_path(receptor):
            messagebox.showerror("错误", "受体路径不能包含空格!")
            return
        if not os.path.exists(receptor):
            messagebox.showerror("错误", "所选文件或者文件夹不存在!")
            return

        structure = ReceptorProcessor.get_structure(receptor)

        window = STopLevel(self.root, 500, 400, "PDB信息").toplevel
        wrap_length = 480

        s_name = structure.header["name"]
        SLabel(window, "受体名称:\n" + s_name, 10,
               10).label.configure(wraplength=wrap_length)

        s_redate = structure.header["release_date"]
        SLabel(window, "发布时间:\n" + s_redate, 10,
               70).label.configure(wraplength=wrap_length)

        s_method = structure.header["structure_method"]
        SLabel(window, "方法:\n" + s_method, 10,
               130).label.configure(wraplength=wrap_length)

        s_resolution = str(structure.header["resolution"])
        SLabel(window, "分辨率:\n" + s_resolution + "埃", 10,
               190).label.configure(wraplength=wrap_length)

        s_refe = structure.header["journal_reference"]
        reference = SLabel(window, "参考文献:\n" + s_refe, 10, 250).label
        reference.configure(wraplength=wrap_length)
        doi_url = "http://www.doi.org/" + s_refe.strip().split(" ")[-1]
        open_url_button = SButton(window, "打开文献网页", 75, 245)
        open_url_button.button.configure(
            command=lambda: webbrowser.open(doi_url))
        create_tooltip(open_url_button.button, "使用默认浏览器打开文献链接")
Exemplo n.º 19
0
    def __init__(self, tab, config):
        self.root = tab
        self.config = config

        # 需要保存的参数
        self.input_format = None
        self.complex_ligand_num_entry = None
        self.remain_ligand = None
        self.choose_ligands_entry = None
        self.choose_output_entry = None
        self.extract_output_entry = None

        self._choose_ligand_frame()
        self._choose_protein_frame()
        self._choose_output_frame()
        self._start_join()

        # 帮助按钮
        help_button = HelpButton(root=self.root, help_text=TAB6_HELP_TEXT, x=410, y=300, width=80)
        create_tooltip(help_button.help_button, "获取帮助")
Exemplo n.º 20
0
    def create_all_config(self):
        all_config_labelframe = LabelFrame(self.root, text="受体全局对接")
        all_config_labelframe.place(x=10, y=10, width=570, height=85)

        choose_ligand = SButton(all_config_labelframe, text="选择配体", x=10, y=0)
        create_tooltip(choose_ligand.button, "选择参考配体pdbqt文件")
        self.choose_ligand_entry = SEntry(
            all_config_labelframe,
            textvariable=StringVar(),
            text=Configer.get_para("refer_ligand"),
            x=100,
            y=3,
            width=450)
        create_tooltip(self.choose_ligand_entry.entry, "选择的参考配体")
        choose_ligand.bind_open_file(self.choose_ligand_entry.textvariable,
                                     title="选择配体pdbqt文件",
                                     file_type="pdbqt")

        choose_receptor = SButton(all_config_labelframe,
                                  text="选择受体",
                                  x=10,
                                  y=30)
        create_tooltip(choose_receptor.button, "选择需要全局搜索的单/多个受体文件夹,具体请看帮助或者教程")
        self.choose_receptor_entry = SEntry(
            all_config_labelframe,
            textvariable=StringVar(),
            text=Configer.get_para("refer_receptor"),
            x=100,
            y=33,
            width=350)
        create_tooltip(self.choose_receptor_entry.entry, "选择的参考")
        choose_receptor.bind_open_dir(
            entry_text=self.choose_receptor_entry.textvariable,
            title="选择单/多个受体所在文件夹")
        generate_button = SButton(all_config_labelframe,
                                  text="生成文件",
                                  x=460,
                                  y=30,
                                  width=90)
        create_tooltip(generate_button.button, "生成全局对接的多个config文件")
        generate_button.button.bind("<Button-1>", self.generate_configs)
Exemplo n.º 21
0
    def create_move_pdbqt(self):
        move_pdbqt_labelframe = Labelframe(self.root, text="移动受体文件")
        move_pdbqt_labelframe.place(x=10, y=100, width=570, height=50)

        choose_pdbqt_dir = SButton(move_pdbqt_labelframe,
                                   text="选择文件",
                                   x=10,
                                   y=0)
        create_tooltip(choose_pdbqt_dir.button, "选择包含pdbqt受体的文件夹")
        self.choose_pdbqt_dir_entry = SEntry(
            move_pdbqt_labelframe,
            textvariable=StringVar(),
            text=Configer.get_para("pdbqt_dir"),
            x=100,
            y=3,
            width=350)
        create_tooltip(self.choose_pdbqt_dir_entry.entry, "选择包含pdbqt受体的文件夹")
        choose_pdbqt_dir.bind_open_dir(
            self.choose_pdbqt_dir_entry.textvariable, title="选择有pdbqt受体的文件夹")
        move_button = SButton(move_pdbqt_labelframe,
                              text="生成文件",
                              x=460,
                              y=0,
                              width=90)
        create_tooltip(move_button.button, "开始移动pdbqt文件并重命名为preped.pdbqt")
        move_button.button.bind("<Button-1>", self.move_file)
Exemplo n.º 22
0
    def vina_validate(self, event):
        self.windows = STopLevel(self.root,
                                 win_x=570,
                                 win_y=50,
                                 title="计算RMSD").toplevel

        # 选择目录
        input_button = SButton(self.windows, text="选择验证目录", x=10, y=10)
        create_tooltip(input_button.button, "选择要验证的目录。该目录必须包含配体和受体!")
        self.input_path_entry = SEntry(
            self.windows,
            textvariable=StringVar(),
            text=Configer.get_para("validate_folder")
            if self.validate_folder == "" else self.validate_folder,
            x=100,
            y=13,
            width=360)
        create_tooltip(self.input_path_entry.entry, "选择的要验证的目录")
        input_button.bind_open_dir(
            entry_text=self.input_path_entry.textvariable,
            title="选择要验证的目录",
            parent=self.windows)

        validate_button = SButton(self.windows, "开始验证", x=465, y=10)
        create_tooltip(validate_button.button, "开始验证Vina方案")
        validate_button.button.bind("<Button-1>", self._vina_validate)

        # 关闭窗口保存参数
        self.windows.protocol(
            "WM_DELETE_WINDOW", lambda: self.save_validate(
                self.windows, self.input_path_entry.textvariable.get()))
Exemplo n.º 23
0
    def _choose_ligand_frame(self):
        choose_ligand_labelframe = LabelFrame(self.root, text="选择配体")
        choose_ligand_labelframe.place(x=10, y=10, width=570, height=50)

        choose_ligands = SButton(root=choose_ligand_labelframe,
                                 text="选择单/多个配体",
                                 x=10,
                                 y=0)
        create_tooltip(choose_ligands.button, "选择单/多个配体,配体格式必须是pdbqt!")
        choose_ligand_dir = SButton(root=choose_ligand_labelframe,
                                    text="选择文件夹",
                                    x=110,
                                    y=0)
        create_tooltip(choose_ligand_dir.button, "选择包含pdbqt格式配体的文件夹。")
        self.choose_ligand_entry = SEntry(
            root=choose_ligand_labelframe,
            textvariable=StringVar(),
            text=Configer.get_para("choose_docking_ligands"),
            x=200,
            y=4,
            width=360)
        create_tooltip(self.choose_ligand_entry.entry, "选择的配体或者包含配体的文件夹")
        choose_ligands.bind_open_files(
            entry_text=self.choose_ligand_entry.textvariable,
            title="选择单/多个配体",
            file_type="pdbqt")
        choose_ligand_dir.bind_open_dir(
            entry_text=self.choose_ligand_entry.textvariable,
            title="选择包含pdbqt配体的文件夹")
Exemplo n.º 24
0
    def __init__(self, tab: Frame, config: Configer):
        """
        创建一个选项卡,需要父窗口和用来保存配置的配置器
        :param tab: 选项卡
        :param config:  配置器
        """
        # 变量
        self.root = tab
        self.config = config

        # 需要保存的参数
        self.center_x = None
        self.center_y = None
        self.center_z = None
        self.size_x = None
        self.size_y = None
        self.size_z = None

        self.exhaustiveness = None
        self.num_modes = None
        self.energy_range = None

        self.read_config_entry = None
        self.choose_raw_ligand_entry = None

        self.output_config_entry = None

        # 创建分块内容
        self._create_main_frame()
        self._create_option_frame()
        self._create_tools_frame()
        self._create_output_frame()

        # 帮助按钮
        help_button = HelpButton(root=self.root,
                                 help_text=TAB2_HELP_TEXT,
                                 x=410,
                                 y=300,
                                 width=BUTTON_WIDTH)
        create_tooltip(help_button.help_button, "获取帮助")
Exemplo n.º 25
0
    def __init__(self, tab, config: Configer):
        self.root = tab
        self.config = config

        self.windows = None

        # 需要保存的参数
        self.input_smi = ""
        self.output_path = ""

        self.single_ligand = ""
        self.sec_ligands = ""
        self.rotate_method = ""
        self.reorder_method = ""

        self.validate_folder = ""

        # 需要保存的输入框
        self.input_smi_entry = None
        self.output_path_entry = None

        self.single_ligand_entry = None
        self.sec_ligands_entry = None
        self.rotate_method_box = None
        self.reorder_method_box = None

        self.input_path_entry = None

        # 创建按钮
        self.create_buttons()

        # 帮助按钮
        help_button = HelpButton(root=self.root,
                                 help_text=TAB8_HELP_TEXT,
                                 x=410,
                                 y=300,
                                 width=80)
        create_tooltip(help_button.help_button, "获取帮助")
Exemplo n.º 26
0
    def _choose_protein_frame(self):
        choose_protein_labelframe = LabelFrame(self.root, text="选择受体")
        choose_protein_labelframe.place(x=10, y=70, width=570, height=50)

        choose_proteins = SButton(root=choose_protein_labelframe,
                                  text="选择受体文件夹",
                                  x=10,
                                  y=0)
        create_tooltip(
            choose_proteins.button, "选择受体文件夹。受体必须命名为preped.pdbqt\n"
            "单个受体请选择包含这个受体的文件夹\n"
            "多个受体请选择包含多个受体文件夹的文件夹\n"
            "详情见帮助及教程")
        self.choose_proteins_entry = SEntry(
            root=choose_protein_labelframe,
            textvariable=StringVar(),
            text=Configer.get_para("choose_docking_proteins"),
            x=110,
            y=4,
            width=450)
        create_tooltip(self.choose_proteins_entry.entry, "包含受体的文件夹")
        choose_proteins.bind_open_dir(
            entry_text=self.choose_proteins_entry.textvariable,
            title="选择包含pdbqt受体的文件夹")
Exemplo n.º 27
0
    def _create_choose_ligand_frame(self):
        choose_ligand_labelframe = LabelFrame(self.root, text="输入选项")
        choose_ligand_labelframe.place(x=10, y=10, width=570, height=85)

        # 选择输入配体的格式
        SLabel(root=choose_ligand_labelframe, text="输入格式:", x=10, y=0)
        input_format_text = ("mol", "sdf", "mol2", "pdb", "pdbqt", "xyz")
        self.input_format = SCombbox(
            root=choose_ligand_labelframe,
            textvariable=StringVar(),
            values=input_format_text,
            default_value=Configer.get_para("input_format"),
            x=80,
            y=0,
            width=60)
        create_tooltip(self.input_format.combobox, "导入配体的格式")

        choose_ligands_button = SButton(choose_ligand_labelframe,
                                        text="选择单/多个配体",
                                        x=10,
                                        y=30)
        create_tooltip(choose_ligands_button.button, "选择一个或者多个所选格式的配体")
        choose_ligand_dir_button = SButton(choose_ligand_labelframe,
                                           text="选择文件夹",
                                           x=110,
                                           y=30)
        create_tooltip(choose_ligand_dir_button.button,
                       "选择包含配体的文件夹,匹配其中所选格式的文件")
        self.choose_ligands_entry = SEntry(
            root=choose_ligand_labelframe,
            textvariable=StringVar(),
            text=Configer.get_para("choose_ligands"),
            x=200,
            y=34,
            width=360)
        create_tooltip(self.choose_ligands_entry.entry, "所选的配体或者包含配体的目录")
        choose_ligands_button.bind_open_files(
            entry_text=self.choose_ligands_entry.textvariable,
            title="选择单/多个配体",
            file_type=self.input_format.textvariable)
        choose_ligand_dir_button.bind_open_dir(
            entry_text=self.choose_ligands_entry.textvariable,
            title="选择包含配体文件的文件夹")
Exemplo n.º 28
0
    def gen_smi(self, event):
        self.windows = STopLevel(self.root,
                                 win_x=570,
                                 win_y=100,
                                 title="分子生成器").toplevel

        # 输入smi
        SLabel(self.windows, text="输入smi", x=10, y=10)
        self.input_smi_entry = SEntry(self.windows,
                                      textvariable=StringVar(),
                                      text=Configer.get_para("input_smi") if
                                      self.input_smi == "" else self.input_smi,
                                      x=80,
                                      y=13,
                                      width=470)
        create_tooltip(self.input_smi_entry.entry, "输入含有[R]的smi文本")

        # 输出目录
        output_button = SButton(self.windows, text="选择输出目录", x=10, y=50)
        create_tooltip(output_button.button, "选择衍生物输出的目录")
        self.output_path_entry = SEntry(
            self.windows,
            textvariable=StringVar(),
            text=Configer.get_para("mol_output_path")
            if self.output_path == "" else self.output_path,
            x=100,
            y=53,
            width=360)
        create_tooltip(self.output_path_entry.entry, "选择衍生物mol的输出目录")
        output_button.bind_open_dir(
            entry_text=self.output_path_entry.textvariable,
            title="选择衍生物输出目录",
            parent=self.windows)

        gen_button = SButton(self.windows, "生成衍生物", x=465, y=50)
        create_tooltip(gen_button.button, "开始生成衍生物")
        gen_button.button.bind("<Button-1>", self._gen_smi)

        # 关闭窗口保存参数
        self.windows.protocol(
            "WM_DELETE_WINDOW", lambda: self.save_smi(
                self.windows, self.input_smi_entry.textvariable.get(),
                self.output_path_entry.textvariable.get()))
Exemplo n.º 29
0
    def _create_option_frame(self):
        option_label_frame = LabelFrame(self.root, text="可选")
        option_label_frame.place(x=340, y=10, width=240, height=120)

        # exhaustiveness
        SLabel(option_label_frame, text="exhaustiveness = ", x=10, y=5)
        self.exhaustiveness = SEntry(option_label_frame,
                                     textvariable=StringVar(),
                                     text=Configer.get_para("exhaustiveness"),
                                     x=140,
                                     y=5,
                                     width=20)
        create_tooltip(self.exhaustiveness.entry, "搜索度,越大耗时越长,建议保持默认")

        # num_modes
        SLabel(option_label_frame, text="num_modes = ", x=10, y=35)
        self.num_modes = SEntry(option_label_frame,
                                textvariable=StringVar(),
                                text=Configer.get_para("num_modes"),
                                x=140,
                                y=35,
                                width=20)
        create_tooltip(self.num_modes.entry, "最多生成多少种结合模式")

        # energy_range
        SLabel(option_label_frame, text="energy_range = ", x=10, y=65)
        self.energy_range = SEntry(option_label_frame,
                                   textvariable=StringVar(),
                                   text=Configer.get_para("energy_range"),
                                   x=140,
                                   y=65,
                                   width=20)

        create_tooltip(self.energy_range.entry, "最大最小结合模式能量差")

        # 恢复默认值
        default_button = SButton(option_label_frame,
                                 text="默认",
                                 x=170,
                                 y=62,
                                 width=60)
        default_button.button.bind("<Button-1>", self._change_default)
        create_tooltip(default_button.button, "恢复默认值")
Exemplo n.º 30
0
    def create_buttons(self):
        gen_smi_button = SButton(self.root, text="分子生成器", x=10, y=10)
        create_tooltip(gen_smi_button.button, "根据smi生成不同取代基衍生物")
        gen_smi_button.button.bind("<Button-1>", self.gen_smi)

        cal_rmsd_button = SButton(self.root, text="计算小分子RMSD", x=110, y=10)
        create_tooltip(cal_rmsd_button.button, "计算两个小分子之间的RMSD值。")
        cal_rmsd_button.button.bind("<Button-1>", self.cal_rmsd)

        vina_validate_button = SButton(self.root, text="Vina一键验证", x=230, y=10)
        create_tooltip(vina_validate_button.button,
                       "一键验证某个含有配体的蛋白是否可以用于Vina对接。")
        vina_validate_button.button.bind("<Button-1>", self.vina_validate)