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()
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()
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)
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()
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...')
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)