root / ase / gui / execute.py @ 4
Historique | Voir | Annoter | Télécharger (2,17 ko)
| 1 | 1 | tkerber | #!/usr/bin/env python
|
|---|---|---|---|
| 2 | 1 | tkerber | import __future__ |
| 3 | 1 | tkerber | import gtk |
| 4 | 1 | tkerber | |
| 5 | 1 | tkerber | import numpy as np |
| 6 | 1 | tkerber | |
| 7 | 1 | tkerber | from ase.gui.languages import translate as _ |
| 8 | 1 | tkerber | from ase.gui.widgets import pack |
| 9 | 1 | tkerber | |
| 10 | 1 | tkerber | |
| 11 | 1 | tkerber | class Execute(gtk.Window): |
| 12 | 1 | tkerber | def __init__(self, gui): |
| 13 | 1 | tkerber | gtk.Window.__init__(self)
|
| 14 | 1 | tkerber | #self.window.set_position(gtk.WIN_POS_CENTER)
|
| 15 | 1 | tkerber | #self.window.connect("destroy", lambda w: gtk.main_quit())
|
| 16 | 1 | tkerber | #self.window.connect('delete_event', self.exit)
|
| 17 | 1 | tkerber | self.set_title('Execute') |
| 18 | 1 | tkerber | vbox = gtk.VBox() |
| 19 | 1 | tkerber | pack(vbox, gtk.Label('Global: Use n, N, R, A, S:'))
|
| 20 | 1 | tkerber | self.cmd1 = pack(vbox, gtk.Entry(43)) |
| 21 | 1 | tkerber | pack(vbox, gtk.Label('Atoms: Use a, x, y, z, s, Z'))
|
| 22 | 1 | tkerber | self.cmd2 = pack(vbox, gtk.Entry(43)) |
| 23 | 1 | tkerber | #self.cmd1, self.cmd2 = pack(vbox, [gtk.Entry(23),gtk.Entry(23)])
|
| 24 | 1 | tkerber | self.cmd1.connect('activate', self.execute) |
| 25 | 1 | tkerber | self.cmd2.connect('activate', self.execute) |
| 26 | 1 | tkerber | self.selected = gtk.CheckButton('Only selected atoms') |
| 27 | 1 | tkerber | pack(vbox, self.selected)
|
| 28 | 1 | tkerber | self.add(vbox)
|
| 29 | 1 | tkerber | vbox.show() |
| 30 | 1 | tkerber | self.show()
|
| 31 | 1 | tkerber | self.gui = gui
|
| 32 | 1 | tkerber | |
| 33 | 1 | tkerber | def execute(self, widget=None): |
| 34 | 1 | tkerber | cmd1 = self.cmd1.get_text()
|
| 35 | 1 | tkerber | cmd2 = self.cmd2.get_text()
|
| 36 | 1 | tkerber | if cmd1:
|
| 37 | 1 | tkerber | code1 = compile(cmd1 + '\n', 'execute.py', 'single', |
| 38 | 1 | tkerber | __future__.CO_FUTURE_DIVISION) |
| 39 | 1 | tkerber | if cmd2:
|
| 40 | 1 | tkerber | code2 = compile(cmd2 + '\n', 'execute.py', 'single', |
| 41 | 1 | tkerber | __future__.CO_FUTURE_DIVISION) |
| 42 | 1 | tkerber | |
| 43 | 1 | tkerber | gui = self.gui
|
| 44 | 1 | tkerber | images = gui.images |
| 45 | 1 | tkerber | |
| 46 | 1 | tkerber | N = images.nimages |
| 47 | 1 | tkerber | n = images.natoms |
| 48 | 1 | tkerber | S = images.selected |
| 49 | 1 | tkerber | if self.selected.get_active(): |
| 50 | 1 | tkerber | indices = np.where(S)[0]
|
| 51 | 1 | tkerber | else:
|
| 52 | 1 | tkerber | indices = range(n)
|
| 53 | 1 | tkerber | |
| 54 | 1 | tkerber | for i in range(N): |
| 55 | 1 | tkerber | R = images.P[i] |
| 56 | 1 | tkerber | A = images.A[i] |
| 57 | 1 | tkerber | #fmax = sqrt(max((F**2).sum(1))
|
| 58 | 1 | tkerber | |
| 59 | 1 | tkerber | if cmd1:
|
| 60 | 1 | tkerber | exec code1
|
| 61 | 1 | tkerber | |
| 62 | 1 | tkerber | if not cmd2: |
| 63 | 1 | tkerber | continue
|
| 64 | 1 | tkerber | |
| 65 | 1 | tkerber | for a in indices: |
| 66 | 1 | tkerber | x, y, z = R[a] |
| 67 | 1 | tkerber | s = S[a] |
| 68 | 1 | tkerber | Z = images.Z[a] |
| 69 | 1 | tkerber | #f =
|
| 70 | 1 | tkerber | exec code2
|
| 71 | 1 | tkerber | S[a] = s |
| 72 | 1 | tkerber | R[a] = x, y, z |
| 73 | 1 | tkerber | |
| 74 | 1 | tkerber | gui.set_frame(gui.frame) |
| 75 | 1 | tkerber | |
| 76 | 1 | tkerber | python = execute |