Closed whedon closed 5 years ago
Hello human, I'm @whedon, a robot that can help you with some common editorial tasks. @brainstorm, it looks like you're currently assigned as the reviewer for this paper :tada:.
:star: Important :star:
If you haven't already, you should seriously consider unsubscribing from GitHub notifications for this (https://github.com/openjournals/joss-reviews) repository. As a reviewer, you're probably currently watching this repository which means for GitHub's default behaviour you will receive notifications (emails) for all reviews πΏ
To fix this do the following two things:
For a list of things I can do to help you, just type:
@whedon commands
Attempting PDF compilation. Reticulating splines etc...
@aslakbergersen No references in paper.md
?
@brainstorm thank you for agreeing to review morphMan. I'm not sure I understand what you are asking. There are 13 references in the paper.md, but the bibliography (paper.bib) is located here. I hope that answered your question.
My bad, I was reading the rendered version and I saw that section empty, but they are indeed in the .bib as they should, ticking off that box ;)
Hi @aslakbergersen I can see there are still some open issues and unchecked items on the reviewer's lists so I wanted to check if everything was in order.
Hi @trallard, thank you for checking in. After comments from both reviewers, we have just changed the installation method, meeting the comments in KVSlab/morphMan#14.
@brainstorm and @rlizzo is there anything else we should address?
I can see that both reviewers left the following point of the checklist unchecked:
Functionality documentation: Is the core functionality of the software documented to a satisfactory level (e.g., API method documentation)?
@brainstorm @rlizzo can you advise on this? I saw there is a read the docs website but I am unsure if you both deemed that more work would need to be done at an API level
@aslakbergersen I advised the authors to publish their package under conda-forge for easy installation/access instead of creating their own channel on Anaconda.
@aslakbergersen Do you reckon you can put it there?
Also, the tests seem to be passing on appveyor, but I cannot make them pass locally after doing the equivalent of:
# Start testing
- cd .\\test
- ps: Start-FileDownload 'http://ecm2.mathcs.emory.edu/aneuriskdata/download/C0001/C0001_models.tar.gz'
- tar --force-local -zxvf C0001_models.tar.gz
- del /f C0001_models.tar.gz
- pytest .
On my system under morphman conda virtual environment. There should be a mini-section on the readme on how to make the tests run locally.
$ cd test
test$ wget http://ecm2.mathcs.emory.edu/aneuriskdata/download/C0001/C0001_models.tar.gz && tar xvfj *.tar.gz
test$ pytest .
============================================================================================================= test session starts ==============================================================================================================
platform darwin -- Python 3.6.1, pytest-4.0.1, py-1.7.0, pluggy-0.8.0
rootdir: /Users/romanvg/dev/morphMan, inifile:
collected 16 items
test_landmarking.py FF [ 12%]
test_manipulate_area.py FFFFF [ 43%]
test_manipulate_bend.py FFFFF [ 75%]
test_manipulate_bifurcation.py FF [ 87%]
test_manipulate_curvature.py FF [100%]
=================================================================================================================== FAILURES ===================================================================================================================
_________________________________________________________________________________________________________ test_landmarking[bogunovic] __________________________________________________________________________________________________________
common_input = {'input_filepath': '/Users/romanvg/dev/morphMan/test/C0001/surface/model.vtp', 'no_smooth': False, 'no_smooth_point': None, 'output_filepath': '/Users/romanvg/dev/morphMan/test/C0001/surface/model_output.vtp', ...}
algorithm = 'bogunovic'
@pytest.mark.parametrize("algorithm", ["bogunovic", "piccinelli"])
def test_landmarking(common_input, algorithm):
# Get region points
base_path = get_path_names(common_input["input_filepath"])
relevant_outlets = [35.8, 59.8, 39.7, 76.8, 54.7, 53.2]
ica_centerline = extract_ica_centerline(base_path, common_input["resampling_step"],
> relevant_outlets=relevant_outlets)
test_landmarking.py:22:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../morphman/common/common.py:1703: in extract_ica_centerline
smooth=False, base_path=base_path)
../morphman/common/common.py:1315: in compute_centerlines
centerlines.Execute()
../../../.miniconda/envs/morphman/lib/python3.6/site-packages/vmtk/vmtkcenterlines.py:595: in Execute
self.SeedSelector.Execute()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <vmtk.vmtkcenterlines.vmtkPointListSeedSelector object at 0x12319c278>
def Execute(self):
if not self._Surface:
self.PrintError('vmtkPointListSeedSelector Error: Surface not set.')
return
if not self.SourcePoints:
self.PrintError('vmtkPointListSeedSelector Error: SourcePoints not set.')
return
if not self.TargetPoints:
self.PrintError('vmtkPointListSeedSelector Error: TargetPoints not set.')
return
self._SourceSeedIds.Initialize()
self._TargetSeedIds.Initialize()
if len(self.SourcePoints) % 3 != 0:
self.PrintError('vmtkPointListSeedSelector Error: SourcePoints not made up of triplets.')
return
if len(self.TargetPoints) % 3 != 0:
self.PrintError('vmtkPointListSeedSelector Error: TargetPoints not made up of triplets.')
return
pointLocator = vtk.vtkPointLocator()
pointLocator.SetDataSet(self._Surface)
pointLocator.BuildLocator()
> for i in range(len(self.SourcePoints)/3):
E TypeError: 'float' object cannot be interpreted as an integer
../../../.miniconda/envs/morphman/lib/python3.6/site-packages/vmtk/vmtkcenterlines.py:128: TypeError
------------------------------------------------------------------------------------------------------------- Captured stdout call -------------------------------------------------------------------------------------------------------------
Cleaning surface.
Triangulating surface.
_________________________________________________________________________________________________________ test_landmarking[piccinelli] _________________________________________________________________________________________________________
common_input = {'input_filepath': '/Users/romanvg/dev/morphMan/test/C0001/surface/model.vtp', 'no_smooth': False, 'no_smooth_point': None, 'output_filepath': '/Users/romanvg/dev/morphMan/test/C0001/surface/model_output.vtp', ...}
algorithm = 'piccinelli'
@pytest.mark.parametrize("algorithm", ["bogunovic", "piccinelli"])
def test_landmarking(common_input, algorithm):
# Get region points
base_path = get_path_names(common_input["input_filepath"])
relevant_outlets = [35.8, 59.8, 39.7, 76.8, 54.7, 53.2]
ica_centerline = extract_ica_centerline(base_path, common_input["resampling_step"],
> relevant_outlets=relevant_outlets)
test_landmarking.py:22:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../morphman/common/common.py:1703: in extract_ica_centerline
smooth=False, base_path=base_path)
../morphman/common/common.py:1315: in compute_centerlines
centerlines.Execute()
../../../.miniconda/envs/morphman/lib/python3.6/site-packages/vmtk/vmtkcenterlines.py:595: in Execute
self.SeedSelector.Execute()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <vmtk.vmtkcenterlines.vmtkPointListSeedSelector object at 0x123193278>
def Execute(self):
if not self._Surface:
self.PrintError('vmtkPointListSeedSelector Error: Surface not set.')
return
if not self.SourcePoints:
self.PrintError('vmtkPointListSeedSelector Error: SourcePoints not set.')
return
if not self.TargetPoints:
self.PrintError('vmtkPointListSeedSelector Error: TargetPoints not set.')
return
self._SourceSeedIds.Initialize()
self._TargetSeedIds.Initialize()
if len(self.SourcePoints) % 3 != 0:
self.PrintError('vmtkPointListSeedSelector Error: SourcePoints not made up of triplets.')
return
if len(self.TargetPoints) % 3 != 0:
self.PrintError('vmtkPointListSeedSelector Error: TargetPoints not made up of triplets.')
return
pointLocator = vtk.vtkPointLocator()
pointLocator.SetDataSet(self._Surface)
pointLocator.BuildLocator()
> for i in range(len(self.SourcePoints)/3):
E TypeError: 'float' object cannot be interpreted as an integer
../../../.miniconda/envs/morphman/lib/python3.6/site-packages/vmtk/vmtkcenterlines.py:128: TypeError
------------------------------------------------------------------------------------------------------------- Captured stdout call -------------------------------------------------------------------------------------------------------------
Cleaning surface.
Triangulating surface.
___________________________________________________________________________________________________________ test_area_variation[1.5] ___________________________________________________________________________________________________________
ratio = 1.5, common_input = {'beta': None, 'input_filepath': '/Users/romanvg/dev/morphMan/test/C0001/surface/model.vtp', 'method': 'variation', 'no_smooth': False, ...}
@pytest.mark.parametrize("ratio", [1.5, 3.0])
def test_area_variation(ratio, common_input):
common_input.update(dict(method = "variation",
region_points = None, # Inactive
region_of_interest = "first_line",
stenosis_length = 0, # Inactive
percentage = 0, # Inactive
ratio = ratio,
beta = None))
# Run area variation
> manipulate_area(**common_input)
test_manipulate_area.py:28:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../morphman/manipulate_area.py:61: in manipulate_area
smooth=False, base_path=base_path)
../morphman/common/common.py:1315: in compute_centerlines
centerlines.Execute()
../../../.miniconda/envs/morphman/lib/python3.6/site-packages/vmtk/vmtkcenterlines.py:595: in Execute
self.SeedSelector.Execute()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <vmtk.vmtkcenterlines.vmtkPointListSeedSelector object at 0x12355c1d0>
def Execute(self):
if not self._Surface:
self.PrintError('vmtkPointListSeedSelector Error: Surface not set.')
return
if not self.SourcePoints:
self.PrintError('vmtkPointListSeedSelector Error: SourcePoints not set.')
return
if not self.TargetPoints:
self.PrintError('vmtkPointListSeedSelector Error: TargetPoints not set.')
return
self._SourceSeedIds.Initialize()
self._TargetSeedIds.Initialize()
if len(self.SourcePoints) % 3 != 0:
self.PrintError('vmtkPointListSeedSelector Error: SourcePoints not made up of triplets.')
return
if len(self.TargetPoints) % 3 != 0:
self.PrintError('vmtkPointListSeedSelector Error: TargetPoints not made up of triplets.')
return
pointLocator = vtk.vtkPointLocator()
pointLocator.SetDataSet(self._Surface)
pointLocator.BuildLocator()
> for i in range(len(self.SourcePoints)/3):
E TypeError: 'float' object cannot be interpreted as an integer
../../../.miniconda/envs/morphman/lib/python3.6/site-packages/vmtk/vmtkcenterlines.py:128: TypeError
------------------------------------------------------------------------------------------------------------- Captured stdout call -------------------------------------------------------------------------------------------------------------
Cleaning surface.
Triangulating surface.
___________________________________________________________________________________________________________ test_area_variation[3.0] ___________________________________________________________________________________________________________
ratio = 3.0, common_input = {'beta': None, 'input_filepath': '/Users/romanvg/dev/morphMan/test/C0001/surface/model.vtp', 'method': 'variation', 'no_smooth': False, ...}
@pytest.mark.parametrize("ratio", [1.5, 3.0])
def test_area_variation(ratio, common_input):
common_input.update(dict(method = "variation",
region_points = None, # Inactive
region_of_interest = "first_line",
stenosis_length = 0, # Inactive
percentage = 0, # Inactive
ratio = ratio,
beta = None))
# Run area variation
> manipulate_area(**common_input)
test_manipulate_area.py:28:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../morphman/manipulate_area.py:61: in manipulate_area
smooth=False, base_path=base_path)
../morphman/common/common.py:1315: in compute_centerlines
centerlines.Execute()
../../../.miniconda/envs/morphman/lib/python3.6/site-packages/vmtk/vmtkcenterlines.py:595: in Execute
self.SeedSelector.Execute()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <vmtk.vmtkcenterlines.vmtkPointListSeedSelector object at 0x123187908>
def Execute(self):
if not self._Surface:
self.PrintError('vmtkPointListSeedSelector Error: Surface not set.')
return
if not self.SourcePoints:
self.PrintError('vmtkPointListSeedSelector Error: SourcePoints not set.')
return
if not self.TargetPoints:
self.PrintError('vmtkPointListSeedSelector Error: TargetPoints not set.')
return
self._SourceSeedIds.Initialize()
self._TargetSeedIds.Initialize()
if len(self.SourcePoints) % 3 != 0:
self.PrintError('vmtkPointListSeedSelector Error: SourcePoints not made up of triplets.')
return
if len(self.TargetPoints) % 3 != 0:
self.PrintError('vmtkPointListSeedSelector Error: TargetPoints not made up of triplets.')
return
pointLocator = vtk.vtkPointLocator()
pointLocator.SetDataSet(self._Surface)
pointLocator.BuildLocator()
> for i in range(len(self.SourcePoints)/3):
E TypeError: 'float' object cannot be interpreted as an integer
../../../.miniconda/envs/morphman/lib/python3.6/site-packages/vmtk/vmtkcenterlines.py:128: TypeError
------------------------------------------------------------------------------------------------------------- Captured stdout call -------------------------------------------------------------------------------------------------------------
Cleaning surface.
Triangulating surface.
_____________________________________________________________________________________________________________ test_create_stenosis _____________________________________________________________________________________________________________
common_input = {'beta': None, 'input_filepath': '/Users/romanvg/dev/morphMan/test/C0001/surface/model.vtp', 'method': 'variation', 'no_smooth': False, ...}
def test_create_stenosis(common_input):
# Get region points
base_path = get_path_names(common_input['input_filepath'])
> centerline = extract_single_line(read_polydata(base_path + "_centerline.vtp"), 0)
test_manipulate_area.py:51:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
filename = '/Users/romanvg/dev/morphMan/test/C0001/surface/model_centerline.vtp', datatype = None
def read_polydata(filename, datatype=None):
"""
Load the given file, and return a vtkPolyData object for it.
Args:
filename (str): Path to input file.
datatype (str): Additional parameter for vtkIdList objects.
Returns:
polyData (vtkSTL/vtkPolyData/vtkXMLStructured/
vtkXMLRectilinear/vtkXMLPolydata/vtkXMLUnstructured/
vtkXMLImage/Tecplot): Output data.
"""
# Check if file exists
if not path.exists(filename):
> raise RuntimeError("Could not find file: %s" % filename)
E RuntimeError: Could not find file: /Users/romanvg/dev/morphMan/test/C0001/surface/model_centerline.vtp
../morphman/common/common.py:62: RuntimeError
__________________________________________________________________________________________________ test_inflation_and_deflation_of_area[-15] ___________________________________________________________________________________________________
common_input = {'beta': None, 'input_filepath': '/Users/romanvg/dev/morphMan/test/C0001/surface/model.vtp', 'method': 'area', 'no_smooth': False, ...}, percentage = -15
@pytest.mark.parametrize("percentage",[-15, 15])
def test_inflation_and_deflation_of_area(common_input, percentage):
common_input.update(dict(method = "area",
region_points = None, # Inactive
region_of_interest = "first_line",
stenosis_length = 0, # Inactive
percentage = percentage,
ratio = None, # Inactive
beta = None)) # Inactive
# Perform area manipulation
> manipulate_area(**common_input)
test_manipulate_area.py:96:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../morphman/manipulate_area.py:61: in manipulate_area
smooth=False, base_path=base_path)
../morphman/common/common.py:1315: in compute_centerlines
centerlines.Execute()
../../../.miniconda/envs/morphman/lib/python3.6/site-packages/vmtk/vmtkcenterlines.py:595: in Execute
self.SeedSelector.Execute()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <vmtk.vmtkcenterlines.vmtkPointListSeedSelector object at 0x12318d710>
def Execute(self):
if not self._Surface:
self.PrintError('vmtkPointListSeedSelector Error: Surface not set.')
return
if not self.SourcePoints:
self.PrintError('vmtkPointListSeedSelector Error: SourcePoints not set.')
return
if not self.TargetPoints:
self.PrintError('vmtkPointListSeedSelector Error: TargetPoints not set.')
return
self._SourceSeedIds.Initialize()
self._TargetSeedIds.Initialize()
if len(self.SourcePoints) % 3 != 0:
self.PrintError('vmtkPointListSeedSelector Error: SourcePoints not made up of triplets.')
return
if len(self.TargetPoints) % 3 != 0:
self.PrintError('vmtkPointListSeedSelector Error: TargetPoints not made up of triplets.')
return
pointLocator = vtk.vtkPointLocator()
pointLocator.SetDataSet(self._Surface)
pointLocator.BuildLocator()
> for i in range(len(self.SourcePoints)/3):
E TypeError: 'float' object cannot be interpreted as an integer
../../../.miniconda/envs/morphman/lib/python3.6/site-packages/vmtk/vmtkcenterlines.py:128: TypeError
------------------------------------------------------------------------------------------------------------- Captured stdout call -------------------------------------------------------------------------------------------------------------
Cleaning surface.
Triangulating surface.
___________________________________________________________________________________________________ test_inflation_and_deflation_of_area[15] ___________________________________________________________________________________________________
common_input = {'beta': None, 'input_filepath': '/Users/romanvg/dev/morphMan/test/C0001/surface/model.vtp', 'method': 'area', 'no_smooth': False, ...}, percentage = 15
@pytest.mark.parametrize("percentage",[-15, 15])
def test_inflation_and_deflation_of_area(common_input, percentage):
common_input.update(dict(method = "area",
region_points = None, # Inactive
region_of_interest = "first_line",
stenosis_length = 0, # Inactive
percentage = percentage,
ratio = None, # Inactive
beta = None)) # Inactive
# Perform area manipulation
> manipulate_area(**common_input)
test_manipulate_area.py:96:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../morphman/manipulate_area.py:61: in manipulate_area
smooth=False, base_path=base_path)
../morphman/common/common.py:1315: in compute_centerlines
centerlines.Execute()
../../../.miniconda/envs/morphman/lib/python3.6/site-packages/vmtk/vmtkcenterlines.py:595: in Execute
self.SeedSelector.Execute()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <vmtk.vmtkcenterlines.vmtkPointListSeedSelector object at 0x123193f28>
def Execute(self):
if not self._Surface:
self.PrintError('vmtkPointListSeedSelector Error: Surface not set.')
return
if not self.SourcePoints:
self.PrintError('vmtkPointListSeedSelector Error: SourcePoints not set.')
return
if not self.TargetPoints:
self.PrintError('vmtkPointListSeedSelector Error: TargetPoints not set.')
return
self._SourceSeedIds.Initialize()
self._TargetSeedIds.Initialize()
if len(self.SourcePoints) % 3 != 0:
self.PrintError('vmtkPointListSeedSelector Error: SourcePoints not made up of triplets.')
return
if len(self.TargetPoints) % 3 != 0:
self.PrintError('vmtkPointListSeedSelector Error: TargetPoints not made up of triplets.')
return
pointLocator = vtk.vtkPointLocator()
pointLocator.SetDataSet(self._Surface)
pointLocator.BuildLocator()
> for i in range(len(self.SourcePoints)/3):
E TypeError: 'float' object cannot be interpreted as an integer
../../../.miniconda/envs/morphman/lib/python3.6/site-packages/vmtk/vmtkcenterlines.py:128: TypeError
------------------------------------------------------------------------------------------------------------- Captured stdout call -------------------------------------------------------------------------------------------------------------
Cleaning surface.
Triangulating surface.
____________________________________________________________________________________________________________ test_siphon[-0.2-0.0] _____________________________________________________________________________________________________________
common_input = {'alpha': -0.2, 'beta': 0.0, 'input_filepath': '/Users/romanvg/dev/morphMan/test/C0001/surface/model.vtp', 'no_smooth': False, ...}, alpha = -0.2, beta = 0.0
@pytest.mark.parametrize("alpha,beta",
[(-0.2, 0.0),
( 0.2, 0.0),
( 0.0, 0.2),
( 0.0, -0.2),
( 0.2, -0.2)])
def test_siphon(common_input, alpha, beta):
# Set problem specific parameters
common_input.update(dict(alpha=alpha,
beta=beta,
region_of_interest="commandline",
# TODO: Set points
region_points=[44.17085266113281,
38.514854431152344,
41.20818328857422,
43.242130279541016,
42.68572235107422,
38.65191650390625],
resampling_step = 0.1))
# Perform manipulation
> manipulate_bend(**common_input)
test_manipulate_bend.py:36:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../morphman/manipulate_bend.py:72: in manipulate_bend
smooth=False, base_path=base_path)
../morphman/common/common.py:1315: in compute_centerlines
centerlines.Execute()
../../../.miniconda/envs/morphman/lib/python3.6/site-packages/vmtk/vmtkcenterlines.py:595: in Execute
self.SeedSelector.Execute()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <vmtk.vmtkcenterlines.vmtkPointListSeedSelector object at 0x123e222e8>
def Execute(self):
if not self._Surface:
self.PrintError('vmtkPointListSeedSelector Error: Surface not set.')
return
if not self.SourcePoints:
self.PrintError('vmtkPointListSeedSelector Error: SourcePoints not set.')
return
if not self.TargetPoints:
self.PrintError('vmtkPointListSeedSelector Error: TargetPoints not set.')
return
self._SourceSeedIds.Initialize()
self._TargetSeedIds.Initialize()
if len(self.SourcePoints) % 3 != 0:
self.PrintError('vmtkPointListSeedSelector Error: SourcePoints not made up of triplets.')
return
if len(self.TargetPoints) % 3 != 0:
self.PrintError('vmtkPointListSeedSelector Error: TargetPoints not made up of triplets.')
return
pointLocator = vtk.vtkPointLocator()
pointLocator.SetDataSet(self._Surface)
pointLocator.BuildLocator()
> for i in range(len(self.SourcePoints)/3):
E TypeError: 'float' object cannot be interpreted as an integer
../../../.miniconda/envs/morphman/lib/python3.6/site-packages/vmtk/vmtkcenterlines.py:128: TypeError
------------------------------------------------------------------------------------------------------------- Captured stdout call -------------------------------------------------------------------------------------------------------------
-- Compute centerlines and Voronoi diagram
Cleaning surface.
Triangulating surface.
_____________________________________________________________________________________________________________ test_siphon[0.2-0.0] _____________________________________________________________________________________________________________
common_input = {'alpha': 0.2, 'beta': 0.0, 'input_filepath': '/Users/romanvg/dev/morphMan/test/C0001/surface/model.vtp', 'no_smooth': False, ...}, alpha = 0.2, beta = 0.0
@pytest.mark.parametrize("alpha,beta",
[(-0.2, 0.0),
( 0.2, 0.0),
( 0.0, 0.2),
( 0.0, -0.2),
( 0.2, -0.2)])
def test_siphon(common_input, alpha, beta):
# Set problem specific parameters
common_input.update(dict(alpha=alpha,
beta=beta,
region_of_interest="commandline",
# TODO: Set points
region_points=[44.17085266113281,
38.514854431152344,
41.20818328857422,
43.242130279541016,
42.68572235107422,
38.65191650390625],
resampling_step = 0.1))
# Perform manipulation
> manipulate_bend(**common_input)
test_manipulate_bend.py:36:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../morphman/manipulate_bend.py:72: in manipulate_bend
smooth=False, base_path=base_path)
../morphman/common/common.py:1315: in compute_centerlines
centerlines.Execute()
../../../.miniconda/envs/morphman/lib/python3.6/site-packages/vmtk/vmtkcenterlines.py:595: in Execute
self.SeedSelector.Execute()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <vmtk.vmtkcenterlines.vmtkPointListSeedSelector object at 0x12318dc18>
def Execute(self):
if not self._Surface:
self.PrintError('vmtkPointListSeedSelector Error: Surface not set.')
return
if not self.SourcePoints:
self.PrintError('vmtkPointListSeedSelector Error: SourcePoints not set.')
return
if not self.TargetPoints:
self.PrintError('vmtkPointListSeedSelector Error: TargetPoints not set.')
return
self._SourceSeedIds.Initialize()
self._TargetSeedIds.Initialize()
if len(self.SourcePoints) % 3 != 0:
self.PrintError('vmtkPointListSeedSelector Error: SourcePoints not made up of triplets.')
return
if len(self.TargetPoints) % 3 != 0:
self.PrintError('vmtkPointListSeedSelector Error: TargetPoints not made up of triplets.')
return
pointLocator = vtk.vtkPointLocator()
pointLocator.SetDataSet(self._Surface)
pointLocator.BuildLocator()
> for i in range(len(self.SourcePoints)/3):
E TypeError: 'float' object cannot be interpreted as an integer
../../../.miniconda/envs/morphman/lib/python3.6/site-packages/vmtk/vmtkcenterlines.py:128: TypeError
------------------------------------------------------------------------------------------------------------- Captured stdout call -------------------------------------------------------------------------------------------------------------
-- Compute centerlines and Voronoi diagram
Cleaning surface.
Triangulating surface.
_____________________________________________________________________________________________________________ test_siphon[0.0-0.2] _____________________________________________________________________________________________________________
common_input = {'alpha': 0.0, 'beta': 0.2, 'input_filepath': '/Users/romanvg/dev/morphMan/test/C0001/surface/model.vtp', 'no_smooth': False, ...}, alpha = 0.0, beta = 0.2
@pytest.mark.parametrize("alpha,beta",
[(-0.2, 0.0),
( 0.2, 0.0),
( 0.0, 0.2),
( 0.0, -0.2),
( 0.2, -0.2)])
def test_siphon(common_input, alpha, beta):
# Set problem specific parameters
common_input.update(dict(alpha=alpha,
beta=beta,
region_of_interest="commandline",
# TODO: Set points
region_points=[44.17085266113281,
38.514854431152344,
41.20818328857422,
43.242130279541016,
42.68572235107422,
38.65191650390625],
resampling_step = 0.1))
# Perform manipulation
> manipulate_bend(**common_input)
test_manipulate_bend.py:36:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../morphman/manipulate_bend.py:72: in manipulate_bend
smooth=False, base_path=base_path)
../morphman/common/common.py:1315: in compute_centerlines
centerlines.Execute()
../../../.miniconda/envs/morphman/lib/python3.6/site-packages/vmtk/vmtkcenterlines.py:595: in Execute
self.SeedSelector.Execute()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <vmtk.vmtkcenterlines.vmtkPointListSeedSelector object at 0x123195588>
def Execute(self):
if not self._Surface:
self.PrintError('vmtkPointListSeedSelector Error: Surface not set.')
return
if not self.SourcePoints:
self.PrintError('vmtkPointListSeedSelector Error: SourcePoints not set.')
return
if not self.TargetPoints:
self.PrintError('vmtkPointListSeedSelector Error: TargetPoints not set.')
return
self._SourceSeedIds.Initialize()
self._TargetSeedIds.Initialize()
if len(self.SourcePoints) % 3 != 0:
self.PrintError('vmtkPointListSeedSelector Error: SourcePoints not made up of triplets.')
return
if len(self.TargetPoints) % 3 != 0:
self.PrintError('vmtkPointListSeedSelector Error: TargetPoints not made up of triplets.')
return
pointLocator = vtk.vtkPointLocator()
pointLocator.SetDataSet(self._Surface)
pointLocator.BuildLocator()
> for i in range(len(self.SourcePoints)/3):
E TypeError: 'float' object cannot be interpreted as an integer
../../../.miniconda/envs/morphman/lib/python3.6/site-packages/vmtk/vmtkcenterlines.py:128: TypeError
------------------------------------------------------------------------------------------------------------- Captured stdout call -------------------------------------------------------------------------------------------------------------
-- Compute centerlines and Voronoi diagram
Cleaning surface.
Triangulating surface.
____________________________________________________________________________________________________________ test_siphon[0.0--0.2] _____________________________________________________________________________________________________________
common_input = {'alpha': 0.0, 'beta': -0.2, 'input_filepath': '/Users/romanvg/dev/morphMan/test/C0001/surface/model.vtp', 'no_smooth': False, ...}, alpha = 0.0, beta = -0.2
@pytest.mark.parametrize("alpha,beta",
[(-0.2, 0.0),
( 0.2, 0.0),
( 0.0, 0.2),
( 0.0, -0.2),
( 0.2, -0.2)])
def test_siphon(common_input, alpha, beta):
# Set problem specific parameters
common_input.update(dict(alpha=alpha,
beta=beta,
region_of_interest="commandline",
# TODO: Set points
region_points=[44.17085266113281,
38.514854431152344,
41.20818328857422,
43.242130279541016,
42.68572235107422,
38.65191650390625],
resampling_step = 0.1))
# Perform manipulation
> manipulate_bend(**common_input)
test_manipulate_bend.py:36:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../morphman/manipulate_bend.py:72: in manipulate_bend
smooth=False, base_path=base_path)
../morphman/common/common.py:1315: in compute_centerlines
centerlines.Execute()
../../../.miniconda/envs/morphman/lib/python3.6/site-packages/vmtk/vmtkcenterlines.py:595: in Execute
self.SeedSelector.Execute()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <vmtk.vmtkcenterlines.vmtkPointListSeedSelector object at 0x12365f1d0>
def Execute(self):
if not self._Surface:
self.PrintError('vmtkPointListSeedSelector Error: Surface not set.')
return
if not self.SourcePoints:
self.PrintError('vmtkPointListSeedSelector Error: SourcePoints not set.')
return
if not self.TargetPoints:
self.PrintError('vmtkPointListSeedSelector Error: TargetPoints not set.')
return
self._SourceSeedIds.Initialize()
self._TargetSeedIds.Initialize()
if len(self.SourcePoints) % 3 != 0:
self.PrintError('vmtkPointListSeedSelector Error: SourcePoints not made up of triplets.')
return
if len(self.TargetPoints) % 3 != 0:
self.PrintError('vmtkPointListSeedSelector Error: TargetPoints not made up of triplets.')
return
pointLocator = vtk.vtkPointLocator()
pointLocator.SetDataSet(self._Surface)
pointLocator.BuildLocator()
> for i in range(len(self.SourcePoints)/3):
E TypeError: 'float' object cannot be interpreted as an integer
../../../.miniconda/envs/morphman/lib/python3.6/site-packages/vmtk/vmtkcenterlines.py:128: TypeError
------------------------------------------------------------------------------------------------------------- Captured stdout call -------------------------------------------------------------------------------------------------------------
-- Compute centerlines and Voronoi diagram
Cleaning surface.
Triangulating surface.
____________________________________________________________________________________________________________ test_siphon[0.2--0.2] _____________________________________________________________________________________________________________
common_input = {'alpha': 0.2, 'beta': -0.2, 'input_filepath': '/Users/romanvg/dev/morphMan/test/C0001/surface/model.vtp', 'no_smooth': False, ...}, alpha = 0.2, beta = -0.2
@pytest.mark.parametrize("alpha,beta",
[(-0.2, 0.0),
( 0.2, 0.0),
( 0.0, 0.2),
( 0.0, -0.2),
( 0.2, -0.2)])
def test_siphon(common_input, alpha, beta):
# Set problem specific parameters
common_input.update(dict(alpha=alpha,
beta=beta,
region_of_interest="commandline",
# TODO: Set points
region_points=[44.17085266113281,
38.514854431152344,
41.20818328857422,
43.242130279541016,
42.68572235107422,
38.65191650390625],
resampling_step = 0.1))
# Perform manipulation
> manipulate_bend(**common_input)
test_manipulate_bend.py:36:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../morphman/manipulate_bend.py:72: in manipulate_bend
smooth=False, base_path=base_path)
../morphman/common/common.py:1315: in compute_centerlines
centerlines.Execute()
../../../.miniconda/envs/morphman/lib/python3.6/site-packages/vmtk/vmtkcenterlines.py:595: in Execute
self.SeedSelector.Execute()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <vmtk.vmtkcenterlines.vmtkPointListSeedSelector object at 0x123611898>
def Execute(self):
if not self._Surface:
self.PrintError('vmtkPointListSeedSelector Error: Surface not set.')
return
if not self.SourcePoints:
self.PrintError('vmtkPointListSeedSelector Error: SourcePoints not set.')
return
if not self.TargetPoints:
self.PrintError('vmtkPointListSeedSelector Error: TargetPoints not set.')
return
self._SourceSeedIds.Initialize()
self._TargetSeedIds.Initialize()
if len(self.SourcePoints) % 3 != 0:
self.PrintError('vmtkPointListSeedSelector Error: SourcePoints not made up of triplets.')
return
if len(self.TargetPoints) % 3 != 0:
self.PrintError('vmtkPointListSeedSelector Error: TargetPoints not made up of triplets.')
return
pointLocator = vtk.vtkPointLocator()
pointLocator.SetDataSet(self._Surface)
pointLocator.BuildLocator()
> for i in range(len(self.SourcePoints)/3):
E TypeError: 'float' object cannot be interpreted as an integer
../../../.miniconda/envs/morphman/lib/python3.6/site-packages/vmtk/vmtkcenterlines.py:128: TypeError
------------------------------------------------------------------------------------------------------------- Captured stdout call -------------------------------------------------------------------------------------------------------------
-- Compute centerlines and Voronoi diagram
Cleaning surface.
Triangulating surface.
__________________________________________________________________________________________________ test_bifurcation_angle[0.3490658503988659] __________________________________________________________________________________________________
common_input = {'angle': 0.3490658503988659, 'bif': False, 'cylinder_factor': 7, 'input_filepath': '/Users/romanvg/dev/morphMan/test/C0001/surface/model.vtp', ...}, angle = 0.3490658503988659
@pytest.mark.parametrize("angle", [20 / 180 * np.pi, -20 / 180 * np.pi])
def test_bifurcation_angle(common_input, angle):
common_input.update(dict(keep_fixed_1 = False,
keep_fixed_2 = False,
bif = False,
lower = False,
cylinder_factor = 7,
angle = angle,
region_of_interest = "commandline",
region_points = [35.8, 59.8, 39.7, 76.8, 54.7, 53.2]))
> manipulate_bifurcation(**common_input)
test_manipulate_bifurcation.py:28:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../morphman/manipulate_bifurcation.py:93: in manipulate_bifurcation
resampling=resampling_step, base_path=base_path)
../morphman/common/common.py:1315: in compute_centerlines
centerlines.Execute()
../../../.miniconda/envs/morphman/lib/python3.6/site-packages/vmtk/vmtkcenterlines.py:595: in Execute
self.SeedSelector.Execute()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <vmtk.vmtkcenterlines.vmtkPointListSeedSelector object at 0x123ad2518>
def Execute(self):
if not self._Surface:
self.PrintError('vmtkPointListSeedSelector Error: Surface not set.')
return
if not self.SourcePoints:
self.PrintError('vmtkPointListSeedSelector Error: SourcePoints not set.')
return
if not self.TargetPoints:
self.PrintError('vmtkPointListSeedSelector Error: TargetPoints not set.')
return
self._SourceSeedIds.Initialize()
self._TargetSeedIds.Initialize()
if len(self.SourcePoints) % 3 != 0:
self.PrintError('vmtkPointListSeedSelector Error: SourcePoints not made up of triplets.')
return
if len(self.TargetPoints) % 3 != 0:
self.PrintError('vmtkPointListSeedSelector Error: TargetPoints not made up of triplets.')
return
pointLocator = vtk.vtkPointLocator()
pointLocator.SetDataSet(self._Surface)
pointLocator.BuildLocator()
> for i in range(len(self.SourcePoints)/3):
E TypeError: 'float' object cannot be interpreted as an integer
../../../.miniconda/envs/morphman/lib/python3.6/site-packages/vmtk/vmtkcenterlines.py:128: TypeError
------------------------------------------------------------------------------------------------------------- Captured stdout call -------------------------------------------------------------------------------------------------------------
-- Region of interest is defined by the region points:
Outlet 1: (35.759422302246094, 59.80244827270508, 39.67420196533203)
Outlet 2: (76.80976104736328, 54.73926544189453, 53.23825454711914)
Cleaning surface.
Triangulating surface.
_________________________________________________________________________________________________ test_bifurcation_angle[-0.3490658503988659] __________________________________________________________________________________________________
common_input = {'angle': -0.3490658503988659, 'bif': False, 'cylinder_factor': 7, 'input_filepath': '/Users/romanvg/dev/morphMan/test/C0001/surface/model.vtp', ...}, angle = -0.3490658503988659
@pytest.mark.parametrize("angle", [20 / 180 * np.pi, -20 / 180 * np.pi])
def test_bifurcation_angle(common_input, angle):
common_input.update(dict(keep_fixed_1 = False,
keep_fixed_2 = False,
bif = False,
lower = False,
cylinder_factor = 7,
angle = angle,
region_of_interest = "commandline",
region_points = [35.8, 59.8, 39.7, 76.8, 54.7, 53.2]))
> manipulate_bifurcation(**common_input)
test_manipulate_bifurcation.py:28:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../morphman/manipulate_bifurcation.py:93: in manipulate_bifurcation
resampling=resampling_step, base_path=base_path)
../morphman/common/common.py:1315: in compute_centerlines
centerlines.Execute()
../../../.miniconda/envs/morphman/lib/python3.6/site-packages/vmtk/vmtkcenterlines.py:595: in Execute
self.SeedSelector.Execute()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <vmtk.vmtkcenterlines.vmtkPointListSeedSelector object at 0x12355b898>
def Execute(self):
if not self._Surface:
self.PrintError('vmtkPointListSeedSelector Error: Surface not set.')
return
if not self.SourcePoints:
self.PrintError('vmtkPointListSeedSelector Error: SourcePoints not set.')
return
if not self.TargetPoints:
self.PrintError('vmtkPointListSeedSelector Error: TargetPoints not set.')
return
self._SourceSeedIds.Initialize()
self._TargetSeedIds.Initialize()
if len(self.SourcePoints) % 3 != 0:
self.PrintError('vmtkPointListSeedSelector Error: SourcePoints not made up of triplets.')
return
if len(self.TargetPoints) % 3 != 0:
self.PrintError('vmtkPointListSeedSelector Error: TargetPoints not made up of triplets.')
return
pointLocator = vtk.vtkPointLocator()
pointLocator.SetDataSet(self._Surface)
pointLocator.BuildLocator()
> for i in range(len(self.SourcePoints)/3):
E TypeError: 'float' object cannot be interpreted as an integer
../../../.miniconda/envs/morphman/lib/python3.6/site-packages/vmtk/vmtkcenterlines.py:128: TypeError
------------------------------------------------------------------------------------------------------------- Captured stdout call -------------------------------------------------------------------------------------------------------------
-- Region of interest is defined by the region points:
Outlet 1: (35.759422302246094, 59.80244827270508, 39.67420196533203)
Outlet 2: (76.80976104736328, 54.73926544189453, 53.23825454711914)
Cleaning surface.
Triangulating surface.
________________________________________________________________________________________________________ test_decrease_curvature[True] _________________________________________________________________________________________________________
common_input = {'input_filepath': '/Users/romanvg/dev/morphMan/test/C0001/surface/model.vtp', 'no_smooth': False, 'no_smooth_point': None, 'output_filepath': '/Users/romanvg/dev/morphMan/test/C0001/surface/model_output.vtp', ...}
smooth_line = True
@pytest.mark.parametrize("smooth_line", [True, False])
def test_decrease_curvature(common_input, smooth_line):
# Get region points
base_path = get_path_names(common_input["input_filepath"])
> centerline = extract_single_line(read_polydata(base_path + "_centerline.vtp"), 1)
test_manipulate_curvature.py:21:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
filename = '/Users/romanvg/dev/morphMan/test/C0001/surface/model_centerline.vtp', datatype = None
def read_polydata(filename, datatype=None):
"""
Load the given file, and return a vtkPolyData object for it.
Args:
filename (str): Path to input file.
datatype (str): Additional parameter for vtkIdList objects.
Returns:
polyData (vtkSTL/vtkPolyData/vtkXMLStructured/
vtkXMLRectilinear/vtkXMLPolydata/vtkXMLUnstructured/
vtkXMLImage/Tecplot): Output data.
"""
# Check if file exists
if not path.exists(filename):
> raise RuntimeError("Could not find file: %s" % filename)
E RuntimeError: Could not find file: /Users/romanvg/dev/morphMan/test/C0001/surface/model_centerline.vtp
../morphman/common/common.py:62: RuntimeError
________________________________________________________________________________________________________ test_decrease_curvature[False] ________________________________________________________________________________________________________
common_input = {'input_filepath': '/Users/romanvg/dev/morphMan/test/C0001/surface/model.vtp', 'no_smooth': False, 'no_smooth_point': None, 'output_filepath': '/Users/romanvg/dev/morphMan/test/C0001/surface/model_output.vtp', ...}
smooth_line = False
@pytest.mark.parametrize("smooth_line", [True, False])
def test_decrease_curvature(common_input, smooth_line):
# Get region points
base_path = get_path_names(common_input["input_filepath"])
> centerline = extract_single_line(read_polydata(base_path + "_centerline.vtp"), 1)
test_manipulate_curvature.py:21:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
filename = '/Users/romanvg/dev/morphMan/test/C0001/surface/model_centerline.vtp', datatype = None
def read_polydata(filename, datatype=None):
"""
Load the given file, and return a vtkPolyData object for it.
Args:
filename (str): Path to input file.
datatype (str): Additional parameter for vtkIdList objects.
Returns:
polyData (vtkSTL/vtkPolyData/vtkXMLStructured/
vtkXMLRectilinear/vtkXMLPolydata/vtkXMLUnstructured/
vtkXMLImage/Tecplot): Output data.
"""
# Check if file exists
if not path.exists(filename):
> raise RuntimeError("Could not find file: %s" % filename)
E RuntimeError: Could not find file: /Users/romanvg/dev/morphMan/test/C0001/surface/model_centerline.vtp
../morphman/common/common.py:62: RuntimeError
========================================================================================================== 16 failed in 5.26 seconds ===========================================================================================================
(morphman) ua-eduroam-ten-25-153-30:test romanvg$ ls
C0001 __pycache__ test_landmarking.py test_manipulate_bend.py test_manipulate_curvature.py
__init__.py fixtures.py test_manipulate_area.py test_manipulate_bifurcation.py
@brainstorm We would prefer to have morphman on conda-forge, however, since we rely on VMTK, which is not on conda-forge (yet), we instead created your own channel, for now, cf. conda-forge dependencies.
@rlizzo You mentioned that vmtk eventually will be moved over to conda-forge, how is that work going, and is there something we could contribute with?
@brainstorm, regarding running the test locally. Thank you for pointing this out, because this is a critical bug. In vmtk version 1.4 there is a python3 bug in how the centerlines are created, as a workaround, we modify the vmtk installation in both TravisCI and AppVayor, cf. this line for travis and this line for AppVayor. The problem is fixed in master for vmtk, so while we wait for a updated vmtk package to be relseased in conda we have added a warning to the installation instructions with a workaround for the problem.
Great, thanks @aslakbergersen, all good from my side, not yet, see comments below.
@rlizzo I know we all have a lot on our todo-lists now before Christmas holiday break, but I'm wondering if you have any additional comments, or if it would be possible to wrap this up before the Holidays?
@rlizzo ping, I hope you had a nice holiday season I was wondering if there are still outstanding actions to proceed with the review?
It seems that @rlizzo has gone under the radar, @brainstorm I know you gave some sort of ok before but I just want to check if you are happy recommending this package for acceptance or if any changes should be made (there is still an unchecked item on your list)
I just gave it another look/try and I would advise against accepting the installation facet of this paper.
I still would recommend to have vmtk packaged in conda-forge (as a dependency), as @rlizzo diligently pointed out in https://github.com/vmtk/conda-recipes/issues/2 as well as in https://github.com/KVSlab/morphMan/issues/14.
From a functional perspective, I would like to have easier means to download test data locally in order to evaluate the software (had to fish it out from the testsuite). Something like a simple scripts/morphman-data-download
or similar would help a lot getting newcomers acquainted with the software fast.
Other than those two small details, I would totally endorse this nice piece of software.
Thank you for testing the software @brainstorm, it is much appreciated.
From a functional perspective, I would like to have easier means to download test data locally in order to evaluate the software (had to fish it out from the testsuite). Something like a simple scripts/morphman-data-download or similar would help a lot getting newcomers acquainted with the software fast.
I agree that there should be an additional script to ease playing around with the test data. To take it one step further, I took the command line examples from the Tutorial and rewrote them as python demos as well, see https://github.com/KVSlab/morphMan/pull/20. I also added a script which downloads the test data. Please also note that there are links for downloading the test data in the tutorials.
I still would recommend to have vmtk packaged in conda-forge (as a dependency), as @rlizzo diligently pointed out in vmtk/conda-recipes#2 as well as in KVSlab/morphMan#14.
Just a clarification before starting to move the installation to conda-forge: Do I understand you correctly if you are asking us to add a vmtk recipe to conda-forge, and then move morphMan into conda-forge when it is accepted? If that is the case, I would like to confer with the main developers of vmtk first, like @rlizzo. Or, do you propose that we add vmtk as an outside dependency, although disadvised.
That's fantastic Aslak, thanks for putting it together as an script!
And yes, I would advise to add vmtk
into conda-forge itself, it's relatively straightforward to add dependencies there (did it myself in the past for packages for which I'm not author). The main reason behind this preference is my experience with OSS projects in custom anaconda repositories not maintained by a bigger community (conda-forge).
When developers/PhDs/postdocs/people move on with other duties, if the dependencies are not maintained as well as the main package, bitrot happens faster, that's why I would like to insist on that point.
@brainstorm, I agree that moving the project into conda-forge is the better option. We have been working on adding vmtk
to conda-forge, but we are facing some problems with getting it to build properly against vtk
and itk
. We will hopefully resolve this issue soon.
Adding morphMan
to conda-corge will be much simpler since it is pure python.
Hi Guys, I'm sorry I've been away. This has been a horribly busy start of the year that kept me off of github for a bit. If it's worth anything, the installation methods that I had previously commented on seem to be taken care of by @aslakbergersen's work on the conda-forge recipes. I've cleared up the rest of the checkboxes from my end. I'm terribly sorry to hold up the process. here. The package looks good from my end.
@aslakbergersen is there any update with regards to the status of this? Have all the reviewers concerns been addressed?
@trallard thank you for the follow-up. We are still working on moving vmtk
over to conda-forge as requested by @brainstorm, such that also morphMan
can be added to conda-forge. However, it has proven to be a bit challenging, and it is not finished yet, but is work in progress. To follow the progress, please see conda-forge/staged-recipes/pull/7609.
@brainstorm, we have tried to add vmtk
into conda-forge
, however without any luck conda-forge/staged-recipes/pull/7609. At this point, we, the vmtk developers, and members of conda-forge have all been unable to get any progress on this the last two weeks. We feel like we have exhausted all options on solving this problem within a reasonable timeframe.
Since vmtk
is not our software, is already published in JOSS, and our installation methods are in satisfaction with JOSS criteria, we kindly ask this not to be a blocking issue for publication, but rather just a regular issue in the repository.
CC: @trallard
@aslakbergersen Agreed, I've been following the threads on the side, thanks for putting the effort into it anyway. Hopefully upstream vmtk/conda will at some point in the future realise that the build/integration needs more love and fix it for good.
@trallard Go ahead, all clear from my side now after seeing this. Thanks everyone!
@trallard, is there anything you need from our side to complete the review of this paper?
Hi all thanks for the time spent in this review, it seems that all the issues have already been dealt with and there are just a few steps that need to be completed.
@aslakbergersen I have l have conducted a high-level review of the code itself. Everything looks ship-shape to me.
At this point, it'll be good to double check the paper, review any lingering details in your code/readme/etc., and then make an archive of the reviewed software in Zenodo/figshare/other service. Please be sure that the DOI metadata (title, authors, etc.) matches this JOSS submission. And complete the following tasks:
[x] double check the submission paper to ensure it is up-to-date (citations are correct, DOIs are added, etc)
After these are completed I'll move forward with accepting the submission! Until then, now is your moment for final touchups!
@whedon generate pdf
Attempting PDF compilation. Reticulating splines etc...
@whedon check references
Attempting to check references...
OK DOIs
- 10.1227/NEU.0b013e31820b5242 is OK
MISSING DOIs
- https://doi.org/10.1016/s0140-6736(96)07492-2 may be missing for title: Alternative projections of mortality and disability by cause 1990-2020: Global Burden of Disease Study
- https://doi.org/10.1001/archinte.156.16.1829 may be missing for title: The effect of stroke and stroke prophylaxis with aspirin or warfarin on quality of life
- https://doi.org/10.1001/jama.282.21.2035 may be missing for title: Hemodynamic Shear Stress and Its Role in Atherosclerosis
- https://doi.org/10.1007/s13239-018-00374-2 may be missing for title: Real-world variability in the prediction of intracranial aneurysm wall shear stress: the 2015 International Aneurysm CFD Challenge
- https://doi.org/10.1007/s13239-018-00376-0 may be missing for title: Multiple Aneurysms AnaTomy CHallenge 2018 (MATCH): Phase I: Segmentation
- https://doi.org/10.1160/th15-07-0597 may be missing for title: Atherosclerosis at arterial bifurcations: Evidence for the role of haemodynamics and geometry
- https://doi.org/10.1161/strokeaha.113.001762 may be missing for title: Extradural Internal Carotid Artery Caliber Dysregulation Is Associated With Cerebral Aneurysms
- https://doi.org/10.1007/s10439-010-9901-0 may be missing for title: Image-based modeling of blood flow and vessel wall dynamics: applications, methods and future directions
- https://doi.org/10.3171/jns.2004.101.1.0108 may be missing for title: Bifurcation geometry and the presence of cerebral artery aneurysms
- https://doi.org/10.1093/neuros/nyy152 may be missing for title: Proximal Parent Vessel Tapering is Associated With Aneurysm at the Middle Cerebral Artery Bifurcation
- https://doi.org/10.1371/journal.pcbi.1006510 may be missing for title: Investigating the Link Between Patient-specific Morphology and Hemodynamics: Implications for Aneurism Initiation?
- https://doi.org/10.14236/ewic/hci2018.41 may be missing for title: Investigating the Interaction Between Morphology of the Anterior Bend and Aneurysm Initiation
INVALID DOIs
- None
@whedon check references
Attempting to check references...
OK DOIs
- 10.1016/s0140-6736(96)07492-2 is OK
- 10.1001/archinte.156.16.1829 is OK
- 10.1001/jama.282.21.2035 is OK
- 10.1007/s13239-018-00374-2 is OK
- 10.1007/s13239-018-00376-0 is OK
- 10.1160/th15-07-0597 is OK
- 10.1161/strokeaha.113.001762 is OK
- 10.1227/NEU.0b013e31820b5242 is OK
- 10.1007/s10439-010-9901-0 is OK
- 10.3171/jns.2004.101.1.0108 is OK
- 10.1093/neuros/nyy152 is OK
- 10.1371/journal.pcbi.1006510 is OK
- 10.14236/ewic/hci2018.41 is OK
MISSING DOIs
- None
INVALID DOIs
- None
@whedon generate pdf
Attempting PDF compilation. Reticulating splines etc...
@trallard , the latest version has been released as morphMan v0.2 (master branch). I believe the following points summarize the main changes in v0.2:
Additionally, the DOI for the new release of morphMan is https://doi.org/10.5281/zenodo.2591725
Me and @aslakbergersen are also happy with the submission paper. Citations have been double checked, all DOIs are included, and the version number of morphMan reflects the latest release.
And a huge thank you to @brainstorm and @rlizzo for your review!
@trallard, is the information provided by @hkjeldsberg what you needed for starting the final steps of publication? Unfortunately, we do not have the rights to "check off" the task-boxes in your post, but I think we have addressed all of them.
@whedon set https://doi.org/10.5281/zenodo.2591725 as archive
OK. 10.5281/zenodo.2591725 is the archive.
@whedon set v0.2 as version
OK. v0.2 is the version.
@aslakbergersen and @hkjeldsberg all looks good to me now so I am going to proceed for acceptance β‘β¨
@brainstorm and @rlizzo thank you so much for your time and expertise as reviewers it is much appreciated at JOSS ππ»
@openjournals/joss-eics this submission has been accepted and is ready to be published πππ»π₯³
@whedon accept
Attempting dry run of processing paper acceptance...
OK DOIs
- 10.1016/s0140-6736(96)07492-2 is OK
- 10.1001/archinte.156.16.1829 is OK
- 10.1001/jama.282.21.2035 is OK
- 10.1007/s13239-018-00374-2 is OK
- 10.1007/s13239-018-00376-0 is OK
- 10.1160/th15-07-0597 is OK
- 10.1161/strokeaha.113.001762 is OK
- 10.1227/NEU.0b013e31820b5242 is OK
- 10.1007/s10439-010-9901-0 is OK
- 10.3171/jns.2004.101.1.0108 is OK
- 10.1093/neuros/nyy152 is OK
- 10.1371/journal.pcbi.1006510 is OK
- 10.14236/ewic/hci2018.41 is OK
MISSING DOIs
- None
INVALID DOIs
- None
PDF failed to compile for issue #1065 with the following error:
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 15 0 15 0 0 177 0 --:--:-- --:--:-- --:--:-- 178 sh: 0: getcwd() failed: No such file or directory sh: 0: getcwd() failed: No such file or directory pandoc: 10.21105.joss.01065.pdf: openBinaryFile: does not exist (No such file or directory) Looks like we failed to compile the PDF
@whedon generate pdf
Submitting author: @aslakbergersen (Aslak Bergersen) Repository: https://github.com/KVSlab/morphMan Version: v0.2 Editor: @trallard Reviewer: @brainstorm, @rlizzo Archive: 10.5281/zenodo.2591725
Status
Status badge code:
Reviewers and authors:
Please avoid lengthy details of difficulties in the review thread. Instead, please create a new issue in the target repository and link to those issues (especially acceptance-blockers) in the review thread below. (For completists: if the target issue tracker is also on GitHub, linking the review thread in the issue or vice versa will create corresponding breadcrumb trails in the link target.)
Reviewer instructions & questions
@brainstorm & @rlizzo, please carry out your review in this issue by updating the checklist below. If you cannot edit the checklist please:
The reviewer guidelines are available here: https://joss.theoj.org/about#reviewer_guidelines. Any questions/concerns please let @trallard know.
β¨ Please try and complete your review in the next two weeks β¨
Review checklist for @brainstorm
Conflict of interest
Code of Conduct
General checks
Functionality
Documentation
Software paper
paper.md
file include a list of authors with their affiliations?Review checklist for @rlizzo
Conflict of interest
Code of Conduct
General checks
Functionality
Documentation
Software paper
paper.md
file include a list of authors with their affiliations?