openjournals / joss-reviews

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

[REVIEW]: cbcbeat: an adjoint-enabled framework for computational cardiac electrophysiology #224

Closed whedon closed 7 years ago

whedon commented 7 years ago

Submitting author: @meg-simula (Marie Rognes) Repository: https://bitbucket.org/meg/cbcbeat Version: v1.0 Editor: @labarba Reviewer: @jessdtate Archive: 10.5281/zenodo.801552

Status

status

Status badge code:

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

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 questions

Conflict of interest

General checks

Functionality

Documentation

Software paper

whedon commented 7 years ago

Hello human, I'm @whedon. I'm here to help you with some common editorial tasks for JOSS. @jessdtate 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 as reviewer, you're probably currently watching this repository which means for GitHub's default behaviour you will receive notifications (emails) for all JOSS 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
labarba commented 7 years ago

Hey, @jessdtate --- We were in touch by email ~20 days ago. Have you had a chance to look at the submission? Cheers!

jessdtate commented 7 years ago

@meg-simula, I an error when trying to test the installation as describe in the install doc. The error is: No module named 'dolfinimport' I installed the fenics in my anaconda build, and I can import the dolfin module fine. Do I have to install dolfin separately, or is there something else wrong? . I'm running on OS X 10.12.

meg-simula commented 7 years ago

@jessdtate: Are you using Python 2 or 3? We don't really support Python 3 yet, cf this issue:

https://bitbucket.org/meg/cbcbeat/issues/16/import-failure-in-python-3

jessdtate commented 7 years ago

OK, I'll try python 2

jessdtate commented 7 years ago

I got it working with python 2. This detail should be noted in the installation documentation.

It might help to have some other hints about the installation process. For instance, using conda the py.test will not work (at least not for me) as it doesn't copy the py.test executable to the fenics environment. However, using the docker method, there are problems getting the plots to visualize. I know that these are fenics issues, but it affects your software.

meg-simula commented 7 years ago

Thanks @jessdtate, I have updated the installation instructions to require Python 2 for now.

labarba commented 7 years ago

What about the other suggestions in the second paragraph?

meg-simula commented 7 years ago

If you give me a concrete suggestion for what to add and where, I would be happy to do so.

Plotting in Docker is clearly FEniCS work-in-progress, but I would rather avoid duplication of issues in FEniCS in the cbcbeat documentation. I'm not familiar with using conda, so I wouldn't quite know what to write regarding py.test.

jessdtate commented 7 years ago

these are suggestion to make the installation easier for those that may not know FEniCS or your software. Since the cbcbeat API is based of FEniCS's, the users need to be familiar with the API of FEniCS, which should but noted in the documentation. You could emphasis this in the documentation with statements like: 'Users should familiarize themselves with the FEniCS package..' or '...requires a working understanding of FEniCS...'. I suggest including language like this in both the website and the install doc (in the dependencies section). If the user follows this advise, they will probably learn of which limitations are from FEniCS as rather than assigning them to cbcbeat.

The extent that you do this for other dependences like dolfin-adjoint is up to you. I had no problems installing or running that package after getting FEniCS working.

If you do not test the conda version as much or at all, it may help to steer users in the docker direction with a statement like: 'Any type of build of FEniCS should work, but cbcbeat is better tested using builds on docker.'

jessdtate commented 7 years ago

I had a problem getting the niederer-benchmark demo to work. It seems to need a case file that I cannot find.

jessdtate commented 7 years ago

I'm also having trouble running the biventricular example. I get the error:

File "demo_biventricular.py", line 195, in main vs_timeseries = TimeSeries(mpi_comm, "%s/vs" % directory) NameError: global name 'TimeSeries' is not defined

This appears to be a problem only with the conda build. It hasn't finished yet with docker.

jessdtate commented 7 years ago

I'm a bit confused as to the description of the software for applications of forward and inverse cardiac electrophysiology. My concern is that the description takes away the focus of what I think is a useful software.

The examples provided are all tissue or cell models, which are forward problems in the technical sense, but traditional use of the term of cardiac forward problem most often refers to the calculation of the body surface from cardiac sources. I can see how these simulations could be used with the traditional forward problems, but that does not seem to be the primary focus of the software.

As for the inverse problem capability, it is not clear that there is any in either the technical or tradition sense, as there are no examples, nor any description in the API documentation.

One solution would be either clarify what is meant by forward and inverse problems and how it is used in such. I would suggest removing it and instead focus on the softwares uses for cell and tissue modeling, as that is a useful application by itself.

meg-simula commented 7 years ago

Thanks for taking the time to look carefully at this Jess! I'll respond in sequence below. (Sidenote: threaded issues would be practical on Github, does that exist?)

  1. Installation and testing: I've updated the main readme doc, hopefully in accordance with your suggestions and pointed new users towards the FEniCS and dolfin-adjoint tutorials, and added your suggestions re: testing/development on native builds/Docker images.
meg-simula commented 7 years ago
  1. The niederer-demo runs out of the box on a clean clone of the repository for me. Could you please report the error message you get in (possibly) a separate issue?
jessdtate commented 7 years ago

@whedon commands

whedon commented 7 years ago

Here are some things you can ask me to do:

# List all of Whedon's capabilities
@whedon commands

# Assign a GitHub user as the reviewer of this submission
@whedon assign @username as reviewer

# List the GitHub usernames of the JOSS editors
@whedon list editors

# List of JOSS reviewers together with programming language preferences and domain expertise
@whedon list reviewers

# Change editorial assignment
@whedon assign @username as editor

# Set the software archive DOI at the top of the issue e.g.
@whedon set 10.0000/zenodo.00000 as archive

# Open the review issue
@whedon start review

:construction: Important :construction:

This is all quite new. Please make sure you check the top of the issue after running a @whedon command (you might also need to refresh the page to see the issue update).

meg-simula commented 7 years ago
  1. I'm not able to reproduce the TimeSeries error. Which version of FEniCS have you installed for conda? (Try e.g.: $ dolfin-version )
jessdtate commented 7 years ago

This is a different setup than most github repos. Normally, we would split these into separate issues and each would be a thread. I cannot create issues in bitbucket, but I could add these to your github repo.

jessdtate commented 7 years ago

dolfin-version: 2016.2.0

meg-simula commented 7 years ago
  1. This sounds like naming/differing communities issue. How about just replacing:

"cbcbeat [@cbcbeat] is a Python-based software collection targeting forward and inverse solution of computational cardiac electrophysiology problems"

with

"cbcbeat [@cbcbeat] is a Python-based software collection targeting computational cardiac electrophysiology problems."

The next sentences then describe what cbcbeat provides, namely solvers for bidomain + monodomain that are adjoint-enabled i.e. allows for computing gradients, which in turn allows for gradient-based PDE-constrained optimization (i.e. what I would call inverse problems).

I can add a sentence clarifying the latter point and add a demo with an inverse (in the sense of PDE-constrained optimization) example. There are a bunch of tests for the adjoint computation under test/.

meg-simula commented 7 years ago

3.2 The TimeSeries error would be a pure FEniCS + conda issue, I can follow that up with the maintainers of the FEniCS conda packages. (See the top of the demo_biventricular.py demo for a recommendation of running the demo with --T 1.0 to make it complete faster.)

2.2 The niederer-demo issue would belong with the cbcbeat Bitbucket repo. If you can provide the error message, that would be useful.

jessdtate commented 7 years ago

re 4. That description is much more clear.

jessdtate commented 7 years ago

2.2 hmm. Looks like the niederer-demo is working with docker build now.

do you still want the bitbucket issue? the error code in conda is: File "demo_benchmark.py", line 210, in run_splitting_solver vfile = HDF5File(mesh.mpi_comm(), "%s/v.h5" % casedir, "w") NameError: global name 'HDF5File' is not defined

jessdtate commented 7 years ago

3.2 the biventricular demo in docker worked with the --T 1.0 option. without it it crashes: It reports 'killed' without an error message.

meg-simula commented 7 years ago

3.2: I'm assuming this is not with --T 1.0... Thanks for patiently testing, I've just pushed a fix. Could you please test with Docker again?

meg-simula commented 7 years ago

4.2: Text updated, and I've added an issue re adding an inverse demo.

meg-simula commented 7 years ago

3.2: I've also removed the use of the old style TimeSeries, so perhaps it also works with Conda now.

jessdtate commented 7 years ago

Both the biventricular and becnchmark examples are working in docker.

I no longer get the TimeSeries error, but now I'm getting this error with both demos in the conda version: NameError: global name 'HDF5File' is not defined

meg-simula commented 7 years ago

Good! Missing TimeSeries/HDF5 in the conda packages seem to be a known FEniCS issue/feature see e.g: https://github.com/conda-forge/fenics-feedstock/issues/37 https://github.com/conda-forge/fenics-feedstock/issues/5

jessdtate commented 7 years ago

@labarba what's the procedure now. I'm satisfied with the changes. There are plans to add another example, otherwise everything else is done. Do we wait for the example to finish the review, or finish it up now. Do I just close the issue when it is done, or are there other procedures?

labarba commented 7 years ago

I see all the checkboxes are ticked. If you are happy with all fixes, @jessdtate, then we just ping @arfon to initiate acceptance, and ask @meg-simula to make an archive of the fixed software to get a DOI update.

meg-simula commented 7 years ago

@labarba @jessdtate Sounds good. Will you let me know when things are ready for me to make a fixed archive? And, what is the best way of doing so?

labarba commented 7 years ago

@jessdtate : We will need a statement from you indicating that you are satisfied and recommend acceptance.

jessdtate commented 7 years ago

I am satisfied with the response to the feedback I provided and recommend acceptance. @arfon

arfon commented 7 years ago

@meg-simula - At this point could you make an archive of the reviewed software in Zenodo/figshare/other service and update this thread with the DOI of the archive? I can then move forward with accepting the submission.

meg-simula commented 7 years ago

Done. DOI: 10.5281/zenodo.801552 cf: https://zenodo.org/record/801552#.WS8Nxx8xDb1

arfon commented 7 years ago

@whedon set 10.5281/zenodo.801552 as archive

whedon commented 7 years ago

OK. 10.5281/zenodo.801552 is the archive.

arfon commented 7 years ago

@jessdtate many thanks for your review here and to @labarba for editing this submission ✨

@meg-simula - your paper is now accepted into JOSS and your DOI is http://dx.doi.org/10.21105/joss.00224 :zap: :rocket: :boom: