Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[REVIEW]: Pyrokinetics - A Python library to standardise gyrokinetic analysis #5866

Closed
editorialbot opened this issue Sep 21, 2023 · 54 comments
Assignees
Labels
accepted published Papers published in JOSS Python recommend-accept Papers recommended for acceptance in JOSS. review Track: 3 (PE) Physics and Engineering

Comments

@editorialbot
Copy link
Collaborator

editorialbot commented Sep 21, 2023

Submitting author: @bpatel2107 (Bhavin Patel)
Repository: https://github.com/pyro-kinetics/pyrokinetics
Branch with paper.md (empty if default branch): docs/joss_paper
Version: v0.6.1
Editor: @kellyrowland
Reviewers: @the-rccg, @rogeriojorge
Archive: 10.5281/zenodo.10472477

Status

status

Status badge code:

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

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

@the-rccg & @rogeriojorge, 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 @kellyrowland 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 @rogeriojorge

📝 Checklist for @the-rccg

@editorialbot editorialbot added Python review Track: 3 (PE) Physics and Engineering waitlisted Submissions in the JOSS backlog due to reduced service mode. labels Sep 21, 2023
@editorialbot
Copy link
Collaborator Author

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
Copy link
Collaborator Author

Software report:

github.com/AlDanial/cloc v 1.88  T=0.29 s (509.2 files/s, 104618.7 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Python                         115           4782           6563          16521
reStructuredText                22            609            920            698
Markdown                         3             79              0            252
YAML                             6             17             20            150
TOML                             1              7              0             77
TeX                              1              6              0             60
DOS Batch                        1              8              1             26
make                             1              4              9             10
-------------------------------------------------------------------------------
SUM:                           150           5512           7513          17794
-------------------------------------------------------------------------------


gitinspector failed to run statistical information for the repository

@editorialbot
Copy link
Collaborator Author

Reference check summary (note 'MISSING' DOIs are suggestions that need verification):

OK DOIs

- 10.1088/1361-6587/aceb89 is OK
- 10.48550/arXiv.2307.01669 is OK
- 10.48550/arXiv.2307.01670 is OK
- 10.48550/arXiv.2309.09785 is OK
- 10.1088/0029-5515/55/12/123006 is OK
- 10.1016/j.cpc.2003.11.002 is OK

MISSING DOIs

- None

INVALID DOIs

- None

@editorialbot
Copy link
Collaborator Author

Wordcount for paper.md is 768

@editorialbot
Copy link
Collaborator Author

👉📄 Download article proof 📄 View article proof on GitHub 📄 👈

@kellyrowland
Copy link

hi @the-rccg @rogeriojorge please let me know when and if you'll be able to start your review here, and if you have any questions or concerns as well. thanks!

@rogeriojorge
Copy link

rogeriojorge commented Oct 17, 2023

Review checklist for @rogeriojorge

Conflict of interest

  • I confirm that I have read the JOSS conflict of interest (COI) policy and that: I have no COIs with reviewing this work or that any perceived COIs have been waived by JOSS for the purpose of this review.

Code of Conduct

General checks

  • Repository: Is the source code for this software available at the https://github.com/pyro-kinetics/pyrokinetics?
  • License: Does the repository contain a plain-text LICENSE file with the contents of an OSI approved software license?
  • Contribution and authorship: Has the submitting author (@bpatel2107) made major contributions to the software? Does the full list of paper authors seem appropriate and complete?
  • Substantial scholarly effort: Does this submission meet the scope eligibility described in the JOSS guidelines
  • Data sharing: If the paper contains original data, data are accessible to the reviewers. If the paper contains no original data, please check this item.
  • Reproducibility: If the paper contains original results, results are entirely reproducible by reviewers. If the paper contains no original results, please check this item.
  • Human and animal research: If the paper contains original data research on humans subjects or animals, does it comply with JOSS's human participants research policy and/or animal research policy? If the paper contains no such data, please check this item.

Functionality

  • Installation: Does installation proceed as outlined in the documentation?
  • Functionality: Have the functional claims of the software been confirmed?
  • Performance: If there are any performance claims of the software, have they been confirmed? (If there are no claims, please check off this item.)

Documentation

  • A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • Installation instructions: Is there a clearly-stated list of dependencies? Ideally these should be handled with an automated package management solution.
  • Example usage: Do the authors include examples of how to use the software (ideally to solve real-world analysis problems).
  • Functionality documentation: Is the core functionality of the software documented to a satisfactory level (e.g., API method documentation)?
  • Automated tests: Are there automated tests or manual steps described so that the functionality of the software can be verified?
  • Community guidelines: Are there clear guidelines for third parties wishing to 1) Contribute to the software 2) Report issues or problems with the software 3) Seek support

Software paper

  • Summary: Has a clear description of the high-level functionality and purpose of the software for a diverse, non-specialist audience been provided?
  • A statement of need: Does the paper have a section titled 'Statement of need' that clearly states what problems the software is designed to solve, who the target audience is, and its relation to other work?
  • State of the field: Do the authors describe how this software compares to other commonly-used packages?
  • Quality of writing: Is the paper well written (i.e., it does not require editing for structure, language, or writing quality)?
  • References: Is the list of references complete, and is everything cited appropriately that should be cited (e.g., papers, datasets, software)? Do references in the text use the proper citation syntax?

@rogeriojorge
Copy link

This is the start of the review of the code Pyrokinetics - A Python library to standardise gyrokinetic analysis

Below, I describe the process of download, installation and running of Pytokinetics.

  • Downloading from source:
    No issues. However, I have to reference the fact that I had to download 118 MB of data which I believe comes from TRANSP files. Are those really necessary?

  • Doing pip install -e .[tests] led me to the error:
    no matches found: .[tests]
    Installed normally using pip install -e .
    Then installed from source with no issues

  • Doing pytest --cov . led me to the error:
    pytest: error: unrecognized arguments: --cov
    had to install pytest-cov
    Then ran the test.

This outputted the 89% code coverage and 3 failed tests

====================================================== short test summary info ======================================================
FAILED tests/local_geometry/test_fourier.py::test_load_from_eq - AssertionError: cN difference: [2.54681480e-08 1.21464990e-07 5.16698228e-07 1.06052750e-06
FAILED tests/local_geometry/test_fourier_cgyro.py::test_load_from_eq - AssertionError: aR difference: [8.46300070e-08 8.31583997e-07 2.86840035e-06 6.25578335e-06
FAILED tests/local_geometry/test_mxh.py::test_load_from_eq - AssertionError: bunit_over_b0 difference: 0.0004917421190069327
================================= 3 failed, 778 passed, 1 skipped, 268 warnings in 85.19s (0:01:25) =================================

While the code coverage seems good, I am not able to assess if not passing the tests is significant or not. Can the authors address this?

Once these three topics are addressed, I will continue with the remaining check points.

========================

Traceback (most recent call last):
File "/Users/rogeriojorge/local/pyrokinetics/src/pyrokinetics/factory.py", line 37, in type
return self._registered_types[key]
~~~~~~~~~~~~~~~~~~~~~~^^^^^
KeyError: 'gs2Input-linear.in'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/Users/rogeriojorge/local/pyrokinetics/src/pyrokinetics/file_utils.py", line 128, in type
return super().type(key)
^^^^^^^^^^^^^^^^^
File "/Users/rogeriojorge/local/pyrokinetics/src/pyrokinetics/factory.py", line 39, in type
raise KeyError(
KeyError: "'gs2Input-linear.in' is not registered with FileReader factory"

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "", line 1, in
File "/Users/rogeriojorge/local/pyrokinetics/src/pyrokinetics/pyro.py", line 174, in init
self.read_gk_file(gk_file, gk_code)
File "/Users/rogeriojorge/local/pyrokinetics/src/pyrokinetics/pyro.py", line 852, in read_gk_file
gk_input = read_gk_input(gk_file, file_type=gk_code)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/rogeriojorge/local/pyrokinetics/src/pyrokinetics/gk_code/gk_input.py", line 221, in read_gk_input
gk_input = GKInput._factory(file_type if file_type is not None else path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/rogeriojorge/local/pyrokinetics/src/pyrokinetics/factory.py", line 66, in call
return self.create(key, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/rogeriojorge/local/pyrokinetics/src/pyrokinetics/factory.py", line 45, in create
return self.type(key)(*args, **kwargs)
^^^^^^^^^^^^^^
File "/Users/rogeriojorge/local/pyrokinetics/src/pyrokinetics/file_utils.py", line 130, in type
return super().type(self._infer_file_type(key))
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/rogeriojorge/local/pyrokinetics/src/pyrokinetics/file_utils.py", line 145, in _infer_file_type
raise KeyError(err_msg)

@the-rccg
Copy link

the-rccg commented Oct 24, 2023

Review checklist for @the-rccg

Conflict of interest

  • I confirm that I have read the JOSS conflict of interest (COI) policy and that: I have no COIs with reviewing this work or that any perceived COIs have been waived by JOSS for the purpose of this review.

Code of Conduct

General checks

  • Repository: Is the source code for this software available at the https://github.com/pyro-kinetics/pyrokinetics?
  • License: Does the repository contain a plain-text LICENSE file with the contents of an OSI approved software license?
  • Contribution and authorship: Has the submitting author (@bpatel2107) made major contributions to the software? Does the full list of paper authors seem appropriate and complete?
  • Substantial scholarly effort: Does this submission meet the scope eligibility described in the JOSS guidelines
  • Data sharing: If the paper contains original data, data are accessible to the reviewers. If the paper contains no original data, please check this item.
  • Reproducibility: If the paper contains original results, results are entirely reproducible by reviewers. If the paper contains no original results, please check this item.
  • Human and animal research: If the paper contains original data research on humans subjects or animals, does it comply with JOSS's human participants research policy and/or animal research policy? If the paper contains no such data, please check this item.

Functionality

  • Installation: Does installation proceed as outlined in the documentation?
  • Functionality: Have the functional claims of the software been confirmed?
  • Performance: If there are any performance claims of the software, have they been confirmed? (If there are no claims, please check off this item.)

Documentation

  • A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • Installation instructions: Is there a clearly-stated list of dependencies? Ideally these should be handled with an automated package management solution.
  • Example usage: Do the authors include examples of how to use the software (ideally to solve real-world analysis problems).
  • Functionality documentation: Is the core functionality of the software documented to a satisfactory level (e.g., API method documentation)?
  • Automated tests: Are there automated tests or manual steps described so that the functionality of the software can be verified?
  • Community guidelines: Are there clear guidelines for third parties wishing to 1) Contribute to the software 2) Report issues or problems with the software 3) Seek support

Software paper

  • Summary: Has a clear description of the high-level functionality and purpose of the software for a diverse, non-specialist audience been provided?
  • A statement of need: Does the paper have a section titled 'Statement of need' that clearly states what problems the software is designed to solve, who the target audience is, and its relation to other work?
  • State of the field: Do the authors describe how this software compares to other commonly-used packages?
  • Quality of writing: Is the paper well written (i.e., it does not require editing for structure, language, or writing quality)?
  • References: Is the list of references complete, and is everything cited appropriately that should be cited (e.g., papers, datasets, software)? Do references in the text use the proper citation syntax?

@the-rccg
Copy link

the-rccg commented Oct 25, 2023

Example usage: Do the authors include examples of how to use the software (ideally to solve real-world analysis problems).
Currently I can only find one Example in the Documentation (https://pyrokinetics.readthedocs.io/en/latest/examples/index.html) that is a trivial two-liner:

import pyrokinetics as pk
pyro = pk.Pyro(gk_file="gs2.input")

Considering the stated usecase to standardize input and output files, it feels like one example for each showcasing how to load and save should be the bare minimum. Ideally, some real world example should be done with the resulting object to help people get started with what could be done within the framework.

@bpatel2107
Copy link

We have more "how to" guides written
https://pyrokinetics.readthedocs.io/en/latest/howtos/index.html

But we can add more example scripts to this and link to the existing examples on the repo!
https://github.com/pyro-kinetics/pyrokinetics/tree/unstable/docs/examples

@the-rccg
Copy link

Thank you for replying this fast! The How-To's seem to include examples and cover all important use cases I would wish to see. This then seems to simply be an issue of highlighting the fact and removing the duplicate examples heading. Maybe call it "How-To Examples"?

While the content is great, the presentation is still lacking. It took two clicks to find an error with wrong indentation (https://pyrokinetics.readthedocs.io/en/latest/howtos/linear_outputs.html). I would recommend going through the How-To's once more and maybe even including them into your test suite to ensure new users will not encounter Problems right away.

These How-to's also mix the CLI and Code interface; the previous example only uses the CLI (https://pyrokinetics.readthedocs.io/en/latest/howtos/convert.html). Just a small note that it would be beneficial to probably showcase both methods if both are possible within the code.

I'll mark the examples as sufficient, but would really encourage you to go through them once more to remove these inconsistencies.

@the-rccg
Copy link

the-rccg commented Nov 13, 2023

@bpatel2107 Last comment on documentation, I do not see any information on contribution guidelines and hence cannot check off the following bullet point. Would be great to see that added!

  • Community guidelines: Are there clear guidelines for third parties wishing to 1) Contribute to the software 2) Report issues or problems with the software 3) Seek support

As an aside on documentation, the ReadMe does define the unit normalization convention readable for plasma physicists. It might be useful to have at least a glossary/explanation of terms for didactic purposes.

@bpatel2107
Copy link

bpatel2107 commented Nov 23, 2023

@the-rccg I've added some actual examples to the docs here and made the other changes you've suggested. I've also added community guidelines here and updated the README to be clearer on the definitions.

@bpatel2107
Copy link

@rogeriojorge

  • We use template files from TRANSP in our testing but we did have two which was not really needed so we have removed one of the TRANSP files removing 46MB of required storage
  • pip install -e .[tests] may have failed due to an older version of pip. The README now suggests to update pip to the latest version
  • Those particular tests have been adjusted as they were failing in our CI (we think a change in a scipy routine was the cause but this is now fixed)
  • The cause of the error was due to pyrokinetics not being able to automatically identify the file as a GS2 input file. A clearer error message is now provided
Traceback (most recent call last):
  File "/home/ir-pate3/test_pyro_install/pyrokinetics/src/pyrokinetics/file_utils.py", line 136, in _chain_exceptions
    _chain_exceptions(*excs)
  File "/home/ir-pate3/test_pyro_install/pyrokinetics/src/pyrokinetics/file_utils.py", line 140, in _chain_exceptions
    raise exc
  File "/home/ir-pate3/test_pyro_install/pyrokinetics/src/pyrokinetics/file_utils.py", line 160, in type
    return super().type(key)
  File "/home/ir-pate3/test_pyro_install/pyrokinetics/src/pyrokinetics/factory.py", line 39, in type
    raise KeyError(
KeyError: "'gs2Input-linear.in' is not recognised as a type of FileReader"

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/ir-pate3/test_pyro_install/pyrokinetics/src/pyrokinetics/file_utils.py", line 136, in _chain_exceptions
    _chain_exceptions(*excs)
  File "/home/ir-pate3/test_pyro_install/pyrokinetics/src/pyrokinetics/file_utils.py", line 138, in _chain_exceptions
    raise exc from chain
  File "/home/ir-pate3/test_pyro_install/pyrokinetics/src/pyrokinetics/file_utils.py", line 163, in type
    return super().type(self._infer_file_type(key))
  File "/home/ir-pate3/test_pyro_install/pyrokinetics/src/pyrokinetics/file_utils.py", line 191, in _infer_file_type
    raise FileInferenceException(excs)
pyrokinetics.file_utils.FileInferenceException: Could not infer file type. The following exceptions were raised:
+ 'CGYRO' raised --> RuntimeError("Couldn't read CGYRO file. Is the format correct?")
+ 'GENE' raised --> ValueError(" Unable to verify joss.in as a GENE file. The following keys are required: 'general', 'geometry', 'box' ")
+ 'GS2' raised --> ValueError(" Unable to verify joss.in as a GS2 file. The following keys are required: 'knobs', 'parameters', 'theta_grid_knobs', 'theta_grid_eik_knobs', 'theta_grid_parameters', 'species_knobs', 'kt_grids_knobs' ")
+ 'TGLF' raised --> ValueError(" Unable to verify joss.in as a TGLF file. The following keys are required: 'rmin_loc', 'rmaj_loc', 'nky' ")
+ '_test' raised --> RuntimeError('First line of file should say Hello world!.')

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/ir-pate3/test_pyro_install/pyrokinetics/src/pyrokinetics/pyro.py", line 176, in __init__
    self.read_gk_file(gk_file, gk_code, norms=self.norms)
  File "/home/ir-pate3/test_pyro_install/pyrokinetics/src/pyrokinetics/pyro.py", line 856, in read_gk_file
    gk_input = read_gk_input(gk_file, file_type=gk_code)
  File "/home/ir-pate3/test_pyro_install/pyrokinetics/src/pyrokinetics/gk_code/gk_input.py", line 235, in read_gk_input
    gk_input = GKInput._factory(file_type if file_type is not None else path)
  File "/home/ir-pate3/test_pyro_install/pyrokinetics/src/pyrokinetics/factory.py", line 66, in __call__
    return self.create(key, *args, **kwargs)
  File "/home/ir-pate3/test_pyro_install/pyrokinetics/src/pyrokinetics/factory.py", line 45, in create
    return self.type(key)(*args, **kwargs)
  File "/home/ir-pate3/test_pyro_install/pyrokinetics/src/pyrokinetics/file_utils.py", line 174, in type
    _chain_exceptions(RuntimeError(msg), infer_error, key_error)
  File "/home/ir-pate3/test_pyro_install/pyrokinetics/src/pyrokinetics/file_utils.py", line 138, in _chain_exceptions
    raise exc from chain
RuntimeError: Unable to determine the type of 'GKInput' from the input 'gs2Input-linear.in'. If you supplied a file name, please check the exceptions raised above from each GKInput reader, and try fixing any reported issues. It may also help to specify the file type explicitly. 

Here the missing namelist are shown. When actually specifying the type of code as follows pyro = Pyro(gk_file="gs2Input-linear.in", gk_code="GS2") we come to the root issue which is that pyrokinetics does not support numerical equilibria yet, only analytic ones (Miller, MXH, MillerTurnbull etc.). This of course can be added in the future.

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/ir-pate3/test_pyro_install/pyrokinetics/src/pyrokinetics/pyro.py", line 176, in __init__
    self.read_gk_file(gk_file, gk_code, norms=self.norms)
  File "/home/ir-pate3/test_pyro_install/pyrokinetics/src/pyrokinetics/pyro.py", line 871, in read_gk_file
    self.local_geometry = self.gk_input.get_local_geometry()
  File "/home/ir-pate3/test_pyro_install/pyrokinetics/src/pyrokinetics/gk_code/gs2.py", line 148, in get_local_geometry
    raise NotImplementedError(
NotImplementedError: GS2 equilibrium option file not implemented
  • We are not sure a Docker version of pyrokinetics is quite necessary just yet. We have improved the documentation with some examples and made the installation via pip as simple as possible. Do you have anything you'd specifically want from a Docker (I'm personally not too familiar with them)

@bpatel2107
Copy link

We decided that a docker was straightforward to add so it is now included and there's an update to the README with instructions on how to use it.

@rogeriojorge
Copy link

I would like to thank you for addressing the questions raised, including the docker file.
The manuscript, the repository, and the associated README/tests/functionality look ok to me.
The repository is very useful and I believe that it will be widely used in the gyrokinetic community.

@kellyrowland
Copy link

@rogeriojorge thank you for your review!

@kellyrowland
Copy link

@the-rccg checking in here - it looks like there have been some updates to address your comments, so please take a look at your earliest convenience.

@kellyrowland
Copy link

thanks for continuing your review @the-rccg , dropping another ping here.

@the-rccg
Copy link

the-rccg commented Dec 18, 2023

@kellyrowland I've been able to verify the functionality using version 0.5.0 (as opposed to the current 0.6.1 due to issues with getting pygacode 1.0 running on Windows).

It's all working well with that, great work on the code base! I'm sure this will find good use in the community.

One thing I was not able to confirm is the Diagnostic usage from the Ideal Ballooning Solver (https://pyrokinetics.readthedocs.io/en/latest/examples/ideal_ballooning.html), which might be due to the older version and the example was added after the release of the 0.5.0 version verified, so ignoring it here.

diag = Diagnostics(pyro)  # RuntimeError: Diagnostics: Please load gk output files (Pyro.load_gk_output) before using any diagnostic

@kellyrowland
Copy link

thanks very much!

@bpatel2107 could you comment on the above? it looks like we have the checkboxes all filled out, but I want to make sure that the RuntimeError has been addressed in the most recent release.

@kellyrowland
Copy link

thanks! I will follow up with my steps here and ping you again in early March.

@kyleniemeyer kyleniemeyer removed the waitlisted Submissions in the JOSS backlog due to reduced service mode. label Jan 29, 2024
@bpatel2107
Copy link

Hello, I have returned from leave and am keen to progress with this!

Let me know of any additional steps needed.

@kellyrowland
Copy link

@editorialbot check references

@editorialbot
Copy link
Collaborator Author

Reference check summary (note 'MISSING' DOIs are suggestions that need verification):

OK DOIs

- 10.1088/1361-6587/aceb89 is OK
- 10.48550/arXiv.2307.01669 is OK
- 10.48550/arXiv.2307.01670 is OK
- 10.48550/arXiv.2309.09785 is OK
- 10.1088/0029-5515/55/12/123006 is OK
- 10.1016/j.cpc.2003.11.002 is OK

MISSING DOIs

- None

INVALID DOIs

- None

@kellyrowland
Copy link

@editorialbot generate pdf

@editorialbot
Copy link
Collaborator Author

👉📄 Download article proof 📄 View article proof on GitHub 📄 👈

@kellyrowland
Copy link

@bpatel2107 it looks like there are several discrepancies between the package and the archive that will need to be aligned:

  • there is a typo in the DOI title, "Pyrokinetivs" should be "Pyrokinetics"
  • the author list should be the same on the manuscript and the archive; there's only one author listed on the archive
  • the license listed on the archive doesn't match the license in the code repo

I think you should be able to make these changes by editing the metadata of the record on Zenodo (see https://help.zenodo.org/faq/#ctechnical-1).

@bpatel2107
Copy link

@kellyrowland Thanks for spotting that, I've made the appropriate changes. I corrected an ORCID and made an institution change for one of our authors so please regenerate the PDF

@kellyrowland
Copy link

@editorialbot generate pdf

@editorialbot
Copy link
Collaborator Author

👉📄 Download article proof 📄 View article proof on GitHub 📄 👈

@kellyrowland
Copy link

@editorialbot set 10.5281/zenodo.10472477 as archive

@editorialbot
Copy link
Collaborator Author

Done! archive is now 10.5281/zenodo.10472477

@kellyrowland
Copy link

@editorialbot set v0.6.1 as version

@editorialbot
Copy link
Collaborator Author

Done! version is now v0.6.1

@kellyrowland
Copy link

@editorialbot recommend-accept

@editorialbot
Copy link
Collaborator Author

Attempting dry run of processing paper acceptance...

@editorialbot
Copy link
Collaborator Author

Reference check summary (note 'MISSING' DOIs are suggestions that need verification):

OK DOIs

- 10.1088/1361-6587/aceb89 is OK
- 10.48550/arXiv.2307.01669 is OK
- 10.48550/arXiv.2307.01670 is OK
- 10.48550/arXiv.2309.09785 is OK
- 10.1088/0029-5515/55/12/123006 is OK
- 10.1016/j.cpc.2003.11.002 is OK

MISSING DOIs

- None

INVALID DOIs

- None

@editorialbot
Copy link
Collaborator Author

👋 @openjournals/pe-eics, this paper is ready to be accepted and published.

Check final proof 👉📄 Download article

If the paper PDF and the deposit XML files look good in openjournals/joss-papers#5094, then you can now move forward with accepting the submission by compiling again with the command @editorialbot accept

@editorialbot editorialbot added the recommend-accept Papers recommended for acceptance in JOSS. label Mar 5, 2024
@kyleniemeyer
Copy link

@editorialbot accept

@editorialbot
Copy link
Collaborator Author

Doing it live! Attempting automated processing of paper acceptance...

@editorialbot
Copy link
Collaborator Author

Ensure proper citation by uploading a plain text CITATION.cff file to the default branch of your repository.

If using GitHub, a Cite this repository menu will appear in the About section, containing both APA and BibTeX formats. When exported to Zotero using a browser plugin, Zotero will automatically create an entry using the information contained in the .cff file.

You can copy the contents for your CITATION.cff file here:

CITATION.cff

cff-version: "1.2.0"
authors:
- family-names: Patel
  given-names: Bhavin S.
  orcid: "https://orcid.org/0000-0003-0121-1187"
- family-names: Hill
  given-names: Peter
  orcid: "https://orcid.org/0000-0003-3092-1858"
- family-names: Pattinson
  given-names: Liam
  orcid: "https://orcid.org/0000-0001-8604-6904"
- family-names: Giacomin
  given-names: Maurizio
  orcid: "https://orcid.org/0000-0003-2821-2008"
- family-names: Bokshi
  given-names: Arkaprava
  orcid: "https://orcid.org/0000-0001-7095-7172"
- family-names: Kennedy
  given-names: Daniel
  orcid: "https://orcid.org/0000-0001-7666-782X"
- family-names: Dudding
  given-names: Harry G.
  orcid: "https://orcid.org/0000-0002-3413-0861"
- family-names: Parisi
  given-names: Jason. F.
  orcid: "https://orcid.org/0000-0003-1328-7154"
- family-names: Neiser
  given-names: Tom F.
  orcid: "https://orcid.org/0000-0002-8763-3016"
- family-names: Jayalekshmi
  given-names: Ajay C.
  orcid: "https://orcid.org/0000-0002-6447-581X"
- family-names: Dickinson
  given-names: David
  orcid: "https://orcid.org/0000-0002-0868-211X"
- family-names: Ruiz
  given-names: Juan Ruiz
  orcid: "https://orcid.org/0000-0003-4258-5273"
contact:
- family-names: Patel
  given-names: Bhavin S.
  orcid: "https://orcid.org/0000-0003-0121-1187"
doi: 10.5281/zenodo.10472477
message: If you use this software, please cite our article in the
  Journal of Open Source Software.
preferred-citation:
  authors:
  - family-names: Patel
    given-names: Bhavin S.
    orcid: "https://orcid.org/0000-0003-0121-1187"
  - family-names: Hill
    given-names: Peter
    orcid: "https://orcid.org/0000-0003-3092-1858"
  - family-names: Pattinson
    given-names: Liam
    orcid: "https://orcid.org/0000-0001-8604-6904"
  - family-names: Giacomin
    given-names: Maurizio
    orcid: "https://orcid.org/0000-0003-2821-2008"
  - family-names: Bokshi
    given-names: Arkaprava
    orcid: "https://orcid.org/0000-0001-7095-7172"
  - family-names: Kennedy
    given-names: Daniel
    orcid: "https://orcid.org/0000-0001-7666-782X"
  - family-names: Dudding
    given-names: Harry G.
    orcid: "https://orcid.org/0000-0002-3413-0861"
  - family-names: Parisi
    given-names: Jason. F.
    orcid: "https://orcid.org/0000-0003-1328-7154"
  - family-names: Neiser
    given-names: Tom F.
    orcid: "https://orcid.org/0000-0002-8763-3016"
  - family-names: Jayalekshmi
    given-names: Ajay C.
    orcid: "https://orcid.org/0000-0002-6447-581X"
  - family-names: Dickinson
    given-names: David
    orcid: "https://orcid.org/0000-0002-0868-211X"
  - family-names: Ruiz
    given-names: Juan Ruiz
    orcid: "https://orcid.org/0000-0003-4258-5273"
  date-published: 2024-03-06
  doi: 10.21105/joss.05866
  issn: 2475-9066
  issue: 95
  journal: Journal of Open Source Software
  publisher:
    name: Open Journals
  start: 5866
  title: Pyrokinetics - A Python library to standardise gyrokinetic
    analysis
  type: article
  url: "https://joss.theoj.org/papers/10.21105/joss.05866"
  volume: 9
title: Pyrokinetics - A Python library to standardise gyrokinetic
  analysis

If the repository is not hosted on GitHub, a .cff file can still be uploaded to set your preferred citation. Users will be able to manually copy and paste the citation.

Find more information on .cff files here and here.

@editorialbot
Copy link
Collaborator Author

🐘🐘🐘 👉 Toot for this paper 👈 🐘🐘🐘

@editorialbot
Copy link
Collaborator Author

🚨🚨🚨 THIS IS NOT A DRILL, YOU HAVE JUST ACCEPTED A PAPER INTO JOSS! 🚨🚨🚨

Here's what you must now do:

  1. Check final PDF and Crossref metadata that was deposited 👉 Creating pull request for 10.21105.joss.05866 joss-papers#5097
  2. Wait five minutes, then verify that the paper DOI resolves https://doi.org/10.21105/joss.05866
  3. If everything looks good, then close this review issue.
  4. Party like you just published a paper! 🎉🌈🦄💃👻🤘

Any issues? Notify your editorial technical team...

@editorialbot editorialbot added accepted published Papers published in JOSS labels Mar 6, 2024
@kyleniemeyer
Copy link

Congratulations @bpatel2107 on your article's publication in JOSS! Please consider signing up as a reviewer if you haven't already.

Many thanks to @the-rccg and @rogeriojorge for reviewing this, and @kellyrowland for editing.

@editorialbot
Copy link
Collaborator Author

🎉🎉🎉 Congratulations on your paper acceptance! 🎉🎉🎉

If you would like to include a link to your paper from your README use the following code snippets:

Markdown:
[![DOI](https://joss.theoj.org/papers/10.21105/joss.05866/status.svg)](https://doi.org/10.21105/joss.05866)

HTML:
<a style="border-width:0" href="https://doi.org/10.21105/joss.05866">
  <img src="https://joss.theoj.org/papers/10.21105/joss.05866/status.svg" alt="DOI badge" >
</a>

reStructuredText:
.. image:: https://joss.theoj.org/papers/10.21105/joss.05866/status.svg
   :target: https://doi.org/10.21105/joss.05866

This is how it will look in your documentation:

DOI

We need your help!

The Journal of Open Source Software is a community-run journal and relies upon volunteer effort. If you'd like to support us please consider doing either one (or both) of the the following:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
accepted published Papers published in JOSS Python recommend-accept Papers recommended for acceptance in JOSS. review Track: 3 (PE) Physics and Engineering
Projects
None yet
Development

No branches or pull requests

6 participants