Ejemplo n.º 1
0
    def __init__(self, app, system, nested_sampling):
        QtGui.QWidget.__init__(self)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.app = app
        self.system = system
        self.nested_sampling = nested_sampling

        self.show3d = self.ui.show3d
        self.ui.show3d.setSystem(system)

        self.update_list()

        from OpenGL.GLUT import glutInit
        glutInit()

        self.selected = None
        self.Emax = max([r.energy for r in self.nested_sampling.replicas])
Ejemplo n.º 2
0
Archivo: ns_gui.py Proyecto: js850/sens
 def __init__(self, app, system, nested_sampling):
     QtGui.QWidget.__init__(self)
     self.ui = Ui_MainWindow()
     self.ui.setupUi(self)
     
     
     self.app = app
     self.system = system    
     self.nested_sampling = nested_sampling
     
     self.show3d = self.ui.show3d
     self.ui.show3d.setSystem(system)
     
     self.update_list()
     
     from OpenGL.GLUT import glutInit
     glutInit()
     
     self.selected = None
     self.Emax = max([r.energy for r in self.nested_sampling.replicas])
Ejemplo n.º 3
0
class NSGUI(QtGui.QMainWindow):
    def __init__(self, app, system, nested_sampling):
        QtGui.QWidget.__init__(self)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.app = app
        self.system = system
        self.nested_sampling = nested_sampling

        self.show3d = self.ui.show3d
        self.ui.show3d.setSystem(system)

        self.update_list()

        from OpenGL.GLUT import glutInit
        glutInit()

        self.selected = None
        self.Emax = max([r.energy for r in self.nested_sampling.replicas])

    def update_list(self):
        self.ui.list_replicas.clear()
        for r in self.nested_sampling.replicas:
            item = QReplicaInList(r)
            self.ui.list_replicas.addItem(item)

    def set_selected(self, x, energy):
        self.selected = Replica(x, energy)
        self.show3d.setCoords(x, index=1)
        self.show3d.setCoords(None, index=2)

    def get_Emax(self):
        val = self.ui.lineEdit_Emax.text()
        try:
            self.Emax = float(val)
        except:
            print "Emax: can't turn", val, "into a float"
        if self.Emax is None:
            print "Emax is not set"
            self.Emax = self.nested_sampling.replicas[-1].energy
        return self.Emax

    def on_btn_db_sample_min_clicked(self, clicked=None):
        if clicked is None: return
        print clicked
        Emax = self.get_Emax()
        x, energy = self.nested_sampling.get_starting_configuration_minima(
            Emax)
        self.set_selected(x, energy)

    def mc_event(self, x=None, energy=None, **kwargs):
        self.mc_path.append(x)
        self.mc_path_energy.append(energy)

    def finish_cycle(self, x, energy):
        self.nested_sampling.pop_replica()
        self.nested_sampling.add_new_replica(x, energy)
        self.update_list()

        self.selected = None
        self.Emax = None

    def load_stepsize(self):
        stepsize = None
        val = self.ui.lineEdit_stepsize.text()
        try:
            stepsize = float(val)
            self.nested_sampling.takestep.stepsize = stepsize
        except:
            print "stepsize: can't convert", val, "into a float"
            return None

        return stepsize

    def load_mciter(self):
        mciter = None
        val = self.ui.lineEdit_mciter.text()
        try:
            mciter = int(val)
            self.nested_sampling.mciter = mciter
        except:
            print "stepsize: can't convert", val, "into an int"
            return None

        return mciter

    def on_btn_db_sample_coords_clicked(self, clicked=None):
        if clicked is None: return
        Emax = self.get_Emax()
        m = self.nested_sampling.bh_sampler.sample_minimum(Emax)
        x = self.nested_sampling.bh_sampler.sample_coords_from_basin(m, Emax)
        pot = self.system.get_potential()
        e = pot.getEnergy(x)
        self.set_selected(x, e)
        self.show3d.setCoords(m.coords, index=2)
        print "energy of minimum        ", m.energy
        print "energy of starting config", e
        print "Emax                     ", Emax

    def on_btn_MC_chain_clicked(self, clicked=None):
        if clicked is None: return
        if self.selected is None:
            print "select a starting point first"
            return
        Emax = self.get_Emax()
        if self.selected.energy >= self.Emax:
            print "energy of selected must be less than Emax"
            return
        x, energy = self.selected.x, self.selected.energy

        self.mc_path = [x]
        self.mc_path_energy = [energy]
        events = [self.mc_event]

        self.load_stepsize()
        self.load_mciter()

        mc = self.nested_sampling.do_monte_carlo_chain(self.selected.x,
                                                       Emax,
                                                       self.selected.energy,
                                                       events=events)

        path = np.array(self.mc_path)
        labels = [
            "step %d: E=%s" % (i, str(e))
            for i, e in enumerate(self.mc_path_energy)
        ]
        self.show3d.setCoordsPath(path, labels=labels)
        self.finish_cycle(mc.x, mc.energy)

    def on_list_replicas_itemClicked(self, item):
        if item is None: return
        self.set_selected(item.r.x, item.r.energy)
Ejemplo n.º 4
0
Archivo: ns_gui.py Proyecto: js850/sens
class NSGUI(QtGui.QMainWindow):
    def __init__(self, app, system, nested_sampling):
        QtGui.QWidget.__init__(self)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        
        
        self.app = app
        self.system = system    
        self.nested_sampling = nested_sampling
        
        self.show3d = self.ui.show3d
        self.ui.show3d.setSystem(system)
        
        self.update_list()
        
        from OpenGL.GLUT import glutInit
        glutInit()
        
        self.selected = None
        self.Emax = max([r.energy for r in self.nested_sampling.replicas])
    
    def update_list(self):
        self.ui.list_replicas.clear()
        for r in self.nested_sampling.replicas:
            item = QReplicaInList(r)
            self.ui.list_replicas.addItem(item)
    
    def set_selected(self, x, energy):
        self.selected = Replica(x, energy)
        self.show3d.setCoords(x, index=1)
        self.show3d.setCoords(None, index=2)

    
    def get_Emax(self):
        val = self.ui.lineEdit_Emax.text()
        try:
            self.Emax = float(val)
        except:
            print "Emax: can't turn", val, "into a float"
        if self.Emax is None:
            print "Emax is not set"
            self.Emax = self.nested_sampling.replicas[-1].energy
        return self.Emax
    
    def on_btn_db_sample_min_clicked(self, clicked=None):
        if clicked is None: return
        print clicked
        Emax = self.get_Emax()
        x, energy = self.nested_sampling.get_starting_configuration_minima(Emax)
        self.set_selected(x, energy)

    def mc_event(self, x=None, energy=None, **kwargs):
        self.mc_path.append(x)
        self.mc_path_energy.append(energy)

    def finish_cycle(self, x, energy):
        self.nested_sampling.pop_replica()
        self.nested_sampling.add_new_replica(x, energy)
        self.update_list()
        
        self.selected = None
        self.Emax = None

    def load_stepsize(self):
        stepsize = None
        val = self.ui.lineEdit_stepsize.text()
        try:
            stepsize = float(val)
            self.nested_sampling.takestep.stepsize = stepsize
        except:
            print "stepsize: can't convert", val, "into a float"
            return None
        
        return stepsize
    
    def load_mciter(self):
        mciter = None
        val = self.ui.lineEdit_mciter.text()
        try:
            mciter = int(val)
            self.nested_sampling.mciter = mciter
        except:
            print "stepsize: can't convert", val, "into an int"
            return None
        
        return mciter
    
    def on_btn_db_sample_coords_clicked(self, clicked=None):
        if clicked is None: return
        Emax = self.get_Emax()
        m = self.nested_sampling.bh_sampler.sample_minimum(Emax)        
        x = self.nested_sampling.bh_sampler.sample_coords_from_basin(m, Emax)
        pot = self.system.get_potential()
        e = pot.getEnergy(x)
        self.set_selected(x, e)
        self.show3d.setCoords(m.coords, index=2)
        print "energy of minimum        ", m.energy
        print "energy of starting config", e
        print "Emax                     ", Emax


    
    def on_btn_MC_chain_clicked(self, clicked=None):
        if clicked is None: return
        if self.selected is None:
            print "select a starting point first" 
            return
        Emax = self.get_Emax()
        if self.selected.energy >= self.Emax:
            print "energy of selected must be less than Emax"
            return
        x, energy = self.selected.x, self.selected.energy

        self.mc_path = [x]
        self.mc_path_energy = [energy]
        events = [self.mc_event]
        
        self.load_stepsize()
        self.load_mciter()
        
        
        mc = self.nested_sampling.do_monte_carlo_chain(self.selected.x, Emax, self.selected.energy, events=events)
        
        path = np.array(self.mc_path)
        labels = ["step %d: E=%s" % (i, str(e)) for i, e in enumerate(self.mc_path_energy)]
        self.show3d.setCoordsPath(path, labels=labels)
        self.finish_cycle(mc.x, mc.energy)
        

    def on_list_replicas_itemClicked(self, item):
        if item is None: return
        self.set_selected(item.r.x, item.r.energy)