pyOpenSci / software-submission

Submit your package for review by pyOpenSci here! If you have questions please post them here: https://pyopensci.discourse.group/
90 stars 33 forks source link

XGI #115

Closed nwlandry closed 8 months ago

nwlandry commented 1 year ago

Submitting Author: Name (@nwlandry) All current maintainers: (@nwlandry, @leotrs, @maximelucas, @iaciac, @lordgrilo, @acuschwarze, @thomasrobiglio, @alpatania) Package Name: XGI One-Line Description of Package: XGI is a Python package for higher-order networks. Repository Link: https://github.com/xgi-org/xgi Version submitted: 0.7 Editor: Szymon Moliński (@SimonMolinsky) Reviewer 1: Nhat (Jonny) Tran (@JonnyTran) Reviewer 2: Marta Leszczyńska (@Reckony) Archive: DOI Version accepted: 0.7.4 JOSS DOI: DOI Date accepted (month/day/year): 09/23/2023


Code of Conduct & Commitment to Maintain Package

Description

Scope

Domain Specific & Community Partnerships

- [ ] Geospatial
- [ ] Education
- [ ] Pangeo

Community Partnerships

If your package is associated with an existing community please check below:

[^1]: Please fill out a pre-submission inquiry before submitting a data visualization package.

Technical checks

For details about the pyOpenSci packaging requirements, see our packaging guide. Confirm each of the following by checking the box. This package:

Publication Options

JOSS Checks - [ ] The package has an **obvious research application** according to JOSS's definition in their [submission requirements][JossSubmissionRequirements]. Be aware that completing the pyOpenSci review process **does not** guarantee acceptance to JOSS. Be sure to read their submission requirements (linked above) if you are interested in submitting to JOSS. - [ ] The package is not a "minor utility" as defined by JOSS's [submission requirements][JossSubmissionRequirements]: "Minor ‘utility’ packages, including ‘thin’ API clients, are not acceptable." pyOpenSci welcomes these packages under "Data Retrieval", but JOSS has slightly different criteria. - [ ] The package contains a `paper.md` matching [JOSS's requirements][JossPaperRequirements] with a high-level description in the package root or in `inst/`. - [ ] The package is deposited in a long-term repository with the DOI: *Note: Do not submit your package separately to JOSS*

Are you OK with Reviewers Submitting Issues and/or pull requests to your Repo Directly?

This option will allow reviewers to open smaller issues that can then be linked to PR's rather than submitting a more dense text based review. It will also allow you to demonstrate addressing the issue via PR links.

Confirm each of the following by checking the box.

Please fill out our survey

P.S. Have feedback/comments about our review process? Leave a comment here

Editor and Review Templates

The editor template can be found here.

The review template can be found here.

NickleDave commented 1 year ago

Hi @nwlandry welcome to pyOpenSci!

Just checking: is this an intentional submission?
If so, please know we can't proceed with a review until all the fields in the template above are filled out.

At first glance XGI does appear to be in scope; we can close this and start a new issue later if you're not ready to submit just yet.

nwlandry commented 1 year ago

Hi @NickleDave - yes, it was an intentional submission, but I didn't realize all the missing fields. Sorry about that! I will correct this now. This is already published in JOSS, so I won't fill out the JOSS related items. Thanks so much.

NickleDave commented 1 year ago

Great, thank you!

nwlandry commented 1 year ago

Okay, should be all set I believe. Thanks so much!

SimonMolinsky commented 1 year ago

Hi @nwlandry 👋

I'll go through the submission process with you. Thanks for filling out the survey! Now it's my turn ♟️ I will perform initial checks of the package, and if everything is fine, the review process begins. Please, ping me in cases related to the package or review process.

SimonMolinsky commented 1 year ago

Editor in Chief checks

Hi there! Thank you for submitting your package for pyOpenSci review. Below are the basic checks that your package needs to pass to begin our review. If some of these are missing, we will ask you to work on them before the review process begins.

Please check our Python packaging guide for more information on the elements below.



Editor comments

SimonMolinsky commented 1 year ago

Hi @nwlandry !

I've checked your package, and it is beyond expectations. Every point from the checklist is valid! I've included two comments that may be interesting for you (but both are optional, do as you wish :) ):

  1. I didn't find the JOSS paper citation on your package webpage. Having the Citation header on your main page (additionally to the citation in the repo) would be nice. But it's up to you :) Usually, I cite packages by copying text from README or a documentation page.

  2. This is 100% optional: you may consider using the nbsphinx plugin to render your tutorials into the documentation webpage. But it could be tedious because you must track changes in your tutorials and/or have these in two places, so I understand if you don't want to do it :)

For now:

I will start looking for the reviewers for your package. It should take around 1 week, hopefully not more :) @nwlandry Could you help me a little with this task and provide ~5 categories that your package falls into? Thanks in advance!

nwlandry commented 1 year ago

Categories that XGI falls into:

nwlandry commented 1 year ago

Hope this is what you meant!

SimonMolinsky commented 1 year ago

@nwlandry thank you, this is what I needed!

SimonMolinsky commented 12 months ago

We have the first reviewer on board! Welcome @JonnyTran ! And we are close to assigning the second reviewer, and the package review will start soon.

SimonMolinsky commented 11 months ago

Hi, we have our second reviewer! Welcome @Reckony !

SimonMolinsky commented 11 months ago

@JonnyTran , @Reckony

Please confirm your involvement here, and copy & paste the review template from here: TEMPLATE into your responses. For now, it could be empty, you can go through it point by point and check empty boxes, or you can fill it when you end your review.

The review steps are described here: Review Steps. If you feel that something needs to be clarified, I'll guide you!

JonnyTran commented 11 months ago

Package Review (in progress; ETA 08/25/2023)

Please check off boxes as applicable, and elaborate in comments below. Your review is not limited to these topics, as described in the reviewer guide

Documentation

The package includes all the following forms of documentation:

Readme file requirements The package meets the readme requirements below:

The README should include, from top to bottom:

NOTE: If the README has many more badges, you might want to consider using a table for badges: see this example. Such a table should be more wide than high. (Note that the a badge for pyOpenSci peer-review will be provided upon acceptance.)

Usability

Reviewers are encouraged to submit suggestions (or pull requests) that will improve the usability of the package as a whole. Package structure should follow general community best-practices. In general please consider whether:

Functionality

For packages also submitting to JOSS

Note: Be sure to check this carefully, as JOSS's submission requirements and scope differ from pyOpenSci's in terms of what types of packages are accepted.

The package contains a paper.md matching JOSS's requirements with:

Final approval (post-review)

Estimated hours spent reviewing: 2


Review Comments

  1. I really love the extensive and high-quality documentation, vignettes and tutorials. It would be great if the notebooks at /main/tutorials/ can also be rendered on https://xgi.readthedocs.io (see link), to make it more reachable for users. This would also let you order the tutorial .ipynb's instead of being sorted by file name if viewed on GitHub.
  2. Regarding plotting XGI's hypergraphs, the functions to generate and customize matplotlib plots seems very purposed and useful. If a user wanted to use another plotting tool (e.g. bokeh, plotly), it would be easier for them to work with XGI if there are functions to export nodes & edges data as a Pandas dataframe, and ideally return two dataframes for the nodes and the edges.
  3. If XGI's API is designed to be similar to NetworkX's, would users expect NetworkX's functions are compatible with XGI's Hypergraph's?
Reckony commented 11 months ago

Package Review

Please check off boxes as applicable, and elaborate in comments below. Your review is not limited to these topics, as described in the reviewer guide

Documentation

The package includes all the following forms of documentation:

Readme file requirements The package meets the readme requirements below:

The README should include, from top to bottom:

NOTE: If the README has many more badges, you might want to consider using a table for badges: see this example. Such a table should be more wide than high. (Note that the a badge for pyOpenSci peer-review will be provided upon acceptance.)

Usability

Reviewers are encouraged to submit suggestions (or pull requests) that will improve the usability of the package as a whole. Package structure should follow general community best-practices. In general please consider whether:

Functionality

For packages also submitting to JOSS

Note: Be sure to check this carefully, as JOSS's submission requirements and scope differ from pyOpenSci's in terms of what types of packages are accepted.

The package contains a paper.md matching JOSS's requirements with:

Final approval (post-review)

Estimated hours spent reviewing:


Review Comments

https://github.com/xgi-org/xgi/issues/453

JonnyTran commented 11 months ago

Hi all, just letting you know I'm still working my review, but have a few job interviews coming up that filled up my calendar. Would it be okay with @nwlandry if I finish my review by Aug 18, or would you prefer I drag it closer?

nwlandry commented 11 months ago

Hi @JonnyTran! Thanks for reaching out! From our end, there is no rush, so August 18th is fine. Best of luck with the interviews!

SimonMolinsky commented 11 months ago

Hi @Reckony

Do you need any help or guidance with the review? I'm here to help you. We can even make a call and discuss it :)

Reckony commented 11 months ago

Hi folks, sorry for delay in reviewing, I am in work marathon at the moment due to important milestones… Nevertheless I am working on it to deliver as said 👌

Reckony commented 10 months ago

Hi, could you please refer to my review questions at the bottom of review checklist? I'm almost done :)

SimonMolinsky commented 10 months ago

@Reckony Thanks for your input!

About your questions: 1 - Yes, this should be done. Could you open an issue in the package's repository and ask the authors about similar packages? Then, could you paste the issue link in this thread to let everyone know something is happening? 2 - JOSS accepted the package in the past. You can skip those checks!

SimonMolinsky commented 10 months ago

@nwlandry I am curious if you have seen comments from @JonnyTran - could you elaborate here?

@JonnyTran - do those comments block the package from the acceptance? Or are those propositions for future development of the package?

maximelucas commented 10 months ago

Thanks everyone for your time on this. I'm one of the maintainers of XGI, I'll start replying and Nicholas can complete my answers later.

@Reckony 's questions:

  1. It's a good thing to have, you're right. We already have a list of other packages at the end of the README. Our JOSS paper also lists these and describes the differences of XGI with them. Were you thinking of having more than this?
    1. We already published in JOSS, see previous answer.

@JonnyTran's questions:

  1. It's a great idea! Thanks for the links. It's actually on our to-do list. We're in the middle of making more tutorials, and thought we would work on integrating them into the docs once they are done.
  2. That's a good idea, we'll look into that. Right now it's possible to have a {edge_id: node_members} and {node_id: edge_memberships}dictionaries with H.edges.members(dtype=dict) and H.nodes.memberships(). Is that what you were thinking, but in a pandas dataframe?
  3. I never thought of that. I would've thought that users wouldn't think they could use networkx functions. Are you thinking of a place in particular in the documentation that might be confusing regarding this, or a way to make sure it's clear? In any case it's not designed so close so as to be able to use networkx functions, but a few might incidentally work, we can check this.
Reckony commented 10 months ago

Apart from issue https://github.com/xgi-org/xgi/issues/453 review done.

JonnyTran commented 10 months ago

@nwlandry I am curious if you have seen comments from @JonnyTran - could you elaborate here?

@JonnyTran - do those comments block the package from the acceptance? Or are those propositions for future development of the package?

I meant to comment as suggestions for future development and none are blocking. But for comment 2, I can add an issue for xgi.to_bipartite_pandas_dataframe(H)

JonnyTran commented 10 months ago

@maximelucas

@JonnyTran's questions:

  1. That's a good idea, we'll look into that. Right now it's possible to have a {edge_id: node_members} and {node_id: edge_memberships}dictionaries with H.edges.members(dtype=dict) and H.nodes.memberships(). Is that what you were thinking, but in a pandas dataframe?

Actually I misunderstood about xgi.to_bipartite_pandas_dataframe(H) so please nvm about that. I meant to suggest that XGI can have functions similar to nx.to_pandas_edgelist() to export to dataframes, which is more conducive for working with other plotting libraries.

  1. I never thought of that. I would've thought that users wouldn't think they could use networkx functions. Are you thinking of a place in particular in the documentation that might be confusing regarding this, or a way to make sure it's clear? In any case it's not designed so close so as to be able to use networkx functions, but a few might incidentally work, we can check this.

I couldn't find any particular documentation suggest compatibility, but in using an API that's similar to NetworkX's, I think some users might try the familiar method nx.neighbors(H, n_id) instead of H.nodes.neighbors(n_id). I think it is more helpful to make it clear that XGI is not meant to be an extension of NetworkX to avoid these trials-and-errors.

SimonMolinsky commented 9 months ago

I've seen that you pushed a PR with the requested changes in README.md (badges). @nwlandry , @maximelucas could you let us know when the PR is accepted?

nwlandry commented 9 months ago

Hi @SimonMolinsky! So sorry for my delayed reply on this. I will certainly let you know when the PR is merged. I have looked through all the comments and suggestions and in response, we are doing the following:

Because of scheduling constraints, I anticipate that we will merge the PR addressing the immediate changes sometime next week.

nwlandry commented 9 months ago

Hi @SimonMolinsky! PR #470 is now merged and I published a new XGI version on PyPI to reflect this. Thanks so much.

SimonMolinsky commented 9 months ago

@Reckony , @JonnyTran Could you look into the newest changes and update your reviews accordingly? We are close to the package acceptance :)

Reckony commented 9 months ago

Final review done, no more issues from my side. Thanks

JonnyTran commented 9 months ago

Everything looks great to me, and I approve the Final approval (post-review)!

SimonMolinsky commented 9 months ago

🎉 XGI has been approved by pyOpenSci! Thank you @nwlandry for submitting XGI and many thanks to @Reckony and @JonnyTran for reviewing this package! 😸

Author Wrap Up Tasks

@nwlandry there are two tasks for you to perform:

It looks like you would like to submit this package to JOSS. Here are the next steps: - [x] Once the JOSS issue is opened for the package, we strongly suggest that you subscribe to issue updates. This will allow you to continue to update the issue labels on this review as it goes through the JOSS process. - [x] Login to the JOSS website and fill out the JOSS submission form using your Zenodo DOI. **When you fill out the form, be sure to mention and link to the approved pyOpenSci review.** JOSS will tag your package for expedited review if it is already pyOpenSci approved. - [x] Wait for a JOSS editor to approve the presubmission (which includes a scope check). - [x] Once the package is approved by JOSS, you will be given instructions by JOSS about updating the citation information in your README file. - [x] When the JOSS review is complete, add a comment to your review in the pyOpenSci software-review repo here that it has been approved by JOSS. An editor will then add the JOSS-approved label to this issue. 🎉 Congratulations! You are now published with both JOSS and pyOpenSci! 🎉 --- If you have any feedback for us about the review process please feel free to share it here. We are always looking to improve our process and documentation in the [peer-review-guide](https://www.pyopensci.org/software-peer-review). --- @JonnyTran and @Reckony this survey [post-review survey](https://forms.gle/BLGVCfUdiJHS5YJY7) is designed for reviewers too, so please fill it out when you're ready! (1) @nwlandry I know that your package is published in JOSS, so I've checked a few boxes for you. (2) @nwlandry if you want to, you can submit a blog post highlighting **XGI**, mostly for promotional purposes. [Here's an example in markdown](https://github.com/pyOpenSci/pyopensci.github.io/blob/main/_posts/2019-11-18-pandera-dataframe-validation.md).
SimonMolinsky commented 9 months ago

Editor Final Checks

Please complete the final steps to wrap up this review. Editor, please do the following:

nwlandry commented 9 months ago

@SimonMolinsky Thanks! I just completed the survey and added the badge. I will bring up the blog post at our all-team meeting on October 10th.

SimonMolinsky commented 9 months ago

@nwlandry The one last thing is the badge:

Add the badge for pyOpenSci peer-review to the README.md of XGI. The badge should be [![pyOpenSci](https://tinyurl.com/y22nb8up)](https://github.com/pyOpenSci/software-review/issues/115).

Let me know when it's done.

I'm not sure if you or your friends are the part of pyOpenSci Slack community at this moment, but if not, and you want to, then let me know, and I will send invitations for you :)

nwlandry commented 8 months ago

Hi @SimonMolinsky, thanks for the reminder! Should be done now. I would love an invitation to the Slack and I will ask the rest of the XGI team as well. Thanks @JonnyTran and @Reckony for your helpful reviews!

SimonMolinsky commented 8 months ago

@nwlandry I'll close the issue soon (at the end of this week) because XGI is ready to be a part of pyOpenSci. We are honored that you have submitted your work here!

About the blog post: we can communicate here or by email. I will email you about joining the pyOpenSci community.

@Reckony & @JonnyTran Thank you for your support! :raised_hands: