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]: Netgraph: Publication-quality Network Visualisations in Python #5372

Closed
editorialbot opened this issue Apr 15, 2023 · 125 comments
Closed
Assignees
Labels
accepted published Papers published in JOSS Python recommend-accept Papers recommended for acceptance in JOSS. review TeX Track: 7 (CSISM) Computer science, Information Science, and Mathematics

Comments

@editorialbot
Copy link
Collaborator

editorialbot commented Apr 15, 2023

Submitting author: @paulbrodersen (Paul Brodersen)
Repository: https://github.com/paulbrodersen/netgraph/
Branch with paper.md (empty if default branch): joss
Version: 4.13.1
Editor: @rkurchin
Reviewers: @ortega2247, @idoby
Archive: 10.5281/zenodo.8138403

Status

status

Status badge code:

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

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

@jonjoncardoso & @ortega2247, 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 @rkurchin 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 @ortega2247

📝 Checklist for @idoby

@editorialbot editorialbot added Python review TeX Track: 7 (CSISM) Computer science, Information Science, and Mathematics labels Apr 15, 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.41 s (283.7 files/s, 306157.9 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
SVG                              4              4            118          95014
Python                          43           2159           3416           5190
Markdown                         2             97              0            311
reStructuredText                37           1750          14034            307
TeX                              1              0              0             76
Jupyter Notebook                23              0           1405             56
TOML                             1              4              0             51
YAML                             2              6             18             32
DOS Batch                        1              8              1             26
make                             1              4              7              9
-------------------------------------------------------------------------------
SUM:                           115           4032          18999         101072
-------------------------------------------------------------------------------


gitinspector failed to run statistical information for the repository

@editorialbot
Copy link
Collaborator Author

Wordcount for paper.md is 441

@editorialbot
Copy link
Collaborator Author

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

OK DOIs

- 10.6084/m9.figshare.1164194 is OK
- 10.1007/3-540-45848-4_57 is OK
- 10.1101/gr.1239303 is OK
- 10.1609/icwsm.v3i1.13937 is OK
- 10.1109/MCSE.2007.55 is OK

MISSING DOIs

- None

INVALID DOIs

- None

@editorialbot
Copy link
Collaborator Author

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

@ortega2247
Copy link

ortega2247 commented Apr 16, 2023

Review checklist for @ortega2247

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/paulbrodersen/netgraph/?
  • 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 (@paulbrodersen) 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?

@rkurchin
Copy link

Hi @ortega2247 and @jonjoncardoso, just checking in here! Let me know if you have any questions about the review process. As a reminder, you should feel free to file issues/open PR's in the project repository; please link to this issue when doing so for easy tracking.

@rkurchin
Copy link

rkurchin commented May 4, 2023

🔔 ping @ortega2247 and @jonjoncardoso!

@rkurchin
Copy link

@ortega2247, please let me know if you'll be able to finish review. @jonjoncardoso, if you can no longer review, please also let me know and I'll find an alternative reviewer.

@jonjoncardoso
Copy link

jonjoncardoso commented May 11, 2023 via email

@ortega2247
Copy link

Hi Rachel, same here! Sorry for the delay. I’ll also work in the review this weekend

@ortega2247
Copy link

Minor issue: paulbrodersen/netgraph#68

@ortega2247
Copy link

Minor documentation issues: paulbrodersen/netgraph#69

@ortega2247
Copy link

The current netgraph github repo has test suite but it is not automated. It would be great to have it automated

@ortega2247
Copy link

The paper could extend a bit and describe the algorithms that are implemented. Additionally, the authors could add details about how "... it handles networks with multiple components gracefully", what they mean by that, and how is better than other network visualization algorithms

@ortega2247
Copy link

@rkurchin Hi Rachel, just wanted to let you know that I finished my review

@paulbrodersen
Copy link

Hi @ortega2247, first of all thank you for taking the time to try out my library and review my work.

I have addressed some of your concerns on Netgraph's github issue tracker.
Below, I will summarise these efforts and expand on the issues that weren't addressed there.


Comments

Minor issue: paulbrodersen/netgraph#68

As I commented here, this issue seems unrelated to my code base and is hence unfortunately outside the scope of my library and outside of my control.

Minor documentation issues: paulbrodersen/netgraph#69

I addressed this double issue in two commits. Commit #643a5e9 expands the documentation to provide instructions for installing all optional dependencies required to run the examples in the documentation. Commit #34e200d expands the documentation to provide guidance for troubleshooting issues with matplotlib's event handling and hence Netgraph's interactive graph classes such as EditableGraph. This includes a link to matplotlib's documentation, where all currently available interactive backends are listed, and thus hopefully also addresses @rkurchin's additional issue.
Regarding the second issue, I am confident that with a correctly configured matplotlib backend, you will be able to run the EditableGraph class (even) with a Windows installation.

The current netgraph github repo has test suite but it is not automated. It would be great to have it automated

As mentioned in the paper, netgraph uses pytest for automated testing. The test-suite can be executed by switching to the top level directory and running the pytest command. This is the standard procedure for any test suite using pytest but I have made another note in the documentation to that effect. The relevant commit can be found here.

The paper could extend a bit and describe the algorithms that are implemented.

Currently, the node layout and edge routing algorithms and the full API of my implementations are listed here and here in the online documentation. In principle, I am happy to add a similar list to the article, and indeed an earlier draft contained such a list. My concern is that the number of implemented node layout algorithms is rapidly growing, and as a result, any explicit list in the journal article would likely be out of date by the time it was read by the reader.

@rkurchin What is JOSS' policy on outgoing links? The example paper does not include any.

If outgoing links are allowed, I would suggest substituting the following sentence in the summary section

Netgraph implements numerous node layout algorithms and several edge routing routines."

with

At the time of writing, Netgraph provides the following node layout algorithms:
- the Fruchterman-Reingold algorithm a.k.a. the "spring" layout,
- the Sugiyama algorithm a.k.a. the "dot" layout for directed, acyclic graphs,
- a radial tree layout for directed, acyclic graphs,
- a circular node layout (with optional edge crossing reduction),
- a bipartite node layout for bipartite graphs (with optional edge crossing reduction),
- a layered node layout for multipartite graphs (with optional edge crossing reduction),
- a shell layout for multipartite graphs (with optional edge crossing reduction),
- a community node layout for modular graphs, and
- a "geometric" node layout for graphs with defined edge lengths but unknown node positions.

Additionally, links or edges between the nodes can be straight, curved (avoiding collisions with other nodes and edges), or bundled.
However, as new layout routines are added regularly to Netgraph, consult the online documentation [here](https://netgraph.readthedocs.io/en/latest/node_layout.html) for an up-to-date list.

Additionally, the authors could add details about how "... it handles networks with multiple components gracefully", what they mean by that, and how is better than other network visualization algorithms

Node layout algorithms are typically only defined for single components. When they are applied to disconnected/multi-component graphs, they often result in numerical instabilities and thus non-interpretable visualisations. For the spring layout a.k.a. the Fruchterman-Reingold algorithm, which is the default node layout algorithm used in all major network analysis python libraries (networkx/igraph/graph-tool), example visualisations and discussions of this problem can be found here and here. Unlike other libraries, netgraph wraps the implemented node layout algorithms such that each component is processed individually, thus avoiding the numerical instabilities caused by a naive application of the node layout algorithms to unconnected graphs. Typically, the layouts for the individual components are then arranged w.r.t. each other using a rectangle-packing algorithm implemented in the rectangle-packer library. This behaviour is documented here in the documentation.

Having only briefly outlined the gist of the problem that is being solved by this feature of the library, I hope it is clear that a publishable and hence necessarily more thorough discussion of this issue would not mesh well with the aim to provide "a clear description of the high-level functionality and purpose of the software for a diverse, non-specialist audience". I would hence like to avoid expanding on this issue in this paper.


Outstanding items on the checklist

Installation instructions: Is there a clearly-stated list of dependencies? Ideally these should be handled with an automated package management solution.

Brief installations instructions are given in the README on github and extensive installation instructions are given in the documentation on ReadTheDocs here, both for pip and conda/mamba. The requirements are documented in various machine readable formats here, here, here, and here, supporting a wide range of different pip versions as well as installation via conda/mamba from conda-forge. I would hence appreciate further clarifications why this box is left unchecked.

Automated tests: Are there automated tests or manual steps described so that the functionality of the software can be verified?

I have addressed this in a comment above.

Summary: Has a clear description of the high-level functionality and purpose of the software for a diverse, non-specialist audience been provided?

I am assuming the lack of a checkmark is due to the lack of a complete listing of all available node layout and edge routing algorithms, and are hence addressed by my suggested changes to the text outlined above. Otherwise, further clarifications would be much appreciated.

I hope this addresses all issues raised so far. If you have any further concerns, please let me know at your earliest convenience.

@rkurchin
Copy link

Outgoing links should be fine!

@paulbrodersen
Copy link

@editorialbot generate pdf

@editorialbot
Copy link
Collaborator Author

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

@paulbrodersen
Copy link

Updated the draft to include a list of implemented layout algorithms.

@rkurchin
Copy link

Checking in with @jonjoncardoso regarding starting a review and @ortega2247 regarding whether remaining concerns have been satisfied

@idoby
Copy link

idoby commented Jul 18, 2023

Just my two cents - the word artist is well-defined in the context libraries that build on top of matplotlib

Maybe it should be capitalized ("Artist") to be clear

@danielskatz
Copy link

Thanks @idoby - I would still prefer to have it defined/explained, as JOSS papers may be read by a variety of people with a variety of backgrounds and knowledge

@idoby
Copy link

idoby commented Jul 18, 2023

I still suggest to capitalize it, to make it clear that the author is referring to the MPL class/concept

@paulbrodersen
Copy link

While I proofread the paper, can you update the title of the Zenodo archive to match that of the paper?

Updated the title of the Zenodo archive.

I also have some small changes to suggest, as shown in paulbrodersen/netgraph#72 - please merge this, or let me know what you disagree with.

I merged the PR. All the suggestions and corrections looked good to me. Thank you very much!

In addition, I was confused by the word "artist" when I first read it. You might want to introduce this term and briefly explain it in the context of your software when you first use it.

I amended the first paragraph mentioning the term "artist" to the following (commit 62a4d81):

Each visualisation can be customised in various ways. Most parameters can be set using a scalar or string. In this case, the value is applied to all nodes or edges (depending on the parameter). To style each node or each edge differently, supply a dictionary instead. Furthermore, Netgraph's NodeArtist and EdgeArtist classes, i.e. the Python objects that instruct a renderer to paint nodes and edges onto the canvas, are derived from Matplotlib's PathPatch class; similarly, node and edge labels are Matplotlib Text instances. Hence all node artists, edge artists, and labels can be manipulated using standard matplotlib syntax after the initial draw.

@idoby Maybe it should be capitalized ("Artist") to be clear.

Writing "Matplotlib's PathPatch Artist class in the paragraph above seemed convoluted. I hence simply named Netgraph's NodeArtist and EdgeArtist classes, and defined what they do. In this way, people unfamiliar with the term's usage in the context of matplotlib can understand what these two classes do, and people that are familiar with matplotlib will see the term Artist highlighted and won't even need to read the subordinate clause to know what is going on.

@idoby
Copy link

idoby commented Jul 19, 2023

@paulbrodersen Good solution 👍

@danielskatz
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.6084/m9.figshare.1164194 is OK
- 10.1007/3-540-45848-4_57 is OK
- 10.1101/gr.1239303 is OK
- 10.1609/icwsm.v3i1.13937 is OK
- 10.1109/MCSE.2007.55 is OK

MISSING DOIs

- None

INVALID DOIs

- None

@editorialbot
Copy link
Collaborator Author

👋 @openjournals/csism-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#4411, then you can now move forward with accepting the submission by compiling again with the command @editorialbot accept

@danielskatz
Copy link

@editorialbot accept

@editorialbot
Copy link
Collaborator Author

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

@danielskatz
Copy link

@editorialbot remove @jonjoncardoso as reviewer

@editorialbot
Copy link
Collaborator Author

@jonjoncardoso removed from the reviewers list!

@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: Brodersen
  given-names: Paul J. N.
  orcid: "https://orcid.org/0000-0001-5216-7863"
doi: 10.5281/zenodo.8138403
message: If you use this software, please cite our article in the
  Journal of Open Source Software.
preferred-citation:
  authors:
  - family-names: Brodersen
    given-names: Paul J. N.
    orcid: "https://orcid.org/0000-0001-5216-7863"
  date-published: 2023-07-19
  doi: 10.21105/joss.05372
  issn: 2475-9066
  issue: 87
  journal: Journal of Open Source Software
  publisher:
    name: Open Journals
  start: 5372
  title: "Netgraph: Publication-quality Network Visualisations in
    Python"
  type: article
  url: "https://joss.theoj.org/papers/10.21105/joss.05372"
  volume: 8
title: "Netgraph: Publication-quality Network Visualisations in Python"

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.05372 joss-papers#4412
  2. Wait a couple of minutes, then verify that the paper DOI resolves https://doi.org/10.21105/joss.05372
  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 Jul 19, 2023
@danielskatz
Copy link

Congratulations to @paulbrodersen (Paul Brodersen) on your paper!!

And thanks to @ortega2247 and @idoby for reviewing, and to @rkurchin for editing!
We couldn't do this without your voluntary efforts

(I'm also going to reaccept this in a moment to remove the third reviewer from the PDF, as I made that change slightly later than I should have above)

@danielskatz
Copy link

@editorialbot re-accept

@editorialbot
Copy link
Collaborator Author

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

@editorialbot commands

@danielskatz
Copy link

@editorialbot reaccept

@editorialbot
Copy link
Collaborator Author

Rebuilding paper!

@editorialbot
Copy link
Collaborator Author

🌈 Paper updated!

New PDF and metadata files 👉 openjournals/joss-papers#4414

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

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

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

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:

@paulbrodersen
Copy link

Thank you very much, @danielskatz, @rkurchin, @idoby, and @ortega2247. This review process has been a pleasure!
Hope you all have a great summer!

@idoby
Copy link

idoby commented Jul 21, 2023

You too @paulbrodersen
Great work on this package

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 TeX Track: 7 (CSISM) Computer science, Information Science, and Mathematics
Projects
None yet
Development

No branches or pull requests

7 participants