1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 """Module for checking relax dependencies.
24
25 If essential dependencies are missing, then an error message is printed and the program terminated.
26 """
27
28
29 import platform
30 from os import F_OK, access, sep
31 import sys
32
33
34
35
36
37
38 try:
39 import numpy
40 except ImportError:
41 sys.stderr.write("The dependency 'numpy' has not been installed.\n")
42 sys.exit()
43
44
45 try:
46 import optparse
47 except ImportError:
48 sys.stderr.write("The dependency 'Optik' has not been installed.\n")
49 sys.exit()
50
51
52 try:
53 import minfx
54 except ImportError:
55 sys.stderr.write("The dependency 'minfx' has not been installed (see https://sourceforge.net/projects/minfx/).\n")
56 sys.exit()
57
58
59
60
61
62 try:
63 import bmrblib
64 bmrblib_module = True
65 except ImportError:
66 bmrblib_module = False
67
68
69 try:
70 import wx
71 wx_module = True
72 except ImportError:
73 wx_module = False
74
75
76 try:
77 import epydoc
78 epydoc_module = True
79 except ImportError:
80 epydoc_module = False
81
82
83 try:
84 import readline
85 readline_module = True
86 except ImportError:
87 readline_module = False
88
89
90 try:
91 import runpy
92 runpy_module = True
93 except ImportError:
94 runpy_module = False
95
96
97 try:
98 import profile
99 profile_module = True
100 except ImportError:
101 profile_module = False
102
103
104 try:
105 import bz2
106 bz2_module = True
107 except ImportError:
108 message = sys.exc_info()[1]
109 bz2_module = False
110 bz2_module_message = message.args[0]
111
112
113 try:
114 import gzip
115 gzip_module = True
116 except ImportError:
117 message = sys.exc_info()[1]
118 gzip_module = False
119 gzip_module_message = message.args[0]
120
121
122 try:
123 import io
124 io_module = True
125 except ImportError:
126 message = sys.exc_info()[1]
127 io_module = False
128 io_module_message = message.args[0]
129
130
131 try:
132 import scipy
133 scipy_module = True
134 except:
135 scipy_module = False
136
137
138 try:
139 import Numeric
140 numeric_module = True
141 except ImportError:
142 numeric_module = False
143
144
145 try:
146 from Scientific.Visualization import VMD
147 del VMD
148 vmd_module = True
149 except:
150 vmd_module = False
151
152
153 try:
154 import mpi4py
155 mpi4py_module = True
156 except ImportError:
157 message = sys.exc_info()[1]
158 mpi4py_module = False
159
160
161 mpi4py_message = """The dependency 'mpi4py' has not been installed. You should either:
162
163 1. Run without multiprocessor support i.e. remove the --multi mpi4py flag from the command line.
164
165 2. Install mpi4py.
166
167 3. Choose another multi processor method to give to the --multi command line flag.\n
168 """
169
170
171 try:
172 import pymol
173 pymol_module = True
174 except ImportError:
175 message = sys.exc_info()[1]
176 pymol_module = False
177
178
179 try:
180 import xml
181 xml_module = True
182 except ImportError:
183 message = sys.exc_info()[1]
184 xml_module = False
185 if xml_module:
186
187 if hasattr(xml, '_MINIMUM_XMLPLUS_VERSION'):
188 xml_version = "%s.%s.%s" % xml._MINIMUM_XMLPLUS_VERSION
189 xml_type = 'internal'
190 elif hasattr(xml, '__version__'):
191 xml_version = xml.__version__
192 xml_type = 'PyXML'
193 else:
194 xml_version = ''
195 xml_type = ''
196
197
198 try:
199 import subprocess
200 subprocess_module = True
201 except ImportError:
202 message = sys.exc_info()[1]
203 subprocess_module = False
204 subprocess_module_message = message.args[0]
205
206
207 try:
208 import ctypes
209 ctypes_module = True
210 except ImportError:
211 message = sys.exc_info()[1]
212 ctypes_module = False
213 ctypes_module_message = message.args[0]
214 try:
215 from ctypes import Structure
216 ctypes_structure_module = True
217 except ImportError:
218 message = sys.exc_info()[1]
219 ctypes_structure_module = False
220 ctypes_structure_module_message = message.args[0]
221
222
223
224
225
226
227
228
229 try:
230 from maths_fns import relax_fit
231 from maths_fns.relax_fit import setup
232 del setup
233 C_module_exp_fn = True
234 except ImportError:
235
236 system = platform.system()
237
238
239 file = 'relax_fit.so'
240 if system == 'Windows' or system == 'Microsoft':
241 file = 'relax_fit.pyd'
242 if not access('maths_fns' + sep + file, F_OK):
243 C_module_exp_fn_mesg = "ImportError: relaxation curve fitting is unavailable, the corresponding C modules have not been compiled."
244
245
246 else:
247 message = sys.exc_info()[1]
248 C_module_exp_fn_mesg = "ImportError: " + repr(message) + "\nRelaxation curve fitting is unavailable, try compiling the C modules."
249
250
251 C_module_exp_fn = False
252