Ejemplo n.º 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()
Ejemplo n.º 2
0
 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()
Ejemplo n.º 3
0
    def test_constructors(self):
        qlist = []
        for i in range(10):
            atom = self.molecule.addAtom()
            self.list.append(atom)
            qlist.append(atom)
        self.assertEqual(self.list.size, 10)

        list2 = Avogadro.PrimitiveList(self.list)
        self.assertEqual(list2.size, 10)
        list3 = Avogadro.PrimitiveList(qlist)
        self.assertEqual(list3.size, 10)
 def newGLWidget(self):
     glWidget = Avogadro.GLWidget()
     glWidget.loadDefaultEngines()
     glWidget.quality = 4
     toolGroup = Avogadro.ToolGroup()
     tool = Avogadro.PluginManager.instance.tool('Navigate', None)
     toolGroup.append(tool)
     glWidget.toolGroup = toolGroup
     self.objects.append(glWidget)
     self.objects.append(toolGroup)
     self.objects.append(tool)
     return glWidget
Ejemplo n.º 5
0
    def test_constructors(self):
        color0 = Avogadro.Color(1.0, 0.0, 0.0)
        self.assertNotEqual(color0, None)

        color1 = Avogadro.Color(1.0, 0.0, 0.0, 1.0)
        self.assertNotEqual(color1, None)

        molecule = Avogadro.molecules.addMolecule()
        atom = molecule.addAtom()
        atom.atomicNumber = 6
        color2 = Avogadro.Color(atom)
        self.assertNotEqual(color2, None)

        color3 = Avogadro.Color()
        self.assertNotEqual(color3, None)
    def selectBackbone(self, glwidget):
        mol = glwidget.molecule
        # create a PrimitiveList to call GLWidget.setSelected(PrimitiveList, bool)
        primitiveList = Avogadro.PrimitiveList()
        # find the backbone atoms
        for atom in mol.atoms:
            # get the atomId and strip of white spaces
            atomId = atom.residue.atomId(atom.id).strip()
            print atomId
            # add the atom to the list if the atomId matches N, CA, C, O or H
            if atomId == "N":
                primitiveList.append(atom)
            elif atomId == "CA":
                primitiveList.append(atom)
            elif atomId == "C":
                primitiveList.append(atom)
            elif atomId == "O":
                primitiveList.append(atom)
            elif atomId == "H":
                primitiveList.append(atom)

        # find all bonds between backbone atoms
        for bond in mol.bonds:
            beginAtom = bond.beginAtom
            endAtom = bond.endAtom
            if primitiveList.contains(beginAtom) and primitiveList.contains(
                    endAtom):
                primitiveList.append(bond)

        # clear the current selection
        glwidget.clearSelected()
        # select the backbone atom
        glwidget.setSelected(primitiveList, True)
Ejemplo n.º 7
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)
Ejemplo n.º 8
0
    def setUp(self):
        # create the GLWidget and load the default engines
        self.glwidget = Avogadro.GLWidget()
        self.glwidget.loadDefaultEngines()

        self.molecule = Avogadro.molecules.addMolecule()
        self.molecule.addAtom()
        self.glwidget.molecule = self.molecule
 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()
Ejemplo n.º 10
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)
Ejemplo n.º 11
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()  
Ejemplo n.º 14
0
    def test_set(self):
        molecule = Avogadro.molecules.addMolecule()
        atom = molecule.addAtom()
        atom.atomicNumber = 6

        color = Avogadro.Color()
        color.setFromRgba(0.0, 1.0, 0.0)
        color.setFromRgba(0.0, 1.0, 0.0, 1.0)
        color.setFromPrimitive(atom)
        color.setFromGradient(0.7, 0.0, 0.5, 1.0)
        color.setFromIndex(0)
        color.alpha = 0.5
Ejemplo n.º 15
0
    def test_primitives(self):
        molecule = Avogadro.molecules.addMolecule()
        for i in range(10):
            molecule.addAtom()

        list = Avogadro.PrimitiveList(molecule.atoms)

        for engine in self.engines:
            self.assertEqual(engine.primitives.size, 0)
            engine.primitives = list
            self.assertNotEqual(engine.primitives.size, 0)
            engine.clearPrimitives()
            self.assertEqual(engine.primitives.size, 0)
Ejemplo n.º 16
0
  def test_performAction(self):
    glwidget = Avogadro.GLWidget()
    molecule = Avogadro.molecules.addMolecule()
    glwidget.molecule = molecule
    molecule.addAtom().atomicNumber = 6

    for extension in self.extensions:
      if extension.name == "Hydrogens":
        extension.setMolecule(molecule)
        actions = extension.actions
        for action in actions:
          #print action.text(), " = ", extension.menuPath(action)
          if action.text() == "Add Hydrogens":
            command = extension.performAction(action, glwidget)
            command.redo()
            self.assertEqual(molecule.numAtoms, 5)
    def selectBindingSite(self, glwidget):
        # returns (double, bool ok) as tuple
        result = QInputDialog.getDouble(
            None, "Create Binding Site Around Selection", "radius", 5.0, 2.0,
            20.0, 1)
        if not result[1]:
            return

        r = result[0]
        r2 = r * r
        selectedAtoms = glwidget.selectedPrimitives.subList(
            Avogadro.PrimitiveType.AtomType)

        newSelection = Avogadro.PrimitiveList()
        atomIds = []
        for residue in glwidget.molecule.residues:
            keepResidue = False
            # compute distance between residue atoms and selected atoms
            for atomId in residue.atoms:
                atom = glwidget.molecule.atomById(atomId)
                if not atom:
                    continue

                for selectedAtom in selectedAtoms:
                    ab = selectedAtom.pos - atom.pos
                    dist2 = dot(ab, ab)
                    if dist2 < r2:
                        keepResidue = True
                        break

                if keepResidue:
                    break

            if keepResidue:
                for atomId in residue.atoms:
                    atom = glwidget.molecule.atomById(atomId)
                    newSelection.append(atom)
                    atomIds.append(atom.id)

        # find all bonds between the atoms
        for bond in glwidget.molecule.bonds:
            beginAtom = bond.beginAtom
            endAtom = bond.endAtom
            if atomIds.count(beginAtom.id) and atomIds.count(endAtom.id):
                newSelection.append(bond)

        glwidget.setSelected(newSelection, True)
Ejemplo n.º 18
0
    def test_namedSelections(self):
        l = Avogadro.PrimitiveList([self.molecule.atom(0)])
        self.glwidget.addNamedSelection("test", l)

        self.assertNotEqual(len(self.glwidget.namedSelections), 0)
        self.assertEqual(self.glwidget.namedSelections[0], "test")

        self.glwidget.removeNamedSelection("test")
        self.assertEqual(len(self.glwidget.namedSelections), 0)

        self.glwidget.addNamedSelection("test", l)
        self.glwidget.removeNamedSelection(0)
        self.assertEqual(len(self.glwidget.namedSelections), 0)

        self.glwidget.addNamedSelection("test", l)
        self.glwidget.renameNamedSelection(0, "test2")
        self.assertEqual(self.glwidget.namedSelections[0], "test2")

        self.assertNotEqual(self.glwidget.namedSelectionPrimitives("test2"),
                            None)
        self.assertNotEqual(self.glwidget.namedSelectionPrimitives(0), None)
Ejemplo n.º 19
0
 def test_toolGroup(self):
     self.glwidget.toolGroup
     self.glwidget.toolGroup = Avogadro.ToolGroup()
     self.assertNotEqual(self.glwidget.toolGroup, None)
Ejemplo n.º 20
0
 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...')
Ejemplo n.º 21
0
 def test_colorMap(self):
     self.glwidget.colorMap
     self.glwidget.colorMap = Avogadro.Color()
     self.assertNotEqual(self.glwidget.colorMap, None)
Ejemplo n.º 22
0
 def _test_constructors(self):
     self.qwidget = QWidget()
     self.glwidget2 = Avogadro.GLWidget(self.qwidget)
Ejemplo n.º 23
0
 def setUp(self):
   self.toolGroup = Avogadro.ToolGroup()
Ejemplo n.º 24
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)
Ejemplo n.º 25
0
 def test_colorMap(self):
     color = Avogadro.Color()
     for engine in self.engines:
         self.assertEqual(engine.colorMap, None)
         engine.colorMap = color
         self.assertNotEqual(engine.colorMap, None)
Ejemplo n.º 26
0
 def setUp(self):
     self.molecule = Avogadro.molecules.addMolecule()
     self.list = Avogadro.PrimitiveList()
Ejemplo n.º 27
0
#!/usr/bin/env python2

from __future__ import print_function

import os.path
import argparse

parser = argparse.ArgumentParser()

parser.add_argument("xyzfilename", nargs="+")

args = parser.parse_args()

import Avogadro

# mol = Avogadro.molecules.addMolecule()

for xyzfilename in args.xyzfilename:
    molfile = Avogadro.MoleculeFile.readFile(xyzfilename)
    mol = molfile.molecule(0)
    print(type(mol))
    widget = Avogadro.GLWidget(mol)
    widget.setMolecule(mol)
    # Avogadro.GLWidget.setBackground("white")
Ejemplo n.º 28
0
 def test_setToSelectionColor(self):
     color = Avogadro.Color()
     color.setToSelectionColor()
Ejemplo n.º 29
0
 def test_getters(self):
     color = Avogadro.Color(0.1, 0.2, 0.3, 0.4)
     self.assertAlmostEqual(color.red, 0.1)
     self.assertAlmostEqual(color.green, 0.2)
     self.assertAlmostEqual(color.blue, 0.3)
     self.assertAlmostEqual(color.alpha, 0.4)
Ejemplo n.º 30
0
 def _test_apply(self):
     color = Avogadro.Color()
     color.apply()
     color.applyAsMaterial()
     color.applyAsFlatMaterial()
Ejemplo n.º 31
0
 def test_name(self):
     color = Avogadro.Color()
     color.name = "testing"
     self.assertEqual(color.name, "testing")
Ejemplo n.º 32
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)