ReScience / submissions

ReScience C submissions
28 stars 7 forks source link

[Re] Mathematical analysis of depolarization block mediated by slow inactivation of fast sodium channels in midbrain dopamine neurons. #9

Closed maryupshall closed 4 years ago

maryupshall commented 4 years ago

Original article: https://www.ncbi.nlm.nih.gov/pubmed/25185810

PDF URL: https://github.com/mupsh/ReScience_Qian_2014/blob/master/article/article.pdf Metadata URL: https://github.com/mupsh/ReScience_Qian_2014/blob/master/article/metadata.yaml Code URL: https://github.com/mupsh/ReScience_Qian_2014

Scientific domain: Computational Neuroscience Programming language: Python Suggested editor: Benoit Girard, Tiziano Zito

rougier commented 4 years ago

Thanks for your submission. I'll edit it and assign reviewers soon.

rougier commented 4 years ago

@rgutzen @cJarvers Could you review this submission ?

rgutzen commented 4 years ago

Sure. I'm happy to

cJarvers commented 4 years ago

I'd be happy to review this as well, but I'll be very busy throughout November. Is early December an acceptable time frame for the review? Otherwise I have to pass.

rougier commented 4 years ago

Thanks @rgutzen and @cJarvers. @cJarvers I think we can wait for you review in December yes. @mupsh Is that ok for you ?

maryupshall commented 4 years ago

Hi,

Yes, that’s ok for me.

Cheers,

Mary

On Oct 29, 2019, at 11:07 AM, Nicolas P. Rougier notifications@github.com wrote:

Thanks @rgutzen https://github.com/rgutzen and @cJarvers https://github.com/cJarvers. @cJarvers https://github.com/cJarvers I think we can wait for you review in December yes. @mupsh https://github.com/mupsh Is that ok for you ?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/ReScience/submissions/issues/9?email_source=notifications&email_token=ALXX22SQIASVDPSPMWB63RLQRBGUNA5CNFSM4JFG6XY2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECQ3J2A#issuecomment-547468520, or unsubscribe https://github.com/notifications/unsubscribe-auth/ALXX22X2CVJRBIPKWJYDB7TQRBGUNANCNFSM4JFG6XYQ.

rgutzen commented 4 years ago

Hi @mupsh, I think you chose a nice study to replicate and I really hope I can help improve it towards a level of rigor, I think it could have. So, here my review. You show some qualitative and some quantitative replications, but you also show some clear discrepancies that you either ignore or don't discuss sufficiently. I think there are a couple of major and minor changes that can make your replication study much stronger and more interesting and useful for the reader. In the following, I ordered my comments into general remarks, comments related to the code, comments regarding the replication of each figure, and comments related to the actual article text.

General comments

Code

General

Replicating the figures

General

Figure 1a

Figure 1b

Figure 1c

Figure 1D1

Figure 1D2

Figure 2

Figure 3

Figure 4

Figure 5

Article text

rougier commented 4 years ago

Thanks @rgutzen for this very detailed review. @mupsh You can wait for the second review or you can start modifying your article, taking @rgutzen comments and suggestions into account.

maryupshall commented 4 years ago

@rgutzen Thank you for your extensive comments and we're working on changes. @cJarvers Since we're going to be making fairly extensive changes it might be easiest for us to add our changes so you don't have to go through 2 sets.

cJarvers commented 4 years ago

Sounds good. I'm looking forward to your revisions.

rougier commented 4 years ago

@cJarvers Gentle reminder

rougier commented 4 years ago

@mupsh Did you have time to update the manuscript?

maryupshall commented 4 years ago

@rougier It is still in the works. I sincerely apologize for the delay, it's been a very busy month. Considering the holidays, would it be ok if I got it back to you for the first week of January?

rougier commented 4 years ago

Sure. @cJarvers Would that be ok for you ?

cJarvers commented 4 years ago

Yes, first week of January is fine with me.

rougier commented 4 years ago

@mupsh Gentel reminder. Can you do the review by Monday?

cJarvers commented 4 years ago

Just to make sure we're all on the same page: @rougier, would you like the review by me to be done on Monday or the revisions by @mupsh? I have not done the review yet since the authors suggested I wait for their revisions first. If that is a problem, I can try to do the review by Monday.

maryupshall commented 4 years ago

@rougier We can get the updated manuscript by Monday, no problem.

rougier commented 4 years ago

@cJarvers Sorry, the message was adressed to @mupsh. @mupsh Monday would be perfect and then @cJarvers can review the revision.

maryupshall commented 4 years ago

Sorry for the delay in getting this out, and thanks to @rgutzen for his thorough review. Overall we've implemented most of the requested changes and believe this puts the manuscript in a better state. For clarity we've included the original comments along with our reply. @cJarvers we're ready to move on with the review now.

General Comments

Code

General

Details

Replicating the figures

General

Figure 1a

Figure 1b

Figure 1c

Figure 1D1

Figure 1D2

Figure 2

Figure 3

Figure 4

Figure 5

Article text

rougier commented 4 years ago

Impressive ! @cJarvers can we set a deadline for your review ? Like two weeks, would that be ok ?

cJarvers commented 4 years ago

@rougier Yes, two weeks should be fine.

cJarvers commented 4 years ago

Okay, @mupsh , here's my review:

This review is relative to commit https://github.com/mupsh/ReScience_Levitan_2014/commit/d5c641ffd14d5740e032e2864083215ac49dec73

Reproducibility

I ran the code using Python 3.6.10, swig 4.0.1, PyDSTool 0.90.3, numpy 1.18.1, scipy 1.3.0 and matplotlib 3.1.1.

The code produced a warning message ("Test function going crazy: class Hopf_Bor(BordermMethod, BiAltMethod)"), but otherwise ran without problems and produced the figures as shown in the paper.

Replication

The core results of the original paper are replicated. This requires some major parameter changes, so I'm not sure whether I share your optimistic conclusion (that "the 2D and 3D models were implemented correctly in the original work"), but I find the explanations of the discrepancies and your overall reasoning clear enough to accept this as a replication - thanks to your work I'm sufficiently confident that the conclusions of the original article were correct, even if there were errors in the implementation or the reporting.

Clarity of Article

In general, I find the article is now a good deal clearer than before the revision. The explanations of what each figure shows and what adjustments were necessary to replicate each are easy to follow.

Unfortunately, the article is not self-contained. In order to understand the explanations of the replication, it is necessary to know the original article, which is behind a paywall. I could not find any guidelines about how self-contained the article should be (do you know any, @rougier?) and I guess most readers interested in a replication would know the original. Still, I think it would be good have a section that explains the model itself. This would enable to reader to better understand what is going on, without going back to the original article.

I also concur with @rgutzen that adding a section that explains the code would be helpful. This should not include overly general things like OOP vs. imperative programming (and I don't think that was meant with "design principles") and should be more aimed towards giving the reader a starting point to exploring/understanding the code. This would essentially be a more elaborate version of the first paragraph of your methods section (explaining why and how you used which package), including some pointers like the fact that you factorized your code into the differential equations for all three models (diff_eq.py), the steady-state equations and time constants (gating.py), the membrane currents (current.py) and nullclines (nullclines.py).

Another thing that could improve the clarity of the article would be to list all the changes made to the original model and between different figure in one central place, e.g., a table. Unless I missed something, these changes are:

Especially for the sodium conductance, it would be good to know what value you used for different simulations, the one from 1A or 1B.

Otherwise, I noticed a few smaller issues:

Clarity of Code

The code is well structured and commented. The separation into simulation code, runners for the individual figures and plot setup works well and helped me find my way around the code.

In two places, this wasn't quite true: The diff_eq.py module contains a lot of stuff, some of which is not directly related to the differential equations and could for example go to an experiments.py module (e.g. the clamp experiments or IV curves). The other place is the functions for figures 3c and 4b, due to the use of pyDSTool. I don't really know how to separate that out better, though.

I also agree with @rgutzen that using packages for handling / checking units would be useful. This is especially true since some of the differences from the original paper involve scaling, so it would be good to make sure this is not due to some implicit unit conversion error somewhere.

One minor point I noticed: the explanation of parameter parameter_name in diff_eq.pulse is only "Parameter to"; there's probably something missing there.

Summary

Overall, I'm quite happy with the paper. I think some improvements are possible: (1) explaining the model in the text to make the article more self-contained, (2) listing changes and parameter values in one place / table and (3) adding explicit unit handling to the code.

rougier commented 4 years ago

thanks @cJarvers. @mupsh can you address the comments ?

@mupsh Don't forget to change the title!

@cJarvers I think you're right and we may need to add a section for aiming at self-contained article when the original article is not available (behind a paywall). Could you propose some changes authors instruction based on your experience ?

Note I found this link which seems to be free: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4254877/ (or is it just me ?)

maryupshall commented 4 years ago

@rougier We're working on implementing the requested changes.

cJarvers commented 4 years ago

@rougier True, the ncbi-link is free. Question is whether green OA like this solves the issue, since readers still need to find the free version. Maybe adding a link to the replication article would work. Anyways, I'll open a separate issue to suggest some changes to the author instructions.

maryupshall commented 4 years ago

Sorry again for the delay in getting this out, and thanks to @cJarvers for his thorough review. As before, we've implemented most of the requested changes and believe this puts the manuscript in an even better state. For clarity we've included the original comments along with our reply.

Reproducibility

I ran the code using Python 3.6.10, swig 4.0.1, PyDSTool 0.90.3, numpy 1.18.1, scipy 1.3.0 and matplotlib 3.1.1.

The code produced a warning message ("Test function going crazy: class Hopf_Bor(BordermMethod, BiAltMethod)"), but otherwise ran without problems and produced the figures as shown in the paper.

Replication

The core results of the original paper are replicated. This requires some major parameter changes, so I'm not sure whether I share your optimistic conclusion (that "the 2D and 3D models were implemented correctly in the original work"), but I find the explanations of the discrepancies and your overall reasoning clear enough to accept this as a replication - thanks to your work I'm sufficiently confident that the conclusions of the original article were correct, even if there were errors in the implementation or the reporting.

Clarity of Article

In general, I find the article is now a good deal clearer than before the revision. The explanations of what each figure shows and what adjustments were necessary to replicate each are easy to follow.

Unfortunately, the article is not self-contained. In order to understand the explanations of the replication, it is necessary to know the original article, which is behind a paywall. I could not find any guidelines about how self-contained the article should be (do you know any, @rougier?) and I guess most readers interested in a replication would know the original. Still, I think it would be good have a section that explains the model itself. This would enable to reader to better understand what is going on, without going back to the original article.

I also concur with @rgutzen that adding a section that explains the code would be helpful. This should not include overly general things like OOP vs. imperative programming (and I don't think that was meant with "design principles") and should be more aimed towards giving the reader a starting point to exploring/understanding the code. This would essentially be a more elaborate version of the first paragraph of your methods section (explaining why and how you used which package), including some pointers like the fact that you factorized your code into the differential equations for all three models (diff_eq.py), the steady-state equations and time constants (gating.py), the membrane currents (current.py) and nullclines (nullclines.py).

Another thing that could improve the clarity of the article would be to list all the changes made to the original model and between different figure in one central place, e.g., a table. Unless I missed something, these changes are:

the changed formula for tau_n (used everywhere) the value of g_Na in Figure 1A the value of g_Na and the pulse width in Figure 1B the newly fitted polynomial coefficients in Figure 1C; the fitted values should be reported in the text the reversal potentials for NMDA and AMPA receptors in Figure 6 the conductances g_AMPA and g_NMDA in Figure 6A and 6B (different values)

Especially for the sodium conductance, it would be good to know what value you used for different simulations, the one from 1A or 1B.

Otherwise, I noticed a few smaller issues:

Use of tenses is sometimes inconsistent. For example, in the second paragraph one sentence starts with "Previous work had", whereas the next starts with "Previous work has". The formulation "This new model included, or exclused a slow inactivation term" might confuse readers. It's not clear that this relates to the 2D and 3D versions mentioned before. The legend in Figure 1A covers a small part of the curve. The "ringing" in Figure 2 is hardly visible. It might help to make the figure bigger and possibly decrease the line width. In the text, the term "ringing" is not explained, except by referring to Figure 2. A brief definition might help. In the explanation for Figure 4, you mention that you use a different naming convention (SNP vs. LPC) but do not explain why. The last sentence of section 2.4 is incomplete.

Clarity of Code

The code is well structured and commented. The separation into simulation code, runners for the individual figures and plot setup works well and helped me find my way around the code.

In two places, this wasn't quite true: The diff_eq.py module contains a lot of stuff, some of which is not directly related to the differential equations and could for example go to an experiments.py module (e.g. the clamp experiments or IV curves). The other place is the functions for figures 3c and 4b, due to the use of pyDSTool. I don't really know how to separate that out better, though.

I also agree with @rgutzen that using packages for handling / checking units would be useful. This is especially true since some of the differences from the original paper involve scaling, so it would be good to make sure this is not due to some implicit unit conversion error somewhere.

One minor point I noticed: the explanation of parameter parameter_name in diff_eq.pulse is only "Parameter to"; there's probably something missing there.

cJarvers commented 4 years ago

Thanks for your reply, @mupsh. I'm quite happy with how you addressed my comments.

I ran the code again (with slightly different versions of the dependencies: python 3.8.2, scipy 1.4.1, matplotlib 3.2.1, sympy 1.5.1, Pint 0.11, PyDSTool 0.91) and everything behaves as expected.

There are only two minor things I noticed in the article:

@rougier After these minor things are fixed, I'd recommend acceptance.

rougier commented 4 years ago

@cJarvers @rgutzen Thanks for your very nice and extensive reviews. I therefore accept the manuscript that will be published soon hopefully. Congratulations @mupsh 🎉 !

I will make a PR to your repository to complete your metadata. In the meantime, can you register your code repository at https://www.softwareheritage.org/save-and-reference-research-software/. You should obtain a swid that you can post here.

maryupshall commented 4 years ago

@rougier Great news, thank you very much! We've made the minor fixes, I've registered the code as requested and obtained the following SWH-ID: https://archive.softwareheritage.org/swh:1:rev:e1040fe3fbaefef4166964772efa08ada444db6e;origin=https://github.com/mupsh/ReScience_Qian_2014.git/

rougier commented 4 years ago

I created a PR (https://github.com/mupsh/ReScience_Qian_2014/pull/10) for small changes to your repo before publication. Can you check it?

rougier commented 4 years ago

Ok, I just saw PR has been merged. I'll try to publish the paper by the end of the week. Don't hesitate to spam me if it's not done :)

maryupshall commented 4 years ago

@rougier I might be mistaken, but spamming you just in case :)

rougier commented 4 years ago

It has been published and online ! Sorry for the delay. See https://zenodo.org/record/3842360