示例#1
0
    def Temporary_Immunity(self):
        self.hide()
        tIFrame = Toplevel()
        tIFrame.title("SIR WITH TEMPORARY IMMUNITY")
        tIFrame.geometry("700x800")
        # self.top.transient(self)
        g = Pmw.Blt.Graph(tIFrame)
        g.pack(expand=1, fill="both")
        E = zeros([2, 1])
        A = zeros([2, 2])
        C = zeros([2, 1])
        A = zeros([2, 2])
        B = zeros([2, 2])
        E = zeros([2, 1])
        C = zeros([2, 1])
        # -------------------------------------------------------------------------------------------------------------------------------------------------------
        sus = Pmw.EntryField(
            tIFrame,
            labelpos="w",
            value="0.0",
            label_text="Initial Susceptibles :",
            validate={"validator": "real"},
        )
        sus.pack(expand=1, padx=5, pady=5)
        Infec = Pmw.EntryField(
            tIFrame,
            labelpos="w",
            value="0.0",
            label_text="Initial Infectives :",
            validate={"validator": "real"},
        )
        Infec.pack(expand=1, padx=5, pady=5)
        contact = Pmw.EntryField(
            tIFrame,
            labelpos="w",
            value="0.0",
            label_text="Contact Rate (k) :",
            validate={"validator": "real"},
        )
        contact.pack(expand=1, padx=5, pady=5)
        Removal = Pmw.EntryField(
            tIFrame,
            labelpos="w",
            value="0.0",
            label_text=" Removal  Rate  :",
            validate={"validator": "real"},
        )
        Removal.pack(expand=1, padx=10, pady=5)
        time_interval = Pmw.EntryField(
            tIFrame,
            labelpos="w",
            value="0",
            label_text=" Time    Interval :",
            validate={"validator": "numeric"},
        )
        time_interval.pack(expand=1, padx=5, pady=5)
        death_rate = Pmw.EntryField(
            tIFrame,
            labelpos="w",
            value="0.0",
            label_text=" Death  Rate (d) :",
            validate={"validator": "real"},
        )
        death_rate.pack(expand=1, padx=10, pady=5)
        immunity = Pmw.EntryField(
            tIFrame,
            labelpos="w",
            value="0.00",
            label_text="  Immunity Rate:",
            validate={"validator": "real"},
        )
        immunity.pack(expand=1, padx=10, pady=10)
        # --------------------------------------------------------------------------------------------------------------------------------------------------------

        # self.top.transient(self)
        # self.wButton.config(state='disabled')
        def retrive():
            k1 = contact.get()
            k = float(k1)
            ddelta = float(death_rate.get())
            aalpha = float(immunity.get())
            ggamma = float(Removal.get())
            N = int(time_interval.get())
            s0 = float(sus.get())
            I0 = float(Infec.get())
            A[0][0] = 0
            A[0][1] = -k
            A[1][0] = k
            A[1][1] = 0
            B[0][0] = 0
            B[0][1] = 0
            B[1][0] = 0
            B[1][1] = 0
            E[0][0] = -(ddelta + aalpha)
            E[1][0] = -(ggamma + ddelta + +aalpha)
            C[0][0] = (ddelta + aalpha) * (1 + aalpha / k)
            C[1][0] = 0

            def f1(s1, I1):
                s_dot = (
                    s1 * E[0][0]
                    + A[0][0] * (s1 ** 2)
                    + A[0][1] * s1 * I1
                    + B[0][0] * s1
                    + B[0][1] * I1
                    + C[0][0]
                )
                return s_dot

            def f2(s1, I1):
                I_dot = (
                    I1 * E[1][0]
                    + A[1][1] * (I1 ** 2)
                    + A[1][0] * s1 * I1
                    + B[1][0] * s1
                    + B[1][1] * I1
                    + C[1][0]
                )
                return I_dot

            # =========RATE OF CHANGE OF THE MODEL WITH RESPECT TO TIME AND DECLARATON OF CONSTANTS================================================================
            t = arange(0, N, 0.02455)
            s1 = zeros(len(t))
            I1 = zeros(len(t))
            s1[0] = s0
            I1[0] = I0
            h = 0.01

            # ==========ITERATION FOR A GIVEN TIME INTERVAL=======================================================================================================

            for n in range(len(t) - 1):
                s1[n + 1] = s1[n] + h * (f1(s1[n], I1[n]))
                I1[n + 1] = I1[n] + h * (f2(s1[n], I1[n]))
            x_ = tuple(t)
            y_ = tuple(s1)
            z_ = tuple(I1)
            g.configure(
                title="Susceptible and Infectives  against time for SIR with Temporary Immunity"
            )
            g.line_create(
                "S(t) Vs t", xdata=x_, color="red", ydata=y_, linewidth=2, symbol=""
            )
            g.line_create(
                "I(t) Vs t", xdata=x_, color="orange", ydata=z_, linewidth=2, symbol=""
            )

        def postscript():
            g.postscript_output(fileName="HelloUser1.ps", decorations="no")

        def newFile():
            for name in g.element_names():
                g.element_delete(name)
            contact.setentry("")
            Removal.setentry("")
            time_interval.setentry("")
            Infec.setentry("")
            sus.setentry("")
            immunity.setentry("")
            death_rate.setentry("")

        # --------------------------------------------------------------------------------------------------------------------------------------------------------
        buttons = Pmw.ButtonBox(tIFrame, labelpos="w", label_text="Options")
        # buttons = Pmw.ButtonBox(self, labelpos='w', label_text='Options')
        buttons.pack(fill="both", expand=1, padx=10, pady=10)
        buttons.add("GRID", bg="green", command=g.grid_toggle)
        buttons.add("PLOT", bg="green", command=retrive)
        buttons.add("CLEAR", bg="green", command=newFile)
        buttons.add("SAVE", bg="green", command=postscript)
        handler = lambda: self.onCloseOtherFrameT(tIFrame)
        buttons.add("QUIT", bg="red", command=handler)
示例#2
0
    def __init__(self, parent):
        # Create the ScrolledCanvas.
        self.sc = Pmw.ScrolledCanvas(
            parent,
            borderframe=1,
            labelpos='n',
            label_text='ScrolledCanvas',
            usehullsize=1,
            hull_width=400,
            hull_height=300,
        )

        # Create a group widget to contain the scrollmode options.
        w = Pmw.Group(parent, tag_text='Scroll mode')
        w.pack(side='bottom', padx=5, pady=5)

        hmode = Pmw.OptionMenu(
            w.interior(),
            labelpos='w',
            label_text='Horizontal:',
            items=['none', 'static', 'dynamic'],
            command=self.sethscrollmode,
            menubutton_width=8,
        )
        hmode.pack(side='left', padx=5, pady=5)
        hmode.invoke('dynamic')

        vmode = Pmw.OptionMenu(
            w.interior(),
            labelpos='w',
            label_text='Vertical:',
            items=['none', 'static', 'dynamic'],
            command=self.setvscrollmode,
            menubutton_width=8,
        )
        vmode.pack(side='left', padx=5, pady=5)
        vmode.invoke('dynamic')

        buttonBox = Pmw.ButtonBox(parent)
        buttonBox.pack(side='bottom')
        buttonBox.add('yview', text='Show\nyview', command=self.showYView)
        buttonBox.add('scroll', text='Page\ndown', command=self.pageDown)
        buttonBox.add('center', text='Center', command=self.centerPage)

        # Pack this last so that the buttons do not get shrunk when
        # the window is resized.
        self.sc.pack(padx=5, pady=5, fill='both', expand=1)

        self.sc.component('canvas').bind('<1>', self.addcircle)

        testEntry = Tkinter.Entry(parent)
        self.sc.create_line(20, 20, 100, 100)
        self.sc.create_oval(100, 100, 200, 200, fill='green')
        self.sc.create_text(100,
                            20,
                            anchor='nw',
                            text='Click in the canvas\nto draw ovals',
                            font=testEntry.cget('font'))
        button = Tkinter.Button(self.sc.interior(),
                                text='Hello,\nWorld!\nThis\nis\na\nbutton.')
        self.sc.create_window(200, 200, anchor='nw', window=button)

        # Set the scroll region of the canvas to include all the items
        # just created.
        self.sc.resizescrollregion()

        self.colours = ('red', 'green', 'blue', 'yellow', 'cyan', 'magenta',
                        'black', 'white')
        self.oval_count = 0
        self.rand = 12345
示例#3
0
    def __init__(self, parent):
        # Create the toplevel to contain the main menubar.
        megaToplevel = Pmw.MegaToplevel(parent, title=title)
        toplevel = megaToplevel.interior()

        # Create the Balloon for this toplevel.
        self.balloon = Pmw.Balloon(toplevel)

        # Create and install the MenuBar.
        menuBar = Pmw.MainMenuBar(toplevel, balloon=self.balloon)
        toplevel.configure(menu=menuBar)
        self.menuBar = menuBar

        # Add some buttons to the MainMenuBar.
        menuBar.addmenu('File', 'Close this window or exit')
        menuBar.addmenuitem('File',
                            'command',
                            'Close this window',
                            command=PrintOne('Action: close'),
                            label='Close')
        menuBar.addmenuitem('File', 'separator')
        menuBar.addmenuitem('File',
                            'command',
                            'Exit the application',
                            command=PrintOne('Action: exit'),
                            label='Exit')

        menuBar.addmenu('Edit', 'Cut, copy or paste')
        menuBar.addmenuitem('Edit',
                            'command',
                            'Delete the current selection',
                            command=PrintOne('Action: delete'),
                            label='Delete')

        menuBar.addmenu('Options', 'Set user preferences')
        menuBar.addmenuitem('Options',
                            'command',
                            'Set general preferences',
                            command=PrintOne('Action: general options'),
                            label='General...')

        # Create a checkbutton menu item.
        self.toggleVar = Tkinter.IntVar()
        # Initialise the checkbutton to 1:
        self.toggleVar.set(1)
        menuBar.addmenuitem('Options',
                            'checkbutton',
                            'Toggle me on/off',
                            label='Toggle',
                            command=self._toggleMe,
                            variable=self.toggleVar)
        self._toggleMe()

        menuBar.addcascademenu('Options',
                               'Size',
                               'Set some other preferences',
                               traverseSpec='z',
                               tearoff=1)
        for size in ('tiny', 'small', 'average', 'big', 'huge'):
            menuBar.addmenuitem('Size',
                                'command',
                                'Set size to ' + size,
                                command=PrintOne('Action: size ' + size),
                                label=size)

        menuBar.addmenu('Help', 'User manuals', name='help')
        menuBar.addmenuitem('Help',
                            'command',
                            'About this application',
                            command=PrintOne('Action: about'),
                            label='About...')

        # Create and pack the main part of the window.
        self.mainPart = Tkinter.Label(
            toplevel,
            text='This is the\nmain part of\nthe window',
            background='black',
            foreground='white',
            padx=30,
            pady=30)
        self.mainPart.pack(fill='both', expand=1)

        # Create and pack the MessageBar.
        self.messageBar = Pmw.MessageBar(toplevel,
                                         entry_width=40,
                                         entry_relief='groove',
                                         labelpos='w',
                                         label_text='Status:')
        self.messageBar.pack(fill='x', padx=10, pady=10)
        self.messageBar.message(
            'state',
            'Balloon/status help not working properly - Tk menubar bug')

        buttonBox = Pmw.ButtonBox(toplevel)
        buttonBox.pack(fill='x')
        buttonBox.add('Disable\nall', command=menuBar.disableall)
        buttonBox.add('Enable\nall', command=menuBar.enableall)
        buttonBox.add('Create\nmenu', command=self.add)
        buttonBox.add('Delete\nmenu', command=self.delete)
        buttonBox.add('Create\nitem', command=self.additem)
        buttonBox.add('Delete\nitem', command=self.deleteitem)

        # Configure the balloon to displays its status messages in the
        # message bar.
        self.balloon.configure(statuscommand=self.messageBar.helpmessage)

        self.testMenuList = []
示例#4
0
    def __init__(self, parent):
	# Create the ScrolledFrame.
	self.sf = Pmw.ScrolledFrame(parent,
		labelpos = 'n', label_text = 'ScrolledFrame',
		usehullsize = 1,
		hull_width = 400,
		hull_height = 220,
	)

	# Create a group widget to contain the flex options.
	w = Pmw.Group(parent, tag_text='Flex')
	w.pack(side = 'bottom', padx = 5, pady = 3)

	hflex = Pmw.OptionMenu(w.interior(),
		labelpos = 'w',
		label_text = 'Horizontal:',
		items = ['fixed', 'expand', 'shrink', 'elastic'],
		command = self.sethflex,
		menubutton_width = 8,
	)
	hflex.pack(side = 'left', padx = 5, pady = 3)
	hflex.invoke('fixed')

	vflex = Pmw.OptionMenu(w.interior(),
		labelpos = 'w',
		label_text = 'Vertical:',
		items = ['fixed', 'expand', 'shrink', 'elastic'],
		command = self.setvflex,
		menubutton_width = 8,
	)
	vflex.pack(side = 'left', padx = 5, pady = 3)
	vflex.invoke('fixed')

	# Create a group widget to contain the scrollmode options.
	w = Pmw.Group(parent, tag_text='Scroll mode')
	w.pack(side = 'bottom', padx = 5, pady = 0)

	hmode = Pmw.OptionMenu(w.interior(),
		labelpos = 'w',
		label_text = 'Horizontal:',
		items = ['none', 'static', 'dynamic'],
		command = self.sethscrollmode,
		menubutton_width = 8,
	)
	hmode.pack(side = 'left', padx = 5, pady = 3)
	hmode.invoke('dynamic')

	vmode = Pmw.OptionMenu(w.interior(),
		labelpos = 'w',
		label_text = 'Vertical:',
		items = ['none', 'static', 'dynamic'],
		command = self.setvscrollmode,
		menubutton_width = 8,
	)
	vmode.pack(side = 'left', padx = 5, pady = 3)
	vmode.invoke('dynamic')

        self.radio = Pmw.RadioSelect(parent, selectmode = 'multiple',
            command = self.radioSelected)
        self.radio.add('center', text = 'Keep centered vertically')
        self.radio.pack(side = 'bottom')

        buttonBox = Pmw.ButtonBox(parent)
	buttonBox.pack(side = 'bottom')
	buttonBox.add('add', text = 'Add a button', command = self.addButton)
	buttonBox.add('yview', text = 'Show yview', command = self.showYView)
	buttonBox.add('scroll', text = 'Page down', command = self.pageDown)

	# Pack this last so that the buttons do not get shrunk when
	# the window is resized.
	self.sf.pack(padx = 5, pady = 3, fill = 'both', expand = 1)

	self.frame = self.sf.interior()

	self.row = 0
	self.col = 0

        for count in range(15):
            self.addButton()
示例#5
0
    def __init__(self, parent, filtus, notebook):
        Tkinter.Frame.__init__(self, parent)
        self.filtus = filtus
        self.db = None
        self.columnconfigure(0, weight=1)
        self.rowconfigure(3, weight=1)

        Tkinter.Label(self,
                      text="Extract subset database",
                      font=filtus.titlefont,
                      anchor='c').grid(sticky='news', padx=10, pady=(15, 10))

        self.lists = TwoListWidget(self, filtus=filtus, lefttoptext="Samples:")
        self.browser = DBbrowser(self,
                                 filtus,
                                 label="Load database:",
                                 updates=self.updateStuff)

        self.browser.grid(sticky='news', padx=10, pady=0)
        Tkinter.Frame(self, height=2, borderwidth=2,
                      relief="sunken").grid(padx=10, pady=10, sticky="new")
        self.lists.grid(sticky='news', padx=10, pady=0)

        ### Column filter
        colnames = ('', 'CHROM', 'POS', 'OBS', 'HET', 'HOM', 'AFREQ')
        operatorNames = [
            "equal to", "not equal to", "greater than", "less than"
        ]
        Tkinter.Label(self, text="Variant filter:").grid(sticky='w',
                                                         pady=(5, 2),
                                                         padx=10)

        self.columnFilter = FiltusWidgets.ColumnFilter(
            self,
            filtus=self.filtus,
            colnames=colnames,
            operatorNames=operatorNames)
        self.columnFilter.component('checkbutton').grid_remove()
        self.columnFilter.grid(sticky='nw', padx=10)
        ####### OUTPUT
        Tkinter.Frame(self, height=2, borderwidth=2,
                      relief="sunken").grid(padx=10, pady=10, sticky="new")
        save_interior = Tkinter.Frame(self)
        save_interior.columnconfigure(0, weight=1)
        self.save_browser = FiltusWidgets.FileBrowser(
            save_interior,
            filtus=filtus,
            label="Output database file name:",
            checkbutton=False,
            labelpos='nw',
            browsesticky='se',
            entryfield_entry_width=20,
            browsetitle="")
        self.save_browser.browsebutton.configure(command=self._browseSave)
        self.save_browser.entryfield.configure(command=None)

        self.formatSelect = Pmw.RadioSelect(
            save_interior,
            buttontype="radiobutton",
            pady=0,
            labelpos="nw",
            labelmargin=0,
            label_text="Format:"
        )  #, hull_borderwidth = 2, hull_relief = 'ridge')
        self.formatSelect.add("Simple")
        self.formatSelect.add("Extended")
        self.formatSelect.invoke("Simple")

        self.save_browser.grid(sticky='news', padx=(10, 25), pady=(5, 10))
        self.formatSelect.grid(row=0, column=1, sticky='e', padx=10, pady=0)
        save_interior.grid(sticky='news', padx=10, pady=0)

        #######

        Tkinter.Frame(self, height=2, borderwidth=3,
                      relief="raised").grid(sticky='ew', pady=15)
        self.lowerButtons = Pmw.ButtonBox(self, padx=50)
        self.lowerButtons.add('createButt',
                              text="Extract subset",
                              command=self.extractdb)
        self.lowerButtons.add('cancelButt',
                              text="Cancel",
                              command=notebook.deactivate)
        self.lowerButtons.grid(sticky='news', pady=(0, 10))
示例#6
0
    def __init__(self, master, rateObject=None):
        Frame.__init__(self, master)
        self.pack(expand=YES, fill=BOTH)
        self.frm_tree = Frame(self)
        self.frm_tree.pack(side=LEFT, fill=BOTH, expand=1)
        self.m_treeBrowser = None
        # if rateObject <> None:  self.mapObjToGui(rateObject):

        self.frm_details = Frame(self)

        self.well_icon = PhotoImage(
            data=
            'R0lGODlhDwAPAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/AP//AAAA//8A/wD/\n/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBm\nAABmMwBmZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/\nMwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNm\nZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/\nmTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZm\nzGZm/2aZAGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb/\n/5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZ\nAJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwA\nM8wAZswAmcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZ\nZsyZmcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8A\nmf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+Z\nzP+Z///MAP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP///yH5BAEAABAALAAAAAAPAA8A\nAAhUAJcIHEiwoMGDCBMSRKFwoB8UfhouSYUiVcNUD/1YTOjnH4p/ERFqzIgRYap/HlGWLIgRI8SW\nBkMuYShQI0s+pvigwInTT86fKIIKHcoz59CjSAMCADs='
        )

        self.closed_icon = PhotoImage(
            data=
            'R0lGODlhDwAPAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/AP//AAAA//8A/wD/\n/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBm\nAABmMwBmZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/\nMwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNm\nZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/\nmTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZm\nzGZm/2aZAGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb/\n/5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZ\nAJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwA\nM8wAZswAmcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZ\nZsyZmcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8A\nmf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+Z\nzP+Z///MAP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP///ywAAAAADwAPAAAIWgAfCBxI\nsKDBgwIJKFzIkOEDAqn8RJwosSIBAAQeLNDIcePAixBTCRSZqqRJkA9Iplwp8iFGljBLusxIUqbK\nmTZjlkS5sWdHjSAbClUI4AGAo0iTJkXItOnAgAA7'
        )

        self.open_icon = PhotoImage(
            data=
            'R0lGODlhDwAPAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/AP//AAAA//8A/wD/\n/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBm\nAABmMwBmZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/\nMwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNm\nZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/\nmTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZm\nzGZm/2aZAGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb/\n/5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZ\nAJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwA\nM8wAZswAmcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZ\nZsyZmcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8A\nmf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+Z\nzP+Z///MAP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP///ywAAAAADwAPAAAIUAAfCBxI\nsKDBgwP9pFLIcKFDhQ8WHgTwAIBEPwgJpopY8UGCBB0pUsSIMaPAjRspfgzZkaTJkxxVgqRIkOTG\njH4oPtzZkCaAn0CDAn1J9GBAADs='
        )

        dummy = cRecurrentFile()
        self.widgets = []

        self.headerLabel = Label(self.frm_details, text="ID")
        self.headerLabel.pack(side=TOP, fill=X, expand=0)

        #for nm in dummy.aAllowedPerfKeywords:
        #w = Pmw.EntryField(self.frm_details,labelpos=W,label_text=nm, validate=None)
        #val = w.component('entry')
        #val['width']= 10
        #w.pack(side=TOP,fill=X,expand=0)
        #self.widgets.append(w)
        #Pmw.alignlabels(self.widgets)

        self.btnSaveWell = Button(
            self.frm_details,
            text="Save Selected Well")  # , command=self.f_savePerf)
        self.btnSaveWell.pack(side=TOP, fill=X, expand=0)

        self.buttonBox = Pmw.ButtonBox(
            self.frm_details, labelpos='n',
            label_text='TODO Actions')  # , orient='vertical')
        self.buttonBox.pack(side=BOTTOM, fill=X, expand=0, padx=0, pady=0)
        self.buttonBox.add('ADD DATE', command=lambda s=self: s.m_addDate())
        self.buttonBox.add('DEL DATE', command=lambda s=self: s.m_deleteDate())
        self.buttonBox.add('ADD WELL', command=lambda s=self: s.m_addWell())
        self.buttonBox.add('DEL WELL', command=lambda s=self: s.m_deleteWell())
        self.buttonBox.add('ADD PERF', command=lambda s=self: s.m_addWell())
        self.buttonBox.add('DEL PERF', command=lambda s=self: s.m_deleteWell())

        Litems = []
        self.producersList = Pmw.ScrolledListBox(
            self.frm_details,
            listbox_selectmode=SINGLE,
            items=Litems,
            labelpos=N,
            label_text='Producers Blocks',
            listbox_exportselection=0,
            #selectioncommand = self.selectCommand, # dblclickcommand = self.selectCommand,
            usehullsize=1,
            hull_width=180,
            hull_height=200)
        self.producersList.pack(side=TOP, expand=1, fill=X)

        Litems = []
        self.injectorsList = Pmw.ScrolledListBox(
            self.frm_details,
            listbox_selectmode=SINGLE,
            items=Litems,
            labelpos=N,
            label_text='Injectors Blocks',
            #selectioncommand = self.selectCommand, # dblclickcommand = self.selectCommand,
            usehullsize=1,
            hull_width=180,
            hull_height=200)
        self.injectorsList.pack(side=TOP, expand=1, fill=X)
        self.frm_details.pack(side=RIGHT, expand=1, fill=Y, pady=10)

        self.lastDate = None
        self.lastWell = None
        self.lastPerf = None
def main(options, args):

    # Create top level logger.
    logger = ssdlog.make_logger('EnvMonitor', options)

    # Create status object to be shared by all interested parties
    if options.statsvc:
        # Specified Gen2 status
        status_obj = Gen2StatusObject(options.statsvc)

    else:
        # Specified SOSS status
        status_obj = st.cachedStatusObj(options.statint)

    # callback for popping up wind monitor
    def showWindDirection():
        global windWindow

        if windWindow:
            windWindow.deiconify()
            #windWindow.show()
            return

        # Create the base frame for the widgets
        WindMonitor(status_obj, logger)

    # Create the base frame for the widgets
    root = Tk()
    Pmw.initialise(root)
    root.title("Environment Monitor")
    root.tk.call('tk', 'scaling', 1)
    if options.geometry:
        root.geometry(options.geometry)
    else:
        root.geometry("433x742")

    def dialogResult(result):
        global quitDialog
        #print 'You clicked on ', result
        quitDialog.deactivate(result)
        if result == 'Yes':
            root.quit()

    def askAboutQuitting():
        # Create the dialog.
        global quitDialog
        quitDialog = Pmw.Dialog(None,
                                buttons=('No', 'Yes'),
                                defaultbutton='Yes',
                                title='Quit Environment Monitor?',
                                command=dialogResult)
        quitDialog.geometry("300x45")
        quitDialog.activate(globalMode=1)
        quitDialog.withdraw()

    def _delete_main_window():
        askAboutQuitting()

    root.protocol("WM_DELETE_WINDOW", _delete_main_window)

    row = 0
    widget1 = sg.StatusGraph(root,
                             title="Wind direction (deg) N:0 E:90",
                             statusKeys=("TSCL.WINDD", ),
                             maxDeltas=(300, ),
                             gconfig=(None, "black", "white", (0, 360, 90), 1,
                                      0, 1),
                             background="#f5fffc",
                             statusObj=status_obj)
    widget1.grid(row=row, column=0)
    widget1.tick()
    row += 1

    widget2 = sg.StatusGraph(
        root,
        title="Wind Speed(m/s)",
        statusKeys=("TSCL.WINDS_O", "TSCL.WINDS_I"),
        alarmValues=(10, 15),
        #gconfig = (None, "black", "white", (-1,20,5), 1, 0, 1),
        background="#f7fff4",
        statusObj=status_obj)
    widget2.grid(row=row, column=0)
    widget2.tick()
    row += 1

    widget3 = sg.StatusGraph(root,
                             title="Temperature(C)",
                             statusKeys=("TSCL.TEMP_O", "TSCL.TEMP_I"),
                             statusObj=status_obj)
    widget3.grid(row=row, column=0)
    widget3.tick()
    row += 1

    widget4 = sg.StatusGraph(root,
                             title="Humidity(%)",
                             statusKeys=("TSCL.HUMI_O", "TSCL.HUMI_I"),
                             alarmValues=(80, 80),
                             background="#fffff6",
                             size=(112, 430),
                             displayTime=True,
                             lconfig=THINDEFAULTLINE,
                             statusObj=status_obj)
    widget4.grid(row=row, column=0)
    widget4.tick()
    row += 1

    widget5 = sg.StatusGraph(root,
                             title="Air Pressure(hPa) :",
                             size=(97, 430),
                             statusKeys=("TSCL.ATOM", ),
                             statusFormats=("%0.1f", ),
                             lconfig=THINDEFAULTLINE,
                             statusObj=status_obj)
    widget5.grid(row=row, column=0)
    widget5.tick()
    row += 1

    widget6 = sg.StatusGraph(root,
                             title="Rain Gauge(mm/h) :",
                             statusKeys=("TSCL.RAIN", ),
                             statusFormats=("%0.1f", ),
                             alarmValues=(50, ),
                             size=(93, 430),
                             background="#f4f4f4",
                             statusObj=status_obj)
    widget6.grid(row=row, column=0)
    widget6.tick()
    row += 1

    widget7 = sg.StatusGraph(root,
                             title="Seeing Size(arcsec)",
                             statusKeys=("TSCL.SEEN", "VGWD.FWHM.AG"),
                             alarmValues=(1, 1),
                             statusFormats=("TSC: %0.1f", "VGW: %0.1f"),
                             displayTime=True,
                             statusObj=status_obj)
    widget7.grid(row=row, column=0)
    widget7.tick()
    row += 1

    #    widget8 = sg.StatusGraph(root, title="Sky Transparency(%) :",
    #                                statusKeys=("TSCL.THRU",),
    #                                background="#f4f4f4",
    #                                displayTime=True, statusObj=status_obj)
    #    widget8.grid(row=row, column=0)
    #    widget8.tick()
    #    row +=1

    bottomframe = Frame(root, width=440)
    buttons = Pmw.ButtonBox(bottomframe)
    buttons.add('Quit',
                command=askAboutQuitting,
                font=('Helvetica', 12, 'bold'))
    buttons.grid(row=0, column=0)

    resourceframe = ResourceMonitor(bottomframe, status_obj, logger)
    resourceframe.grid(row=0, column=1)
    resourceframe.tick()

    buttons = Pmw.ButtonBox(bottomframe)
    buttons.add('Wind Direction',
                command=showWindDirection,
                font=('Helvetica', 12, 'bold'))
    buttons.grid(row=0, column=2)
    bottomframe.grid(row=row, column=0)
    row += 1

    try:
        try:
            root.mainloop()

        except KeyboardInterrupt:
            logger.error("Received keyboard interrupt!")

    except Exception, e:
        logger.error("Top-level exception raised: %s" % str(e))
        raise e
示例#8
0
    hscrollmode='none',  #dynamic
    vscrollmode='dynamic',
    hull_relief='sunken',  #vscrollmode=dynamic
    hull_background='gray40',
    hull_borderwidth=10,
    text_background='honeydew4',
    text_width=29,  #ancho pantalla #29
    text_foreground='black',
    text_height=9,  #alto pantalla
    text_padx=10,
    text_pady=10,
    text_relief='groove',
    text_font=('Arial', 12, 'bold'))
display.pack(padx=0, pady=0)

buttons1 = Pmw.ButtonBox(Calculadora, hull_background='gray40')

buttons1.pack(fill='both', expand=1, padx=1, pady=1)
#buttons1.alignbuttons()

buttons1.add('2nd', width=5, bg='steelblue3', fg='white', command=nd)
buttons1.add('Mode', bg='gray30', fg='white')
buttons1.add('Del', bg='gray30', fg='white', command=del_)
buttons1.add('Alpha', bg='gray50', fg='white')
buttons1.add('Stat', bg='gray30', fg='white')

buttons2 = Pmw.ButtonBox(Calculadora, hull_background='gray40')
buttons2.pack(fill='both', expand=1, padx=1, pady=1)
#buttons2.alignbuttons()
buttons2.add('Math',
             width=5,
示例#9
0
文件: tacho.py 项目: mbednarski/tacho
select_mode.grid(row=0, column=0, columnspan=4)

# Add some buttons to the horizontal RadioSelect - mode selection buttons.
for name, symbol, background in (('D', u'\u2609', 'green'), ('W', u'\u2692',
                                                             'blue'),
                                 ('P', u'\u26DD', 'yellow'), ('R', u'\u29E6',
                                                              'red')):
    select_mode.add(name, text=symbol, background=background)

select_mode.invoke(3)  # select break/rest as default

# ------top left buttons-------
top_left_buttons = Pmw.ButtonBox(
    topLeftFrame,
    Button_height=1,  # Button_width=2,
    Button_font="Helvetica 15 bold",
    pady=1,
    padx=1)

top_left_buttons.grid(row=0, column=0, columnspan=2)

# Add some buttons to the horizontal RadioSelect.
top_left_buttons.add('Delete', command=lambda: current_data.delete_item())
top_left_buttons.add('Edit')
top_left_buttons.add('Save')
top_left_buttons.add('Clear', command=start)

# =====bottom status=============
status = StringVar()
bottom_status_total = Label(bottomFrame,
                            textvariable=status,
示例#10
0
    def __init__(self, parent, inactive_channels, selected_channels=[]):
        '''
        Constructor
        '''
        self.__inactive_channels = inactive_channels
        self.__inactive_channels.sort()
        selected_channels.sort()

        ch_loader = channel_loader.ChannelLoader.getInstance()
        self.__channel_names_list = ch_loader.getNameDict().values()
        self.__channel_names_list.sort()

        # Update inactive_channels if channels were selected earlier
        # Use the fact that empty sequences (lists, etc...) are False (PEP 8)
        if not selected_channels:
            for c in selected_channels:
                try:
                    self.__inactive_channels.remove(c)
                except ValueError:
                    pass

        self.__inactive_channels = inactive_channels

        top = Tkinter.Toplevel(parent)
        top.title("F Prime Channel Telemetry Filter Selection")
        top.focus()
        # Constrain size on window so geometry works.
        top.maxsize(1000, 400)
        top.minsize(600, 400)
        top.lift()
        self.__top = top

        # Container Frame
        #
        f = Tkinter.Frame(top)
        f.pack(side=Tkinter.TOP, anchor=Tkinter.N, fill=Tkinter.BOTH, expand=1)

        #
        f2 = Tkinter.Frame(top)
        f2.pack(side=Tkinter.TOP,
                anchor=Tkinter.N,
                fill=Tkinter.BOTH,
                expand=1)
        f3 = Tkinter.Frame(top)
        f3.pack(side=Tkinter.TOP,
                anchor=Tkinter.N,
                fill=Tkinter.BOTH,
                expand=1)
        #
        # Build list boxes for channels
        #
        ff1 = Tkinter.LabelFrame(f2,
                                 text="Channels Avaliable:",
                                 relief=Tkinter.GROOVE,
                                 borderwidth=2,
                                 padx=5,
                                 pady=5)
        ff1.pack(side=Tkinter.LEFT,
                 anchor=Tkinter.NW,
                 fill=Tkinter.BOTH,
                 expand=1,
                 padx=10,
                 pady=10)
        #
        # Scrolled log message list box here...
        #
        self.__list_box_channels = Pmw.ScrolledListBox(
            ff1,
            listbox_selectmode=Tkinter.EXTENDED,
            listbox_height=15,
            selectioncommand=self.__selectionCommandToSelected,
            dblclickcommand=self.__selectionCommandToSelected,
            items=tuple(self.__inactive_channels))
        self.__list_box_channels.pack(side=Tkinter.LEFT,
                                      anchor=Tkinter.NW,
                                      fill=Tkinter.BOTH,
                                      expand=1,
                                      padx=5,
                                      pady=5)
        #
        bbox = Pmw.ButtonBox(f2, orient=Tkinter.VERTICAL)
        bbox.pack(side=Tkinter.LEFT)
        bbox.add(">", command=self.__selectChannels)
        bbox.add("<", command=self.__deselectChannels)
        bbox.add('>>', command=self.__add_all)
        bbox.add('<<', command=self.__clear_all)
        #
        ff2 = Tkinter.LabelFrame(f2,
                                 text="Channels Selected:",
                                 relief=Tkinter.GROOVE,
                                 borderwidth=2,
                                 padx=5,
                                 pady=5)
        ff2.pack(side=Tkinter.LEFT,
                 anchor=Tkinter.NW,
                 fill=Tkinter.BOTH,
                 expand=1,
                 padx=10,
                 pady=10)
        #
        # Scrolled log message list box here...
        #
        self.__list_box_selected = Pmw.ScrolledListBox(
            ff2,
            listbox_selectmode=Tkinter.EXTENDED,
            listbox_height=15,
            selectioncommand=self.__selectionCommandToAvaliable,
            dblclickcommand=self.__selectionCommandToAvaliable,
            items=selected_channels)
        self.__list_box_selected.pack(side=Tkinter.LEFT,
                                      anchor=Tkinter.NW,
                                      fill=Tkinter.BOTH,
                                      expand=1,
                                      padx=5,
                                      pady=5)
        #
        # Buttons to implement all the dialog commands...
        #
        buttonBox = Pmw.ButtonBox(f3,
                                  labelpos='nw',
                                  label_text='Channel Selection Commands:')
        buttonBox.pack(side=Tkinter.BOTTOM,
                       fill=Tkinter.BOTH,
                       expand=1,
                       padx=10,
                       pady=10)

        buttonBox.add('Save', command=self.__save)
        buttonBox.add('Load', command=self.__load)
        buttonBox.add('Cancel', command=self.__cancel)
        buttonBox.add('Ok', command=self.__ok)
        #
        self.__all_channels_selected = inactive_channels
        self.__channels_selected = selected_channels
        self.__active_filter_selected = None
        # Mouse selection lists for each ScrolledListbox
        self.__select_to_selected = []
        self.__select_to_avaliable = []
        #
        self.__top.wait_window(self.__top)
示例#11
0
             width=300)
    t.grid(row=0, column=0, sticky='nsew')

    root.grid_rowconfigure(0, weight=1)
    root.grid_columnconfigure(0, weight=1)
    sb = Scrollbar(root)
    sb.grid(row=0, column=1, sticky='ns')
    t.configure(yscrollcommand=sb.set)
    sb.configure(command=t.yview)
    sb = Scrollbar(root, orient=HORIZONTAL)
    sb.grid(row=1, column=0, sticky='ew')
    t.configure(xscrollcommand=sb.set)
    sb.configure(command=t.xview)
    t.focus_set()

    btnBox = Pmw.ButtonBox(root)
    btnBox.grid(row=2, column=0, columnspan=3)
    btnBox.add('Quit', command=root.quit)
    btnBox.add('Add', command=lambda b='add': buttonPress(b))
    btnBox.add('Del', command=lambda b='del': buttonPress(b))

    editBox = Pmw.ScrolledText(root,
                               labelpos=N,
                               label_text='Contents',
                               usehullsize=1,
                               hull_height=400,
                               hull_width=300,
                               text_wrap=None)
    editBox.grid(row=0, rowspan=2, column=2, sticky='nsew')

    # expand out the root
示例#12
0
    def setup_ui(self,parent, logger):
        
        logger.debug("setting up ana menu gui")  
        ''' buttons for Gen2 application'''
        self.buttonBoxView = Pmw.ButtonBox(parent,
                labelpos = 'nw',
                label_text = 'Viewers:',
                frame_borderwidth = 2,
                frame_relief = 'groove')
        self.buttonBoxView.pack(fill = 'both', expand = 1, padx = 10, pady = 10)

        ''' buttons for instruments '''
        self.buttonBoxIns = Pmw.ButtonBox(parent,
                labelpos = 'nw',
                label_text = 'Instrument:',
                frame_borderwidth = 2,
                frame_relief = 'groove')
        self.buttonBoxIns.pack(fill = 'both', expand = 1, padx = 10, pady = 10)

        ''' buttons for more instrument '''
        self.buttonBoxProg = Pmw.ButtonBox(parent,
                labelpos = 'nw',
                label_text = 'Data-sink | Ana-prog:',
                frame_borderwidth = 2,
                frame_relief = 'groove')

        self.buttonBoxProg.pack(fill = 'both', expand = 1, padx = 10, pady = 10)

        ''' status of a pressed button '''
        self.messageBar = Pmw.MessageBar(parent,
                entry_width = 40,
                entry_relief='groove',
                labelpos = 'nw',
                label_text = 'Status:')
        self.messageBar.pack(fill = 'x', expand = 1, padx = 10, pady = 10)

        ''' dialog to display the status of datasink server'''
        self.ds_dialog = Pmw.TextDialog(parent, scrolledtext_labelpos = 'n',
                title = 'Frame Log',
                buttons = ('stop data-sink',),
                defaultbutton = None,
                command=self.stop_datasink)
                #label_text = 'incoming frame status')        

        self.ds_dialog.withdraw()        
 
        ''' dialog to get proposal id  '''
        self.prop_dialog = Pmw.PromptDialog(parent, 
                                            title = 'Proposal ID',
                                            label_text = 'Prop ID:',
                                            entryfield_labelpos = 'w',
                                            #entry_show = '*',
                                            defaultbutton = 0,
                                            buttons = ('OK','Cancel'),
                                            command = self.get_propid )
        self.prop_dialog.withdraw()
 
        '''  create the confirmation dialog '''
        self.confirm = Pmw.MessageDialog(title = 'Prop ID Confirmation',
                                         message_text = 'Are you really sure?',
                                         defaultbutton = 0,
                                         buttons = ('OK', 'Cancel'))
        self.confirm.withdraw()
 
 
        '''  create the confirmation dialog '''
        self.pid_format = Pmw.MessageDialog(title = 'PID Format Error',
                                         message_text = 'Pid Format Error\nFormat is oXXXXX',
                                         defaultbutton = 0,
                                         #icon_bitmap='error',
                                         buttons = ('Close',))
        self.pid_format.withdraw()

 
        ''' Add some buttons to the ButtonBox.'''
        self.buttonBoxView.add('FitsViewer', command = self.launch_viewer)
        self.buttonBoxView.add('TelStat', command=self.launch_telstat )
        #self.buttonBoxGen2.add('DataSink', command = self.init_datasink )
        self.buttonBoxView.add('Ds9', command = self.launch_ds9)
        self.buttonBoxView.add('Skycat', command = self.launch_skycat)

        #self.buttonBoxGen2.add('ANA Prog',command=self.start_ana_prog )

        self.buttonBoxIns.add('HDS', command = self.launch_hds)
        self.buttonBoxIns.add('SPCAM', command = self.launch_spcam)
        self.buttonBoxIns.add('FOCAS', command = self.launch_focas)
        self.buttonBoxIns.add('MOIRCS', command = self.launch_moircs)
        self.buttonBoxIns.add('IRCS', command = self.launch_ircs)
    
        self.buttonBoxProg.add('DataSink', command = self.init_datasink )
        self.buttonBoxProg.add('ANA Prog',command=self.start_ana_prog )
        self.buttonBoxProg.add('Avail 1',command='' )
        self.buttonBoxProg.add('Avail 2',command='' )

        ''' Make all the buttons the same width. '''
        self.buttonBoxView.alignbuttons()
        self.buttonBoxIns.alignbuttons()
        self.buttonBoxProg.alignbuttons()
        
        ''' disable buttons '''
        self.buttonBoxProg.component('DataSink').configure(state='disabled')
        #self.buttonBoxView.component('Avail 1').configure(state='disabled')
        self.buttonBoxProg.component('Avail 1').configure(state='disabled')
        self.buttonBoxProg.component('Avail 2').configure(state='disabled')

        #self. exitButton = Tkinter.Button(parent, text = 'Exit', command = parent.destroy)
        self. exitButton = Tkinter.Button(parent, text = 'Exit', command = self.close_window)
        self.exitButton.pack(side = 'bottom') 
  
        logger.debug("ana menu gui done")
示例#13
0
    def __init__(self, parent, PFMF_client,
                 set_func = lambda l,f,i : 0,
                 enable_func=_empty_func,
                 disable_func=_empty_func):
        Tkinter.Frame.__init__(self,parent)
        self.pack_propagate(0)

        self.params_width = 290


        self.PFMF_client = PFMF_client
        self.set_func = set_func
        self.enable_func = enable_func
        self.disable_func = disable_func

        self.state = (None, None, None)
        self.jobs = {}
        self.search_finished = False
        self.qseq = None
        self.thread_lock = threading.Lock()
        self.current_thread = 0
        self.matrix_text = None
        self.search_type_widgets = []
        self.first_search = None
        self.plugin_widgets = []
        self.plugins = []
        self.default_plugin = None
        self.current_plugin = None

        # ************************************************************
        # ******* Search Options on the left *************************
        # ************************************************************

        self.wOptions = Tkinter.Frame(self, width=self.params_width)
        self.wOptions.pack(side='left', anchor='nw', fill='y')
        self.wOptions.pack_propagate(0)

        # ***** Search Arguments *************************************

        self.wCutoffParams = Pmw.Group(self.wOptions,
                                     tag_text='Cutoff Options')
        self.wCutoffParams.pack(anchor='nw', fill='x', padx=5, pady=5)

        self.vCutoffParams = Tkinter.IntVar()
        parent = self.wCutoffParams.interior()
        for i, st in enumerate(self._search_types):
            rb = Tkinter.Radiobutton(parent,
                                     text=st[1],
                                     variable=self.vCutoffParams,
                                     value=i)
            rb.grid(row=i+1,column=0, sticky='w')
            ef = Pmw.EntryField(parent,
                                entry_width=8,
                                validate=st[4],
                                value=st[2])
            ef.grid(row=i+1, column=1, sticky='w')

            self.search_type_widgets.append((rb,ef))
        self.vCutoffParams.set(0)

        # ***** Plugin input *****************************************

        self.wPluginInput = Pmw.Group(self.wOptions,
                                      tag_text='Matrix Options')
        self.wPluginInput.pack(fill='x', padx=5, pady=5)
        self.wPluginLabel = Tkinter.Label(self.wPluginInput.interior(),
                                          text='Plugin')
        self.wPluginLabel.grid(row=0, column=0, sticky='w',
                               padx=5, pady=5)
        self.wPluginChooser = \
            OptionMenu(self.wPluginInput.interior(),
                       items = [],
                       menubutton_width = 20,
                       command = self.set_plugin_widgets)
        self.wPluginChooser.grid(row=0, column=1, sticky='w')

        # ***** Jobs *************************************************

        self.wJobs = Pmw.Group(self.wOptions, tag_text='Jobs')
        self.wJobs.pack(fill='x', padx=5, pady=5)

        self.wJobs1 = Pmw.RadioSelect(self.wJobs.interior(),
                                      buttontype = 'radiobutton',
                                      labelpos = 'w',
                                      command = self._set_l,
                                      orient='vertical',
                                      pady=0)
        for text in ['Current', 'All', 'Remaining']:
            self.wJobs1.add(text)
        self.wJobs1.grid(row=1,column=0)

        self.wJobs2 = Pmw.RadioSelect(self.wJobs.interior(),
                                      buttontype = 'radiobutton',
                                      labelpos = 'w',
                                      orient='vertical',
                                      pady=0)
        for text in ['Fragments', 'Lengths']:
            self.wJobs2.add(text)
        self.wJobs2.grid(row=1, column=1, sticky='sw')

        self.wJobs1.invoke('Current')
        self.wJobs2.invoke('Lengths')

        self.wJobsButtons = Pmw.ButtonBox(self.wJobs.interior())
        self.wJobsButtons.grid(row=2, column=0, columnspan=2,
                               pady=2)

        self.wJobsButtons.add('Set', command = self._set_jobs)
        self.wJobsButtons.add('Unset', command = self._unset_jobs)
        self.wJobsButtons.add('Run', command = self._run_searches)
        self.wJobsButtons.alignbuttons()


        # ************************************************************
        # ******* Sequence and Matrix on the right *******************
        # ************************************************************

        self.wSeqMat =  Tkinter.Frame(self)
        self.wSeqMat.pack(side='left', anchor='nw',
                          fill='both', expand = 1)

        # ***** Full sequence viewer *********************************

        self.wSeqText = ScrolledSeq(self.wSeqMat,
                                    self.PFMF_client.query_sequence,
                                    self.set_func)
        self.wSeqText.pack(anchor='nw', fill='x')

        self.wSeqText.tag_config('green yellow', background = 'green yellow')
        self.wSeqText.tag_config('green', background = 'green')
        self.wSeqText.tag_config('red', background = 'red')
        self.wSeqText.tag_config('orange', background = 'orange')
        self.wSeqText.tag_config('royal blue',
                                 background = 'royal blue')

        # ***** Matrix viewer ****************************************

        self.wMatrixText = Pmw.ScrolledText(self.wSeqMat,
                                            usehullsize = 1,
                                            text_wrap='none',
                                            text_font = self.ffont,
                                            text_padx = 4,
                                            text_pady = 4,
                                            text_state = 'disabled',
                                            text_cursor = 'left_ptr',
                                            )
        self.wMatrixText.pack(anchor='nw', fill='both', expand = 1)
示例#14
0
    def Host_Vector(self):
        self.hide()
        hVFrame = Toplevel()
        hVFrame.title("SIR WITH HOST VECTORS")
        hVFrame.geometry("700x800")
        # self.top.transient(self)
        g = Pmw.Blt.Graph(hVFrame)
        g.pack(expand=1, fill="both")
        E = zeros([3, 1])
        A = zeros([3, 3])
        C = zeros([3, 1])
        A = zeros([3, 3])
        B = zeros([2, 2])
        E = zeros([3, 1])
        C = zeros([3, 1])
        # --------------------------------------------------------------------------------------------------------------------------------------------------------
        # Textfields
        # --------------------------------------------------------------------------------------------------------------------------------------------------------
        global sus1, sus2, sus3, contact1, contact2, contact3, time_interval, death_rate1, death_rate2
        global death_rate3, recovery1, recovery2, recovery3
        sus1 = Pmw.EntryField(
            hVFrame,
            labelpos="w",
            value="0.0",
            label_text="Susceptibles1-S1",
            validate={"validator": "real"},
        )
        sus1.pack(expand=1, padx=5, pady=5)
        sus2 = Pmw.EntryField(
            hVFrame,
            labelpos="w",
            value="0.0",
            label_text="Susceptibles2-S2",
            validate={"validator": "real"},
        )
        sus2.pack(expand=1, padx=1, pady=2)
        sus3 = Pmw.EntryField(
            hVFrame,
            labelpos="w",
            value="0.0",
            label_text="Susceptibles3-S3 ",
            validate={"validator": "real"},
        )
        sus3.pack(expand=1, padx=1, pady=2)
        contact1 = Pmw.EntryField(
            hVFrame,
            labelpos="w",
            value="0.0",
            label_text="Contact Rate 1-k12",
            validate={"validator": "real"},
        )
        contact1.pack(expand=1, padx=1, pady=2)
        contact2 = Pmw.EntryField(
            hVFrame,
            labelpos="w",
            value="0.0",
            label_text="Contact Rate 2-k21",
            validate={"validator": "real"},
        )
        contact2.pack(expand=1, padx=1, pady=2)
        contact3 = Pmw.EntryField(
            hVFrame,
            labelpos="w",
            value="0.0",
            label_text="Contact Rate 3-k23",
            validate={"validator": "real"},
        )
        contact3.pack(expand=1, padx=1, pady=2)
        contact4 = Pmw.EntryField(
            hVFrame,
            labelpos="w",
            value="0.0",
            label_text="Contact Rate 4-k32",
            validate={"validator": "real"},
        )
        contact4.pack(expand=1, padx=1, pady=2)
        time_interval = Pmw.EntryField(
            hVFrame,
            labelpos="w",
            value="0",
            label_text=" Time    Interval-t ",
            validate={"validator": "numeric"},
        )
        time_interval.pack(expand=1, padx=1, pady=2)
        death_rate1 = Pmw.EntryField(
            hVFrame,
            labelpos="w",
            value="0.0",
            label_text=" Death  Rate 1-d1 ",
            validate={"validator": "real"},
        )
        death_rate1.pack(expand=1, padx=1, pady=2)
        death_rate2 = Pmw.EntryField(
            hVFrame,
            labelpos="w",
            value="0.0",
            label_text=" Death  Rate 2-d2 ",
            validate={"validator": "real"},
        )
        death_rate2.pack(expand=1, padx=1, pady=2)
        death_rate3 = Pmw.EntryField(
            hVFrame,
            labelpos="w",
            value="0.0",
            label_text=" Death  Rate 3-d3 ",
            validate={"validator": "real"},
        )
        death_rate3.pack(expand=1, padx=1, pady=2)
        recovery1 = Pmw.EntryField(
            hVFrame,
            labelpos="w",
            value="0.00",
            label_text="Recovery Rate 1",
            validate={"validator": "real"},
        )
        recovery1.pack(expand=1, padx=1, pady=2)
        recovery2 = Pmw.EntryField(
            hVFrame,
            labelpos="w",
            value="0.00",
            label_text="Recovery Rate 2",
            validate={"validator": "real"},
        )
        recovery2.pack(expand=1, padx=1, pady=2)
        recovery3 = Pmw.EntryField(
            hVFrame,
            labelpos="w",
            value="0.00",
            label_text="Recovery Rate 3",
            validate={"validator": "real"},
        )
        recovery3.pack(expand=1, padx=1, pady=2)

        # ------------------------------------------------------------------------------------------------------------------------------------------------------
        # self.top.transient(self)
        # self.wButton.config(state='disabled')
        def retrive():
            k12 = float(contact1.get())
            k21 = float(contact2.get())
            k23 = float(contact3.get())
            k32 = float(contact4.get())
            ddelta1 = float(death_rate1.get())
            ddelta2 = float(death_rate2.get())
            ddelta3 = float(death_rate3.get())
            ggamma1 = float(recovery1.get())
            ggamma2 = float(recovery2.get())
            ggamma3 = float(recovery3.get())
            N = int(time_interval.get())
            s0 = float(sus1.get())
            I0 = float(sus2.get())
            R0 = float(sus3.get())
            A[0][0] = 0
            A[0][1] = k12
            A[0][2] = 0
            A[1][0] = k21
            A[1][1] = 0
            A[1][2] = k23
            A[2][0] = 0
            A[2][1] = k32
            A[2][2] = 0
            B[0][0] = 0
            B[0][1] = 0
            B[1][0] = 0
            B[1][1] = 0
            E[0][0] = -k12 - (ggamma1 + ddelta1)
            E[1][0] = -k21 - k23 - (ggamma2 + ddelta2)
            E[2][0] = -k32 - (ggamma3 + ddelta3)
            C[0][0] = ddelta1 + ggamma1
            C[1][0] = ddelta2 + ggamma2
            C[2][0] = ddelta3 + ggamma3

            def f1(s1, I1, R1):
                s_dot = s1 * E[0][0] + A[0][1] * s1 * I1 + C[0][0]
                return s_dot

            def f2(s1, I1, R1):
                I_dot = I1 * E[1][0] + A[1][0] * s1 * I1 + A[1][2] * I1 * R1 + C[1][0]
                return I_dot

            def f3(s1, I1, R1):
                R_dot = E[2][0] * R1 + A[2][1] * I1 * R1 + C[2][0]
                return R_dot

            # =========RATE OF CHANGE OF THE MODEL WITH RESPECT TO TIME AND DECLARATON OF CONSTANTS==============================================================
            t = arange(0, N, 0.02455)
            s1 = zeros(len(t))
            I1 = zeros(len(t))
            R1 = zeros(len(t))
            s1[0] = s0
            I1[0] = I0
            R1[0] = R0
            h = 0.01

            # ==========ITERATION FOR A GIVEN TIME INTERVAL======================================================================================================

            for n in range(len(t) - 1):
                s1[n + 1] = s1[n] + h * (f1(s1[n], I1[n], R1[n]))
                I1[n + 1] = I1[n] + h * (f2(s1[n], I1[n], R1[n]))
                R1[n + 1] = R1[n] + h * (f3(s1[n], I1[n], R1[n]))
            x_ = tuple(t)
            y_ = tuple(s1)
            z_ = tuple(I1)
            w_ = tuple(R1)
            g.configure(
                title="A graph of Susceptible and Infective  against time for SIR with Host-Vector"
            )
            g.line_create(
                "S1(t) Vs t", xdata=x_, color="blue", ydata=y_, linewidth=2, symbol=""
            )
            g.line_create(
                "S2(t) Vs t", xdata=x_, color="orange", ydata=z_, linewidth=2, symbol=""
            )
            g.line_create(
                "S3(t) Vs t", xdata=x_, color="red", ydata=w_, linewidth=2, symbol=""
            )

        def postscript():
            g.postscript_output(fileName="HelloUser1.ps", decorations="no")

        def newFile():
            for name in g.element_names():
                g.element_delete(name)
            contact1.setentry("")
            contact2.setentry("")
            contact3.setentry("")
            contact4.setentry("")
            recovery1.setentry("")
            recovery2.setentry("")
            recovery3.setentry("")
            time_interval.setentry("")

            sus1.setentry("")
            sus2.setentry("")
            sus3.setentry("")
            death_rate1.setentry("")
            death_rate2.setentry("")
            death_rate3.setentry("")

        # --------------------------------------------------------------------------------------------------------------------------------------------------------
        buttons = Pmw.ButtonBox(hVFrame, labelpos="w", label_text="Options")
        buttons = Pmw.ButtonBox(hVFrame, labelpos="w", label_text="Options")
        buttons.pack(fill="both", expand=1, padx=10, pady=10)
        buttons.add("GRID", bg="green", command=g.grid_toggle)
        buttons.add("PLOT", bg="green", command=retrive)
        buttons.add("CLEAR", bg="green", command=newFile)
        buttons.add("SAVE", bg="green", command=postscript)
        handler = lambda: self.onCloseOtherFrameV(hVFrame)
        buttons.add("QUIT", bg="red", command=handler)
示例#15
0
    def __init__(self, master, pso_in):
        self.win = Toplevel()
        self.pso = pso_in

        label = Label(self.win, text="MoveFrequency")
        label.grid(row=0)
        self.moveFrequency = self.pso.optFunction.get_moveFrequency()
        self.e1 = Entry(self.win)
        self.e1.insert(END, str(self.moveFrequency))
        self.e1.grid(row=0, column=1)

        label = Label(self.win, text="MoveDistance")
        label.grid(row=1)
        self.moveDistance = self.pso.optFunction.get_moveDistance()
        self.e2 = Entry(self.win)
        self.e2.insert(END, str(self.moveDistance))
        self.e2.grid(row=1, column=1)

        #        self.l1 = Listbox(self.win, selectmode=SINGLE, height=2 )
        #        for item in OPTMOVESTYLE_SELECTION:
        #            self.l1.insert(END, item)
        #        self.l1.select_set(self.optFunction.get_optMoveStyle())
        #        self.l1.activate(self.optFunction.get_optMoveStyle())
        #        self.l1.grid(row=2, column=1)

        self.menu1 = Pmw.OptionMenu(self.win,
                                    labelpos='w',
                                    label_text='OptimumMoveStyle:',
                                    items=OPTMOVESTYLE_SELECTION,
                                    menubutton_width=15)
        self.menu1.setvalue(
            OPTMOVESTYLE_SELECTION[self.pso.optFunction.get_optMoveStyle()])
        self.menu1.grid(row=2, columnspan=2)

        self.menu2 = Pmw.OptionMenu(self.win,
                                    labelpos='w',
                                    label_text='UpdateStyle:',
                                    items=UPDATESTYLE_SELECTION,
                                    menubutton_width=15)
        self.menu2.setvalue(
            UPDATESTYLE_SELECTION[self.pso.optFunction.get_updateStyle()])
        self.menu2.grid(row=3, columnspan=2)

        self.menu3 = Pmw.OptionMenu(self.win,
                                    labelpos='w',
                                    label_text='DetectionMethod:',
                                    items=DETECTIONMETHOD_SELECTION,
                                    menubutton_width=15)
        self.menu3.setvalue(
            DETECTIONMETHOD_SELECTION[self.pso.get_detectionMethod()])
        self.menu3.grid(row=4, columnspan=2)

        self.menu4 = Pmw.OptionMenu(self.win,
                                    labelpos='w',
                                    label_text='ResponseMethod:',
                                    items=RESPONSEMETHOD_SELECTION,
                                    menubutton_width=15)
        self.menu4.setvalue(
            RESPONSEMETHOD_SELECTION[self.pso.get_responseMethod()])
        self.menu4.grid(row=5, columnspan=2)

        # make s row of buttons
        buttons = Pmw.ButtonBox(self.win)
        buttons.grid(row=6, columnspan=2, padx=10, pady=10)
        buttons.add('Apply', command=self.apply)
        buttons.add('Cancel', command=self.win.destroy)
示例#16
0
import Pmw
root = Tk()
root.option_readfile('optionDB')
root.title('ButtonBox')
Pmw.initialise()


def buttonPress(btn):
    print 'The "%s" button was pressed' % btn


def defaultKey(event):
    buttonBox.invoke()


buttonBox = Pmw.ButtonBox(root, labelpos='nw', label_text='ButtonBox:')
buttonBox.pack(fill=BOTH, expand=1, padx=10, pady=10)

buttonBox.add('OK', command=lambda b='ok': buttonPress(b))
buttonBox.add('Apply', command=lambda b='apply': buttonPress(b))
buttonBox.add('Cancel', command=lambda b='cancel': buttonPress(b))

# Set the default button (the one executed when <Enter> is hit).
buttonBox.setdefault('OK')
root.bind('<Return>', defaultKey)
root.focus_set()

buttonBox.alignbuttons()

root.mainloop()
    def fillInUI(self, parent):
        global _mp
        _mp = self

        self.parent = parent

        # model table
        self.frequentButtons = []
        self.infrequentButtons = []
        self._getConfig()

        import Pmw
        # action buttons
        self.buttonScroll = Pmw.ScrolledFrame(self.parent, hscrollmode='none')
        self.buttonScroll.grid(row=10, column=20, sticky='nsew')
        self.freqActionButtons = Pmw.ButtonBox(self.buttonScroll.interior(),
                                               orient='vertical',
                                               pady=0)
        self.freqActionButtons.pack()
        self._shownActions = self.freqActionButtons
        self.infreqActionButtons = Pmw.ButtonBox(self.buttonScroll.interior(),
                                                 orient='vertical',
                                                 pady=0)
        self._freqToggle = Pmw.OptionMenu(
            self.parent,
            command=self._freqToggleCB,
            items=["frequently used", "infrequently used"],
            initialitem="frequently used")
        self._freqToggle.grid(row=20, column=20)

        self._addColumns()
        # add buttons from other extensions...
        self._addButtons()

        # add standard buttons
        addButton("add/edit note...",
                  noteCmd,
                  balloon="add notation"
                  " that will be displayed in model table")
        addButton("activate",
                  lambda m, f='active', v=1, smf=setModelField: smf(
                      m, f, v, openState=1),
                  moleculesOnly=False,
                  defaultFrequent=False,
                  balloon="make selected models active"
                  "\n(responsive to mouse motions)")
        addButton("activate all",
                  lambda m, f=activateAllCmd: f(),
                  minModels=0,
                  moleculesOnly=False,
                  balloon="activate all models;\n"
                  "restore previous active states with this same button")
        addButton("activate only",
                  lambda m, f='active', smfo=setModelFieldOnly: smfo(
                      m, f, openState=1),
                  moleculesOnly=False,
                  balloon="make selected models active"
                  "\n(responsive to mouse motions);\ndeactivate others")
        addButton("attributes...",
                  attributesCmd,
                  moleculesOnly=False,
                  balloon="inspect/modify model attributes")

        def runClipping(models):
            import ModelClip
            cd = chimera.dialogs.display(ModelClip.ClipDialog.name)
            cd.setModel(models[0])

        addButton("clipping...",
                  runClipping,
                  moleculesOnly=False,
                  balloon="adjust per-model clipping plane")
        addButton("close",
                  openModels.close,
                  moleculesOnly=False,
                  balloon="close models")
        addButton("deactivate",
                  lambda m, f='active', v=0, smf=setModelField: smf(
                      m, f, v, openState=1),
                  moleculesOnly=False,
                  defaultFrequent=False,
                  balloon="make selected models inactive"
                  "\n(insensitive to mouse motions)")
        addButton("focus",
                  focusCmd,
                  moleculesOnly=False,
                  balloon="bring selected models fully into view"
                  "\nin main graphics window")
        addButton("hide",
                  lambda m, f='display', v=0, smf=setModelField: smf(m, f, v),
                  moleculesOnly=False,
                  defaultFrequent=False,
                  balloon="hide selected models; undo with 'show'")

        def showRainbowDialog(models):
            from chimera import dialogs
            from rainbow import RainbowDialog
            if len(models) > 1:
                target = "models"
            else:
                target = "residues"
            dialogs.display(RainbowDialog.name).configure(models=models,
                                                          target=target)

        addButton("rainbow...",
                  showRainbowDialog,
                  balloon="rainbow-color residues or chains")
        addButton("rename...", renameCmd, moleculesOnly=False, maxModels=1)
        addButton("select",
                  selectCmd,
                  moleculesOnly=False,
                  balloon="incorporate models into graphics window"
                  "\nselection using current selection mode"
                  "\n(see graphics window Selection menu)")
        from chainPicker import ChainPicker
        addButton("select chain(s)...",
                  lambda m, cp=ChainPicker: cp(m).enter(),
                  balloon="select some/all chains\n"
                  "(using current selection\n"
                  "mode from Selection menu)")
        addButton("sequence...", seqCmd, balloon="inspect molecule sequence")
        addButton("show",
                  lambda m, f='display', v=1, smf=setModelField: smf(m, f, v),
                  moleculesOnly=False,
                  defaultFrequent=False,
                  balloon="unhide selected models")
        addButton("show all atoms",
                  showAllAtomsCmd,
                  balloon="show all atoms"
                  " (but use 'show' to undo 'hide')")
        addButton("show only",
                  lambda m, f='display', smfo=setModelFieldOnly: smfo(m, f),
                  moleculesOnly=False,
                  balloon="show selected models and hide all others")
        addButton("surface main",
                  lambda m, c="main", sc=surfCmd: sc(m, c),
                  balloon="surface non-ligand portion of models")

        def showTileDialog(models):
            from chimera import dialogs
            from EnsembleMatch.choose import TileStructuresCB
            dialogs.display(TileStructuresCB.name).configure(models=models)

        addButton("tile...",
                  showTileDialog,
                  minModels=2,
                  moleculesOnly=False,
                  balloon="arrange selected models into a"
                  "\nrectangular grid and focus on them")
        addButton(
            "toggle active",
            lambda m, f='active', tmf=toggleModelField: tmf(m, f, openState=1),
            moleculesOnly=False,
            balloon="invert active states of selected models")
        addButton("trace backbones",
                  lambda m, bc=backboneCmd: bc(m, resTrace=0),
                  balloon="show backbone atom trace for protein"
                  "\nor nucleic acid; undo with 'show all atoms'")
        addButton("trace chains",
                  backboneCmd,
                  balloon="show residue connectivity trace for protein"
                  "\nor nucleic acid; undo with 'show all atoms'")
        from transformDialog import TransformDialog
        addButton("transform as...",
                  TransformDialog,
                  moleculesOnly=False,
                  balloon="rotate/translate models same as another model")
        from writePDBdialog import WritePDBdialog
        addButton("write PDB",
                  lambda mols: chimera.dialogs.display(WritePDBdialog.name).
                  configure(mols, selOnly=False),
                  balloon="write molecule as PDB file")
        from ksdsspDialog import KsdsspDialog
        addButton("compute SS",
                  KsdsspDialog,
                  balloon="compute secondary structure elements"
                  "\nusing Kabsch and Sander algorithm")

        maxWidth = 0
        for actionButtons in [
                self.freqActionButtons, self.infreqActionButtons
        ]:
            for i in range(actionButtons.numbuttons()):
                w = actionButtons.button(i).winfo_reqwidth()
                if w > maxWidth:
                    maxWidth = w
        self.buttonScroll.component('clipper').configure(width=maxWidth + 2,
                                                         height='2i')

        # add these last, since if they somehow fire before the
        # constructor is complete then an exception will occur
        chimera.triggers.addHandler('Model', self._fillTable, None)
        chimera.triggers.addHandler('OpenState', self._fillTable, None)
    def __init__(self):
        self.plugin_type = PLUGIN

        root = Toplevel()
        root.title('MOLE 2.5')
        root.resizable(0, 0)
        self.parent = root

        # region Create Frame and NoteBook
        self.mainframe = Frame(self.parent, width=463, height=623)
        self.mainframe.pack(fill='both', expand=1)
        self.mainframe.bind(
            '<<WrongExecutable>>', lambda e: self.when_error(
                e, 'Your MOLE 2.0 executable was not found!'))
        root.bind(
            '<F5>',
            (lambda event: self.set_structures(self.input_structure_box)))
        balloon = Pmw.Balloon(self.mainframe)

        self.points = {}
        # Binary file, Working directory, csa file
        self.main_parameters = ['', '', '']

        self.notebook = Pmw.NoteBook(self.mainframe)
        self.notebook.pack(fill='both', expand=1, padx=10, pady=10)
        # endregion

        # region self.mainPage / settings
        self.mainpage = self.notebook.add('Compute Tunnels')
        self.mainpage.focus_set()

        input_structure_group = Pmw.Group(self.mainpage,
                                          tag_text='Specify Input Structure')
        input_structure_group.pack(fill='both')

        starting_point_group = Pmw.Group(self.mainpage,
                                         tag_text='Specify Starting Point')
        starting_point_group.pack(fill='both')

        if self.plugin_type == "PyMOL":
            initialized_structs = ('all', ) + plugin.return_tuple_objects()
        else:
            initialized_structs = ()

        self.input_structure_box = Pmw.ScrolledListBox(
            input_structure_group.interior(),
            items=initialized_structs,
            labelpos='nw',
            listbox_height=4,
            listbox_selectmode=EXTENDED,
        )
        self.input_structure_box.component('listbox').configure(
            exportselection=0, background='white')
        self.input_structure_box.pack(fill='both', expand=0, padx=10, pady=5)
        balloon.bind(
            self.input_structure_box,
            'Select one or more structures in which you want to find channels.'
        )

        if self.plugin_type == "Chimera":
            self.input_structure_box.insert('end', 'all')

            if plugin.return_object_list() is not None:

                for item in plugin.return_object_list():
                    self.input_structure_box.insert('end', item)

        query = Pmw.Group(input_structure_group.interior(),
                          tag_text="Not Active Residues")
        query.pack(fill='both')
        self.query_entry = Entry(query.interior(), width=65)
        self.query_entry.config(background='white')
        self.query_entry.grid(column=0,
                              row=0,
                              padx=10,
                              pady=5,
                              sticky=W + E + N + S)
        self.query_entry.columnconfigure(0, minsize=65)
        self.query_entry.bind(
            "<KeyRelease>",
            lambda event: root.after(2500, self.validate_query))
        self.query_entry.bind('<Control-KeyRelease-a>',
                              lambda event: self.select_all_query_entry())
        self.query_entry.focus_set()

        balloon.bind(self.query_entry, 'Input not active residues here')

        self.query_label = Label(
            query.interior(),
            text=
            'Select atoms/residues not to be included in the calculation using PatternQuery '
            'syntax.',
            width=68)
        self.query_label.grid(column=0,
                              row=1,
                              padx=10,
                              pady=5,
                              sticky=W + E + N + S,
                              columnspan=2)
        self.query_help = Label(query.interior(),
                                text='?',
                                fg="blue",
                                cursor="hand2")
        self.query_help.grid(column=1, row=0, padx=[0, 10], pady=5)
        self.query_help.bind(
            "<Button-1>", lambda event: webbrowser.open_new(
                "https://webchem.ncbr.muni.cz/Wiki"
                "/PatternQuery:UserManual"))
        balloon.bind(self.query_help, 'PatternQuery Wiki pages.')
        self.is_valid = False

        self.start_points_box = Pmw.ScrolledListBox(
            starting_point_group.interior(),
            items=(),
            labelpos='nw',
            listbox_height=4,
            listbox_selectmode=EXTENDED)
        self.start_points_box.component('listbox').configure(
            exportselection=0, background='white')
        self.start_points_box.pack(fill='both', expand=0, padx=10, pady=5)
        balloon.bind(
            self.start_points_box,
            'Starting point list. If no starting point is specified, \nMOLE plugin will try to find suitable '
            'starting points automatically.\nOtherwise all selected points will be used.'
        )

        self.button_box1 = Pmw.ButtonBox(starting_point_group.interior())
        self.button_box1.pack(fill='both', expand=0, padx=10, pady=5)
        self.button_box1.add(
            'AddStartingPoint',
            text='Add Starting Point',
            command=lambda: self.add_point(self.start_points_box))
        self.button_box1.add(
            'RemoveStartingPoint',
            text='Remove Starting Point',
            command=lambda: self.remove_point(self.start_points_box))
        self.button_box1.add(
            'RefreshStructures',
            text='Refresh Structures',
            command=lambda: self.set_structures(self.input_structure_box))
        self.button_box1.alignbuttons()

        property_group = Pmw.Group(self.mainpage, tag_pyclass=None)
        property_group.pack(fill='both')

        self.overwrite_results = BooleanVar()
        self.overwrite_results.set(True)
        self.overwrite_results_button = Checkbutton(
            property_group.interior(),
            text="Overwrite results",
            variable=self.overwrite_results,
            onvalue=True,
            offvalue=False)
        self.overwrite_results_button.grid(column=0,
                                           row=0,
                                           padx=10,
                                           pady=5,
                                           sticky=W + E + N + S)
        balloon.bind(
            self.overwrite_results_button,
            'If checked MOLE will overwrite old files in output folder. Otherwise, new folder will be '
            'created in output folder.')

        self.remove_hydrogens = BooleanVar()
        self.remove_hydrogens_button = Checkbutton(
            property_group.interior(),
            text="Remove hydrogens",
            variable=self.remove_hydrogens,
            onvalue=True,
            offvalue=False)
        self.remove_hydrogens_button.grid(column=1,
                                          row=0,
                                          padx=10,
                                          pady=5,
                                          sticky=W + E + N + S)
        balloon.bind(
            self.remove_hydrogens_button,
            'If checked MOLE will remove all hydrogens from the structure prior to the calculation.'
        )

        self.ignore_het = BooleanVar()
        self.ignore_het_button = Checkbutton(property_group.interior(),
                                             text="Ignore HETeroatoms",
                                             variable=self.ignore_het,
                                             onvalue=True,
                                             offvalue=False)
        self.ignore_het_button.grid(column=2,
                                    row=0,
                                    padx=10,
                                    pady=5,
                                    sticky=W + E + N + S)
        balloon.bind(
            self.ignore_het_button,
            'If checked MOLE will exclude all HETATM entries prior to the calculation.'
        )

        self.select_working_directory_button = Button(
            property_group.interior(),
            text='Save output to:',
            command=self.select_working_directory)
        self.select_working_directory_button.grid(row=1,
                                                  column=0,
                                                  sticky=W + E + N + S,
                                                  padx=10,
                                                  pady=5)
        self.select_working_directory_button.columnconfigure(0, weight=1)
        balloon.bind(self.select_working_directory_button,
                     'Where do you wish to save output from MOLE 2.0 plugin.')

        self.working_directory = Pmw.EntryField(property_group.interior(),
                                                labelpos='w')
        self.working_directory.component('entry').configure(background='white')
        self.working_directory.grid(row=1,
                                    column=1,
                                    columnspan=2,
                                    sticky=W + E + N + S,
                                    padx=10,
                                    pady=5)
        balloon.bind(self.working_directory,
                     'Where do you wish to save output from MOLE 2.0 plugin.')

        self.generate_csa_selections_button = Button(
            property_group.interior(),
            text='Generate CSA sites:',
            command=self.CSA_button_click)
        self.generate_csa_selections_button.grid(column=0,
                                                 row=2,
                                                 sticky=W + E + N + S,
                                                 padx=10,
                                                 pady=5)
        balloon.bind(
            self.generate_csa_selections_button,
            'Specify structure by writing its PDB ID and press Generate button.'
        )
        self.structure_for_CSA = Pmw.EntryField(property_group.interior(),
                                                labelpos='w')
        self.structure_for_CSA.component('entry').configure(background='white')
        self.structure_for_CSA.component('entry').bind(
            '<Return>', lambda event: self.CSA_button_click())
        self.structure_for_CSA.grid(column=1,
                                    row=2,
                                    columnspan=2,
                                    sticky=W + E + N + S,
                                    padx=10,
                                    pady=5)
        balloon.bind(
            self.structure_for_CSA,
            'Specify structure by writing its PDB ID and press Generate button.'
        )

        self.select_CSA_button = Button(property_group.interior(),
                                        text='Select CSA file:',
                                        command=self.select_CSA)
        self.select_CSA_button.grid(column=0,
                                    row=3,
                                    sticky=W + E + N + S,
                                    padx=10,
                                    pady=5)
        balloon.bind(
            self.select_CSA_button,
            'Insert location of CSA.dat file containing CSA database for suggesting active sites as a '
            'starting points.')

        self.CSA = Pmw.EntryField(property_group.interior(), labelpos='w')
        self.CSA.component('entry').configure(background='white')
        self.CSA.grid(column=1,
                      columnspan=2,
                      row=3,
                      sticky=W + E + N + S,
                      padx=10,
                      pady=5)
        balloon.bind(
            self.CSA,
            'Insert location of CSA.dat file containing CSA database for suggesting active sites as a '
            'starting points.')

        self.select_executable_button = Button(property_group.interior(),
                                               text='MOLE 2.5 location:',
                                               command=self.select_executable)
        self.select_executable_button.grid(column=0,
                                           row=4,
                                           sticky=W + E + N + S,
                                           padx=10,
                                           pady=5)
        balloon.bind(
            self.select_executable_button,
            'Select proper path to the MOLE 2.0 command line location')

        self.executable = Pmw.EntryField(property_group.interior(),
                                         labelpos='w')
        self.executable.component('entry').configure(background='white')
        self.executable.grid(column=1,
                             columnspan=2,
                             row=4,
                             sticky=W + E + N + S,
                             padx=10,
                             pady=5)
        balloon.bind(
            self.executable,
            'Select proper path to the MOLE 2.5 command line location.')

        self.compute_tunnels_button = Button(
            self.mainpage,
            text='Compute Tunnels',
            font=("Helvetica", 12, "bold"),
            command=lambda b='tunnels': Manager.Manager(
            ).construct_params_and_run(self, b))
        self.compute_tunnels_button.pack(side=BOTTOM,
                                         fill='both',
                                         expand=0,
                                         padx=10,
                                         pady=5)

        # endregion

        # region self.paramsPage / params
        self.params_page = self.notebook.add('Settings')
        cavity_parameters_group = Pmw.Group(self.params_page,
                                            tag_text='Cavity Parameters')
        cavity_parameters_group.pack(fill='both', expand=4)

        self.probe_radius = Pmw.Counter(cavity_parameters_group.interior(),
                                        labelpos='w',
                                        label_text='Probe Radius',
                                        entryfield_value='3',
                                        increment=0.1,
                                        entryfield_validate={
                                            'validator': 'real',
                                            'separator': '.',
                                            'min': 1.4,
                                            'max': 45
                                        },
                                        datatype={
                                            'counter': 'real',
                                            'separator': '.'
                                        })
        self.probe_radius.component('entry').configure(background='white')
        balloon.bind(self.probe_radius,
                     'Radius used for construction of molecular surface.')

        self.interior_threshold = Pmw.Counter(
            cavity_parameters_group.interior(),
            labelpos='w',
            label_text='Interior Threshold',
            entryfield_value='1.25',
            increment=0.1,
            entryfield_validate={
                'validator': 'real',
                'separator': '.',
                'min': 0.8,
                'max': 45.0
            },
            datatype={
                'counter': 'real',
                'separator': '.'
            })
        self.interior_threshold.component('entry').configure(
            background='white')
        balloon.bind(self.interior_threshold,
                     'Lower bound of the tunnel radius.')

        self.surface_cover_radius = Pmw.Counter(
            cavity_parameters_group.interior(),
            labelpos='w',
            label_text='Surface Cover Radius',
            entryfield_value='10',
            increment=0.1,
            entryfield_validate={
                'validator': 'real',
                'separator': '.',
                'min': 5.0,
                'max': 25.0
            },
            datatype={
                'counter': 'real',
                'separator': '.'
            })
        self.surface_cover_radius.component('entry').configure(
            background='white')
        balloon.bind(
            self.surface_cover_radius,
            'Determines the density of tunnel exits on the molecular surface.')

        self.origin_radius = Pmw.Counter(cavity_parameters_group.interior(),
                                         labelpos='w',
                                         label_text='Origin Radius',
                                         entryfield_value='5',
                                         increment=0.1,
                                         entryfield_validate={
                                             'validator': 'real',
                                             'separator': '.',
                                             'min': 0.1,
                                             'max': 10.0
                                         },
                                         datatype={
                                             'counter': 'real',
                                             'separator': '.'
                                         })
        self.origin_radius.component('entry').configure(background='white')
        balloon.bind(
            self.origin_radius,
            'Better starting points are localized within the defined radius from the original starting point.'
        )

        filter_settings = Pmw.Group(self.params_page,
                                    tag_text='Tunnel Parameters')
        filter_settings.pack(fill='both', expand=4)
        self.bottleneck_radius = Pmw.Counter(filter_settings.interior(),
                                             labelpos='w',
                                             label_text='Bottleneck Radius',
                                             entryfield_value='1.25',
                                             increment=0.1,
                                             entryfield_validate={
                                                 'validator': 'real',
                                                 'separator': '.',
                                                 'min': 0.1,
                                                 'max': 6.0
                                             },
                                             datatype={
                                                 'counter': 'real',
                                                 'separator': '.'
                                             })
        self.bottleneck_radius.component('entry').configure(background='white')
        balloon.bind(self.bottleneck_radius, 'The minimum radius of a tunnel.')

        self.bottleneck_length = Pmw.Counter(filter_settings.interior(),
                                             labelpos='w',
                                             label_text='Bottleneck Length',
                                             entryfield_value='3',
                                             increment=0.1,
                                             entryfield_validate={
                                                 'validator': 'real',
                                                 'separator': '.',
                                                 'min': 0.0,
                                                 'max': 20.0
                                             },
                                             datatype={
                                                 'counter': 'real',
                                                 'separator': '.'
                                             })
        self.bottleneck_length.component('entry').configure(background='white')
        balloon.bind(
            self.bottleneck_length,
            'Length of a possible profile narrower than the Bottleneck Radius')

        self.cutoff_ratio = Pmw.Counter(filter_settings.interior(),
                                        labelpos='w',
                                        label_text='Cutoff Ratio',
                                        entryfield_value='0.7',
                                        increment=0.05,
                                        entryfield_validate={
                                            'validator': 'real',
                                            'separator': '.',
                                            'min': 0.0,
                                            'max': 1.0
                                        },
                                        datatype={
                                            'counter': 'real',
                                            'separator': '.'
                                        })
        self.cutoff_ratio.component('entry').configure(background='white')
        balloon.bind(
            self.cutoff_ratio,
            'Determines maximum similarity of tunnels centerline. \nIf two tunnels are more similar than the '
            'threshold, the longer is discarded.')

        # region load executable location from settingsfile

        temp_path = os.path.normcase(
            str(os.environ['TEMP']) if 'win32' ==
            str.lower(sys.platform) else '/tmp/')

        if os.path.exists(CONFIGFILE):

            try:
                with open(CONFIGFILE, 'r') as f:
                    self.main_parameters = list(
                        map(lambda x: os.path.normcase(x), pickle.load(f)))
                    self.executable.setvalue(self.main_parameters[0])
                    self.working_directory.setvalue(self.main_parameters[1])
                    self.CSA.setvalue(self.main_parameters[2])

            except:
                self.executable.setvalue('')
                self.working_directory.setvalue(temp_path)
                self.CSA.setvalue('')

        else:
            self.working_directory.setvalue(temp_path)
            self.main_parameters[1] = temp_path
            with open(CONFIGFILE, 'w') as f:
                pickle.dump(self.main_parameters, f)
        # endregion

        self.params = (self.probe_radius, self.interior_threshold,
                       self.surface_cover_radius, self.origin_radius,
                       self.bottleneck_radius, self.bottleneck_length,
                       self.cutoff_ratio)
        Pmw.alignlabels(self.params)

        for counter in self.params:
            counter.pack(fill='both', expand=1, padx=10, pady=5)

        weight_function_group = Pmw.Group(self.params_page,
                                          tag_text='Weight Function')
        weight_function_group.pack(fill='both', expand=0)

        self.weight_function = StringVar()

        self.voronoi_button = Radiobutton(weight_function_group.interior(),
                                          text='Voronoi Scale',
                                          variable=self.weight_function,
                                          value="VoronoiScale")
        self.voronoi_button.grid(column=0,
                                 row=0,
                                 padx=30,
                                 pady=5,
                                 sticky=W + E + N + S)
        balloon.bind(
            self.voronoi_button,
            'Recommended for identification of tunnels leading to the buried active sites'
        )

        self.length_radius_button = Radiobutton(
            weight_function_group.interior(),
            text='Length + Radius',
            variable=self.weight_function,
            value="LengthAndRadius")
        self.length_radius_button.grid(column=1,
                                       row=0,
                                       padx=30,
                                       pady=5,
                                       sticky=W + E + N + S)
        balloon.bind(self.length_radius_button,
                     'Old and universal MOLE 2.0 weight function')

        self.length_button = Radiobutton(weight_function_group.interior(),
                                         text='Length',
                                         variable=self.weight_function,
                                         value="Length")
        self.length_button.grid(column=2,
                                row=0,
                                padx=30,
                                pady=5,
                                sticky=W + E + N + S)
        balloon.bind(self.length_button,
                     'Recommended for identification of transmembrane pores')

        self.voronoi_button.invoke()

        # endregion

        # region self.pathPage / settings
        self.path_page = self.notebook.add('Compute Pores')

        input_structure_group = Pmw.Group(
            self.path_page, tag_text='Specify pores starting points')
        input_structure_group.pack(fill='both')

        self.path_starting_points_box = Pmw.ScrolledListBox(
            input_structure_group.interior(),
            items=(),
            labelpos='nw',
            label_text='Starting Points',
            listbox_height=4,
            listbox_selectmode=EXTENDED)
        self.path_starting_points_box.component('listbox').configure(
            exportselection=0, background='white')
        self.path_starting_points_box.pack(fill='both',
                                           expand=0,
                                           padx=10,
                                           pady=5)
        self.path_starting_points_box.bind(
            '<Delete>',
            lambda event: self.remove_point(self.path_starting_points_box))
        balloon.bind(
            self.path_starting_points_box,
            'Starting point list. Every starting point must have coresponding end point.'
        )

        self.button_box2 = Pmw.ButtonBox(input_structure_group.interior())
        self.button_box2.pack(fill='both', expand=0, padx=10, pady=5)
        self.button_box2.add(
            'AddStartingPoint',
            text='Add Starting Points',
            command=lambda: self.add_point(self.path_starting_points_box))
        self.button_box2.add(
            'RemoveStartingPoint',
            text='Remove Starting Points',
            command=lambda: self.remove_point(self.path_starting_points_box))
        self.button_box2.alignbuttons()

        input_structure_group = Pmw.Group(self.path_page,
                                          tag_text='Specify pores end points')
        input_structure_group.pack(fill='both')

        self.path_end_points_box = Pmw.ScrolledListBox(
            input_structure_group.interior(),
            items=(),
            labelpos='nw',
            label_text='End Points',
            listbox_height=4,
            listbox_selectmode=EXTENDED)
        self.path_end_points_box.component('listbox').configure(
            exportselection=0, background='white')
        self.path_end_points_box.bind(
            '<Delete>',
            lambda event: self.remove_point(self.path_end_points_box))
        self.path_end_points_box.pack(fill='both', expand=0, padx=10, pady=5)
        balloon.bind(
            self.path_end_points_box,
            'End points list. Every end point must have coresponding starting point.'
        )

        self.button_box3 = Pmw.ButtonBox(input_structure_group.interior())
        self.button_box3.pack(fill='both', expand=0, padx=10, pady=5)
        self.button_box3.add(
            'AddEndPoint',
            text='Add End Points',
            command=lambda: self.add_point(self.path_end_points_box))
        self.button_box3.add(
            'RemoveEndPoint',
            text='Remove end points',
            command=lambda: self.remove_point(self.path_end_points_box))
        self.button_box3.alignbuttons()

        self.compute_pores_button = Button(
            self.path_page,
            text='Compute Pores',
            font=("Helvetica", 12, "bold"),
            command=lambda b='pores': Manager.Manager(
            ).construct_params_and_run(self, b))
        self.compute_pores_button.pack(fill='both', expand=0, padx=10, pady=5)
        # endregion

        # prev set

        # region READ
        self.read_page = self.notebook.add('Read Channels')
        read_group = Pmw.Group(
            self.read_page,
            tag_text='Select a file with previously computed MOLE tunnels/pores'
        )
        read_group.pack(fill='both')
        self.open_channels_button = Button(read_group.interior(),
                                           text='Open computation results',
                                           command=self.open_channels,
                                           font=("Helvetica", 12, "bold"))
        self.open_channels_button.pack(fill='both', expand=0, padx=10, pady=5)

        # endregion

        # region QuickStartGuide

        self.guide_page = self.notebook.add('Quick Guide')

        guide = Text(self.guide_page, width=72, wrap=WORD)
        guide.config(padx=5, pady=8)
        guide.tag_configure('big', font=('Arial', 12, 'bold'))
        guide.tag_configure('plain_text', font=('Arial', 10))
        guide.tag_configure('smaller', font=('Arial', 9))

        guide.insert(END, 'Plugin description:\n\n', 'big')
        plugin_description = (
            "The plugin is separated into several tabs The crucial for the calculation are: "
            "Compute Tunnels, Settings, and Compute Pores. At first, specify location of output "
            "folder and MOLE 2.5 command line executable. Afterwards, select a structure in the "
            "'input structure listbox' and starting point from the 'starting point listbox'. "
            "Additionally, if you provide a path to the CSA database [1], the plugin will suggest "
            "you the potential starting points.\n\n")
        guide.insert(END, plugin_description, 'plain_text')

        guide.insert(END, "Run:\n\n", 'big')
        run_description = (
            "After selecting one or more structures and one or more starting points by clicking 'Add Starting Point'. Additional "
            "search parameters can be adjusted in the Settings tabs. For further info on how to use this "
            "please refer the included manual or visit our webpages. Whenever you would feel lost just "
            "hover your cursor above any element in order to get tooltip. For more info and news about the "
            "MOLE 2.5 visit our webpages.\n")

        guide.insert(END, run_description, 'plain_text')

        improve_text = (
            "\n"
            "Also if you would like to make a suggestion on how to "
            "improve MOLE or send a bug report, please contact authors at [email protected] "
            "or the author of this extension directly - [email protected]\n\n"
        )

        guide.insert(END, improve_text, 'plain_text')
        guide.insert(END, "Happy tunneling!    ", 'big')
        team_text = (
            "Mole development team. http://mole.chemi.muni.cz\n\n"
            "[1] Furnham,N., Holliday,G.L., De Beer,T.A.P., Jacobsen,J.O.B., Pearson,W.R. and Thornton,J.M. (2014) "
            "The Catalytic Site Atlas 2.0: Cataloging catalytic sites and residues identified in enzymes. Nucleic "
            "Acids Res., 42, 1–5.")
        guide.insert(END, team_text, 'smaller')
        guide.config(state=DISABLED)

        guide.pack(side=LEFT, fill='both')

        # endregion

        # region AuthorsPage
        self.authors_page = self.notebook.add('Authors')
        authors_text_widget = Text(self.authors_page, width=72, height=17)
        authors_text_widget.config(padx=5, bg='#52A300', pady=8)
        authors_text_widget.tag_configure('plain_text',
                                          font=('Arial', 10),
                                          foreground='white')
        authors_text_widget.insert(
            END,
            "If you find this tool useful for your work please cite it as:\n\n",
            'plain_text')
        cite_text = (
            "Sehnal D, Svobodova Varekova R, Berka K, Pravda L, Navratilova V,\nBanas P, Ionescu C-M, Otyepka M, "
            "Koca J. MOLE2.0: advanced approach for analysis of biomacromolecular channels. Journal of "
            "Cheminformatics 2013, 5:39., doi:10.1186/1758-2946-5-39.\n\n"
            "If you were using the web server, which is available at http://mole.upol.cz/ please cite it as:\n\n"
            "Berka K, Hanak O, Sehnal D, Banas P, Navratilova V, Jaiswal D,Ionescu C-M, Svobodova Varekova R, "
            "Koca J, Otyepka M.\nMOLEonline 2.0: interactive web-based analysis of biomacromolecular\nchannels. Nucleic "
            "acids research 2012, 40:W222?7., doi:10.1093/nar/gks363")

        authors_text_widget.insert(END, cite_text, 'plain_text')
        authors_text_widget.config(state=DISABLED)
        authors_text_widget.pack(side=LEFT, fill='both')

        # endregion

        Label(
            self.mainframe,
            relief='sunken',
            anchor=W,
            justify=LEFT,
            bg='#52A300',
            fg='white',
            font=("Helvetica", 12),
            padx=10,
            pady=10,
            text=
            "(c) 2017 CEITEC & NCBR MU & FCH UPOL\nhttp://mole.chemi.muni.cz                                v. "
            "2.5.17.7.11").pack(fill='both')

        self.notebook.setnaturalsize()
        self.wd = os.path.realpath(os.path.normcase(self.main_parameters[1]))
        self.xml_wd = os.path.realpath(
            os.path.normcase(self.main_parameters[1] + "/xml/"))
        self.profile_wd = os.path.realpath(
            os.path.normcase(self.main_parameters[1] + "/pymol/"))
        os.system('xset r off')  # for keypress

        self.original_view = None
示例#19
0
    def __init__(self, app):
        parent = app.root
        self.parent = parent
        self.target_data = [None, 0, 0, 0, 30, 30, 30]
        self.offtarget_data = [None, 0, 0, 0, 30, 30, 30]
        self.build = False
        self.read_data()
        self.saved = True
        # box display settings
        self.target_box_is_on_display = True
        self.offtarget_box_is_on_display = True
        self.box_display_cylinder_size = 0.2
        self.target_grid_center_selection_mode = IntVar()
        self.offtarget_grid_center_selection_mode = IntVar()

        # grid definition
        self.grid_spacing = 1.0

        self.target_grid_center = [DoubleVar(), DoubleVar(), DoubleVar()]
        self.target_grid_center[0].set(self.target_data[1])
        self.target_grid_center[1].set(self.target_data[2])
        self.target_grid_center[2].set(self.target_data[3])
        self.target_grid_size = [IntVar(), IntVar(), IntVar()]
        self.target_grid_size[0].set(self.target_data[4])
        self.target_grid_size[1].set(self.target_data[5])
        self.target_grid_size[2].set(self.target_data[6])
        self.offtarget_grid_center = [DoubleVar(), DoubleVar(), DoubleVar()]
        self.offtarget_grid_center[0].set(self.offtarget_data[1])
        self.offtarget_grid_center[1].set(self.offtarget_data[2])
        self.offtarget_grid_center[2].set(self.offtarget_data[3])
        self.offtarget_grid_size = [IntVar(), IntVar(), IntVar()]
        self.offtarget_grid_size[0].set(self.offtarget_data[4])
        self.offtarget_grid_size[1].set(self.offtarget_data[5])
        self.offtarget_grid_size[2].set(self.offtarget_data[6])
        self.target_grid_center_selection_mode.set(
            GRID_CENTER_FROM_COORDINATES)
        self.offtarget_grid_center_selection_mode.set(
            GRID_CENTER_FROM_COORDINATES_B)

        # build main window
        self.main_window = Pmw.Dialog(parent,
                                      buttons=('Save Box Info', ),
                                      title='PyMOL AMDock Plugin',
                                      command=self.check_for_exit)
        self.main_window.withdraw()
        Pmw.setbusycursorattributes(self.main_window.component('hull'))
        self.status_bar = Label(self.main_window.interior(),
                                relief='sunken',
                                font='times 10',
                                anchor='w',
                                fg='green',
                                bg='black')
        self.status_bar.pack(side=BOTTOM, fill='x', expand=1, padx=0, pady=0)
        if self.target_data[0] and self.offtarget_data[0]:
            self.main_window.geometry('550x640')
        else:
            self.main_window.geometry('550x400')
        # self.main_window.bind('<Return>', self.button_pressed)

        # the title

        self.title_label = tkinter.Label(
            self.main_window.interior(),
            text=
            'PyMOL AMDock Plugin\n [ Assisted Molecular Docking For AutoDock4 and '
            'Autodock Vina ]\nFeel free to write us for any suggestions or errors '
            'you find\nhttps://groups.google.com/forum/#!forum/amdock\nThis '
            'plugin is based in Daniel Seeliger plugin.',
            background='navy',
            foreground='white',
            font='times 12')
        self.title_label.pack(expand=0, fill='both', padx=4, pady=4)

        # Target group
        self.target_group = Pmw.Group(self.main_window.interior(),
                                      tag_text='Target')
        self.target_group.pack(fill='both', expand=0, padx=10, pady=5)
        if not self.target_data[0]:
            self.target_group.collapse()
        # Off-Target group
        self.offtarget_group = Pmw.Group(self.main_window.interior(),
                                         tag_text='Off-Target')
        self.offtarget_group.pack(fill='both', expand=0, padx=10, pady=5)
        if not self.offtarget_data[0]:
            self.offtarget_group.collapse()
        # Target GRID DEFINITION
        self.target_grid_group = Pmw.Group(self.target_group.interior(),
                                           tag_text='Grid Dimensions')
        self.target_grid_group.pack(fill='both', expand=0, padx=10, pady=5)
        # Off-Target GRID DEFINITION
        self.offtarget_grid_group = Pmw.Group(self.offtarget_group.interior(),
                                              tag_text='Grid Dimensions')
        self.offtarget_grid_group.pack(fill='both', expand=0, padx=10, pady=5)

        # n grid points entries target
        self.target_size_x_frame = tkinter.Frame(
            self.target_grid_group.interior())
        self.target_size_x_label = Label(self.target_size_x_frame, text='X:')
        self.target_size_x_location = Entry(
            self.target_size_x_frame,
            textvariable=self.target_grid_size[0],
            bg='black',
            fg='yellow',
            width=7)
        self.target_size_x_scrollbar = Scrollbar(
            self.target_size_x_frame,
            orient='horizontal',
            command=self.target_size_x_changed)
        self.target_size_x_scrollbar.set('0.5', '0.51')

        self.target_size_y_frame = tkinter.Frame(
            self.target_grid_group.interior())
        self.target_size_y_label = Label(self.target_size_y_frame, text='Y:')
        self.target_size_y_location = Entry(
            self.target_size_y_frame,
            textvariable=self.target_grid_size[1],
            bg='black',
            fg='yellow',
            width=7)
        self.target_size_y_scrollbar = Scrollbar(
            self.target_size_y_frame,
            orient='horizontal',
            command=self.target_size_y_changed)
        self.target_size_y_scrollbar.set('0.5', '0.51')

        self.target_size_z_frame = tkinter.Frame(
            self.target_grid_group.interior())
        self.target_size_z_label = Label(self.target_size_z_frame, text='Z:')
        self.target_size_z_location = Entry(
            self.target_size_z_frame,
            textvariable=self.target_grid_size[2],
            bg='black',
            fg='yellow',
            width=7)
        self.target_size_z_scrollbar = Scrollbar(
            self.target_size_z_frame,
            orient='horizontal',
            command=self.target_size_z_changed)
        self.target_size_z_scrollbar.set('0.5', '0.51')

        self.target_size_x_label.pack(side=LEFT)
        self.target_size_x_location.pack(side=LEFT)
        self.target_size_x_scrollbar.pack(side=LEFT)
        self.target_size_x_frame.pack(side=LEFT, padx=4, pady=1)

        self.target_size_y_label.pack(side=LEFT)
        self.target_size_y_location.pack(side=LEFT)
        self.target_size_y_scrollbar.pack(side=LEFT)
        self.target_size_y_frame.pack(side=LEFT, padx=4, pady=1)

        self.target_size_z_label.pack(side=LEFT)
        self.target_size_z_location.pack(side=LEFT)
        self.target_size_z_scrollbar.pack(side=LEFT)
        self.target_size_z_frame.pack(side=LEFT, padx=4, pady=1)

        Pmw.alignlabels([
            self.target_size_x_label, self.target_size_y_label,
            self.target_size_z_label
        ])

        Pmw.alignlabels([
            self.target_size_x_location, self.target_size_y_location,
            self.target_size_z_location
        ])
        # n grid points entries off-target
        self.offtarget_size_x_frame = tkinter.Frame(
            self.offtarget_grid_group.interior())
        self.offtarget_size_x_label = Label(self.offtarget_size_x_frame,
                                            text='X:')
        self.offtarget_size_x_location = Entry(
            self.offtarget_size_x_frame,
            textvariable=self.offtarget_grid_size[0],
            bg='black',
            fg='yellow',
            width=7)
        self.offtarget_size_x_scrollbar = Scrollbar(
            self.offtarget_size_x_frame,
            orient='horizontal',
            command=self.offtarget_size_x_changed)
        self.offtarget_size_x_scrollbar.set('0.5', '0.51')

        self.offtarget_size_y_frame = tkinter.Frame(
            self.offtarget_grid_group.interior())
        self.offtarget_size_y_label = Label(self.offtarget_size_y_frame,
                                            text='Y:')
        self.offtarget_size_y_location = Entry(
            self.offtarget_size_y_frame,
            textvariable=self.offtarget_grid_size[1],
            bg='black',
            fg='yellow',
            width=7)
        self.offtarget_size_y_scrollbar = Scrollbar(
            self.offtarget_size_y_frame,
            orient='horizontal',
            command=self.offtarget_size_y_changed)
        self.offtarget_size_y_scrollbar.set('0.5', '0.51')

        self.offtarget_size_z_frame = tkinter.Frame(
            self.offtarget_grid_group.interior())
        self.offtarget_size_z_label = Label(self.offtarget_size_z_frame,
                                            text='Z:')
        self.offtarget_size_z_location = Entry(
            self.offtarget_size_z_frame,
            textvariable=self.offtarget_grid_size[2],
            bg='black',
            fg='yellow',
            width=7)
        self.offtarget_size_z_scrollbar = Scrollbar(
            self.offtarget_size_z_frame,
            orient='horizontal',
            command=self.offtarget_size_z_changed)
        self.offtarget_size_z_scrollbar.set('0.5', '0.51')

        self.offtarget_size_x_label.pack(side=LEFT)
        self.offtarget_size_x_location.pack(side=LEFT)
        self.offtarget_size_x_scrollbar.pack(side=LEFT)
        self.offtarget_size_x_frame.pack(side=LEFT, padx=4, pady=1)

        self.offtarget_size_y_label.pack(side=LEFT)
        self.offtarget_size_y_location.pack(side=LEFT)
        self.offtarget_size_y_scrollbar.pack(side=LEFT)
        self.offtarget_size_y_frame.pack(side=LEFT, padx=4, pady=1)

        self.offtarget_size_z_label.pack(side=LEFT)
        self.offtarget_size_z_location.pack(side=LEFT)
        self.offtarget_size_z_scrollbar.pack(side=LEFT)
        self.offtarget_size_z_frame.pack(side=LEFT, padx=4, pady=1)

        Pmw.alignlabels([
            self.offtarget_size_x_label, self.offtarget_size_y_label,
            self.offtarget_size_z_label
        ])

        Pmw.alignlabels([
            self.offtarget_size_x_location, self.offtarget_size_y_location,
            self.offtarget_size_z_location
        ])

        # target display option buttons
        self.target_display_button_box = Pmw.ButtonBox(
            self.target_group.interior(), padx=1, pady=1, orient='horizontal')
        self.target_display_button_box.add('Show Box',
                                           command=self.show_target_box)
        self.target_display_button_box.add('Hide Box',
                                           command=self.hide_target_box)
        self.target_display_button_box.add('Reset', command=self.reset_target)
        self.target_display_button_box.pack(side=TOP, expand=1, padx=3, pady=3)
        # off-target display option buttons
        self.offtarget_display_button_box = Pmw.ButtonBox(
            self.offtarget_group.interior(),
            padx=1,
            pady=1,
            orient='horizontal')
        self.offtarget_display_button_box.add('Show Box',
                                              command=self.show_offtarget_box)
        self.offtarget_display_button_box.add('Hide Box',
                                              command=self.hide_offtarget_box)
        self.offtarget_display_button_box.add('Reset',
                                              command=self.reset_offtarget)
        self.offtarget_display_button_box.pack(side=TOP,
                                               expand=1,
                                               padx=3,
                                               pady=3)

        self.target_grid_center_radiogroups = []
        self.offtarget_grid_center_radiogroups = []

        self.target_grid_center_radioframe = tkinter.Frame(
            self.target_group.interior())
        self.target_grid_center_pymol_selection = Pmw.Group(
            self.target_grid_center_radioframe,
            tag_pyclass=tkinter.Radiobutton,
            tag_text='Calculate Grid Center by Selection',
            tag_value=GRID_CENTER_FROM_SELECTION,
            tag_variable=self.target_grid_center_selection_mode)

        self.target_grid_center_pymol_selection.pack(fill='x',
                                                     expand=1,
                                                     side=TOP)

        self.target_grid_center_radiogroups.append(
            self.target_grid_center_pymol_selection)

        self.target_grid_center_selection_user = Pmw.EntryField(
            self.target_grid_center_pymol_selection.interior(),
            labelpos='w',
            label_text='Selection',
            value='(all)',
            command=self.target_grid_center_from_selection_changed)
        self.target_grid_center_selection_user.pack(fill='x',
                                                    padx=4,
                                                    pady=1,
                                                    expand=0)

        self.target_grid_center_coordinates = Pmw.Group(
            self.target_grid_center_radioframe,
            tag_pyclass=tkinter.Radiobutton,
            tag_text='Grid Center Coordinates',
            tag_value=GRID_CENTER_FROM_COORDINATES,
            tag_variable=self.target_grid_center_selection_mode)
        self.target_grid_center_coordinates.pack(fill='x', expand=1, side=TOP)

        self.target_grid_center_radiogroups.append(
            self.target_grid_center_coordinates)

        self.target_grid_center_radioframe.pack(padx=6,
                                                pady=6,
                                                expand='yes',
                                                fill='both')
        Pmw.aligngrouptags(self.target_grid_center_radiogroups)

        self.offtarget_grid_center_radioframe = tkinter.Frame(
            self.offtarget_group.interior())
        self.offtarget_grid_center_pymol_selection = Pmw.Group(
            self.offtarget_grid_center_radioframe,
            tag_pyclass=tkinter.Radiobutton,
            tag_text='Calculate Grid Center by Selection',
            tag_value=GRID_CENTER_FROM_SELECTION_B,
            tag_variable=self.offtarget_grid_center_selection_mode)

        self.offtarget_grid_center_pymol_selection.pack(fill='x',
                                                        expand=1,
                                                        side=TOP)

        self.offtarget_grid_center_radiogroups.append(
            self.offtarget_grid_center_pymol_selection)

        self.offtarget_grid_center_selection_user = Pmw.EntryField(
            self.offtarget_grid_center_pymol_selection.interior(),
            labelpos='w',
            label_text='Selection',
            value='(all)',
            command=self.offtarget_grid_center_from_selection_changed)
        self.offtarget_grid_center_selection_user.pack(fill='x',
                                                       padx=4,
                                                       pady=1,
                                                       expand=0)

        self.offtarget_grid_center_coordinates = Pmw.Group(
            self.offtarget_grid_center_radioframe,
            tag_pyclass=tkinter.Radiobutton,
            tag_text='Grid Center Coordinates',
            tag_value=GRID_CENTER_FROM_COORDINATES_B,
            tag_variable=self.offtarget_grid_center_selection_mode)
        self.offtarget_grid_center_coordinates.pack(fill='x',
                                                    expand=1,
                                                    side=TOP)

        self.offtarget_grid_center_radiogroups.append(
            self.offtarget_grid_center_coordinates)

        self.offtarget_grid_center_radioframe.pack(padx=6,
                                                   pady=6,
                                                   expand='yes',
                                                   fill='both')
        Pmw.aligngrouptags(self.offtarget_grid_center_radiogroups)

        self.target_center_x_frame = tkinter.Frame(
            self.target_grid_center_coordinates.interior())
        self.target_center_x_label = Label(self.target_center_x_frame,
                                           text='X:')
        self.target_center_x_location = Entry(
            self.target_center_x_frame,
            textvariable=self.target_grid_center[0],
            bg='black',
            fg='yellow',
            width=10)
        self.target_center_x_scrollbar = Scrollbar(
            self.target_center_x_frame,
            orient='horizontal',
            command=self.target_center_x_changed)
        self.target_center_x_scrollbar.set('0.5', '0.51')

        self.target_center_y_frame = tkinter.Frame(
            self.target_grid_center_coordinates.interior())
        self.target_center_y_label = Label(self.target_center_y_frame,
                                           text='Y:')
        self.target_center_y_location = Entry(
            self.target_center_y_frame,
            textvariable=self.target_grid_center[1],
            bg='black',
            fg='yellow',
            width=10)
        self.target_center_y_scrollbar = Scrollbar(
            self.target_center_y_frame,
            orient='horizontal',
            command=self.target_center_y_changed)
        self.target_center_y_scrollbar.set('0.5', '0.51')

        self.target_center_z_frame = tkinter.Frame(
            self.target_grid_center_coordinates.interior())
        self.target_center_z_label = Label(self.target_center_z_frame,
                                           text='Z:')
        self.target_center_z_location = Entry(
            self.target_center_z_frame,
            textvariable=self.target_grid_center[2],
            bg='black',
            fg='yellow',
            width=10)
        self.target_center_z_scrollbar = Scrollbar(
            self.target_center_z_frame,
            orient='horizontal',
            command=self.target_center_z_changed)
        self.target_center_z_scrollbar.set('0.5', '0.51')

        self.target_center_x_label.pack(side=LEFT)
        self.target_center_x_location.pack(side=LEFT)
        self.target_center_x_scrollbar.pack(side=LEFT)
        self.target_center_x_frame.pack(side=LEFT, padx=4, pady=1)

        self.target_center_y_label.pack(side=LEFT)
        self.target_center_y_location.pack(side=LEFT)
        self.target_center_y_scrollbar.pack(side=LEFT)
        self.target_center_y_frame.pack(side=LEFT, padx=4, pady=1)

        self.target_center_z_label.pack(side=LEFT)
        self.target_center_z_location.pack(side=LEFT)
        self.target_center_z_scrollbar.pack(side=LEFT)
        self.target_center_z_frame.pack(side=LEFT, padx=4, pady=1)

        self.offtarget_center_x_frame = tkinter.Frame(
            self.offtarget_grid_center_coordinates.interior())
        self.offtarget_center_x_label = Label(self.offtarget_center_x_frame,
                                              text='X:')
        self.offtarget_center_x_location = Entry(
            self.offtarget_center_x_frame,
            textvariable=self.offtarget_grid_center[0],
            bg='black',
            fg='yellow',
            width=10)
        self.offtarget_center_x_scrollbar = Scrollbar(
            self.offtarget_center_x_frame,
            orient='horizontal',
            command=self.offtarget_center_x_changed)
        self.offtarget_center_x_scrollbar.set('0.5', '0.51')

        self.offtarget_center_y_frame = tkinter.Frame(
            self.offtarget_grid_center_coordinates.interior())
        self.offtarget_center_y_label = Label(self.offtarget_center_y_frame,
                                              text='Y:')
        self.offtarget_center_y_location = Entry(
            self.offtarget_center_y_frame,
            textvariable=self.offtarget_grid_center[1],
            bg='black',
            fg='yellow',
            width=10)
        self.offtarget_center_y_scrollbar = Scrollbar(
            self.offtarget_center_y_frame,
            orient='horizontal',
            command=self.offtarget_center_y_changed)
        self.offtarget_center_y_scrollbar.set('0.5', '0.51')

        self.offtarget_center_z_frame = tkinter.Frame(
            self.offtarget_grid_center_coordinates.interior())
        self.offtarget_center_z_label = Label(self.offtarget_center_z_frame,
                                              text='Z:')
        self.offtarget_center_z_location = Entry(
            self.offtarget_center_z_frame,
            textvariable=self.offtarget_grid_center[2],
            bg='black',
            fg='yellow',
            width=10)
        self.offtarget_center_z_scrollbar = Scrollbar(
            self.offtarget_center_z_frame,
            orient='horizontal',
            command=self.offtarget_center_z_changed)
        self.offtarget_center_z_scrollbar.set('0.5', '0.51')

        self.offtarget_center_x_label.pack(side=LEFT)
        self.offtarget_center_x_location.pack(side=LEFT)
        self.offtarget_center_x_scrollbar.pack(side=LEFT)
        self.offtarget_center_x_frame.pack(side=LEFT, padx=4, pady=1)

        self.offtarget_center_y_label.pack(side=LEFT)
        self.offtarget_center_y_location.pack(side=LEFT)
        self.offtarget_center_y_scrollbar.pack(side=LEFT)
        self.offtarget_center_y_frame.pack(side=LEFT, padx=4, pady=1)

        self.offtarget_center_z_label.pack(side=LEFT)
        self.offtarget_center_z_location.pack(side=LEFT)
        self.offtarget_center_z_scrollbar.pack(side=LEFT)
        self.offtarget_center_z_frame.pack(side=LEFT, padx=4, pady=1)

        self.show_target_box()

        self.main_window.show()
        self.status_bar.configure(text="Version: %s" % __version__)
示例#20
0
    def display_arrays(self):
        ma  = self.main
        self.balloon = Pmw.Balloon(ma)
        self.menuBar = Pmw.MenuBar(ma, hull_borderwidth=1,
                                   hull_relief = 'raised',
                                   hotkeys=1, balloon = self.balloon)
        self.menuBar.pack(fill='x')
        self.menuBar.addmenu('File', 'Read, Cancel, Exit')
        self.menuBar.addmenuitem('File', 'command',
                                 'Read this file with these arrays',
                                 label='Read',
                                 command= Command(self.btn_press, 'apply'))
        self.menuBar.addmenuitem('File', 'command',
                                 'Do not read this file, Look for a new file',
                                 label='Change File',
                                 command= Command(self.btn_press, 'newfile'))
        self.menuBar.addmenuitem('File', 'command',
                                 'Close without reading these arrays from this file',
                                 label='Cancel',
                                 command= Command(self.btn_press, 'cancel'))
        self.menuBar.addmenuitem('File', 'command',
                                 'Read this file with these arrays, and exit',
                                 label='OK',
                                 command= Command(self.btn_press, 'ok'))

        # file buffer display
        self.f_win = Pmw.ScrolledText(ma,label_text=self.input_file,
                                      borderframe = 1,usehullsize=0,
                                      text_padx = 10, text_pady = 10,
                                      labelpos=NW,
                                      hull_width=650, hull_height=320)
        self.f_win.importfile(self.input_file)
        self.f_win.pack(side='top')
        # group name
        fr_0 = Frame(ma)
        fr_0.pack(side='top',anchor='w')
        fr_1 = Frame(fr_0)
        fr_1.pack(side='left', fill='x',anchor='w')
        fr1  = Frame(fr_1)
        Label(fr1, text='Group: ').pack(side='left')
        self.g_ent   = Entry(fr1,width=20)
        self.g_ent.selection_clear()
        self.g_ent.insert(0,self.group)
        self.g_ent.pack(side='left',fill='x')
        fr1.pack(side='left',fill='x')

        fr_4 = Frame(fr_0)
        fr_4.pack(side='left', fill='x',anchor='w')
        self.file_type.set('<from column labels>')
        self.ftypes = Pmw.OptionMenu(fr_4, labelpos = 'w',
                                     label_text = '  Column File Types: ',
                                     menubutton_textvariable = self.file_type,
                                     menubutton_width = 22,
                                     items  = ['<from column labels>',
                                               'xmu','chi','rsp', 'chi.dat', 'feff.dat'],
                                     initialitem  = '<from column labels>',
                                     command = Command(self.ftype_choice),
                                     )
        #                                          menubutton_width = 18)
        self.ftypes.pack(side='left',fill='x')

        # arrays name
        fr_2 = Frame(ma)
        fr_2.pack(side='top',anchor='w')
        fr2  = Frame(fr_2)
        Label(fr2, text='Arrays: ').pack(side='left')
        for i in range(self.array_disp):
            self.entr[i]  = Entry(fr2, width=10)
            self.entr[i].selection_clear()
            self.entr[i].insert(0,self.array[i])
            self.entr[i].pack(side='left')
        fr2.pack(side='top')

        #
        fr_3 = Frame(ma)
        bbox = Pmw.ButtonBox(fr_3)
        bbox.pack(side='left',fill='both', expand=1)
        b_ok= bbox.add('OK',         command = Command(self.btn_press,'ok'))
        b_rd= bbox.add('Read',       command = Command(self.btn_press,'apply'))
        b_ca= bbox.add('Done',       command = Command(self.btn_press,'cancel'))
        b_nf=bbox.add('Change File', command = Command(self.btn_press,'newfile'))
        bbox.setdefault('Read')
        bbox.alignbuttons()
        self.balloon.bind(b_ok, '',
                    'Read these arrays from this file and exit')
        self.balloon.bind(b_rd, '',
                    'Read these arrays from this file')
        self.balloon.bind(b_ca, '',
                    'Close without reading these arrays from this file')
        self.balloon.bind(b_nf, '',
                    'Do not read these arrays, Look for a new file')
        fr_3.pack()
        self.createMsgWin(ma)
示例#21
0
    def __init__(self, parent=None, **kw):

	# Define the megawidget options.
	optiondefs = ()
	self.defineoptions(kw, optiondefs)

	# Initialise the base class (after defining the options).
        Pmw.MegaWidget.__init__(self, parent)

	# Create the contents.
	top = self.interior()

	panes = Pmw.PanedWidget(top, orient = 'horizontal')
	panes.pack(fill = 'both', expand = 1)

	panes.add('widgetlist')
	self._widgetlist = Pmw.ScrolledListBox(panes.pane('widgetlist'),
		selectioncommand = Pmw.busycallback(self.startDemo),
		label_text = 'Select a widget:',
		labelpos = 'nw',
		vscrollmode = 'dynamic',
		hscrollmode = 'none',
		listbox_exportselection = 0)
	self._widgetlist.pack(fill = 'both', expand = 1, padx = 8)

	panes.add('info')
	self._status = Tkinter.Label(panes.pane('info'))
	self._status.pack(padx = 8, anchor = 'w')

	self._example = Tkinter.Frame(panes.pane('info'),
		borderwidth = 2,
		relief = 'sunken',
	        background = 'white')
	self._example.pack(fill = 'both', expand = 1, padx = 8)

	self.buttonBox = Pmw.ButtonBox(top)
	self.buttonBox.pack(fill = 'x')

	# Add the buttons and make them all the same width.
	self._traceText = 'Trace tk calls'
	self._stopTraceText = 'Stop trace'
	self.buttonBox.add('Trace', text = self._traceText,
	        command = self.trace)
	self.buttonBox.add('Code', text = 'Show code', command = self.showCode)
	self.buttonBox.add('Exit', text = 'Exit', command = sys.exit)
	self.buttonBox.alignbuttons()

	# Create the window to display the python code.
	self.codeWindow = Pmw.TextDialog(parent,
	    title = 'Python source',
	    buttons = ('Dismiss',),
	    scrolledtext_labelpos = 'n',
	    label_text = 'Source')
	self.codeWindow.withdraw()
	self.codeWindow.insert('end', '')

	self.demoName = None
	self._loadDemos()

	# Check keywords and initialise options.
	self.initialiseoptions()
示例#22
0
    def __init__(self, parent, withTabs=1):

        # Repeat random number sequence for each run.
        self.rand = 12345

        # Default demo is to display a tabbed notebook.
        self.withTabs = withTabs

        # Create a frame to put everything in
        self.mainframe = Tkinter.Frame(parent)
        self.mainframe.pack(fill='both', expand=1)

        # Find current default colors
        button = Tkinter.Button()
        defaultbg = button.cget('background')
        defaultfg = button.cget('foreground')
        button.destroy()

        # Create the list of colors to cycle through
        self.colorList = []
        self.colorList.append((defaultbg, defaultfg))
        self.colorIndex = 0
        for color in Pmw.Color.spectrum(6, 1.5, 1.0, 1.0, 1):
            bg = Pmw.Color.changebrightness(self.mainframe, color, 0.85)
            self.colorList.append((bg, 'black'))
            bg = Pmw.Color.changebrightness(self.mainframe, color, 0.55)
            self.colorList.append((bg, 'white'))

        # Set the color to the current default
        Pmw.Color.changecolor(self.mainframe, defaultbg, foreground=defaultfg)
        defaultPalette = Pmw.Color.getdefaultpalette(self.mainframe)
        Pmw.Color.setscheme(self.mainframe, defaultbg, foreground=defaultfg)

        # Create the notebook, but don't pack it yet.
        if self.withTabs:
            tabpos = 'n'
        else:
            tabpos = None
        self.notebook = Pmw.NoteBook(
            self.mainframe,
            tabpos=tabpos,
            createcommand=PrintOne('Create'),
            lowercommand=PrintOne('Lower'),
            raisecommand=PrintOne('Raise'),
            hull_width=300,
            hull_height=200,
        )

        # Create a buttonbox to configure the notebook and pack it first.
        buttonbox = Pmw.ButtonBox(self.mainframe)
        buttonbox.pack(side='bottom', fill='x')

        # Add some buttons to the buttonbox to configure the notebook.
        buttonbox.add('Insert\npage', command=self.insertpage)
        buttonbox.add('Delete\npage', command=self.deletepage)
        buttonbox.add('Add\nbutton', command=self.addbutton)
        buttonbox.add('Change\ncolor', command=self.changecolor)
        buttonbox.add('Natural\nsize', command=self.notebook.setnaturalsize)

        if not self.withTabs:
            # Create the selection widget to select the page in the notebook.
            self.optionmenu = Pmw.OptionMenu(self.mainframe,
                                             menubutton_width=10,
                                             command=self.notebook.selectpage)
            self.optionmenu.pack(side='left', padx=10)

        # Pack the notebook last so that the buttonbox does not disappear
        # when the window is made smaller.
        self.notebook.pack(fill='both', expand=1, padx=5, pady=5)

        # Populate some pages of the notebook.
        page = self.notebook.add('tmp')
        self.notebook.delete('tmp')
        page = self.notebook.add('Appearance')
        if self.withTabs:
            self.notebook.tab('Appearance').focus_set()
        button = Tkinter.Button(page,
                                text='Welcome\nto\nthe\nAppearance\npage')
        button.pack(expand=1)
        page = self.notebook.add('Fonts')
        button = Tkinter.Button(
            page, text='This is a very very very very wide Fonts page')
        button.pack(expand=1)
        page = self.notebook.insert('Applications', before='Fonts')
        button = Tkinter.Button(page, text='This is the Applications page')
        button.pack(expand=1)

        # Initialise the first page and the initial colour.
        if not self.withTabs:
            self.optionmenu.setitems(self.notebook.pagenames())
        apply(Pmw.Color.setscheme, (self.mainframe, ), defaultPalette)
        self.pageCounter = 0
示例#23
0
    def __init__(self, parent, filtus, notebook):
        Tkinter.Frame.__init__(self, parent)
        self.filtus = filtus
        self.db = None
        self.columnconfigure(0, weight=1)
        self.rowconfigure(3, weight=1)

        Tkinter.Label(self,
                      text="Add samples to database",
                      font=filtus.titlefont,
                      anchor='c').grid(sticky='news', padx=10, pady=(15, 10))

        self.browser = DBbrowser(self,
                                 filtus,
                                 label="Load database:",
                                 updates=self.updateStuff)
        self.browser.grid(sticky='news', padx=10)
        Tkinter.Frame(self, height=2, borderwidth=2,
                      relief="sunken").grid(padx=10, pady=10, sticky="new")
        filenames = [VF.shortName for VF in filtus.files]
        self.lists = TwoListWidget(self,
                                   filtus=filtus,
                                   lefttoptext="Available samples: %d" %
                                   len(filenames),
                                   items=filenames)
        self.lists.grid(sticky='news', padx=10, pady=0)

        ####### OUTPUT
        Tkinter.Frame(self, height=2, borderwidth=2,
                      relief="sunken").grid(padx=10, pady=10, sticky="new")
        save_interior = Tkinter.Frame(self)
        save_interior.columnconfigure(0, weight=1)
        self.save_browser = FiltusWidgets.FileBrowser(
            save_interior,
            filtus=filtus,
            label="Output database file name:",
            checkbutton=False,
            labelpos='nw',
            browsesticky='se',
            entryfield_entry_width=20,
            browsetitle="")
        self.save_browser.browsebutton.configure(command=self._browseSave)
        self.save_browser.entryfield.configure(command=None)

        self.formatSelect = Pmw.RadioSelect(
            save_interior,
            buttontype="radiobutton",
            pady=0,
            labelpos="nw",
            labelmargin=0,
            label_text="Format:"
        )  #, hull_borderwidth = 2, hull_relief = 'ridge')
        self.formatSelect.add("Simple")
        self.formatSelect.add("Extended")
        self.formatSelect.invoke("Simple")

        self.save_browser.grid(sticky='news', padx=(10, 25), pady=(5, 10))
        self.formatSelect.grid(row=0, column=1, sticky='e', padx=10, pady=0)
        save_interior.grid(sticky='news', padx=10, pady=0)
        #######

        Tkinter.Frame(self, height=2, borderwidth=3,
                      relief="raised").grid(sticky='ew', pady=15)
        self.lowerButtons = Pmw.ButtonBox(self, padx=50)
        self.lowerButtons.add('createButt',
                              text="Add to database",
                              command=self.addSamples)
        self.lowerButtons.add('cancelButt',
                              text="Cancel",
                              command=notebook.deactivate)
        self.lowerButtons.grid(sticky='news', pady=(0, 10))
示例#24
0
    def __init__(self, parent, sequences, modification_tags):
        self.parent = parent
        self.sequences = sequences
        self.modification_tags = modification_tags
        self.expcond_top = Tkinter.Toplevel(self.parent)
        self.expcond_top.title('Experimental Condition Suggestions')
        self.expcond_top.wm_transient(self.parent)
        self.expcond_top.top_width = 800
        self.expcond_top.top_height = 500
        geometry_string = "%dx%d%+d%+d" % (
            self.expcond_top.top_width, self.expcond_top.top_height, 100, 100
        )  # width,height,x-offset,y-offset
        self.expcond_top.geometry(geometry_string)

        # frame1 is on the left
        self.frame1 = Tkinter.Frame(self.expcond_top, relief='raised', bd=2)
        self.frame1a = Tkinter.Frame(self.frame1, relief='groove', bd=2)
        self.frame1b = Tkinter.Frame(self.frame1, relief='groove', bd=2)
        self.frame1c = Tkinter.Frame(self.frame1, relief='groove', bd=2)
        self.frame2 = Tkinter.Frame(self.expcond_top, relief='raised', bd=2)

        # available reagents
        self.reactions_dict = {}
        filename = './Tools/MassSpectrometry/reactions_dict.pkl'
        if os.path.exists(filename):
            reactions_file = open(filename, 'rb')
            self.reactions_dict = pickle.load(reactions_file)
            reactions_file.close()
        else:
            print 'no reactions file %s found' % (filename)

        # put the available reagents into a scrolled frame
        self.reagents_sframe = Pmw.ScrolledFrame(self.frame1a,
                                                 usehullsize=1,
                                                 hull_width=200,
                                                 hull_height=200)
        rsframe_interior = self.reagents_sframe.interior()

        # frame1a has available reagents (radiobutton)
        self.reagents_radio = Pmw.RadioSelect(
            rsframe_interior,
            buttontype='radiobutton',
            orient='vertical',
            labelpos='nw',
            label_text='Available\n Reagents',
            selectmode='single')
        self.reagents_radio.pack(side='top', expand=0, fill='none')
        self.reagents_sframe.pack(side='top', expand=1, fill='both')

        keys = self.reactions_dict.keys()
        keys.sort()
        keys.reverse()
        for key in keys:
            self.reagents_radio.add(key)
        self.reagents_radio.invoke(keys[0])

        # available proteases
        self.proteases_dict = {}
        filename = './Tools/MassSpectrometry/protease_dict.pkl'
        if os.path.exists(filename):
            protease_file = open(filename, 'rb')
            self.proteases_dict = pickle.load(protease_file)
            protease_file.close()
        else:
            print 'no protease file %s found' % (filename)

        self.protease_sframe = Pmw.ScrolledFrame(self.frame1b,
                                                 usehullsize=1,
                                                 hull_width=200,
                                                 hull_height=200)
        psframe_interior = self.protease_sframe.interior()

        self.protease_radio = Pmw.RadioSelect(
            psframe_interior,
            buttontype='checkbutton',
            orient='vertical',
            labelpos='nw',
            label_text='Available\n Proteases',
            selectmode='multiple')
        self.protease_radio.pack(side='top', expand=0, fill='none')
        self.protease_sframe.pack(side='top', expand=1, fill='both')
        keys = self.proteases_dict.keys()
        keys.sort()
        keys.reverse()
        for key in keys:
            self.protease_radio.add(key)
        self.protease_radio.invoke(keys[0])

        # frame1c has the missed cut sites counter
        self.missed_cut_sites_counter = FunctionalPmwCounter.functional_pmw_counter(
            self.frame1c, 'n', 'Missed cut sites tolerated:', 2, {
                'validator': 'integer',
                'min': 0,
                'max': 99
            }, 'integer', 1)

        self.missed_cut_sites_counter.pack(side='top', expand=1, fill='both')

        # frame2 gets the report and buttonbox
        self.report_textbox = Pmw.ScrolledText(self.frame2,
                                               usehullsize=1,
                                               hull_width=400,
                                               hull_height=350)
        self.report_textbox.pack(side='top', fill='both', expand=1)

        self.report_text = self.report_textbox.component('text')

        self.buttonBox = Pmw.ButtonBox(self.frame2)
        self.buttonBox.add('Calculate', command=self.calculate_report)
        self.buttonBox.add('Cancel', command=self.cancel_calculation)
        self.buttonBox.alignbuttons()

        self.buttonBox.pack(side='top', fill='x', expand=0)

        self.frame1a.pack(side='top', expand=1, fill='both')
        self.frame1b.pack(side='top', expand=1, fill='both')
        self.frame1c.pack(side='top', expand=1, fill='both')
        self.frame1.pack(side='left', expand=0, fill='y')
        self.frame2.pack(side='left', expand=1, fill='both')
        self.old_stdout = None
示例#25
0
    def __init__(self, parent, filtus, notebook):
        Tkinter.Frame.__init__(self, parent)
        self.filtus = filtus
        self.db = None
        self.results = None
        self.columnconfigure(0, weight=1)
        self.rowconfigure(3, weight=1)

        Tkinter.Label(self,
                      text="Search database",
                      font=filtus.titlefont,
                      anchor='c').grid(sticky='news', padx=10, pady=(15, 10))

        self.browser = DBbrowser(self,
                                 filtus,
                                 label="Enter database file name")
        self.browser.grid(sticky='news', padx=10, pady=0)
        Tkinter.Frame(self, height=2, borderwidth=2,
                      relief="sunken").grid(padx=10, pady=10, sticky="new")

        search_frame = Tkinter.Frame(self)
        search_frame.columnconfigure(1, weight=1)
        search_frame.rowconfigure(1, weight=1)
        sgroup = Pmw.Group(search_frame, tag_text="Query")
        search_int = sgroup.interior()
        self.chrom = Pmw.EntryField(search_int,
                                    label_text="Chromosome:",
                                    labelpos='w',
                                    entry_width=9,
                                    labelmargin=5)
        self.pos = Pmw.EntryField(search_int,
                                  label_text="Position:",
                                  labelpos='w',
                                  entry_width=9,
                                  labelmargin=5)
        Pmw.alignlabels([self.chrom, self.pos])
        self.chrom.grid(padx=(5, 10), pady=(10, 5))
        self.pos.grid(padx=(5, 10), pady=5)
        sgroup.grid(sticky='new', padx=(0, 10), pady=12)

        self.searchButt = Tkinter.Button(search_frame,
                                         text="Search",
                                         command=self.doSearch)
        self.searchButt.grid(row=1, column=0, padx=5, pady=20, sticky='n')

        self.resultWindow = Pmw.ScrolledText(search_frame,
                                             borderframe=1,
                                             text_padx=2,
                                             scrollmargin=2,
                                             hscrollmode='dynamic',
                                             label_text="Results",
                                             labelpos="nw",
                                             text_width=10,
                                             text_height=1,
                                             text_wrap='none',
                                             text_font=filtus.monofont)
        FiltusWidgets.makeReadOnly(self.resultWindow.component('text'))

        self.resultWindow.grid(row=0,
                               column=1,
                               sticky='news',
                               padx=10,
                               pady=0,
                               rowspan=2)
        search_frame.grid(sticky='news', padx=10, pady=(0, 10))

        Tkinter.Frame(self, height=2, borderwidth=3,
                      relief="raised").grid(sticky='ew', pady=15)
        self.lowerButtons = Pmw.ButtonBox(self, padx=50)
        self.lowerButtons.add('createButt',
                              text="Save result",
                              command=self.save)
        self.lowerButtons.add('cancelButt',
                              text="Cancel",
                              command=notebook.deactivate)
        self.lowerButtons.grid(sticky='news', pady=(0, 10))
示例#26
0
    def __init__(self, parent):
        # Create the ScrolledListBox.
        self.box = Pmw.ScrolledListBox(parent,
                items=('Sydney', 'Melbourne', 'Brisbane'),
                labelpos='nw',
                label_text='Cities',
                listbox_height = 6,
                selectioncommand=self.selectionCommand,
                dblclickcommand=self.defCmd,
                usehullsize = 1,
                hull_width = 200,
                hull_height = 200,
        )

        # Create a group widget to contain the scrollmode options.
        w = Pmw.Group(parent, tag_text='Scroll mode')
        w.pack(side = 'bottom', padx = 5, pady = 5)

        hmode = Pmw.OptionMenu(w.interior(),
                labelpos = 'w',
                label_text = 'Horizontal:',
                items = ['none', 'static', 'dynamic'],
                command = self.sethscrollmode,
                menubutton_width = 8,
        )
        hmode.pack(side = 'top', padx = 5, pady = 5)
        hmode.invoke('dynamic')

        vmode = Pmw.OptionMenu(w.interior(),
                labelpos = 'w',
                label_text = 'Vertical:',
                items = ['none', 'static', 'dynamic'],
                command = self.setvscrollmode,
                menubutton_width = 8,
        )
        vmode.pack(side = 'top', padx = 5, pady = 5)
        vmode.invoke('dynamic')

        buttonBox = Pmw.ButtonBox(parent)
        buttonBox.pack(side = 'bottom')
        buttonBox.add('yview', text = 'Show\nyview', command = self.showYView)
        buttonBox.add('scroll', text = 'Page\ndown', command = self.pageDown)
        buttonBox.add('center', text = 'Center', command = self.centerPage)

        # Pack this last so that the buttons do not get shrunk when
        # the window is resized.
        self.box.pack(fill = 'both', expand = 1, padx = 5, pady = 5)

        # Do this after packing the scrolled list box, so that the
        # window does not resize as soon as it appears (because
        # alignlabels has to do an update_idletasks).
        Pmw.alignlabels((hmode, vmode))

        # Add some more entries to the listbox.
        items = ('Andamooka', 'Coober Pedy', 'Innamincka', 'Oodnadatta')
        self.box.setlist(items)
        self.box.insert(2, 'Wagga Wagga', 'Perth', 'London')
        self.box.insert('end', 'Darwin', 'Auckland', 'New York')
        index = list(self.box.get(0, 'end')).index('London')
        self.box.delete(index)
        self.box.delete(7, 8)
        self.box.insert('end', 'Bulli', 'Alice Springs', 'Woy Woy')
        self.box.insert('end', 'Wallumburrawang', 'Willandra Billabong')
    def __init__(self, parent, pCmdArgs=None):

        pCmd = '/homes/jschamba/tof/pcan/pcanloop'
        if pCmdArgs:
            shell = pCmd + ' ' + pCmdArgs
        else:
            shell = pCmd
        args = string.split(shell)

        #print "shell", shell, "args", args

        self.setDefaultVals()

        self.tk = parent
        mainFrame = Frame(parent)
        run_type = Pmw.OptionMenu(mainFrame,
                                  labelpos=W,
                                  label_text='Run Type:',
                                  menubutton_textvariable=self.runTypeNum,
                                  items=self.runTypeOptions)
        user_name = Pmw.OptionMenu(mainFrame,
                                   labelpos=W,
                                   label_text='Operator:',
                                   menubutton_textvariable=self.userNum,
                                   items=self.userOptions)
        self.current_time = Pmw.EntryField(mainFrame,
                                           labelpos=W,
                                           label_text="current time:",
                                           entry_state="readonly",
                                           value=time.strftime(
                                               "%a, %d %b %Y %H:%M:%S",
                                               time.localtime()))
        self.run_number = Pmw.EntryField(mainFrame,
                                         labelpos=W,
                                         label_text="run number:",
                                         modifiedcommand=self.fileChanged,
                                         entry_textvariable=self.runNum)

        self.start_time = Pmw.EntryField(mainFrame,
                                         labelpos=W,
                                         label_text="start time:",
                                         entry_state="readonly",
                                         value=time.strftime(
                                             "%a, %d %b %Y %H:%M:%S",
                                             time.localtime(self.startTime)))

        self.run_time = Pmw.EntryField(
            mainFrame,
            labelpos=W,
            label_text="run time:",
            entry_state="readonly",
        )

        if (self.runStatus == 2):
            self.run_time.setvalue(int(time.time()) - self.startTime)
        else:
            self.run_time.setvalue(self.stopTime - self.startTime)

        self.data_dir = Pmw.EntryField(mainFrame,
                                       labelpos=W,
                                       label_text="data directory:",
                                       modifiedcommand=self.fileChanged,
                                       entry_textvariable=self.dataDir)

        self.data_file = Pmw.EntryField(mainFrame,
                                        labelpos=W,
                                        label_text="data file:",
                                        entry_state="readonly",
                                        value=self.dataFile)

        self.log_dir = Pmw.EntryField(mainFrame,
                                      labelpos=W,
                                      label_text="log directory:",
                                      modifiedcommand=self.fileChanged,
                                      entry_textvariable=self.logDir)

        self.log_file = Pmw.EntryField(mainFrame,
                                       labelpos=W,
                                       label_text="log file:",
                                       entry_state="readonly",
                                       value=self.logFile)

        allwdgs = [
            run_type, user_name, self.current_time, self.run_number,
            self.start_time, self.run_time, self.data_dir, self.data_file,
            self.log_dir, self.log_file
        ]
        for wdg in allwdgs:
            wdg.pack(fill=X, expand=1, padx=10, pady=2)

        Pmw.alignlabels(allwdgs)

        bb = Pmw.ButtonBox(mainFrame,
                           labelpos=W,
                           label_text='Run',
                           frame_borderwidth=2,
                           frame_relief='groove')
        bb.pack(padx=10, pady=10)
        bb.add('Start', command=self.runStart)
        bb.add('Stop', command=self.runStop)
        bb.alignbuttons()

        self.cmdEntry = StringVar()
        entryBox = Pmw.EntryField(mainFrame,
                                  labelpos=W,
                                  label_text="CAN Command Entry:",
                                  command=self.exeCommand,
                                  entry_textvariable=self.cmdEntry)
        entryBox.pack(fill=X, expand=YES)

        self.textBox = Pmw.ScrolledText(mainFrame)
        self.textBox.pack(fill=BOTH, expand=YES)
        mainFrame.pack(fill=BOTH, expand=YES)

        self.pid, self.fromchild, self.tochild = spawn(pCmd, args)
        tkinter.createfilehandler(self.fromchild, READABLE, self.outputhandler)

        parent.after(1000, self.secondElapsed)
    def __init__(self, app):

        #Initialize the rotamers for the SC rotator
        self.setupAAtypes()

        #Find Probe and Reduce Executables
        findExecutables()

        #Start a thread to calculate dots when doing SC rotation
        self.dotThread = ThreadDots(self.dotQueue)
        self.dotThread.start()

        #Get the parent window for our plugin
        parent = app.root
        self.parent = parent

        # Create the dialog.
        self.dialog = Pmw.Dialog(parent,
                                 buttons=('Close', 'About'),
                                 title='Protein Interaction Viewer',
                                 command=self.execute)
        self.dialog.withdraw()
        #self.dialog.protocol('WM_TAKE_FOCUS',self.updateSels)
        self.dialog.bind('<FocusIn>', self.updateSels)

        #define comboBoxes that will need to be updated when selections are updated
        self.cBoxes = []

        # Set up the main page
        self.notebook = Pmw.NoteBook(self.dialog.interior())
        self.notebook.pack(fill='both', expand=1, padx=1, pady=1)

        #Add Hydrogen page
        ########################################
        page = self.notebook.add('Edit H')
        group = Pmw.Group(page, tag_text='Hydrogen Options')
        group.pack(fill='both', expand=1, padx=1, pady=5)
        self.h_sel = Pmw.ScrolledListBox(
            group.interior(),
            label_text='Selection: ',
            labelpos='nw',
            #scrolledlist_items = self.getSels(),
            #dropdown = 0,
            listbox_height=10)
        #self.cBoxes.append(self.h_sel)
        self.h_newSel = Pmw.EntryField(group.interior(),
                                       labelpos='w',
                                       label_text='New Object Name')

        self.h_buttons = Pmw.ButtonBox(group.interior())

        self.h_buttons.add('Clear H', command=self.clearH)
        self.h_buttons.add('Add H', command=self.addH)

        self.replVar = IntVar()
        self.replaceCheck = Tkinter.Checkbutton(self.h_buttons.interior(),
                                                text='Replace',
                                                variable=self.replVar)
        self.replaceCheck.grid(row=0, column=4)

        for widget in (self.h_sel, self.h_newSel, self.h_buttons):
            widget.pack(fill='x', padx=1, pady=1)

        ##################################################

#Add Dots page
        page = self.notebook.add('Load Dots')
        group = Pmw.Group(page, tag_text='Load Dots')
        group.pack(fill='both', expand=1, padx=1, pady=5)
        frame = Frame(group.interior())
        frame.pack(fill='x')

        self.d_sel1 = Pmw.ComboBox(
            frame,
            label_text='Sel1: ',
            labelpos='nw',
            #scrolledlist_items = self.getSels(),
            dropdown=0,
            listbox_height=10)
        self.cBoxes.append(self.d_sel1)
        self.d_sel2 = Pmw.ComboBox(
            frame,
            label_text='Sel2: ',
            labelpos='nw',
            #scrolledlist_items = self.getSels(),
            dropdown=0,
            listbox_height=10)
        self.cBoxes.append(self.d_sel2)
        self.d_sel1.pack(side=LEFT, padx=10)
        self.d_sel2.pack(side=LEFT, padx=10)

        self.d_name = Pmw.EntryField(group.interior(),
                                     labelpos='w',
                                     label_text='Dots Name',
                                     value='dots')
        self.d_params = Pmw.EntryField(group.interior(),
                                       labelpos='w',
                                       label_text='Additional Parameters')
        self.d_buttons = Pmw.ButtonBox(group.interior())
        self.d_buttons.add('Load Dots', command=self.loadDotsButton)

        optionFrame = Frame(group.interior())

        self.d_selfVar = IntVar()
        self.d_selfCheck = Tkinter.Checkbutton(optionFrame,
                                               text="Self",
                                               variable=self.d_selfVar)

        self.dotSizeEntry = Pmw.EntryField(optionFrame,
                                           labelpos='w',
                                           label_text="Dot Size: ",
                                           value=0,
                                           validate='real')
        self.dotSizeEntry.component("entry").configure(width=5)
        self.lineSizeEntry = Pmw.EntryField(optionFrame,
                                            labelpos='w',
                                            label_text="Line Size: ",
                                            value=1,
                                            validate='real')
        self.lineSizeEntry.component("entry").configure(width=5)

        self.d_name.pack(fill='x')
        self.d_params.pack(fill='x')
        optionFrame.pack(fill='x')
        self.d_selfCheck.pack(side=LEFT, padx=10)
        self.dotSizeEntry.pack(side=LEFT, padx=10)
        self.lineSizeEntry.pack(side=LEFT, padx=10)
        self.d_buttons.pack()

        #########################################################

        #Add SC rotator page
        page = self.notebook.add('Side-chain Rotator')
        group = Pmw.Group(page, tag_text='Side-chain Rotator')
        group.pack(fill='both', expand=1, padx=1, pady=5)
        frame = Frame(group.interior())
        frame.pack(fill='x')

        self.resLabel = Tkinter.Label(frame, text="")
        self.resLabel.grid(row=0, column=2)

        self.dihVar = []
        self.dihScale = []
        for i in range(4):
            self.dihVar.append(IntVar())
            self.dihScale.append(
                Scale(frame,
                      from_=-180,
                      to=180,
                      highlightthickness=0,
                      sliderlength=20,
                      resolution=1,
                      length=130,
                      variable=self.dihVar[i],
                      command=lambda x, index=i: self.changeDihedral(index, x),
                      orient=HORIZONTAL,
                      label="Chi " + str(i)))
            self.dihScale[i].grid(row=i + 1, column=2)
            self.dihScale[i].bind("<ButtonRelease-1>", self.rotRelease)
            self.dihScale[i].bind('<KeyRelease>', self.rotRelease)

            self.dihScale[i].grid_remove()

        self.rotBox = Pmw.ScrolledListBox(frame,
                                          label_text='Rotamer: ',
                                          labelpos='nw',
                                          listbox_height=15,
                                          selectioncommand=self.rotBoxCommand)
        self.rotBox.grid(rowspan=4, row=1, column=1)

        self.showDotsCheckVar = IntVar()
        self.showDotsCheck = Tkinter.Checkbutton(
            frame,
            text="Show Dots",
            variable=self.showDotsCheckVar,
            command=self.dotCheckCB)
        self.showDotsCheck.grid(row=5, column=1)

        self.notebook.setnaturalsize()

        #get the window to open next to pymol and not on top of it
        #first get screen size so we don't go off the screen
        swidth = parent.winfo_screenwidth()
        pwidth = parent.winfo_width()
        rootx = parent.winfo_rootx()
        dwidth = self.dialog.winfo_width()

        xpos = min(rootx + pwidth + 8, swidth - dwidth)

        self.dialog.geometry("+%d+%d" % (xpos, 0))

        self.dialog.show()
示例#29
0
            u.append(x / (2.0 * npoints / 3))
        else:
            u.append(float(npoints - x) / (npoints / 3))

    init()
    g = Pmw.Blt.Graph(master)
    g.pack(expand=1, fill='both')

    curvename = 'string'
    g.line_create(curvename,
                  xdata=tuple(vector_x),
                  ydata=tuple(u),
                  pixels=7,
                  smooth='natural')  # smooth the curve by splines

    g.element_bind("string", "<ButtonPress>", mouseDown)
    g.element_bind("string", "<ButtonRelease>", mouseUp)

    g.yaxis_configure(min=-1, max=1)
    g.configure(title='Hello world of waves', width=250, height=200)

    buttons = Pmw.ButtonBox(master, labelpos='n', label_text='Options')
    buttons.pack(fill='x', expand=0, padx=10, pady=10)

    buttons.add('Simulate', command=run)
    buttons.add('Step', command=step)
    buttons.add('Zero', command=zero)
    buttons.add('Quit', command=master.quit)

    master.mainloop()
示例#30
0
    def Vertical_Transmission(self):
        self.hide()
        vTFrame = Toplevel()
        vTFrame.title("SIR WITH VERTICAL TRANSMISSION")
        vTFrame.geometry("700x800")
        # self.top.transient(self)
        g = Pmw.Blt.Graph(vTFrame)
        g.pack(expand=1, fill="both")
        E = zeros([2, 1])
        A = zeros([2, 2])
        C = zeros([2, 1])
        A = zeros([2, 2])
        B = zeros([2, 2])
        E = zeros([2, 1])
        C = zeros([2, 1])
        # --------------------------------------------------------------------------------------------------------------------------------------------------------
        sus = Pmw.EntryField(
            vTFrame,
            labelpos="w",
            value="0.0",
            label_text="Initial Susceptible",
            validate={"validator": "real"},
        )
        sus.pack(expand=1, padx=5, pady=5)
        Infec = Pmw.EntryField(
            vTFrame,
            labelpos="w",
            value="0.0",
            label_text="Initial Infective Io:",
            validate={"validator": "real"},
        )
        Infec.pack(expand=1, padx=5, pady=5)
        contact = Pmw.EntryField(
            vTFrame,
            labelpos="w",
            value="0.0",
            label_text="Contact Rate - k ",
            validate={"validator": "real"},
        )
        contact.pack(expand=1, padx=5, pady=5)
        Removal = Pmw.EntryField(
            vTFrame,
            labelpos="w",
            value="0.0",
            label_text=" Removal  Rate ",
            validate={"validator": "real"},
        )
        Removal.pack(expand=1, padx=10, pady=5)
        time_interval = Pmw.EntryField(
            vTFrame,
            labelpos="w",
            value="0",
            label_text=" Time    Interval",
            validate={"validator": "numeric"},
        )
        time_interval.pack(expand=1, padx=5, pady=5)
        birth_rate = Pmw.EntryField(
            vTFrame,
            labelpos="w",
            value="0.0",
            label_text=" Birth  Rate - b :",
            validate={"validator": "real"},
        )
        birth_rate.pack(expand=1, padx=10, pady=5)
        immunity1 = Pmw.EntryField(
            vTFrame,
            labelpos="w",
            value="0.00",
            label_text="  Immunity Rate ",
            validate={"validator": "real"},
        )
        immunity1.pack(expand=1, padx=10, pady=10)
        infected_rate = Pmw.EntryField(
            vTFrame,
            labelpos="w",
            value="0.0",
            label_text="Infected Birth - Ib",
            validate={"validator": "real"},
        )
        infected_rate.pack(expand=1, padx=10, pady=5)
        vertical = Pmw.EntryField(
            vTFrame,
            labelpos="w",
            value="0.00",
            label_text="  Vertical Rate - v",
            validate={"validator": "real"},
        )
        vertical.pack(expand=1, padx=10, pady=10)
        probability = Pmw.EntryField(
            vTFrame,
            labelpos="w",
            value="0.00",
            label_text="Probability loss -p",
            validate={"validator": "real"},
        )
        probability.pack(expand=1, padx=10, pady=10)
        # --------------------------------------------------------------------------------------------------------------------------------------------------------
        # self.top.transient(self)
        # self.wButton.config(state='disabled')
        def retrive():
            k1 = contact.get()
            k = float(k1)
            ggamma = float(Removal.get())
            N = int(time_interval.get())
            s0 = float(sus.get())
            I0 = float(Infec.get())
            m = float(immunity1.get())
            v = float(vertical.get())
            b_prime = float(infected_rate.get())
            b = float(birth_rate.get())
            p = float(probability.get())
            A[0][0] = 0
            A[0][1] = -k
            A[1][0] = k
            A[1][1] = 0
            B[0][0] = (m - 1) * b + (p * b_prime + ggamma)
            B[0][1] = 0
            B[1][0] = 0
            B[1][1] = 0
            E[0][0] = -b - ggamma
            E[1][0] = p * b_prime - v
            C[0][0] = b * (1 - m) + (ggamma)
            C[1][0] = 0

            def f1(s1, I1):
                s_dot = (
                    s1 * E[0][0]
                    + A[0][0] * (s1 ** 2)
                    + A[0][1] * s1 * I1
                    + B[0][0] * s1
                    + B[0][1] * I1
                    + C[0][0]
                )
                return s_dot

            def f2(s1, I1):
                I_dot = (
                    I1 * E[1][0]
                    + A[1][1] * (I1 ** 2)
                    + A[1][0] * s1 * I1
                    + B[1][0] * s1
                    + B[1][1] * I1
                    + C[1][0]
                )
                return I_dot

            # =========RATE OF CHANGE OF THE MODEL WITH RESPECT TO TIME AND DECLARATON OF CONSTANTS==================================
            t = arange(0, N, 0.02455)
            s1 = zeros(len(t))
            I1 = zeros(len(t))
            s1[0] = s0
            I1[0] = I0
            h = 0.01

            # ==========ITERATION FOR A GIVEN TIME INTERVAL=========================

            for n in range(len(t) - 1):
                s1[n + 1] = s1[n] + h * (f1(s1[n], I1[n]))
                I1[n + 1] = I1[n] + h * (f2(s1[n], I1[n]))
            x_ = tuple(t)
            y_ = tuple(s1)
            z_ = tuple(I1)
            g.configure(
                title="Susceptible and Infectives  against time for SIR with Vertical Transmission"
            )
            g.line_create(
                "S(t) Vs t", xdata=x_, color="red", ydata=y_, linewidth=2, symbol=""
            )
            g.line_create(
                "I(t) Vs t", xdata=x_, color="orange", ydata=z_, linewidth=2, symbol=""
            )

        def postscript():
            g.postscript_output(fileName="HelloUser1.ps", decorations="no")

        def newFile():
            for name in g.element_names():
                g.element_delete(name)
            contact.setentry("")
            Removal.setentry("")
            time_interval.setentry("")
            Infec.setentry("")
            sus.setentry("")
            immunity1.setentry("")
            birth_rate.setentry("")
            vertical.setentry("")
            infected_rate.setentry("")
            probability.setentry("")

        # --------------------------------------------------------------------------------------------------------------------------------------------------------
        buttons = Pmw.ButtonBox(vTFrame, labelpos="w", label_text="Options")
        # buttons = Pmw.ButtonBox(self, labelpos='w', label_text='Options')
        buttons.pack(fill="both", expand=1, padx=10, pady=10)
        buttons.add("GRID", bg="green", command=g.grid_toggle)
        buttons.add("PLOT", bg="green", command=retrive)
        buttons.add("CLEAR", bg="green", command=newFile)
        buttons.add("SAVE", bg="green", command=postscript)
        handler = lambda: self.onCloseOtherFrame2(vTFrame)
        buttons.add("QUIT", bg="red", command=handler)