示例#1
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)
示例#2
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")
示例#3
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)
示例#4
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)
示例#5
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)
示例#6
0
    def _create_tools_frame(self):
        tools_frame = LabelFrame(self.root, text="工具")
        tools_frame.place(x=10, y=140, width=570, height=100)

        # 读取配置文件
        read_config_button = SButton(tools_frame, "读取配置文件", 10, 10)
        create_tooltip(read_config_button.button, "必须选择config.txt文件!")
        self.read_config_entry = SEntry(root=tools_frame,
                                        textvariable=StringVar(),
                                        text=Configer.get_para("read_config"),
                                        x=100,
                                        y=14,
                                        width=360)
        create_tooltip(self.read_config_entry.entry, "你选择的config.txt文件位置")
        read_config_button.bind_open_file(
            entry_text=self.read_config_entry.textvariable,
            title="请选择config.txt文件",
            file_type="txt")
        read_button = SButton(tools_frame, "读取到参数", 470, 10)
        create_tooltip(read_button.button, "读取到上方")
        read_button.button.bind("<Button-1>", self.read_config)

        # 自动生成盒子
        choose_raw_ligand_button = SButton(tools_frame, "读取共晶配体", 10, 40)
        create_tooltip(choose_raw_ligand_button.button, "必须选择共晶配体pdbqt文件!")
        self.choose_raw_ligand_entry = SEntry(
            root=tools_frame,
            textvariable=StringVar(),
            text=Configer.get_para("choose_raw_ligand"),
            x=100,
            y=44,
            width=360)
        choose_raw_ligand_button.bind_open_file(
            entry_text=self.choose_raw_ligand_entry.textvariable,
            title="请选择“共晶配体”PDBQT文件!",
            file_type="pdbqt")
        create_tooltip(self.choose_raw_ligand_entry.entry, "你选择的共晶配体pdbqt文件位置")
        gen_box_button = SButton(tools_frame, "计算对接位点", 470, 40)
        create_tooltip(gen_box_button.button, "自动计算对接位点,该对接位点为共晶配体的"
                       "最小外切正方体,结果仅供参考。")
        gen_box_button.button.bind("<Button-1>", self.gen_box)
示例#7
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)
示例#8
0
    def create_prepared_receptor(self):
        # 总框架
        prepared_receptor_labelframe = LabelFrame(self.root, text="准备受体")
        prepared_receptor_labelframe.place(x=LEFT_X,
                                           y=130,
                                           width=FULL_NOTEBOOK_WIDTH,
                                           height=170)

        # 第一排,选择受体
        choose_raw_receptor_button = SButton(prepared_receptor_labelframe,
                                             text="选择单个受体",
                                             x=LEFT_X,
                                             y=0)
        create_tooltip(choose_raw_receptor_button.button, "选择要进行准备的单个pdb受体")

        choose_raw_receptors_button = SButton(prepared_receptor_labelframe,
                                              text="选择多个受体",
                                              x=LEFT_X + 90,
                                              y=0)
        create_tooltip(choose_raw_receptors_button.button,
                       "选择要进行准备的包含多个pdb受体的文件夹")

        self.choose_raw_receptor_entry = SEntry(
            prepared_receptor_labelframe,
            textvariable=StringVar(),
            text=Configer.get_para("raw_receptor_path"),
            x=190,
            y=3,
            width=270)
        create_tooltip(self.choose_raw_receptor_entry.entry, "选择的受体")

        # 绑定打开事件
        choose_raw_receptor_button.bind_open_file(
            entry_text=self.choose_raw_receptor_entry.textvariable,
            title="选择受体pdb文件",
            file_type="pdb")
        choose_raw_receptors_button.bind_open_dir(
            entry_text=self.choose_raw_receptor_entry.textvariable,
            title="选择包含pdb受体文件的文件夹")

        get_info_button = SButton(prepared_receptor_labelframe,
                                  text="受体信息",
                                  x=470,
                                  y=0)
        get_info_button.button.bind("<Button-1>", self.getinfo)
        create_tooltip(get_info_button.button, "查看受体信息")

        # 第二排,提取配体保存的路径
        ligand_save_path_button = SButton(prepared_receptor_labelframe,
                                          text="配体输出路径",
                                          x=10,
                                          y=30)
        create_tooltip(ligand_save_path_button.button, "选择提取的配体要保存的位置")
        self.ligand_save_path_entry = SEntry(
            prepared_receptor_labelframe,
            textvariable=StringVar(),
            text=Configer.get_para("extract_ligand_path"),
            x=100,
            y=33,
            width=360)
        create_tooltip(self.ligand_save_path_entry.entry,
                       "提取的配体保存的目录,不存在将创建文件夹")
        ligand_save_path_button.bind_open_dir(
            entry_text=self.ligand_save_path_entry.textvariable,
            title="选择要保存的路径")

        save_ligand_button = SButton(prepared_receptor_labelframe,
                                     text="提取配体",
                                     x=470,
                                     y=30)
        save_ligand_button.button.bind("<Button-1>", self.extract_ligand)
        create_tooltip(save_ligand_button.button, "提取受体中的配体")

        # 第三排,准备受体
        save_prepared_receptor_button = SButton(prepared_receptor_labelframe,
                                                text="受体输出路径",
                                                x=LEFT_X,
                                                y=60)
        create_tooltip(save_prepared_receptor_button.button, "选择准备后的受体保存路径")
        self.choose_prepare_output_path = SEntry(
            prepared_receptor_labelframe,
            textvariable=StringVar(),
            text=Configer.get_para("preped_path"),
            x=100,
            y=63,
            width=360)
        create_tooltip(self.choose_prepare_output_path.entry, "准备后的受体输出目录")
        save_prepared_receptor_button.bind_open_dir(
            self.choose_prepare_output_path.textvariable, title="选择输出目录")

        prepare_receptor_button = SButton(prepared_receptor_labelframe,
                                          text="准备受体",
                                          x=470,
                                          y=60)
        prepare_receptor_button.button.bind("<Button-1>",
                                            self.prepared_receptor)
        create_tooltip(prepare_receptor_button.button, "开始准备受体")

        # 第四排,准备选项
        fourth_y = 90
        SLabel(prepared_receptor_labelframe,
               text="ADT参数",
               x=LEFT_X,
               y=fourth_y)
        SLabel(prepared_receptor_labelframe, text="修复", x=100, y=fourth_y)
        fix_text = ("bonds_hydrogens", "bonds", "hydrogens", "checkhydrogens",
                    "None")
        self.fix_method = SCombbox(
            root=prepared_receptor_labelframe,
            textvariable=StringVar(),
            values=fix_text,
            default_value=Configer.get_para("fix_method"),
            x=135,
            y=fourth_y,
            width=140)
        create_tooltip(
            self.fix_method.combobox, "使用ADT方法修复受体\n"
            "bonds_hydrogens:修复键级和加氢\n"
            "bonds:修复键级\n"
            "hydrogens:加氢\n"
            "checkhydrogens:没有氢的地方加氢\n"
            "None:不进行修复")
        self.preserve_charges = SCheckbutton(
            prepared_receptor_labelframe,
            text="保留电荷",
            variable=StringVar(),
            value=Configer.get_para("preserve_charges"),
            x=290,
            y=fourth_y)
        create_tooltip(self.preserve_charges.checkbutton,
                       "勾选则保留输入电荷,不勾选添加gasteiger电荷")
        SLabel(prepared_receptor_labelframe, text="|", x=380, y=fourth_y - 2)
        self.is_fix_receptor = SCheckbutton(
            prepared_receptor_labelframe,
            text="Biopython功能",
            variable=StringVar(),
            value=Configer.get_para("fix_receptor"),
            x=400,
            y=fourth_y)
        create_tooltip(
            self.is_fix_receptor.checkbutton, "只针对单个受体。可以用来检测同源链,提取特定链,"
            "修复受体(修复断链等)。"
            "具体修复方法参见biopython官方文档")

        # 第五排,清理格式
        fifth_y = 120
        SLabel(prepared_receptor_labelframe, text="受体处理", x=LEFT_X, y=fifth_y)
        self.nphs = SCheckbutton(prepared_receptor_labelframe,
                                 text="nphs",
                                 variable=StringVar(),
                                 value=Configer.get_para("nphs"),
                                 x=LEFT_X + 90,
                                 y=fifth_y)
        create_tooltip(self.nphs.checkbutton, "合并非极性氢")
        self.lps = SCheckbutton(prepared_receptor_labelframe,
                                text="lps",
                                variable=StringVar(),
                                value=Configer.get_para("lps"),
                                x=LEFT_X + 150,
                                y=fifth_y)
        create_tooltip(self.lps.checkbutton, "合并电荷,去除孤对电子")
        self.waters = self.waters = SCheckbutton(
            prepared_receptor_labelframe,
            text="waters",
            variable=StringVar(),
            value=Configer.get_para("waters"),
            x=LEFT_X + 200,
            y=fifth_y)
        create_tooltip(self.waters.checkbutton, "去除水")
        self.nonstdres = self.nonstdres = SCheckbutton(
            prepared_receptor_labelframe,
            text="nonstdres",
            variable=StringVar(),
            value=Configer.get_para("nonstdres"),
            x=LEFT_X + 270,
            y=fifth_y)
        create_tooltip(self.nonstdres.checkbutton, "去除非标准氨基酸链(核酸等)")
示例#9
0
    def cal_rmsd(self, event):
        self.windows = STopLevel(self.root,
                                 win_x=570,
                                 win_y=130,
                                 title="计算RMSD").toplevel

        # 参考配体
        single_ligand_button = SButton(self.windows, text="选择参考配体", x=10, y=10)
        create_tooltip(single_ligand_button.button, "选择一个参考配体,只支持xyz格式")
        self.single_ligand_entry = SEntry(
            self.windows,
            textvariable=StringVar(),
            text=Configer.get_para("single_ligand")
            if self.single_ligand == "" else self.single_ligand,
            x=100,
            y=13,
            width=450)
        create_tooltip(self.single_ligand_entry.entry, "选择的参考配体")
        single_ligand_button.bind_open_file(
            entry_text=self.single_ligand_entry.textvariable,
            title="选择参考配体",
            file_type="xyz",
            parent=self.windows)

        # 比较配体
        sec_ligand_button = SButton(self.windows, text="选择第二个配体", x=10, y=50)
        create_tooltip(sec_ligand_button.button, "选择需要比较的单个配体")
        sec_ligands_button = SButton(self.windows, text="选择文件夹", x=110, y=50)
        create_tooltip(sec_ligands_button.button, "选择第二个配体所在的文件夹")

        self.sec_ligands_entry = SEntry(
            self.windows,
            textvariable=StringVar(),
            text=Configer.get_para("sec_ligands")
            if self.sec_ligands == "" else self.sec_ligands,
            x=200,
            y=53,
            width=350)
        create_tooltip(self.sec_ligands_entry.entry, "选择需要比较的配体")
        sec_ligand_button.bind_open_file(
            entry_text=self.sec_ligands_entry.textvariable,
            title="选择需要比较的配体",
            file_type="xyz",
            parent=self.windows)
        sec_ligands_button.bind_open_dir(
            entry_text=self.sec_ligands_entry.textvariable,
            title="选择需要比较的配体所在的文件夹",
            parent=self.windows)

        SLabel(root=self.windows, text="旋转方法", x=10, y=90)
        rotate_method_text = ("none", "kabsch", "quaternion")
        self.rotate_method_box = SCombbox(
            root=self.windows,
            textvariable=StringVar(),
            values=rotate_method_text,
            default_value=Configer.get_para("rotate_method")
            if self.rotate_method == "" else self.rotate_method,
            x=70,
            y=90,
            width=85)
        create_tooltip(self.rotate_method_box.combobox, "是否旋转原子和旋转方法")

        SLabel(root=self.windows, text="原子对齐方法", x=170, y=90)
        reorder_method_text = ("hungarian", "distance")
        self.reorder_method_box = SCombbox(
            root=self.windows,
            textvariable=StringVar(),
            values=reorder_method_text,
            default_value=Configer.get_para("reorder_method")
            if self.reorder_method == "" else self.reorder_method,
            x=260,
            y=90,
            width=85)
        create_tooltip(self.rotate_method_box.combobox, "是否旋转原子和旋转方法")

        rmsd_button = SButton(self.windows, "计算RMSD", x=465, y=90)
        create_tooltip(rmsd_button.button, "计算RMSD")
        rmsd_button.button.bind("<Button-1>", self._cal_rmsd)

        # 关闭窗口保存参数
        self.windows.protocol(
            "WM_DELETE_WINDOW", lambda: self.save_rmsd(
                self.windows, self.single_ligand_entry.textvariable.get(),
                self.sec_ligands_entry.textvariable.get(),
                self.rotate_method_box.textvariable.get(),
                self.reorder_method_box.textvariable.get()))