openjournals / joss-reviews

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

[REVIEW]: PyKoopman: A Python Package for Data-Driven Approximation of the Koopman Operator #5881

Closed editorialbot closed 7 months ago

editorialbot commented 12 months ago

Submitting author: !--author-handle-->@pswpswpsw<!--end-author-handle-- (Shaowu Pan) Repository: https://github.com/dynamicslab/pykoopman Branch with paper.md (empty if default branch): Version: v1.1.0 Editor: !--editor-->@olexandr-konovalov<!--end-editor-- Reviewers: @ulf1, @fandreuz Archive: 10.5281/zenodo.10685233

Status

status

Status badge code:

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

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) by leaving comments 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

@ulf1 & @fandreuz, your review will be checklist based. Each of you will have a separate checklist that you should update when carrying out your review. First of all you need to run this command in a separate comment to create the checklist:

@editorialbot generate my checklist

The reviewer guidelines are available here: https://joss.readthedocs.io/en/latest/reviewer_guidelines.html. Any questions/concerns please let @olexandr-konovalov know.

Please start on your review when you are able, and be sure to complete your review in the next six weeks, at the very latest

Checklists

📝 Checklist for @fandreuz

📝 Checklist for @ulf1

editorialbot commented 12 months ago

Hello humans, I'm @editorialbot, a robot that can help you with some common editorial tasks.

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

@editorialbot commands

For example, to regenerate the paper pdf after making changes in the paper's md or bib files, type:

@editorialbot generate pdf
editorialbot commented 12 months ago
Software report:

github.com/AlDanial/cloc v 1.88  T=0.14 s (551.3 files/s, 161325.7 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Python                          43           1906           3802           5504
Jupyter Notebook                18              0           7722           1653
TeX                              1             27              0            563
XML                              1              0             19            448
YAML                             6             18             19            141
reStructuredText                 2             92             74            126
Ruby                             1             28             12            106
Markdown                         1             39              0             96
JSON                             1              0              0             51
TOML                             1              3              0             30
DOS Batch                        1              8              1             26
make                             1              4              7              9
-------------------------------------------------------------------------------
SUM:                            77           2125          11656           8753
-------------------------------------------------------------------------------

gitinspector failed to run statistical information for the repository
editorialbot commented 12 months ago
Reference check summary (note 'MISSING' DOIs are suggestions that need verification):

OK DOIs

- 10.1017/S0022112010001217 is OK
- 10.1137/1.9781611974508 is OK
- 10.1146/annurev-fluid-030121-015835 is OK
- 10.1016/j.arcontrol.2009.12.001 is OK
- 10.1007/978-0-387-40065-5 is OK
- 10.1017/9781108380690 is OK
- 10.1137/21M1401243 is OK
- 10.1063/1.4772195 is OK
- 10.1007/s00332-017-9437-7 is OK
- 10.1146/annurev-fluid-011212-140652 is OK
- 10.1063/1.4993854 is OK
- 10.1007/BF02532251 is OK
- 10.1038/s41467-017-00030-8 is OK
- 10.1007/978-3-662-04323-3_15 is OK
- 10.1017/S0022112009992059 is OK
- 10.1002/9781118535561 is OK
- 10.48550/arXiv.1710.09668 is OK
- 10.1137/18M1225409 is OK
- 10.1063/1.5011399 is OK
- 10.1038/s41467-017-02388-1 is OK
- 10.1098/rspa.2017.0844 is OK
- 10.1103/PhysRevLett.120.024102 is OK
- 10.1137/19M1274067 is OK
- 10.1016/j.jcp.2018.10.045 is OK
- 10.1073/pnas.1906995116 is OK
- 10.1126/science.aaw4741 is OK
- 10.1007/s00466-019-01711-5 is OK
- 10.1137/130932715 is OK
- 10.1016/j.cma.2016.03.025 is OK
- 10.1016/j.physd.2020.132401 is OK
- 10.1073/pnas.1118984109 is OK
- 10.1073/pnas.1620045114 is OK
- 10.1073/pnas.0609476104 is OK
- 10.1126/science.1165893 is OK
- 10.1038/ncomms9133 is OK
- 10.1073/pnas.1517384113 is OK
- 10.1007/s00332-015-9258-5 is OK
- 10.1126/sciadv.1602614 is OK
- 10.3934/jcd.2015005 is OK
- 10.1038/s41467-018-07210-0 is OK
- 10.1137/18M1177846 is OK
- 10.48550/arXiv.1710.04340 is OK
- 10.1017/jfm.2021.271 is OK
- 10.1016/j.ifacol.2016.10.250 is OK
- 10.1109/TAC.2020.2978039 is OK
- 10.1007/978-3-030-35713-9 is OK
- 10.1088/2632-2153/abf0f5 is OK
- 10.1016/j.automatica.2019.05.016 is OK
- 10.1137/20M1325678 is OK
- 10.21105/joss.02104 is OK
- 10.1137/17M115414X is OK
- 10.1016/j.physd.2004.06.015 is OK
- 10.1137/19M1267246 is OK
- 10.1137/15M1013857 is OK
- 10.1088/2632-2153/ac3de0 is OK

MISSING DOIs

- None

INVALID DOIs

- None
editorialbot commented 12 months ago

Wordcount for paper.md is 1267

editorialbot commented 12 months ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

fandreuz commented 12 months ago

Review checklist for @fandreuz

Conflict of interest

Code of Conduct

General checks

Functionality

Documentation

Software paper

ulf1 commented 12 months ago

Review checklist for @ulf1

Conflict of interest

Code of Conduct

General checks

Functionality

Documentation

Software paper

fandreuz commented 11 months ago

Hi @pswpswpsw, a few comments about the paper:

pswpswpsw commented 11 months ago

@editorialbot generate pdf

editorialbot commented 11 months ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

pswpswpsw commented 11 months ago

Hi @fandreuz, thank you for your time reviewing! I just finished the revised paper. Please take a look.

  1. Figures are now integrated with the manuscript.
  2. Major dependency are justified with a separate paragraph in Feature section.
  3. I have included a Example section to demonstrate a typical workflow using this package.
  4. I have included comparison with pydmd in Statement of need. So basically our goal is to strike a balance between serving dynamics/control community and fluid dynamics community. Many of the unique designs/implementation of pykoopman is indeed to achieve that goal.
fandreuz commented 11 months ago

Hi @pswpswpsw, thanks for updating the paper:

  1. Fig2/3/4 are fine, but still I think Fig.1 is a little bit detached from the context. And since it takes half of a page, I would expect it to be either very self-explanatory, or to find an explanation in the body of the manuscript. To me it's confusing and not adding much value to the paper if it's presented this way, therefore I would spend some more words either in the caption or in the body.
  2. Thanks for addressing my request, but I feel now it's too much. Of course you don't need to justify why you use each dependency, but I expected one, max two, sentences to explain your architecture. Example: We use several infrastructure objects and utility functions from PyDMD, however we decided to implement our version of DMDs because ...
  3. I don't see how your package comes into play in your example code, am I missing something?
  4. Thanks.

There's a typo/rendering problem at L93. I propose to remove "the" before "PyKoopman" in L51.

About Statement of need: please try to condense it. I propose to have a detailed explanation of all features supported in PyKoopman only in one place, namely the Features section. In Statement of need I'd like to see only 1/2 sentences about high-level features of your package, 1/2 sentences for comparison with state of the art (e.g. other open source packages like PyDMD) and much less citations. I would say there's not much need for many citations in Statement of need as anyway you will go into details in Features, so I propose to keep only the critical ones.

pswpswpsw commented 11 months ago

Hi @fandreuz, Thanks for the second round review.

  1. I have modified the caption to make it more concise. The figure 1 is to summarize the fundamental concepts in Koopman operator and also gives an example for why it can work.
  2. I believe this information is helpful for the readers in case they ask. So I leave it there in case the second reviewer is interested to know.
  3. Oh, I missed the rest of the code for pykoopman. Now I have added them to the revised version. Please take a look.

I just corrected the typo/rendering issues and also removed the "the" before Pykoopman.

For statement of need, the revised version now only has one sentence about comparison to pydmd:

Compared to implementation of DMD (e.g., PyDMD [@demo2018pydmd]) which can be viewed as a linear projection of Koopman operator, PyKoopman offers a comprehensive set of nonlinear projection methods.

pswpswpsw commented 11 months ago

@editorialbot generate pdf

editorialbot commented 11 months ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

ulf1 commented 11 months ago

@pswpswpsw has the package PyKoopman been used in academic papers?

pswpswpsw commented 10 months ago

@ulf1 Hi Ulf, first I want to thank you for pointing out the issues. I learned a lot.

To answer your question, not yet (because we just officially released the paper) but soon I will have a few papers that uses this pykoopman. I believe the community will also start to use our package for benchmark.

pswpswpsw commented 10 months ago

@editorialbot generate pdf

editorialbot commented 10 months ago

I'm sorry human, I don't understand that. You can see what commands I support by typing:

@editorialbot commands

pswpswpsw commented 10 months ago

@editorialbot generate pdf

editorialbot commented 10 months ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

pswpswpsw commented 10 months ago

@olexandr-konovalov dear editor, looks like the review has been completed? Shall we move forward?

olexandr-konovalov commented 10 months ago

@fandreuz and @ulf1, could you please confirm if the review is completed? I don't see that all checkboxes have been checked, so it's not yet finished from my perspective. Could you please revisit your checklists and update their state? Thanks!

fandreuz commented 10 months ago

Hi @pswpswpsw, as I said in my last comment I still feel the full detailed summary for each dependency is not needed and it should be cut. Not sure what's the opinion of @ulf1 here.

I also feel 11 pages is quite a lot for JOSS, in general I would:

I've checked all the other points.

ulf1 commented 10 months ago

@olexandr-konovalov @pswpswpsw @fandreuz Hello, I finished my review. I like the jupyter demo notebooks to explain how to call the package's classes, and the unit tests. The dependencies, including version ranges, have been fixed. I agree with @fandreuz that the PDF is very lengthy. I recommend this submission for publication.

pswpswpsw commented 10 months ago

@editorialbot generate pdf

editorialbot commented 10 months ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

pswpswpsw commented 10 months ago

Hi @fandreuz , thanks for the reply. I have

Hope this would work. Thanks.

fandreuz commented 10 months ago

Looks good for me @olexandr-konovalov, thanks @pswpswpsw.

pswpswpsw commented 9 months ago

@olexandr-konovalov dear editor, can we move forward with the current status?

olexandr-konovalov commented 9 months ago

@fandreuz @ulf1 thank you for the reviews. So, can you please explicitly confirm your recommendation to accept the submission of the latest version?

fandreuz commented 9 months ago

Hi @olexandr-konovalov, sure. I recommend the paper for submission

ulf1 commented 9 months ago

I recommend the latest submission for publication

pswpswpsw commented 8 months ago

@olexandr-konovalov looks like both reviewers have agreed. Shall we move forward?

olexandr-konovalov commented 7 months ago

Thanks @fandreuz and @ulf1 - yes, @pswpswpsw, I have now to follow this process, let me try to find some time next week...

pswpswpsw commented 7 months ago

@olexandr-konovalov Hi Editor, I have done my part issuing a tag v1.0.9 and uploaded it on https://zenodo.org/records/10633346

pswpswpsw commented 7 months ago

@editorialbot create post-review checklist

editorialbot commented 7 months ago

I'm sorry @pswpswpsw, I'm afraid I can't do that. That's something only editors are allowed to do.

olexandr-konovalov commented 7 months ago

Post-Review Checklist for Editor and Authors

Additional Author Tasks After Review is Complete

Editor Tasks Prior to Acceptance

olexandr-konovalov commented 7 months ago

@editorialbot generate pdf

olexandr-konovalov commented 7 months ago

@editorialbot check references

editorialbot commented 7 months ago
Reference check summary (note 'MISSING' DOIs are suggestions that need verification):

OK DOIs

- 10.1017/S0022112010001217 is OK
- 10.1137/1.9781611974508 is OK
- 10.1146/annurev-fluid-030121-015835 is OK
- 10.1016/j.arcontrol.2009.12.001 is OK
- 10.1007/978-0-387-40065-5 is OK
- 10.21105/joss.03994 is OK
- 10.1017/9781108380690 is OK
- 10.1137/21M1401243 is OK
- 10.1063/1.4772195 is OK
- 10.1007/s00332-017-9437-7 is OK
- 10.1146/annurev-fluid-011212-140652 is OK
- 10.1063/1.4993854 is OK
- 10.1007/BF02532251 is OK
- 10.1038/s41467-017-00030-8 is OK
- 10.1007/978-3-662-04323-3_15 is OK
- 10.1017/S0022112009992059 is OK
- 10.1002/9781118535561 is OK
- 10.48550/arXiv.1710.09668 is OK
- 10.1137/18M1225409 is OK
- 10.1063/1.5011399 is OK
- 10.1038/s41467-017-02388-1 is OK
- 10.1098/rspa.2017.0844 is OK
- 10.1103/PhysRevLett.120.024102 is OK
- 10.1137/19M1274067 is OK
- 10.1016/j.jcp.2018.10.045 is OK
- 10.1073/pnas.1906995116 is OK
- 10.1126/science.aaw4741 is OK
- 10.1007/s00466-019-01711-5 is OK
- 10.1137/130932715 is OK
- 10.1016/j.cma.2016.03.025 is OK
- 10.1016/j.physd.2020.132401 is OK
- 10.1073/pnas.1118984109 is OK
- 10.1073/pnas.1620045114 is OK
- 10.1073/pnas.0609476104 is OK
- 10.1126/science.1165893 is OK
- 10.1038/ncomms9133 is OK
- 10.1073/pnas.1517384113 is OK
- 10.1007/s00332-015-9258-5 is OK
- 10.1126/sciadv.1602614 is OK
- 10.3934/jcd.2015005 is OK
- 10.1038/s41467-018-07210-0 is OK
- 10.1137/18M1177846 is OK
- 10.48550/arXiv.1710.04340 is OK
- 10.1017/jfm.2021.271 is OK
- 10.1016/j.ifacol.2016.10.250 is OK
- 10.1109/TAC.2020.2978039 is OK
- 10.1007/978-3-030-35713-9 is OK
- 10.1088/2632-2153/abf0f5 is OK
- 10.1016/j.automatica.2019.05.016 is OK
- 10.1137/20M1325678 is OK
- 10.21105/joss.02104 is OK
- 10.1137/17M115414X is OK
- 10.1016/j.physd.2004.06.015 is OK
- 10.1137/19M1267246 is OK
- 10.1137/15M1013857 is OK
- 10.1088/2632-2153/ac3de0 is OK

MISSING DOIs

- 10.21105/joss.00530 may be a valid DOI for title: PyDMD: Python dynamic mode decomposition

INVALID DOIs

- None
editorialbot commented 7 months ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

pswpswpsw commented 7 months ago

@editorialbot generate pdf

pswpswpsw commented 7 months ago

@editorialbot check references

editorialbot commented 7 months ago
Reference check summary (note 'MISSING' DOIs are suggestions that need verification):

OK DOIs

- 10.1017/S0022112010001217 is OK
- 10.1137/1.9781611974508 is OK
- 10.1146/annurev-fluid-030121-015835 is OK
- 10.1016/j.arcontrol.2009.12.001 is OK
- 10.1007/978-0-387-40065-5 is OK
- 10.21105/joss.00530 is OK
- 10.21105/joss.03994 is OK
- 10.1017/9781108380690 is OK
- 10.1137/21M1401243 is OK
- 10.1063/1.4772195 is OK
- 10.1007/s00332-017-9437-7 is OK
- 10.1146/annurev-fluid-011212-140652 is OK
- 10.1063/1.4993854 is OK
- 10.1007/BF02532251 is OK
- 10.1038/s41467-017-00030-8 is OK
- 10.1007/978-3-662-04323-3_15 is OK
- 10.1017/S0022112009992059 is OK
- 10.1002/9781118535561 is OK
- 10.48550/arXiv.1710.09668 is OK
- 10.1137/18M1225409 is OK
- 10.1063/1.5011399 is OK
- 10.1038/s41467-017-02388-1 is OK
- 10.1098/rspa.2017.0844 is OK
- 10.1103/PhysRevLett.120.024102 is OK
- 10.1137/19M1274067 is OK
- 10.1016/j.jcp.2018.10.045 is OK
- 10.1073/pnas.1906995116 is OK
- 10.1126/science.aaw4741 is OK
- 10.1007/s00466-019-01711-5 is OK
- 10.1137/130932715 is OK
- 10.1016/j.cma.2016.03.025 is OK
- 10.1016/j.physd.2020.132401 is OK
- 10.1073/pnas.1118984109 is OK
- 10.1073/pnas.1620045114 is OK
- 10.1073/pnas.0609476104 is OK
- 10.1126/science.1165893 is OK
- 10.1038/ncomms9133 is OK
- 10.1073/pnas.1517384113 is OK
- 10.1007/s00332-015-9258-5 is OK
- 10.1126/sciadv.1602614 is OK
- 10.3934/jcd.2015005 is OK
- 10.1038/s41467-018-07210-0 is OK
- 10.1137/18M1177846 is OK
- 10.48550/arXiv.1710.04340 is OK
- 10.1017/jfm.2021.271 is OK
- 10.1016/j.ifacol.2016.10.250 is OK
- 10.1109/TAC.2020.2978039 is OK
- 10.1007/978-3-030-35713-9 is OK
- 10.1088/2632-2153/abf0f5 is OK
- 10.1016/j.automatica.2019.05.016 is OK
- 10.1137/20M1325678 is OK
- 10.21105/joss.02104 is OK
- 10.1137/17M115414X is OK
- 10.1016/j.physd.2004.06.015 is OK
- 10.1137/19M1267246 is OK
- 10.1137/15M1013857 is OK
- 10.1088/2632-2153/ac3de0 is OK

MISSING DOIs

- None

INVALID DOIs

- None
pswpswpsw commented 7 months ago

@olexandr-konovalov Hi Editor, I just fixed the missing DOI issue.

editorialbot commented 7 months ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

pswpswpsw commented 7 months ago

@olexandr-konovalov Hi Editor, I have ensured our page on zenodo (https://zenodo.org/records/10633346) has the correct author list and ORCID. I have completed the following.

olexandr-konovalov commented 7 months ago

@pswpswpsw wonderful, thanks - helps me a lot!