openjournals / joss-reviews

Reviews for the Journal of Open Source Software
Creative Commons Zero v1.0 Universal
721 stars 38 forks source link

[REVIEW]: morphMan: Automated manipulation of vascular geometries #1065

Closed whedon closed 5 years ago

whedon commented 6 years ago

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

Status badge code:

HTML: <a href="http://joss.theoj.org/papers/9f871144f31b184bc8b5fdd652bb923c"><img src="http://joss.theoj.org/papers/9f871144f31b184bc8b5fdd652bb923c/status.svg"></a>
Markdown: [![status](http://joss.theoj.org/papers/9f871144f31b184bc8b5fdd652bb923c/status.svg)](http://joss.theoj.org/papers/9f871144f31b184bc8b5fdd652bb923c)

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:

  1. Make sure you're logged in to your GitHub account
  2. Be sure to accept the invite at this URL: https://github.com/openjournals/joss-reviews/invitations

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

Review checklist for @rlizzo

Conflict of interest

Code of Conduct

General checks

Functionality

Documentation

Software paper

whedon commented 6 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:

  1. Set yourself as 'Not watching' https://github.com/openjournals/joss-reviews:

watching

  1. You may also like to change your default settings for this watching repositories in your GitHub profile here: https://github.com/settings/notifications

notifications

For a list of things I can do to help you, just type:

@whedon commands
whedon commented 6 years ago
Attempting PDF compilation. Reticulating splines etc...
whedon commented 6 years ago

:point_right: Check article proof :page_facing_up: :point_left:

brainstorm commented 6 years ago

@aslakbergersen No references in paper.md?

aslakbergersen commented 6 years ago

@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.

brainstorm commented 6 years ago

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 ;)

trallard commented 5 years ago

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.

aslakbergersen commented 5 years ago

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?

trallard commented 5 years ago

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

brainstorm commented 5 years ago

@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
aslakbergersen commented 5 years ago

@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.

brainstorm commented 5 years ago

Great, thanks @aslakbergersen, all good from my side, not yet, see comments below.

aslakbergersen commented 5 years ago

@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?

trallard commented 5 years ago

@rlizzo ping, I hope you had a nice holiday season I was wondering if there are still outstanding actions to proceed with the review?

trallard commented 5 years ago

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)

brainstorm commented 5 years ago

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.

aslakbergersen commented 5 years ago

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.

brainstorm commented 5 years ago

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.

aslakbergersen commented 5 years ago

@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.

rlizzo commented 5 years ago

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.

trallard commented 5 years ago

@aslakbergersen is there any update with regards to the status of this? Have all the reviewers concerns been addressed?

aslakbergersen commented 5 years ago

@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.

aslakbergersen commented 5 years ago

@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

brainstorm commented 5 years ago

@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!

aslakbergersen commented 5 years ago

@trallard, is there anything you need from our side to complete the review of this paper?

trallard commented 5 years ago

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:

hkjeldsberg commented 5 years ago

@whedon generate pdf

whedon commented 5 years ago
Attempting PDF compilation. Reticulating splines etc...
whedon commented 5 years ago

:point_right: Check article proof :page_facing_up: :point_left:

hkjeldsberg commented 5 years ago

@whedon check references

whedon commented 5 years ago
Attempting to check references...
whedon commented 5 years ago

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
hkjeldsberg commented 5 years ago

@whedon check references

whedon commented 5 years ago
Attempting to check references...
whedon commented 5 years ago

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
hkjeldsberg commented 5 years ago

@whedon generate pdf

whedon commented 5 years ago
Attempting PDF compilation. Reticulating splines etc...
whedon commented 5 years ago

:point_right: Check article proof :page_facing_up: :point_left:

hkjeldsberg commented 5 years ago

@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!

aslakbergersen commented 5 years ago

@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.

trallard commented 5 years ago

@whedon set https://doi.org/10.5281/zenodo.2591725 as archive

whedon commented 5 years ago

OK. 10.5281/zenodo.2591725 is the archive.

trallard commented 5 years ago

@whedon set v0.2 as version

whedon commented 5 years ago

OK. v0.2 is the version.

trallard commented 5 years ago

@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 πŸŽ‰πŸ™ŒπŸ»πŸ₯³

trallard commented 5 years ago

@whedon accept

whedon commented 5 years ago
Attempting dry run of processing paper acceptance...
whedon commented 5 years ago

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 commented 5 years ago

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

trallard commented 5 years ago

@whedon generate pdf