ReScience / submissions

ReScience C submissions
28 stars 7 forks source link

[Re] Biodiversity of plankton by species oscillations and chaos #66

Open fbarraquand opened 2 years ago

fbarraquand commented 2 years ago

Original article: Huisman, J., & Weissing, F. J. (1999). Biodiversity of plankton by species oscillations and chaos. Nature, 402(6760), 407-410.

PDF URL: https://github.com/fbarraquand/supersaturated_coexistence/blob/main/article.pdf Metadata URL: https://github.com/fbarraquand/supersaturated_coexistence/blob/main/Article/metadata.yaml Code URL: https://github.com/fbarraquand/supersaturated_coexistence

Scientific domain: Ecology Programming language: R Suggested editor: Timothée Poisot @tpoisot

Tagging co-authors @DoyenGuillaume @CoraliePicoche

rougier commented 2 years ago

Thank your for your submission, we'll assign an editor soon.

rougier commented 2 years ago

@tpoisot Can you edit this submission (if no, suggest an editor)

tpoisot commented 2 years ago

Sorry about the delay - yes I can edit this submission.

tpoisot commented 2 years ago

EDITOR

@yoavram - can you REVIEW this submission? @opetchey - can you REVIEW this submission (as you worked on this), or suggest a reviewer?

swmpkim commented 2 years ago

I'm game! (to review)

tpoisot commented 2 years ago

REVIEWER 1 is @swmpkim -- thank you!

There is an overview of the review process here. You can post your review as a comment in this thread. If you want to comment on a specific place in the code, you can do it like so:

https://github.com/fbarraquand/supersaturated_coexistence/blob/main/Code/Script_Fig_2.R#L12

But also feel free to voice high-level comments about reproducibility, ask questions, and clarifications. We are expecting the review to be a discussion process aimed at improving the code of the paper!

tpoisot commented 2 years ago

@fbarraquand @DoyenGuillaume @CoraliePicoche - can you suggest reviewers from the list or from outside the list?

fbarraquand commented 2 years ago

From the list I can suggest @pboesu and @ha0ye. Outside the list Zachary R Miller (@zacharyrmiller) and Jurg W. Spaak (@juergspaak) [to whom I mention that ReScience C is a computational science reproduction journal, if they see the message because of tagging] -- selection based on their recent works.

ha0ye commented 2 years ago

I am familiar with the original Huisman & Weissing paper, but won't have time to do a review until after the next 2 weeks.

juergspaak commented 1 year ago

@fbarraquand I've seen your message. However, I'm not sure how to respond to this. Is this equivalent to a request for a review? I do know Huisman& Weissing paper, but R is not my primary coding language (but could potentially review this as well).

fbarraquand commented 1 year ago

Hi @juergspaak, thanks for asking, the review process at ReScience occurs indeed through GitHub issues -- however, as it is our paper being reviewed I can only suggest referees and @tpoisot eventually decides as editor. So I'd suggest waiting for @tpoisot's input (think of my message as the usual email received when somebody enters your name in a database of potential reviewers).

(@ha0ye on our end waiting 2 more weeks is fine but again I defer to @tpoisot regarding the way forward)

pboesu commented 1 year ago

Unfortunately I am currently tied up with other reviews and editorial duties. Sorry.

swmpkim commented 1 year ago

Hi y'all, I'm one of the reviewers and haven't had a chance to look at the paper yet (the new one or the 1999 one; next week, I promise!). But I did run code (R scripts only) and wanted to note a couple of things to update, maybe before the next reviewer comes on board.

I dove into the code without even trying to figure out the ecological context: purely a question of "can I run all this code". And the answer is "almost entirely, yes". The way the files were organized, named, and discussed in the README made it really easy to figure out what to run and when. I appreciated the warning about the code for Fig. 3 in particular taking a long time to run. And best I can tell, the images I generated were the same as the authors'. So with a few updates, yes, the code was reproducible on my machine. Specifics follow.

Important code updates - things I had to change in the code to make it run. All notes are for Script_Experiment.

Additional but less critical notes

I think that's all for now. I hope it's helpful. Thanks for letting me review this; I'm looking forward to exploring the paper and learning what all this code was for! More next week sometime.

fbarraquand commented 1 year ago

Thank you @swmpkim for this first part of the review. @tpoisot, just a reminder: the requested referee suggestions are listed above.

tpoisot commented 1 year ago

Thanks all - @juergspaak I would be glad if you could have a look as reviewer 2.

swmpkim commented 1 year ago

Took a little longer than I thought to review the paper itself. After doing so, and digging back into the code, I'm even happier with how well the code was organized and documented. Good job to the authors on that. Here are my additional comments; I hope they're helpful.

Additional code thoughts:

Notes on the paper:

In this article, the authors replicate Huisman and Weissing's (1999) simulations and figures of phytoplankton species abundances in a stable system with limited resources, using model parameters from the original paper. The authors then go further and perform simulations in which the the input parameters vary, and the results vary as well: to the point where the authors suggest that supersaturation is NOT common. The replication is well done and the code is well-documented. I do have misgivings though about the conclusions drawn from the new simulations, and would like to see more discussion and justification to ensure the conclusions are appropriate based on the outputs. What I'm most concerned about is calling the perturbations to the original (HW1999) parameters 'small'. I'll separate my comments into the 'replication' portion of the paper and the 'experimental' portion.

Replication portion

The paper is short and to the point. Without having the original next to me while reading this one though, it would have been hard to understand. Therefore many of my suggestions involve adding some detail and exposition to enable the current paper to stand more on its own.

Experimental portion

juergspaak commented 1 year ago

@tpoisot yesish, I can review this paper, however I would only be able to provide feedback by the 15th of January. If that is good enough for you I'll dig into it

tpoisot commented 1 year ago

@juergspaak thank you, this is perfect. Looking forward to your review.

swmpkim commented 1 year ago

@fbarraquand and @tpoisot , I only just figured out that notifications for issues can be a little weird - so in case you didn't see it, I posted the other part of my review above. Cheers!

swmpkim commented 1 year ago

In one of my review comments, I noted that the version of {reticulate} on CRAN had a bug and installation of miniconda didn't work. The CRAN version has been updated and should work now, and I've updated my comment to reflect this.

fbarraquand commented 1 year ago

@swmpkim Many thanks for checking (and more generally for your detailed comments).

juergspaak commented 1 year ago

Hi

I finally got the time to run the code and review the paper

Saving figures As @swmpkim I was not able to save the figures and it appears to be the same issue "NameError: name 'sys' is not defined". From my understanding, all your code works in R and you solely retuculate python code for the plotting, which to me seems a bit overkill. Especially because now reproduction requires the installation of python (and I was worried whether this installation of python may mess up with my other pyhton on computer). If not too much work, I would recommend to save these figures with R code, as both reviewers were not able to save the figures. Addtionally, for me the figures weren't shown in R itself, so I actually don't know whether they match the ones in the paper.

Running code I tried to run the Script_DataHW1999.R, but it appears to be stuck. Currently trying to compute code for Fig. 3a and 3b. I'm not sure how long this part of the code takes, however if it takes longer than say 5 minutes on your machine I would recommend to add a warning in text stating how long it takes on your machine (well aware that this is only little info for how long it will take on my machine). But currently I'm not sure whether it is stuck (certainly 10minutes + running for now). Even better, if possible, add an update stating how much of the progress is already done. Figure 3a and 3b appear to compute the same task for many different levels of K, so maybe add a progress bar of how many K are already computed, this way I know that the code is not stuck somewhere.

Same applies to the experiments where a progress and an estimation of how long this takes on your computer might help to ensure the code is not stuck.

Finally, you mention in the README.md that Matrix_C and Matrix_K contain info, but what info is contained? After looking a bit at the code it appears that these are the parameter settings for the different figures. I recommend mentioning this explicitly in the README.md, which matrix is used for which simulation and what it contains (K contains the halfsaturation if I understood correctly). Additionally, I would add column and row names to these matrices

juergspaak commented 1 year ago

For the article

Overall, I found the article, to the point, we replicate the idea of oversaturated coexistence in pyhtoplankton communities. Interestingly, I find that the paper replicates essentially two works at the same time. The Huisman & Weising 1999 and Schippers et al 2001 (which I do not know in detail). They in principle replicate the simulations of Huisman and Weising, but then go on to replicate results of Schippers showing that Huisman and Weising, while technically reproducable, may not be very important as it is very sensitive to perturbations.

I only have a few minor comment and one potentially large recommendation:

To me it is unclear how the original paper found the parameters for the super-saturated communities. If the authors have any insight on this I would appreciate such information. However, independent of how these parameters were found (which may very well have been brute force) I wonder how realistic these parameters are for natural communities. Or, vice versa, how likely super-saturation is for realistic communities. To test the robustness of super-saturation the authors perturbed the parameters from the paper, as reviewer 1 points out, it's unclear how realistic these values remain. As a potentially quite interesting extention I would recommend to use a database of realistic phytoplankton traits, e.g. https://esapubs.org/archive/ecol/E096/202/ I happen to have a paper where I do the same (but with a more complicated model including competition for light and zooplankton predation). I would be interested in whether under these circumstances super-saturation is even a thing. I have strong suspection that this experiment will simply show that it is not, so I would understand if the authors decline this potenially extensive additional work with potentially limited additional insight.

Besides this I only have minor comments:

  1. Paragraph, 1. sentence: At that this is true at equilibrium only, otherwise species may coexist. That is the Huisman & Weising did not find a loop-hole in the theory, but simply explored what happens if the assumptions are not met.

  2. paragraph: "an hypothesis" should be changed to "a hypothesis"

Numerical experiments: You take the abundance at the end of the experiment. But the idea is exactly that the densities fluctuate. So a more reasonable approach would be some sort of time average of densities above a certain threshhold

Numerical experiments: I would find these tables in form of graphs more insight full. Reviewer 1 pointed out that your perturbations are relatively large (to which I partially agree). A really cool addition would be how these percentages change as a function of the average perturbation.

tpoisot commented 1 year ago

@fbarraquand -- REVIEWER 1 and REVIEWER 2 have made a series of comments on the manuscript, which are all reasonable. I think the issues with installations are worth spending some time on, although I do understand that some of it may be outside your control. The comments about the content of the manuscript are all very reasonable and can be addressed.

Please do submit a revision at your earliest convenience, and we'll run it past reviewers again for a decision.

fbarraquand commented 11 months ago

Hello @tpoisot

We have now revised the manuscript (pdf, revised files have been pushed to the main branch). The response letter is attached to this comment in pdf format (too long for github comments). We are grateful to the two reviewers for constructive criticism.

doyen_et_al_response_letter_rescience.pdf

rougier commented 11 months ago

@tpoisot if you need help for the publication, just ask me.

tpoisot commented 11 months ago

Thanks @rougier -- I'll have a look this week and report back if/when I run into trouble.

tpoisot commented 11 months ago

This is an accept for me -- I tried to go through the publication process and failed at:

tpoisot@weewoo:~/Documents/articles> ./process.py --sandbox --metadata metadata.yaml --pdf article.pdf
Traceback (most recent call last):
  File "/home/tpoisot/Documents/articles/./process.py", line 60, in <module>
    article = Article(file.read())
              ^^^^^^^^^^^^^^^^^^^^
  File "/home/tpoisot/Documents/articles/article.py", line 127, in __init__
    self.parse(data)
  File "/home/tpoisot/Documents/articles/article.py", line 183, in parse
    self.date_received = Date(dates["received"] or "")
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/tpoisot/Documents/articles/article.py", line 79, in __init__
    date = dateutil.parser.parse(date)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/dateutil/parser/_parser.py", line 1368, in parse
    return DEFAULTPARSER.parse(timestr, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/dateutil/parser/_parser.py", line 640, in parse
    res, skipped_tokens = self._parse(timestr, **kwargs)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/dateutil/parser/_parser.py", line 719, in _parse
    l = _timelex.split(timestr)         # Splits the timestr into tokens
        ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/dateutil/parser/_parser.py", line 201, in split
    return list(cls(s))
                ^^^^^^
  File "/usr/lib/python3.11/site-packages/dateutil/parser/_parser.py", line 69, in __init__
    raise TypeError('Parser must be a string or character stream, not '
TypeError: Parser must be a string or character stream, not date
rougier commented 11 months ago

I can take car of the actual publication. @fbarraquand where are your latex sources?

DoyenGuillaume commented 11 months ago

Hi @rougier

If by latex sources you are referring to the .tex files used to generate article.pdf, you can find them in Article folder of the repository.

BR

rougier commented 11 months ago

@tpoisot did you fill the metadata.yaml file by any chance? If not I'll do it.

tpoisot commented 11 months ago

I did it on the version I put in the articles repo for publication, but I'm not sure that I pushed the modifications. I can do it again later today.

rougier commented 11 months ago

Great, tell me when it's done (or just post the metadata file here)

tpoisot commented 11 months ago

I'll post it here this morning - I'm working from home with the kids are the schools are on strike, so not sure when exactly, but let's aim for "before long".

tpoisot commented 11 months ago

To the best of my knowledge, @juergspaak and @swmpkim do not have an ORCID identifier, so these fields are blank.

@rougier FYI I've filled in a tentative publication date of today (2023-12-06)

# To be filled by the author(s) at the time of submission
# -------------------------------------------------------

# Title of the article:
#  - For a successful replication, it should be prefixed with "[Re]"
#  - For a failed replication, it should be prefixed with "[¬Re]"
#  - For other article types, no instruction (but please, not too long)
title: "[Re] Biodiversity of plankton by species oscillations and chaos"

# List of authors with name, orcid number, email and affiliation
# Affiliation "*" means contact author (required even for single-authored papers)
authors:

  - name: Guillaume Doyen
    orcid:
    email: gdoyen001@bordeaux-inp.fr
    affiliations: 1

  - name: Coralie Picoche
    orcid:  https://orcid.org/0000-0002-0867-2130
    email: coralie.picoche@u-bordeaux.fr
    affiliations: 1

  - name: Frédéric Barraquand
    orcid:  https://orcid.org/0000-0002-4759-0269
    email: frederic.barraquand@u-bordeaux.fr 
    affiliations: 1,*

# List of affiliations with code (corresponding to author affiliations), name
# and address. You can also use these affiliations to add text such as "Equal
# contributions" as name (with no address).
affiliations:
  - code:    1
    name:    Institut de Mathématiques de Bordeaux (UMR 5251), University of Bordeaux, CNRS, Bordeaux INP
    address: Talence, France

# List of keywords (adding the programming language might be a good idea)
keywords: ecological modelling, plankton, oscillations, coexistence, R

# Code URL and DOI/SWH (url is mandatory for replication, doi after acceptance)
# You can get a DOI for your code from Zenodo, or an SWH identifier from
# Software Heritage.
#   see https://guides.github.com/activities/citable-code/
code:
  - url: https://github.com/fbarraquand/supersaturated_coexistence
  - doi: 
  - swh: 

# Data URL and DOI (optional if no data)
data:
  - url:
  - doi:

# Information about the original article that has been replicated
replication:
 - cite: Huisman, J., Weissing, F. Biodiversity of plankton by species oscillations and chaos. Nature 402, 407–410 (1999). https://doi.org/10.1038/46540 # Full textual citation
 - bib: 1999:Huisman # Bibtex key (if any) in your bibliography file
 - url: https://rdcu.be/cR83N # URL to the PDF, try to link to a non-paywall version
 - doi: 10.1038/46540 # Regular digital object identifier

# Don't forget to surround abstract with double quotes
abstract: "Huisman and Weissing (1999) propose to solve the paradox of plankton using a resource-based differential equations model demonstrating oscilations and chaos. Here we successfully reproduced their results and figures using R. We added two numerical experiments showing, however, that theses results are not robust to mild pertubations of the intrinsic growth rates."
# Bibliography file (yours)
bibliography: bibliography.bib

# Type of the article
# Type can be:
#  * Editorial
#  * Letter
#  * Replication
type: Replication

# Scientific domain of the article (e.g. Computational Neuroscience)
#  (one domain only & try to be not overly specific)
domain: ecology 

# Coding language (main one only if several)
language: R

# To be filled by the author(s) after acceptance
# -----------------------------------------------------------------------------

# For example, the URL of the GitHub issue where review actually occured
review: 
  - url: https://github.com/ReScience/submissions/issues/66

contributors:
  - name: Timothée Poisot
    orcid: https://orcid.org/0000-0002-0735-5184
    role: editor
  - name: Kim Cressman
    orcid:
    role: reviewer
  - name: Jurg W. Spaak
    orcid:
    role: reviewer

# This information will be provided by the editor
dates:
  - received:  2022-09-09
  - accepted:  2023-12-05
  - published: 2023-12-06

# This information will be provided by the editor
article:
  - number: # Article number will be automatically assigned during publication
  - doi:    # DOI from Zenodo
  - url:    # Final PDF URL (Zenodo or rescience website?)

# This information will be provided by the editor
journal:
  - name:   "ReScience C"
  - issn:   2430-3658
  - volume: 4
  - issue:  1
swmpkim commented 11 months ago

I do have an ORCID! Didn't when we started the process. https://orcid.org/0000-0002-8083-2434

Thanks all!

juergspaak commented 11 months ago

I do have orcid as well: https://orcid.org/0000-0001-5157-9188 Also, am I correct that I do not have to review the paper again?

DoyenGuillaume commented 11 months ago

Hello !

Since everyone is sharing his orcid, I made one for myself as well. Here it is : https://orcid.org/0009-0008-6401-9022 Thanks again to the reviewers, editors and publishers for your feedback on our work.

Br

rougier commented 11 months ago

@tpoisot Thanks @juergspaak No need to review again! (and many thanks for your review) @DoyenGuillaume Great. I'll complete the metadata and published the paper first on sandbox zenodo and then zenodo. Stayt tuned!

rougier commented 11 months ago

Here is the sanbox version: https://sandbox.zenodo.org/record/8397

@DoyenGuillaume Can you check if everything looks ok? Waiting for your go to publish the final version.

DoyenGuillaume commented 11 months ago

Hi

Everything seems fine to me

Br

rougier commented 11 months ago

It's online: https://zenodo.org/record/10371655. It'll appear soon on the journal website.