Skip to content

Commit f029d4d

Browse files
committed
Fix #1218 only, not addressing #973
1 parent e54f3e2 commit f029d4d

File tree

1 file changed

+26
-19
lines changed

1 file changed

+26
-19
lines changed

nipype/algorithms/mesh.py

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -20,28 +20,20 @@
2020
BaseInterfaceInputSpec)
2121
from warnings import warn
2222

23-
have_tvtk = False
24-
try:
25-
import os
26-
os.environ['ETS_TOOLKIT'] = 'null'
27-
from tvtk.api import tvtk
28-
have_tvtk = True
29-
except ImportError:
30-
pass
31-
32-
if have_tvtk:
33-
from tvtk.tvtk_classes.vtk_version import vtk_build_version
34-
vtk_major = int(vtk_build_version[0])
35-
3623
iflogger = logging.getLogger('interface')
3724

3825

3926
class TVTKBaseInterface(BaseInterface):
4027
_redirect_x = True
28+
_vtk_major = 6
4129

4230
def __init__(self, **inputs):
43-
if not have_tvtk:
44-
raise RuntimeError('Interface requires tvtk')
31+
try:
32+
from tvtk.tvtk_classes.vtk_version import vtk_build_version
33+
self._vtk_major = int(vtk_build_version[0])
34+
except ImportError:
35+
iflogger.warning('VTK version-major inspection using tvtk failed.')
36+
4537
super(TVTKBaseInterface, self).__init__(**inputs)
4638

4739

@@ -103,6 +95,11 @@ def _run_interface(self, runtime):
10395
import numpy as np
10496
from scipy import ndimage
10597

98+
try:
99+
from tvtk.api import tvtk
100+
except ImportError:
101+
raise ImportError('Interface requires tvtk')
102+
106103
r = tvtk.PolyDataReader(file_name=self.inputs.points)
107104
r.update()
108105
mesh = r.output
@@ -133,7 +130,7 @@ def _run_interface(self, runtime):
133130
newpoints = [p+d for p, d in zip(points, disps)]
134131
mesh.points = newpoints
135132
w = tvtk.PolyDataWriter()
136-
if vtk_major <= 5:
133+
if self._vtk_major <= 5:
137134
w.input = mesh
138135
else:
139136
w.set_input_data_object(mesh)
@@ -218,6 +215,11 @@ def _triangle_area(self, A, B, C):
218215
return area
219216

220217
def _run_interface(self, runtime):
218+
try:
219+
from tvtk.api import tvtk
220+
except ImportError:
221+
raise ImportError('Interface requires tvtk')
222+
221223
r1 = tvtk.PolyDataReader(file_name=self.inputs.surface1)
222224
r2 = tvtk.PolyDataReader(file_name=self.inputs.surface2)
223225
vtk1 = r1.output
@@ -266,7 +268,7 @@ def _run_interface(self, runtime):
266268
writer = tvtk.PolyDataWriter(
267269
file_name=op.abspath(self.inputs.out_warp))
268270

269-
if vtk_major <= 5:
271+
if self._vtk_major <= 5:
270272
writer.input = mesh
271273
else:
272274
writer.set_input_data_object(mesh)
@@ -340,6 +342,11 @@ class MeshWarpMaths(TVTKBaseInterface):
340342
output_spec = MeshWarpMathsOutputSpec
341343

342344
def _run_interface(self, runtime):
345+
try:
346+
from tvtk.api import tvtk
347+
except ImportError:
348+
raise ImportError('Interface requires tvtk')
349+
343350
r1 = tvtk.PolyDataReader(file_name=self.inputs.in_surf)
344351
vtk1 = r1.output
345352
r1.update()
@@ -388,7 +395,7 @@ def _run_interface(self, runtime):
388395
vtk1.point_data.vectors = warping
389396
writer = tvtk.PolyDataWriter(
390397
file_name=op.abspath(self.inputs.out_warp))
391-
if vtk_major <= 5:
398+
if self._vtk_major <= 5:
392399
writer.input = vtk1
393400
else:
394401
writer.set_input_data_object(vtk1)
@@ -399,7 +406,7 @@ def _run_interface(self, runtime):
399406
writer = tvtk.PolyDataWriter(
400407
file_name=op.abspath(self.inputs.out_file))
401408

402-
if vtk_major <= 5:
409+
if self._vtk_major <= 5:
403410
writer.input = vtk1
404411
else:
405412
writer.set_input_data_object(vtk1)

0 commit comments

Comments
 (0)