Beispiel #1
0
  def __init__(self, parent, analysis, orientation='horizontal', callback = None, *args, **kw):

    self.analysis = analysis
    self.callback = callback

    apply(Frame.__init__, (self, parent) + args, kw)

    label = Label(self, text='Experiment:')
    label.grid(row=0, column=0, sticky='ne')
    self.expt_list = ExperimentList(self, self.analysis.getExperiments,
                                    callback=self.setSpectra)
    self.expt_list.grid(row=0, column=1, sticky='nw')
 
    if orientation in ['horizontal','h','H',Tkinter.HORIZONTAL]:
      row = 0
      col = 2
    else:
      row = 1
      col = 0
    
    label = Label(self, text='Spectrum:')
    label.grid(row=row, column=col, sticky='ne')
    self.spectrum_list = SpectrumList(self, self.getSpectra,
                                      callback=self.setSpectrumProperties)
    self.spectrum_list.grid(row=row, column=col+1, sticky='nw')

    for func in notify_funcs:
      Implementation.registerNotify(self.setExperiments, 'ccp.nmr.Nmr.Experiment', func)
      Implementation.registerNotify(self.setSpectra, 'ccp.nmr.Nmr.DataSource', func)
Beispiel #2
0
    def registerNotify(self,
                       notify,
                       classname,
                       funcname='',
                       application=None,
                       keyword=None,
                       modifyList=True):

        if application is None:
            application = self.application

        if self.application:
            self.application.registerNotify(notify, classname, funcname,
                                            keyword)
        elif application:
            Application.registerNotify(notify, classname, funcname,
                                       application, keyword)
        else:
            Implementation.registerNotify(notify, classname, funcname)

        if modifyList:
            cc = self.notifies.get(classname)
            if cc is None:
                cc = self.notifies[classname] = {}
            if application is None:
                key = funcname
            else:
                key = (funcname, application, keyword)
            ff = cc.get(key)
            if ff is None:
                ff = cc[key] = []
            ff.append(notify)
Beispiel #3
0
  def __init__(self, parent, getAxisUnits):
 
    self.getAxisUnits = getAxisUnits
 
    ScrolledListbox.__init__(self, parent, xscroll=False, selectmode=Tkinter.MULTIPLE)
 
    for func in notify_funcs:
      Implementation.registerNotify(self.setAxisUnits, 'ccpnmr.Analysis.AxisUnit', func)
Beispiel #4
0
  def __init__(self, parent, getAxisUnits, *args, **kw):
 
    self.getAxisUnits = getAxisUnits
 
    PulldownMenu.__init__(self, parent, *args, **kw)
 
    for func in notify_funcs:
      Implementation.registerNotify(self.setAxisUnits, 'ccpnmr.Analysis.AxisUnit', func)
Beispiel #5
0
  def __init__(self, parent, getSpectra, extra_label = '', *args, **kw):

    self.getSpectra = getSpectra
    self.extra_label = extra_label

    PulldownMenu.__init__(self, parent, *args, **kw)

    for func in notify_funcs:
      Implementation.registerNotify(self.setSpectra, 'ccp.nmr.Nmr.DataSource', func)
Beispiel #6
0
  def doRegisters(self):

    try:
      Implementation.registerNotify(self.updateAfter, self.refClassName,
                                    'delete')
    except AttributeError:
      # refClassName may be an abstract class, 
      # in which case registering will fail
      return
Beispiel #7
0
  def __init__(self, parent, getPeakLists, extra_label = '', *args, **kw):

    self.getPeakLists = getPeakLists
    self.extra_label = extra_label

    PulldownMenu.__init__(self, parent, *args, **kw)

    for func in notify_funcs:
      Implementation.registerNotify(self.setPeakLists, 'ccp.nmr.Nmr.PeakList', func)
Beispiel #8
0
    def __init__(self, parent, getChains, extra_label='', *args, **kw):

        self.getChains = getChains
        self.extra_label = extra_label

        PulldownMenu.__init__(self, parent, *args, **kw)

        for func in notify_funcs:
            Implementation.registerNotify(self.setChains,
                                          'ccp.molecule.MolSystem.Chain', func)
Beispiel #9
0
    def __init__(self, parent, getColors, extra_label='', *args, **kw):

        self.getColors = getColors
        self.extra_label = extra_label

        PulldownList.__init__(self, parent, *args, **kw)

        for func in notify_funcs:
            Implementation.registerNotify(self.setColors,
                                          'ccpnmr.Analysis.Color', func)

        self.setColors()
Beispiel #10
0
def registerNotify(notify, classname, funcname, application = None, keyword = None):

  if application is None or keyword is None:
    assert application is None and keyword is None, 'application = %s, keyword = %s, both must be None' % (application, keyword)
    return GenImp.registerNotify(notify, classname, funcname)

  if funcname not in allowedNotifyFuncs:
    raise GenImp.ApiError('illegal funcname "%s", must be in %s' % (funcname, allowedNotifyFuncs))

  notifies = GenImp.getClassFromFullName(classname)._notifies
  notifies = notifies.setdefault((funcname, application, keyword), [])
  notifies.append(notify)
Beispiel #11
0
    def __init__(self, parent, getSpectrumViews, extra_label='', *args, **kw):

        self.getSpectrumViews = getSpectrumViews
        self.extra_label = extra_label

        PulldownMenu.__init__(self, parent, *args, **kw)

        for func in notify_funcs:
            Implementation.registerNotify(
                self.setSpectrumViews, 'ccpnmr.Analysis.SpectrumWindowView',
                func)
        Implementation.registerNotify(self.setSpectrumViews,
                                      'ccp.nmr.Nmr.Experiment', 'setName')
        Implementation.registerNotify(self.setSpectrumViews,
                                      'ccp.nmr.Nmr.DataSource', 'setName')
    def __init__(self, parent, analysis, callback=None, *args, **kw):

        self.analysis = analysis
        self.callback = callback

        apply(Frame.__init__, (self, parent) + args, kw)

        label = Label(self, text='Experiment:')
        label.grid(row=0, column=0, sticky='ne')
        self.expt_list = ExperimentList(self,
                                        self.analysis.getExperiments,
                                        callback=self.setSpectra)
        self.expt_list.grid(row=0, column=1, sticky='nw')

        label = Label(self, text='Spectrum:')
        label.grid(row=0, column=2, sticky='ne')
        self.spectrum_list = SpectrumList(self,
                                          self.getSpectra,
                                          callback=self.setPeakLists)
        self.spectrum_list.grid(row=0, column=3, sticky='nw')

        label = Label(self, text='PeakList:')
        label.grid(row=0, column=4, sticky='ne')
        self.peak_list_list = PeakListList(self,
                                           self.getPeakLists,
                                           callback=self.doCallback)
        self.peak_list_list.grid(row=0, column=5, sticky='nw')

        for func in notify_funcs:
            Implementation.registerNotify(self.setExperiments,
                                          'ccp.nmr.Nmr.Experiment', func)
            Implementation.registerNotify(self.setSpectra,
                                          'ccp.nmr.Nmr.DataSource', func)
            if func != 'setName':
                Implementation.registerNotify(self.setPeakLists,
                                              'ccp.nmr.Nmr.PeakList', func)
  def body(self, guiFrame):

    guiFrame.grid_columnconfigure(3, weight=1)
    
    row = 0
    label = Label(guiFrame, text='Molecular system: ')
    label.grid(row=row, column=0, sticky=Tkinter.NW)
    self.molSysPulldown = PulldownMenu(guiFrame, self.changeMolSystem, selected_index=-1, do_initial_callback=0)
    self.molSysPulldown.grid(row=row, column=1, sticky=Tkinter.NW)

    label = Label(guiFrame, text='Clouds files: ')
    label.grid(row=row, column=2, sticky=Tkinter.NW)
    self.filenameEntry = Entry(guiFrame,text='perfect00.pdb')
    self.filenameEntry.grid(row=row, column=3, sticky=Tkinter.NW)


    row += 1
    label = Label(guiFrame, text='Chain: ')
    label.grid(row=row, column=0, sticky=Tkinter.NW)
    self.chainPulldown = PulldownMenu(guiFrame, self.changeChain, selected_index=-1, do_initial_callback=0)
    self.chainPulldown.grid(row=row, column=1, sticky=Tkinter.NW)

    label = Label(guiFrame, text='Thread steps: ')
    label.grid(row=row, column=2, sticky=Tkinter.NW)
    self.numStepsEntry = IntEntry(guiFrame,text=3000)
    self.numStepsEntry.grid(row=row, column=3, sticky=Tkinter.NW)
    row += 1

    label = Label(guiFrame, text='Homologue PDB file: ')
    label.grid(row=row, column=0, sticky=Tkinter.NW)
    self.pdbEntry = Entry(guiFrame,text='')
    self.pdbEntry.grid(row=row, column=1, sticky=Tkinter.NW)

    label = Label(guiFrame, text='Dist. Threshold: ')
    label.grid(row=row, column=2, sticky=Tkinter.NW)
    self.distEntry = FloatEntry(guiFrame,text=3.0)
    self.distEntry.grid(row=row, column=3, sticky=Tkinter.NW)

    row += 1

    label = Label(guiFrame, text='Global score: ')
    label.grid(row=row, column=0, sticky=Tkinter.NW)
    self.globalScoreLabel = Label(guiFrame, text='')
    self.globalScoreLabel.grid(row=row, column=1, sticky=Tkinter.NW)

    label = Label(guiFrame, text='Assignment Threshold: ')
    label.grid(row=row, column=2, sticky=Tkinter.NW)
    self.thresholdEntry = FloatEntry(guiFrame,text=-4.5)
    self.thresholdEntry.grid(row=row, column=3, sticky=Tkinter.NW)

    row += 1
    guiFrame.grid_rowconfigure(row, weight=1)
    self.graph = ScrolledGraph(guiFrame, width=300, height=200)
    self.graph.grid(row=row, column=0, columnspan=4, sticky = Tkinter.NSEW)

    row += 1
    texts    = ['Run','Assign!']
    commands = [self.run, self.assignSpinSystems]
    bottomButtons = createDismissHelpButtonList(guiFrame,texts=texts,commands=commands,expands=0,help_url=None)
    bottomButtons.grid(row=row, column=0, columnspan=4, sticky=Tkinter.EW)
    self.assignButton = bottomButtons.buttons[1]

    for func in ('__init__','delete'):
      Implementation.registerNotify(self.updateMolSystems, 'ccp.molecule.MolSystem.MolSystem', func)
      Implementation.registerNotify(self.updateChains, 'ccp.molecule.MolSystem.Chain', func)
    
    self.updateMolSystems()
    self.updateChains()
Beispiel #14
0
  def doRegisters(self):

    Implementation.registerNotify(self.updateAfter, self.refClassName, 'delete')
Beispiel #15
0
    def body(self, guiFrame):

        self.mdInitTempEntry = FloatEntry(self,
                                          text='',
                                          returnCallback=self.setMdInitTemp)
        self.mdFinTempEntry = FloatEntry(self,
                                         text='',
                                         returnCallback=self.setMdFinTemp)
        self.mdCoolStepsEntry = IntEntry(self,
                                         text='',
                                         returnCallback=self.setMdCoolSteps)
        self.mdSimStepsEntry = IntEntry(self,
                                        text='',
                                        returnCallback=self.setMdSimSteps)
        self.mdTauEntry = FloatEntry(self,
                                     text='',
                                     returnCallback=self.setMdTau)
        self.mdRepScaleEntry = FloatEntry(self,
                                          text='',
                                          returnCallback=self.setMdRepScale)

        guiFrame.grid_columnconfigure(0, weight=1)

        row = 0
        guiFrame.grid_rowconfigure(row, weight=1)
        frame = LabelFrame(guiFrame, text='Input constraints')
        frame.grid(row=row, column=0, sticky=Tkinter.NSEW)
        frame.grid_columnconfigure(2, weight=1)

        srow = 0
        label = Label(frame, text='Constraint set:')
        label.grid(row=srow, column=0, sticky=Tkinter.W)
        self.constraintSetPulldown = PulldownMenu(
            frame,
            callback=self.changeConstraintSet,
            selected_index=0,
            do_initial_callback=0)
        self.constraintSetPulldown.grid(row=srow, column=1, sticky=Tkinter.W)

        srow += 1
        label = Label(frame, text='Dist constraint list 1:')
        label.grid(row=srow, column=0, sticky=Tkinter.W)
        self.distance1Pulldown = PulldownMenu(
            frame,
            callback=self.changeDistance1ConstraintList,
            selected_index=0,
            do_initial_callback=0)
        self.distance1Pulldown.grid(row=srow, column=1, sticky=Tkinter.W)
        self.numConstr1Label = Label(frame, text='Constraints: 0')
        self.numConstr1Label.grid(row=srow, column=2, sticky=Tkinter.W)

        srow += 1
        label = Label(frame, text='Dist constraint list 2:')
        label.grid(row=srow, column=0, sticky=Tkinter.W)
        self.distance2Pulldown = PulldownMenu(
            frame,
            callback=self.changeDistance2ConstraintList,
            selected_index=0,
            do_initial_callback=0)
        self.distance2Pulldown.grid(row=srow, column=1, sticky=Tkinter.W)
        self.numConstr2Label = Label(frame, text='Constraints: 0')
        self.numConstr2Label.grid(row=srow, column=2, sticky=Tkinter.W)

        srow += 1
        label = Label(frame, text='Dist constraint list 3:')
        label.grid(row=srow, column=0, sticky=Tkinter.W)
        self.distance3Pulldown = PulldownMenu(
            frame,
            callback=self.changeDistance3ConstraintList,
            selected_index=0,
            do_initial_callback=0)
        self.distance3Pulldown.grid(row=srow, column=1, sticky=Tkinter.W)
        self.numConstr3Label = Label(frame, text='Constraints: 0')
        self.numConstr3Label.grid(row=srow, column=2, sticky=Tkinter.W)

        srow += 1
        label = Label(frame, text='Dist constraint list 4:')
        label.grid(row=srow, column=0, sticky=Tkinter.W)
        self.distance4Pulldown = PulldownMenu(
            frame,
            callback=self.changeDistance4ConstraintList,
            selected_index=0,
            do_initial_callback=0)
        self.distance4Pulldown.grid(row=srow, column=1, sticky=Tkinter.W)
        self.numConstr4Label = Label(frame, text='Constraints: 0')
        self.numConstr4Label.grid(row=srow, column=2, sticky=Tkinter.W)

        row += 1
        frame0 = LabelFrame(guiFrame, text='Cooling scheme')
        frame0.grid(row=row, column=0, sticky=Tkinter.NSEW)
        frame0.grid_columnconfigure(1, weight=1)

        f0row = 0
        frame0.grid_rowconfigure(f0row, weight=1)
        colHeadings = [
            'Step', 'Initial\nTemp.', 'Final\nTemp.', 'Cooling\nSteps',
            'MD Steps', 'MD Tau', 'Rep.\nScale'
        ]
        editWidgets = [
            None, self.mdInitTempEntry, self.mdFinTempEntry,
            self.mdCoolStepsEntry, self.mdSimStepsEntry, self.mdTauEntry,
            self.mdRepScaleEntry
        ]
        editGetCallbacks = [
            None, self.getMdInitTemp, self.getMdFinTemp, self.getMdCoolSteps,
            self.getMdSimSteps, self.getMdTau, self.getMdRepScale
        ]
        editSetCallbacks = [
            None, self.setMdInitTemp, self.setMdFinTemp, self.setMdCoolSteps,
            self.setMdSimSteps, self.setMdTau, self.setMdRepScale
        ]
        self.coolingSchemeMatrix = ScrolledMatrix(
            frame0,
            editSetCallbacks=editSetCallbacks,
            editGetCallbacks=editGetCallbacks,
            editWidgets=editWidgets,
            maxRows=9,
            initialRows=12,
            headingList=colHeadings,
            callback=self.selectCoolingStep,
            objectList=self.coolingScheme,
            textMatrix=self.coolingScheme)
        self.coolingSchemeMatrix.grid(row=f0row,
                                      column=0,
                                      columnspan=4,
                                      sticky=Tkinter.NSEW)

        f0row += 1
        texts = ['Move earlier', 'Move later', 'Add step', 'Remove step']
        commands = [
            self.moveStepEarlier, self.moveStepLater, self.addCoolingStep,
            self.removeCoolingStep
        ]
        self.coolingSchemeButtons = ButtonList(frame0,
                                               expands=1,
                                               commands=commands,
                                               texts=texts)
        self.coolingSchemeButtons.grid(row=f0row,
                                       column=0,
                                       columnspan=4,
                                       sticky=Tkinter.EW)

        row += 1
        guiFrame.grid_rowconfigure(row, weight=1)
        frame1 = LabelFrame(guiFrame, text='Dynamics control')
        frame1.grid(row=row, column=0, sticky=Tkinter.NSEW)
        frame1.grid_columnconfigure(1, weight=1)

        f1row = 0
        label20 = Label(frame1, text='Number of clouds:')
        label20.grid(row=f1row, column=0, sticky=Tkinter.NW)
        self.numCloudsEntry = IntEntry(frame1,
                                       text=1,
                                       returnCallback=self.setNumClouds,
                                       width=10)
        self.numCloudsEntry.grid(row=f1row, column=1, sticky=Tkinter.NW)
        label21 = Label(frame1, text='Cloud file prefix:')
        label21.grid(row=f1row, column=2, sticky=Tkinter.NW)
        self.filePrefixEntry = Entry(frame1,
                                     text='t_intra_',
                                     returnCallback=self.setFilePrefix,
                                     width=10)
        self.filePrefixEntry.grid(row=f1row, column=3, sticky=Tkinter.NW)

        f1row += 1
        texts = ['Start molecular dynamics', 'Show dynamics progress']
        commands = [self.startMd, self.showMdProgress]
        self.mdButtons = ButtonList(frame1,
                                    expands=1,
                                    commands=commands,
                                    texts=texts)
        self.mdButtons.grid(row=f1row,
                            column=0,
                            columnspan=4,
                            sticky=Tkinter.NSEW)

        row += 1
        self.bottomButtons = createDismissHelpButtonList(guiFrame,
                                                         expands=0,
                                                         help_url=None)
        self.bottomButtons.grid(row=row, column=0, sticky=Tkinter.EW)

        self.update()

        for func in ('__init__', 'delete', 'setName'):
            for clazz in ('ccp.nmr.NmrConstraint.DistanceConstraintList', ):
                Implementation.registerNotify(self.updateConstraintLists,
                                              clazz, func)
        for func in ('__init__', 'delete'):
            Implementation.registerNotify(
                self.updateConstraintSets,
                'ccp.nmr.NmrConstraint.NmrConstraintStore', func)