1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 from Numeric import zeros
24 from os import system
25 from re import match
26
27 from isosurface_3D import Iso3D
28
29
32 """Class containting the function for OpenDX."""
33
34
35 self.relax = relax
36
37
38 self.iso3d = Iso3D(relax)
39
40
41 - def map(self, run=None, res_num=None, map_type='Iso3D', inc=20, lower=None, upper=None, swap=None, file="map", dir="dx", point=None, point_file="point", remap=None, labels=None):
42 """Function for mapping the given space and creating OpenDX files."""
43
44
45 index = None
46 for i in xrange(len(self.relax.data.res[run])):
47 if self.relax.data.res[run][i].num == res_num:
48 index = i
49 break
50 if index == None:
51 raise RelaxNoResError, res_num
52
53
54 n = len(self.relax.data.res[run][index].params)
55
56
57 if lower != None:
58 if len(lower) != n:
59 raise RelaxLenError, ('lower bounds', n)
60
61
62 if upper != None:
63 if len(upper) != n:
64 raise RelaxLenError, ('upper bounds', n)
65
66
67 if swap != None:
68 if len(swap) != n:
69 raise RelaxLenError, ('axes swapping', n)
70 test = zeros(n)
71 for i in xrange(n):
72 if swap[i] >= n:
73 raise RelaxError, "The integer " + `swap[i]` + " is greater than the final array element."
74 elif swap[i] < 0:
75 raise RelaxError, "All integers of the swap argument must be positive."
76 test[swap[i]] = 1
77 for i in xrange(n):
78 if test[i] != 1:
79 raise RelaxError, "The swap argument is invalid (possibly duplicated integer values)."
80
81
82 if point != None:
83 if len(point) != n:
84 raise RelaxLenError, ('point', n)
85
86
87 if labels != None:
88 if len(labels) != n:
89 raise RelaxLenError, ('axis labels', n)
90
91
92 if match("^[Ii]so3[Dd]", map_type):
93 if n != 3:
94 raise RelaxError, "The 3D isosurface map requires a 3 parameter model."
95
96
97 self.iso3d.map_space(run, index, n, inc, lower, upper, swap, file, dir, point, point_file, remap, labels)
98 else:
99 raise RelaxError, "The map type '" + map_type + "' is not supported."
100
101
102 - def run(self, file="map", dir="dx", dx_exe="dx", vp_exec=1):
103 """Function for running OpenDX."""
104
105
106 dir_text = ""
107 if dir != None:
108 dir_text = " -directory " + dir
109
110
111 execute_text = ""
112 if vp_exec:
113 execute_text = " -execute"
114
115
116 system(dx_exe + dir_text + " -program " + file + ".net" + execute_text + " &")
117