Beispiel #1
0
 def showMolecules(self):
     tstep = self.animationSlider.value()
     self.animationTime.setText("Time: %7.2f fs" % (tstep * self.dt))
     self.mol.clear()
     for geoms in self.geometries:
         geom_time = geoms[min(tstep, len(geoms)-1)]
         # atoms
         atoms = []
         for (Z,pos) in geom_time:
             a = self.mol.addAtom()
             a.pos = np.array(pos, dtype=float)
             a.atomicNumber = Z
             atoms.append(a)
         # bond
         C = XYZ.connectivity_matrix(geom_time)
         Nat = len(geom_time)
         for i in range(0, Nat):
             for j in range(i+1,Nat):
                 if C[i,j] == 1:
                     bond = self.mol.addBond()
                     bond.setBegin(atoms[i])
                     bond.setEnd(atoms[j])
                     bond.order = 1
                     
     self.glWidget.mol = self.mol
     self.glWidget.updateGeometry()
     Avogadro.toPyQt(self.glWidget).update()
 def load(self, row):
   mol = self.molFile.molecule(row)
   self.objects.append(mol)
   glWidget = self.newGLWidget()
   glWidget.molecule = mol
   mdiWindow = self.ui.mdiArea.addSubWindow(Avogadro.toPyQt(glWidget))
   print glWidget
   print Avogadro.toPyQt(glWidget)
   mdiWindow.setWindowTitle(self.molFile.titles[row])
   mdiWindow.show()
Beispiel #3
0
 def test_engine(self):
     engines = Avogadro.PluginManager.instance.identifiers(
         Avogadro.PluginType.EngineType)
     engine = Avogadro.PluginManager.instance.engine(
         engines[0], Avogadro.toPyQt(self.glwidget))
     self.assertNotEqual(engine, None)
     self.glwidget.addEngine(engine)
     self.glwidget.removeEngine(engine)
 def load(self, row):
     mol = self.molFile.molecule(row)
     self.objects.append(mol)
     glWidget = self.newGLWidget()
     glWidget.molecule = mol
     mdiWindow = self.ui.mdiArea.addSubWindow(Avogadro.toPyQt(glWidget))
     mdiWindow.setWindowTitle(self.molFile.titles[row])
     mdiWindow.show()
Beispiel #5
0
    def __init__(self, ):
        super(Main, self).__init__()
        self.setupUi(self)
        self.canvases = []
        self.trajdirs = []

        self.trajSelection.itemSelectionChanged.connect(self.changeTrajectory)

        # load Trajectories
        dyndir = "./"
        if len(sys.argv) > 1:
            dyndir = sys.argv[1]
        self.dirBrowser.setText(dyndir)
        self.dirBrowser.returnPressed.connect(self.fetchURL)
        self.openButton.clicked.connect(self.openDirectory)

        # plots
        import matplotlib.pyplot as plt
        cmap = plt.get_cmap('gnuplot')
        self.colors = ['black', 'red', 'green', 'blue', 'k', 'm'
                       ] + [cmap(f) for f in np.linspace(0.4, 1.0, 10)]

        self.energiesAxis = self.addTab(self.energiesLayout)
        self.coefficientsAxis = self.addTab(self.coefficientsLayout)
        self.couplingsAxis = self.addTab(self.couplingsLayout)
        self.currEnergyAxis = self.addTab(self.currEnergyLayout)
        self.currStateAxis = self.addTab(self.currStateLayout)
        self.populationsAxis = self.addTab(self.populationsLayout)
        self.axes = [
            self.energiesAxis, self.coefficientsAxis, self.couplingsAxis,
            self.currEnergyAxis, self.currStateAxis
        ]

        self.objects = []

        # Window with geometries
        self.glWidget = self.newGLWidget()
        self.mol = Avogadro.molecules.addMolecule()
        self.objects.append(self.mol)
        self.glWidget.molecule = self.mol
        self.viewerWidgetLayout.addWidget(Avogadro.toPyQt(self.glWidget))

        #
        self.animationSlider.valueChanged.connect(self.showMolecules)

        self.loadTrajectories(dyndir)

        #
        self.pictureAorDiab = QtGui.QComboBox()
        self.pictureAorDiab.addItems(["adiabatic", "local diabatic"])
        self.pictureAorDiab.setToolTip(
            "Choose whether energies and couplings should be shown in the adiabatic or the local diabatic picture."
        )
        self.pictureAorDiab.currentIndexChanged.connect(self.switchPicture)
        self.picture = self.pictureAorDiab.currentText()
        self.gridLayout.addWidget(self.pictureAorDiab, 1, 0)
Beispiel #6
0
    def performAction(self, action, glwidget):

        for i, engine in enumerate(glwidget.engines):
            if engine.name == "Surfaces":
                surfaceEngine = engine  # This should work...
            print "Name", engine.name  # Bug, it gives nothing intelligible
            print "Alias", engine.alias  # Bug, same as before
            print "Primitives", engine.primitiveTypes  # Gives Surface, 3, Atoms etc...
            print "index", i

        cube = glwidget.molecule.addCube()

        dim = array([5, 5, 5])
        min = -array([10.0, 10.0, 10.0])
        max = array([10.0, 10.0, 10.0])
        cube.setLimits(min, max, dim)

        data = []
        for i in range(125):
            data.append(sin(i / 5.0))
        cube.setData(data)

        mesh = glwidget.molecule.addMesh()
        ID = mesh.id

        mesh.cube = cube.id

        iso = 1.0
        mesh_gen = Avogadro.MeshGenerator()
        initialized = mesh_gen.initialize(cube, mesh, iso)
        mesh_gen.run()

        Avogadro.toPyQt(mesh_gen).wait()

        print "finished"

        #settings = QSettings("mesh1Id", ID)   This doesn't set values!!
        settings = QSettings()
        settings.setValue("mesh1Id", ID)
        surfaceEngine.readSettings(settings)

        surfaceEngine.enabled = True
        glwidget.molecule.update()
 def open(self):
     filename = str(
         QFileDialog.getOpenFileName(
             self, 'Open', QDir.currentPath(),
             'Chemistry files (*.cml *.sdf *.mol *.xyz)'))
     self.molFile = Avogadro.OpenbabelWrapper.readFile(
         filename, '', '', False)
     self.connect(Avogadro.toPyQt(self.molFile), SIGNAL('ready()'), self,
                  SLOT('readThreadFinnished()'))
     self.ui.statusbar.showMessage('Reading file...')
  def performAction(self, action, glwidget):
    
    for i,engine in enumerate(glwidget.engines):
      if engine.name == "Surfaces":
        surfaceEngine = engine  # This should work...
      print "Name",engine.name       # Bug, it gives nothing intelligible
      print "Alias",engine.alias     # Bug, same as before  
      print "Primitives", engine.primitiveTypes # Gives Surface, 3, Atoms etc...
      print "index",i

    cube = glwidget.molecule.addCube()

    dim = array([5,5,5])
    min = -array([10.0,10.0,10.0])
    max = array([10.0,10.0,10.0])
    cube.setLimits(min,max,dim)

    data = []
    for i in range(125):
      data.append(sin(i/5.0))
    cube.setData(data)

    mesh = glwidget.molecule.addMesh()
    ID = mesh.id

    mesh.cube = cube.id

    iso = 1.0
    mesh_gen = Avogadro.MeshGenerator()
    initialized = mesh_gen.initialize(cube,mesh,iso)
    mesh_gen.run()

    Avogadro.toPyQt(mesh_gen).wait()

    print "finished"  

    #settings = QSettings("mesh1Id", ID)   This doesn't set values!!
    settings = QSettings()
    settings.setValue("mesh1Id", ID)
    surfaceEngine.readSettings(settings)

    surfaceEngine.enabled = True
    glwidget.molecule.update()  
Beispiel #9
0
 def test_engine(self):
   engines = Avogadro.PluginManager.instance.identifiers(Avogadro.PluginType.EngineType)
   engine = Avogadro.PluginManager.instance.engine(engines[0], Avogadro.toPyQt(self.glwidget))
   self.assertNotEqual(engine, None)
   self.glwidget.addEngine(engine)
   self.glwidget.removeEngine(engine)
 def open(self):
   filename = str(QFileDialog.getOpenFileName(self, 'Open', QDir.currentPath(), 
         'Chemistry files (*.cml *.sdf *.mol *.xyz)'))
   self.molFile = Avogadro.MoleculeFile.readFile(filename, '', '', False)
   self.connect(Avogadro.toPyQt(self.molFile), SIGNAL('ready()'), self, SLOT('readThreadFinnished()'))
   self.ui.statusbar.showMessage('Reading file...')
Beispiel #11
0
 def test_engine(self):
   engine = Avogadro.PluginManager.instance.engine("Label", Avogadro.toPyQt(self.glwidget))
   #engine = Avogadro.PluginManager.instance.engine("foo", N)
   self.assertNotEqual(engine, None)
   self.glwidget.addEngine(engine)
   self.glwidget.removeEngine(engine)