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]: QXTools: A Julia framework for distributed quantum circuit simulation #3711

Closed
40 tasks done
whedon opened this issue Sep 9, 2021 · 100 comments
Closed
40 tasks done
Assignees
Labels
accepted Julia published Papers published in JOSS recommend-accept Papers recommended for acceptance in JOSS. review

Comments

@whedon
Copy link

whedon commented Sep 9, 2021

Submitting author: @nmoran (Niall Moran)
Repository: https://github.com/JuliaQX/QXTools.jl
Version: v1.0.0
Editor: @jarvist
Reviewer: @goerz, @obliviateandsurrender
Archive: 10.5281/zenodo.6089937

⚠️ JOSS reduced service mode ⚠️

Due to the challenges of the COVID-19 pandemic, JOSS is currently operating in a "reduced service mode". You can read more about what that means in our blog post.

Status

status

Status badge code:

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

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

@goerz & @obliviateandsurrender, please carry out your review in this issue by updating the checklist below. If you cannot edit the checklist please:

  1. Make sure you're logged in to your GitHub account
  2. Be sure to accept the invite at this URL: https://github.com/openjournals/joss-reviews/invitations

The reviewer guidelines are available here: https://joss.readthedocs.io/en/latest/reviewer_guidelines.html. Any questions/concerns please let @jarvist 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

Review checklist for @goerz

✨ Important: Please do not use the Convert to issue functionality when working through this checklist, instead, please open any new issues associated with your review in the software repository associated with the submission. ✨

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 repository url?
  • 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 (@nmoran) 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

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? #4037
  • 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 and who the target audience is?
  • 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?

Review checklist for @obliviateandsurrender

✨ Important: Please do not use the Convert to issue functionality when working through this checklist, instead, please open any new issues associated with your review in the software repository associated with the submission. ✨

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 repository url?
  • 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 (@nmoran) 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

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 and who the target audience is?
  • 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?
@whedon
Copy link
Author

whedon commented Sep 9, 2021

Hello human, I'm @whedon, a robot that can help you with some common editorial tasks. @goerz, @obliviateandsurrender it looks like you're currently assigned to review this paper 🎉.

⚠️ JOSS reduced service mode ⚠️

Due to the challenges of the COVID-19 pandemic, JOSS is currently operating in a "reduced service mode". You can read more about what that means in our blog post.

⭐ Important ⭐

If you haven't already, you should seriously consider unsubscribing from GitHub notifications for this (https://github.com/openjournals/joss-reviews) repository. As a reviewer, you're probably currently watching this repository which means for GitHub's default behaviour you will receive notifications (emails) for all reviews 😿

To fix this do the following two things:

  1. Set yourself as 'Not watching' https://github.com/openjournals/joss-reviews:

watching

  1. You may also like to change your default settings for this watching repositories in your GitHub profile here: https://github.com/settings/notifications

notifications

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

@whedon commands

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

@whedon generate pdf

@whedon
Copy link
Author

whedon commented Sep 9, 2021

Software report (experimental):

github.com/AlDanial/cloc v 1.88  T=0.03 s (1067.6 files/s, 86189.2 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Julia                           16            253            156           1221
Markdown                         7            108              0            313
YAML                             4              7             16            160
SVG                              1              0              0            133
TOML                             2              5              0             50
-------------------------------------------------------------------------------
SUM:                            30            373            172           1877
-------------------------------------------------------------------------------


Statistical information for the repository '580131f2682346f775ab4caf' was
gathered on 2021/09/09.
No commited files with the specified extensions were found.

@whedon
Copy link
Author

whedon commented Sep 9, 2021

PDF failed to compile for issue #3711 with the following error:

 Can't find any papers to compile :-(

@jarvist
Copy link

jarvist commented Sep 9, 2021

@whedon generate pdf from branch joss-paper

@whedon
Copy link
Author

whedon commented Sep 9, 2021

Attempting PDF compilation from custom branch joss-paper. Reticulating splines etc...

@whedon
Copy link
Author

whedon commented Sep 9, 2021

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

@jarvist
Copy link

jarvist commented Sep 9, 2021

Thanks for agreeing to review Michael and Utkarsh! I hope working to a deadline of two weeks will be feasible?

The three 'reviewer' sections on the online documentation are probably the single best place to refer to while doing the review.
https://joss.readthedocs.io/en/latest/reviewer_guidelines.html

If you come up with any questions or difficulties with installation or understanding what the package does, this is very useful information to feed back to the developers. Small issues are probably best discussed here, but if you have a long list of changes suggested you may want to open up dedicated issues on the software repository.

@goerz
Copy link

goerz commented Sep 9, 2021

Yeah, I can definitely give feedback within the next two weeks.

Just a small meta-comment (is there an issue tracker for that?): For the review checklist, it would be convenient for the review lists of the different reviewers to be in a different comment. Last paper I reviewed, I accidentally checked off items for the other reviewer. If they're separate comments, I can bookmark a link to just my checklist.

@jarvist
Copy link

jarvist commented Sep 9, 2021

OK, Utkarsh is busy this week, so let's work to a Sept 30th deadline. (Of course, any time before is also great!)

Thank you for the meta comment. I have also managed to do this while reviewing. I'll take it to the JOSS Editor's Slack - I think there's a channel for Whedon development.

@obliviateandsurrender
Copy link

Thank you! The deadline seems perfect. I will definitely try to give my feedback well ahead of it.

@jarvist
Copy link

jarvist commented Sep 10, 2021

Just a small meta-comment...

After brief discussion on the Slack, the answer is that yes there is an issue tracker for such things, and I've added an issue & will attempt to keep track of it:
openjournals/joss#988

@whedon
Copy link
Author

whedon commented Sep 23, 2021

👋 @goerz, please update us on how your review is going (this is an automated reminder).

@whedon
Copy link
Author

whedon commented Sep 23, 2021

👋 @obliviateandsurrender, please update us on how your review is going (this is an automated reminder).

@goerz
Copy link

goerz commented Sep 27, 2021

I've had a look at the software, and verified that it can be installed and works as described. The source code appears to be of high quality, implementing non-trivial methods for quantum circuit simulation, which is an important field of research. Thus, the software package itself appears to be at a state of development that warrants publication. However, the documentation and the submitted JOSS paper are completely insufficient at this time. Thus, I cannot support publication. However, I believe that if the authors substantially improve the documentation, a revised paper would be publishable in JOSS. Presumably, this would not require any changes to the software itself.

Software paper

The description of the purpose, scope, and limitations of the package is insufficient.

My recommendation would be to assume as a target audience a student or researcher who has basic familiarity with quantum circuits (as in, they've read a bit of Nielsen & Chuang or have gone through some Qiskit tutorials). I would not assume knowledge of tensor network methods or matrix product states. The JOSS paper, and the first page of the documentation, should give me an "elevator pitch", allowing me to evaluate whether to consider using QXTools for some project.

With this in mind, first, explain the purpose of the package. "Simulating quantum circuits" is too vague. What does that mean, exactly? Just running a Hilbert space state through an ideal circuit once? Classically noisy gates? Decoherence? Parametric quantum circuits? Statistical sampling of measurements?

Second, what are the distinguishing features of QXTools? Why would I want to use it? It seems like there are two distinguishing features: the use of tensor network methods, and performance on distributed HPC clusters and/or GPU environments. Please give at least a one-paragraph outline of how tensor network methods work and how they affect the simulation of quantum circuits. This probably ties in with the purpose of the package: For a circuit with less than 10 qubits, I can probably do "circuit simulation" just with basic linear algebra directly in Julia, and probably wouldn't even look for a specialized package (except maybe for some kind of extremely user-friendly API). For what kind of circuit and circuit size is QXTools primarily intended? In the JOSS paper, the "Statement of Need" should reflect this information, as well as the "State of the field", which is mostly missing: How does QXTools compare to other packages? The Readme mentions

The design and implementation of QXTools and related packages was inspired by many other frameworks and packages including ITensors.jl, TensorOperations.jl, Yao.jl, TAL-SH and ExaTN.

You will have to discuss how QXTools compares to these packages. There are also packages outside of the Julia ecosystem, e.g. Qiskit, that would be relevant.

Lastly, please discuss the limitations of QXTools: To how big a circuit can I push the package before simulation becomes infeasible? What are the memory requirements that I might run into? How does this compare to other packages?

Documentation

  • There is a CONTRIBUTING.md file, but the link from the README is broken
  • "Statement of Needs" is missing from the documentation
  • The Example in the Readme is insufficient. At least in the full documentation, you will have to expand this. What is the circuit diagram for a GHZ circuit? What is the corresponding tensor network circuit, and how does it get calculated? What's a "contraction plan", conceptually? What are we actually simulating? This example (3 qubits) seems trivially small, which might be a good thing as it might allow explaining the tensor network circuit etc., going through the calculation "by hand". It might also be good to have an example that's more realistic for the intended usage of QXTools. In a poster video from one of Julia conferences you seem to be running a simulation for a 60 qubit circuit on a laptop, which seems very non-trivial to me. So that might a good example to illustrate how the tensor network approach allows you to handle large circuits. Running on an HPC cluster is probably hard to describe in any reproducible way, but that's something where a screencast video could be useful, as an illustration of a possible workflow (totally optional).
  • There is a section "Tutorials" in the documentation that is completely blank. I would strongly recommend adding several tutorials that illustrate the usage of the package.
  • I would recommend having a single coherent documentation for the QXTools package that includes the documentation for the various sub-packages in the JuliaQX organization (EXZoo, QXContexts, etc.), including explanations of how everything fits together. The sub-packages might then only have a basic skeleton documentation that includes the auto-generated API but refers to the main documentation for explanations / tutorials / etc.

Functionality

  • Performance: There are no performance benchmarks in the documentation. While not strictly necessary for publication in JOSS, performance on distributed HPC clusters is a primary advertised feature of the package, which would warrant some benchmarking analysis, including an analysis of parallelization overhead.

Other issues

  • A small matter of style: I don't think "Julialang" is generally used as the name of the Julia language (except for as a Twitter hashtag)

@goerz
Copy link

goerz commented Sep 27, 2021

@jarvist Done. If you (and the authors) think that the documentation can be brought up to speed within a reasonable timeframe, I'd be happy to review a revised version.

@obliviateandsurrender
Copy link

@jarvist I had left my suggestions for the authors to address in the issue here, a few days ago. These are majorly based on the issues regarding the absence of performance data for the package, the lack of extensive documentation, and introductory tutorials, as pointed out in even greater detail by @goerz. I believe this package could be considered for publication in JOSS only after authors make significant improvements on the issues mentioned above.

@jarvist
Copy link

jarvist commented Oct 4, 2021

Wonderful! Thank you both.

@jarvist
Copy link

jarvist commented Oct 4, 2021

@nmoran , have you had time to consider a response?
I appreciate that writing documentation is a large and quite open ended task, but I think the reviewer's concerns are bona fide, and that better documentation would improve the package in general.

@nmoran
Copy link

nmoran commented Oct 5, 2021

First I'd like to thank @obliviateandsurrender and @goerz for taking the time to review our work and provide such detailed feedback. We have been planning to write some tutorial material, but have not managed to get to it yet. Further performance testing is underway also so we expect to have some updated results shortly which we can include. We expect to be able to have both these done within the next two months if this would be reasonable?

@jarvist
Copy link

jarvist commented Oct 13, 2021

@goerz and @obliviateandsurrender , would you be happy with this sort of time frame?

If so, I'll set some automatic reminders with Whedon & set a 'paused' flag on this review issue, and we can pick up where we left off in two months time.

@goerz
Copy link

goerz commented Oct 13, 2021

Sure!

@obliviateandsurrender
Copy link

Definitely!

@whedon
Copy link
Author

whedon commented Feb 15, 2022

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

OK DOIs

- 10.1137/141000671 is OK
- 10.22331/q-2020-10-11-341 is OK
- 10.1088/1751-8121/aa6dc3 is OK
- 10.26421/qic15.9-10-3 is OK
- 10.1088/2058-9565/ab7eeb is OK
- 10.1145/3173045 is OK
- 10.1109/qcs54837.2021.00006 is OK
- 10.1109/canopiehpc54579.2021.00005 is OK
- 10.21105/joss.00819 is OK
- 10.1109/sc41405.2020.00018 is OK

MISSING DOIs

- None

INVALID DOIs

- None

@danielskatz
Copy link

Thanks @nmoran - I'll regenerate the draft now and proofread it

@danielskatz
Copy link

@whedon recommend-accept from branch joss-paper

@whedon
Copy link
Author

whedon commented Feb 15, 2022

Attempting dry run of processing paper acceptance...

@whedon
Copy link
Author

whedon commented Feb 15, 2022

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

OK DOIs

- 10.1137/141000671 is OK
- 10.22331/q-2020-10-11-341 is OK
- 10.1088/1751-8121/aa6dc3 is OK
- 10.26421/qic15.9-10-3 is OK
- 10.1088/2058-9565/ab7eeb is OK
- 10.1145/3173045 is OK
- 10.1109/qcs54837.2021.00006 is OK
- 10.1109/canopiehpc54579.2021.00005 is OK
- 10.21105/joss.00819 is OK
- 10.1109/sc41405.2020.00018 is OK

MISSING DOIs

- None

INVALID DOIs

- None

@whedon
Copy link
Author

whedon commented Feb 15, 2022

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

Check final proof 👉 openjournals/joss-papers#2963

If the paper PDF and Crossref deposit XML look good in openjournals/joss-papers#2963, then you can now move forward with accepting the submission by compiling again with the flag deposit=true e.g.

@whedon accept deposit=true from branch joss-paper 

@danielskatz
Copy link

👋 @nmoran - please change the metadata in the zenodo deposit so that the title and authors match those of the paper

@danielskatz
Copy link

I've also suggested a bunch of changes in the paper and bib in JuliaQX/QXTools.jl#54

@nmoran
Copy link

nmoran commented Feb 15, 2022

Thanks @danielskatz, I've merged in your changes and updated the zenodo metadata. New doi is https://doi.org/10.5281/zenodo.6089937

@danielskatz
Copy link

@whedon set 10.5281/zenodo.6089937 as archive

@whedon
Copy link
Author

whedon commented Feb 15, 2022

OK. 10.5281/zenodo.6089937 is the archive.

@danielskatz
Copy link

@whedon recommend-accept from branch joss-paper

@whedon
Copy link
Author

whedon commented Feb 15, 2022

Attempting dry run of processing paper acceptance...

@whedon
Copy link
Author

whedon commented Feb 15, 2022

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

OK DOIs

- 10.1137/141000671 is OK
- 10.22331/q-2020-10-11-341 is OK
- 10.1088/1751-8121/aa6dc3 is OK
- 10.26421/qic15.9-10-3 is OK
- 10.1088/2058-9565/ab7eeb is OK
- 10.1145/3173045 is OK
- 10.1109/qcs54837.2021.00006 is OK
- 10.1109/canopiehpc54579.2021.00005 is OK
- 10.21105/joss.00819 is OK
- 10.1109/sc41405.2020.00018 is OK

MISSING DOIs

- None

INVALID DOIs

- None

@whedon
Copy link
Author

whedon commented Feb 15, 2022

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

Check final proof 👉 openjournals/joss-papers#2964

If the paper PDF and Crossref deposit XML look good in openjournals/joss-papers#2964, then you can now move forward with accepting the submission by compiling again with the flag deposit=true e.g.

@whedon accept deposit=true from branch joss-paper 

@danielskatz
Copy link

@whedon accept deposit=true from branch joss-paper

@whedon
Copy link
Author

whedon commented Feb 15, 2022

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

@whedon whedon added accepted published Papers published in JOSS labels Feb 15, 2022
@whedon
Copy link
Author

whedon commented Feb 15, 2022

🐦🐦🐦 👉 Tweet for this paper 👈 🐦🐦🐦

@whedon
Copy link
Author

whedon commented Feb 15, 2022

🚨🚨🚨 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.03711 joss-papers#2965
  2. Wait a couple of minutes, then verify that the paper DOI resolves https://doi.org/10.21105/joss.03711
  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...

@danielskatz
Copy link

We're waiting for some backend processing to finish so that this is officially published and the DOI works. We'll add another comment here when this is complete.

@danielskatz
Copy link

Congratulations to @nmoran (Niall Moran) and co-authors!!

And thanks to @goerz and @obliviateandsurrender for reviewing, and @jarvist for editing!
We couldn't do this without you!

@whedon
Copy link
Author

whedon commented Feb 15, 2022

🎉🎉🎉 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.03711/status.svg)](https://doi.org/10.21105/joss.03711)

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

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

This is how it will look in your documentation:

DOI

We need your help!

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:

@nmoran
Copy link

nmoran commented Feb 15, 2022

Great! Thanks @danielskatz, @goerz and @obliviateandsurrender for all your time and efforts.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
accepted Julia published Papers published in JOSS recommend-accept Papers recommended for acceptance in JOSS. review
Projects
None yet
Development

No branches or pull requests

6 participants