Repository: nipy/nipype

Issue:
'MeshFixInputSpec' object has no attribute 'save_as_vrml'
### Summary

Hi, I'm a newbie and am currently trying to revive a [4 years old repository](https://github.com/CyclotronResearchCentre/forward). This code makes use of MeshFix interface. When running an example I get an `AttributeError`.

### Actual behavior

The code where the issue occures is the following:
```
input_to_fsmesh = pe.Node(interface=mf.MeshFix(), name='input_to_fsmesh')
input_to_fsmesh.inputs.dont_clean = True
input_to_fsmesh.inputs.save_as_freesurfer_mesh = True
```
It stops running at the last line with the error: 
```AttributeError: 'MeshFixInputSpec' object has no attribute 'save_as_vrml'```
The complete message is the following:
```
Exception occurred in traits notification handler for object: 
args = <undefined>
cut_inner = <undefined>
cut_outer = <undefined>
decouple_inin = <undefined>
decouple_outin = <undefined>
decouple_outout = <undefined>
dilation = <undefined>
dont_clean = True
environ = {}
epsilon_angle = <undefined>
finetuning_distance = <undefined>
finetuning_inwards = <undefined>
finetuning_outwards = <undefined>
finetuning_substeps = <undefined>
in_file1 = <undefined>
in_file2 = <undefined>
join_closest_components = <undefined>
join_overlapping_largest_components = <undefined>
laplacian_smoothing_steps = <undefined>
number_of_biggest_shells = <undefined>
out_filename = <undefined>
output_type = off
quiet_mode = <undefined>
remove_handles = <undefined>
save_as_freesurfer_mesh = True
save_as_stl = <undefined>
save_as_vmrl = <undefined>
set_intersections_to_one = <undefined>
uniform_remeshing_steps = <undefined>
uniform_remeshing_vertices = <undefined>
x_shift = <undefined>
, trait: save_as_freesurfer_mesh, old value: <undefined>, new value: True


Traceback (most recent call last):
File "/home/martin/local/miniconda3/lib/python3.5/site-packages/traits/trait_notifiers.py", line 519, 
in _dispatch_change_event
        self.dispatch( handler, *args )  
File "/home/martin/local/miniconda3/lib/python3.5/site-packages/traits/trait_notifiers.py", line 482, 
in dispatch
	handler( *args )  
File "/home/martin/local/miniconda3/lib/python3.5/site-packages/nipype/interfaces/base/specs.py", line 112, 
in _xor_warn    
        if isdefined(getattr(self, trait_name)):
AttributeError: 'MeshFixInputSpec' object has no attribute 'save_as_vrml'
Exception occurred in traits notification handler.
```

### Platform details:
```
{'commit_hash': '%h',
 'commit_source': 'archive substitution',
 'networkx_version': '2.1',
 'nibabel_version': '2.3.1',
 'nipype_version': '1.1.3',
 'numpy_version': '1.15.2',
 'pkg_path': '/home/martin/local/miniconda3/lib/python3.5/site-packages/nipype',
 'scipy_version': '1.1.0',
 'sys_executable': '/home/martin/local/miniconda3/bin/python',
 'sys_platform': 'linux',
 'sys_version': '3.5.6 |Anaconda, Inc.| (default, Aug 26 2018, 21:41:56) \n'
                '[GCC 7.3.0]',
 'traits_version': '4.6.0'}
```
To tell the exact truth my platform is WSL Ubuntu 18.04 as I have a Windows 10 laptop.

### Execution environment

My python environment outside container.


Discussion:

Patch:
diff --git a/nipype/info.py b/nipype/info.py
index 936c6b63e..5efb4282b 100644
--- a/nipype/info.py
+++ b/nipype/info.py
@@ -108,7 +108,7 @@ DATEUTIL_MIN_VERSION = '2.2'
 PYTEST_MIN_VERSION = '3.0'
 FUTURE_MIN_VERSION = '0.16.0'
 SIMPLEJSON_MIN_VERSION = '3.8.0'
-PROV_VERSION = '1.5.2'
+PROV_VERSION = '1.5.0'
 CLICK_MIN_VERSION = '6.6.0'
 PYDOT_MIN_VERSION = '1.2.3'
 
@@ -139,8 +139,7 @@ REQUIRES = [
     'traits>=%s' % TRAITS_MIN_VERSION,
     'future>=%s' % FUTURE_MIN_VERSION,
     'simplejson>=%s' % SIMPLEJSON_MIN_VERSION,
-    'prov>=%s' % PROV_VERSION,
-    'neurdflib',
+    'prov==%s' % PROV_VERSION,
     'click>=%s' % CLICK_MIN_VERSION,
     'funcsigs',
     'pytest>=%s' % PYTEST_MIN_VERSION,
diff --git a/nipype/interfaces/meshfix.py b/nipype/interfaces/meshfix.py
index 4b9db519a..02a0db403 100644
--- a/nipype/interfaces/meshfix.py
+++ b/nipype/interfaces/meshfix.py
@@ -38,10 +38,10 @@ class MeshFixInputSpec(CommandLineInputSpec):
     dont_clean = traits.Bool(argstr='--no-clean', desc="Don't Clean")
 
     save_as_stl = traits.Bool(
-        xor=['save_as_vmrl', 'save_as_freesurfer_mesh'],
+        xor=['save_as_vrml', 'save_as_freesurfer_mesh'],
         argstr='--stl',
         desc="Result is saved in stereolithographic format (.stl)")
-    save_as_vmrl = traits.Bool(
+    save_as_vrml = traits.Bool(
         argstr='--wrl',
         xor=['save_as_stl', 'save_as_freesurfer_mesh'],
         desc="Result is saved in VRML1.0 format (.wrl)")
@@ -210,7 +210,7 @@ class MeshFix(CommandLine):
         if self.inputs.save_as_stl or self.inputs.output_type == 'stl':
             self.inputs.output_type = 'stl'
             self.inputs.save_as_stl = True
-        if self.inputs.save_as_vmrl or self.inputs.output_type == 'vmrl':
-            self.inputs.output_type = 'vmrl'
-            self.inputs.save_as_vmrl = True
+        if self.inputs.save_as_vrml or self.inputs.output_type == 'vrml':
+            self.inputs.output_type = 'vrml'
+            self.inputs.save_as_vrml = True
         return name + '_fixed.' + self.inputs.output_type
diff --git a/requirements.txt b/requirements.txt
index 1d1a4d1f9..5ef00ec98 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -6,8 +6,7 @@ python-dateutil>=2.2
 nibabel>=2.1.0
 future>=0.16.0
 simplejson>=3.8.0
-prov>=1.5.2
-neurdflib
+prov==1.5.0
 click>=6.6.0
 funcsigs
 configparser


Test patch:
diff --git a/nipype/interfaces/tests/test_auto_MeshFix.py b/nipype/interfaces/tests/test_auto_MeshFix.py
index 3cc1541d6..9f50145ba 100644
--- a/nipype/interfaces/tests/test_auto_MeshFix.py
+++ b/nipype/interfaces/tests/test_auto_MeshFix.py
@@ -67,9 +67,9 @@ def test_MeshFix_inputs():
         ),
         save_as_stl=dict(
             argstr='--stl',
-            xor=['save_as_vmrl', 'save_as_freesurfer_mesh'],
+            xor=['save_as_vrml', 'save_as_freesurfer_mesh'],
         ),
-        save_as_vmrl=dict(
+        save_as_vrml=dict(
             argstr='--wrl',
             xor=['save_as_stl', 'save_as_freesurfer_mesh'],
         ),