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

plot_phylo #160

Open
15 of 30 tasks
KatyBrown opened this issue Feb 22, 2024 · 23 comments
Open
15 of 30 tasks

plot_phylo #160

KatyBrown opened this issue Feb 22, 2024 · 23 comments

Comments

@KatyBrown
Copy link

KatyBrown commented Feb 22, 2024

Submitting Author: Katy Brown (@KatyBrown)
All current maintainers: Katy Brown (@KatyBrown)
Package Name: plot_phylo
One-Line Description of Package: A Python package to plot a phylogenetic tree on an existing Matplotlib axis.
Repository Link: https://github.com/KatyBrown/plot_phylo
Version submitted: 1.9.0
EIC: @isabelizimm
Editor: @ctb
Reviewer 1: @ammaraziz
Reviewer 2: @jkanche
Archive: TBD
JOSS DOI: TBD
Version accepted: TBD
Date accepted (month/day/year): TBD


Code of Conduct & Commitment to Maintain Package

Description

plot_phylo is a Python package which allows the user to plot phylogenetic trees onto an existing matplotlib axis. This means annotations can be added using matplotlib functionality and figures including phylogenies can be included in automated figure generation.

Scope

  • Please indicate which category or categories.
    Check out our package scope page to learn more about our
    scope. (If you are unsure of which category you fit, we suggest you make a pre-submission inquiry):

    • Data retrieval
    • Data extraction
    • Data processing/munging
    • Data deposition
    • Data validation and testing
    • Data visualization1
    • Workflow automation
    • Citation management and bibliometrics
    • Scientific software wrappers
    • Database interoperability

Domain Specific & Community Partnerships

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

Community Partnerships

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

  • For all submissions, explain how the and why the package falls under the categories you indicated above. In your explanation, please address the following points (briefly, 1-2 sentences for each):

    • Who is the target audience and what are scientific applications of this package?
      Researchers working with phylogenetic tree data, a common data format for evolutionary and functional analysis of biological data.

    • Are there other Python packages that accomplish the same thing? If so, how does yours differ?
      plot_phylo depends on the functionality of ETE Toolkit, a widely used visualisation tool. ETE provides excellent tree visualisations but these act as a stand-alone image, which can't be incorporated into another programmatically generated figure except as an uneditable embedded image. plot_phylo trees are subplots of open matplotlib figures, so custom annotations can be added, aspects of the image can be updated and other subplots can show additional data.

    • If you made a pre-submission enquiry, please paste the link to the corresponding issue, forum post, or other discussion, or @tag the editor you contacted:

Technical checks

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

  • does not violate the Terms of Service of any service it interacts with.
  • uses an OSI approved license.
  • contains a README with instructions for installing the development version.
  • includes documentation with examples for all functions.
  • contains a tutorial with examples of its essential functions and uses.
  • has a test suite.
  • has continuous integration setup, such as GitHub Actions CircleCI, and/or others.

Publication Options

JOSS Checks
  • The package has an obvious research application according to JOSS's definition in their submission requirements. 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: "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 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: JOSS accepts our review as theirs. You will NOT need to go through another full review. JOSS will only review your paper.md file. Be sure to link to this pyOpenSci issue when a JOSS issue is opened for your package. Also be sure to tell the JOSS editor that this is a pyOpenSci reviewed package once you reach this step.

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.

  • Yes I am OK with reviewers submitting requested changes as issues to my repo. Reviewers will then link to the issues in their submitted review.

Confirm each of the following by checking the box.

  • I have read the author guide.
  • I expect to maintain this package for at least 2 years and can help find a replacement for the maintainer (team) if needed.

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.

Footnotes

  1. Please fill out a pre-submission inquiry before submitting a data visualization package.

@isabelizimm
Copy link
Contributor

Hello there, and welcome to the pyOpenSci community-- we are so happy you are here! Just wanted to let you know we have seen your submission and will get back to you with some initial checks soon. 👾

@isabelizimm
Copy link
Contributor

isabelizimm commented Feb 27, 2024

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.

  • Installation The package can be installed from a community repository such as PyPI (preferred), and/or a community channel on conda (e.g. conda-forge, bioconda).
    • The package imports properly into a standard Python environment import package.
  • Fit The package meets criteria for fit and overlap.
  • Documentation The package has sufficient online documentation to allow us to evaluate package function and scope without installing the package. This includes:
    • User-facing documentation that overviews how to install and start using the package.
    • Short tutorials that help a user understand how to use the package and what it can do for them.
    • API documentation (documentation for your code's functions, classes, methods and attributes): this includes clearly written docstrings with variables defined using a standard docstring format.
  • Core GitHub repository Files
    • README The package has a README.md file with clear explanation of what the package does, instructions on how to install it, and a link to development instructions.
    • Contributing File The package has a CONTRIBUTING.md file that details how to install and contribute to the package.
    • Code of Conduct The package has a CODE_OF_CONDUCT.md file.
    • License The package has an OSI approved license.
      NOTE: We prefer that you have development instructions in your documentation too.
  • Issue Submission Documentation All of the information is filled out in the YAML header of the issue (located at the top of the issue template).
  • Automated tests Package has a testing suite and is tested via a Continuous Integration service.
  • Repository The repository link resolves correctly.
  • Package overlap The package doesn't entirely overlap with the functionality of other packages that have already been submitted to pyOpenSci.
  • Archive (JOSS only, may be post-review): The repository DOI resolves correctly.
  • Version (JOSS only, may be post-review): Does the release version given match the GitHub release (v1.0.0)?

  • Initial onboarding survey was filled out
    We appreciate each maintainer of the package filling out this survey individually. 🙌
    Thank you authors in advance for setting aside five to ten minutes to do this. It truly helps our organization. 🙌


Editor comments

Thank you again for submitting plot_phylo to pyOpenSci! I've gone through your package, and you've got a great start!

Blockers to beginning review process:

  • Right now, this package lacks a documentation website (or, at least, this site is not discoverable enough for me to find). There is some documentation in pyOpenSci's packaging guide on how to set up a site with Sphinx and publish it to GitHub. You have lovely docstrings already in place for plot_phylo, so you've already done a lot of the heavy lifting! This site should help with the maintenance of the package for you as well-- Sphinx will autogenerate API docs so you won't have to write out Parameters and such yourself 🙂

Some smaller nits:

If you have any questions or need any support with these tasks, pyOpenSci community would love to help out! The best places to get in touch are via discourse or Slack--let me know if you need an invite. And, of course, you can also reply here (but then you will be restricted to just my opinions 😂)!

@isabelizimm
Copy link
Contributor

Following up, @ctb will the editor leading the review for plot_phylo once the above items have been addressed! Titus also has a few things to finish up before starting this role, so I'll check back here in about 2 weeks to check in if both parties are ready to kick off this review 😄

@isabelizimm
Copy link
Contributor

Hello all! Checking in here. @KatyBrown are you able to give an update on the status of a documentation website? We won't be able to start a review without that put up. If you need any support, please let us know!

@KatyBrown
Copy link
Author

Hi @isabelizimm , sorry, I got caught in other projects but I'm working on moving the documentation the readthedocs - it should be ready in another couple of days. Sorry to be slow! Thanks for checking in.

@isabelizimm
Copy link
Contributor

No worries at all--thank you for the update! 🌻 If you can give us a heads up in this issue once those docs are up, then we can get started on the review.

@ctb
Copy link

ctb commented Apr 6, 2024

I am alive! Just let me know when to start finding reviewers :)

@KatyBrown
Copy link
Author

Hi @isabelizimm, very sorry for the long delay, I've now made the changes you asked for. The current version of the tool is now v0.1.9 - I've edited this in my original post.

Specifically I have:

  • Extended the documentation and moved it to ReadTheDocs here
  • Added testing in Python 3.9 to 3.12
  • Corrected the mistake with the version

Please let me know if there's anything else I need to do, otherwise I think I'm now ready to proceed to the next step :)

Thank you!

@isabelizimm
Copy link
Contributor

No worries-- with those all updated, I can hand everything over to @ctb to look for reviewers!

@ctb
Copy link

ctb commented May 1, 2024

Apologies for delay - started beating the bushes for some reviewers. In the meantime, filed a few minor issues myself ;). The figures are lovely!!

@KatyBrown
Copy link
Author

@ctb thanks very much! I think I've addressed the issues you raised.

@ctb
Copy link

ctb commented Jun 22, 2024

apologies for my long delay - have one reviewer locked in, reach out to some more today.

@ctb
Copy link

ctb commented Jul 1, 2024

Editor response to review:


Editor comments

👋 Hi @ammaraziz and @jkanche! Thank you for volunteering to review
for pyOpenSci! Sorry it took me so long to post this, I blame ...umm, summer! Yeah, it's summer time! But seriously, thank you so much!!

Please fill out our pre-review survey

Before beginning your review, please fill out our pre-review survey. This helps us improve all aspects of our review and better understand our community. No personal data will be shared from this survey - it will only be used in an aggregated format by our Executive Director to improve our processes and programs.

  • reviewer 1 survey completed (ammaraziz)
  • reviewer 2 survey completed (jkanche)

The following resources will help you complete your review:

  1. Here is the reviewers guide. This guide contains all of the steps and information needed to complete your review.
  2. Here is the review template that you will need to fill out and submit
    here as a comment, once your review is complete.

Please get in touch with any questions or concerns! Your review is due: July 22nd, 2024!

Reviewers: @ammaraziz and @jkanche
Due date: July 22nd, 2024

@jkanche
Copy link

jkanche commented Jul 29, 2024

Apologies for the delay, I plan to finish my review this week.

@ctb
Copy link

ctb commented Jul 29, 2024

Apologies for the delay, I plan to finish my review this week.

thanks for checking in! @ammaraziz, need anything from me?

@jkanche
Copy link

jkanche commented Aug 5, 2024

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

  • As the reviewer I confirm that there are no conflicts of interest for me to review this work (If you are unsure whether you are in conflict, please speak to your editor before starting your review).

Documentation

The package includes all the following forms of documentation:

  • A statement of need clearly stating problems the software is designed to solve and its target audience in README.
  • Installation instructions: for the development version of the package and any non-standard dependencies in README.
  • Vignette(s) demonstrating major functionality that runs successfully locally.
  • Function Documentation: for all user-facing functions.
  • Examples for all user-facing functions.
  • Community guidelines including contribution guidelines in the README or CONTRIBUTING.
  • Metadata including author(s), author e-mail(s), a url, and any other relevant metadata e.g., in a pyproject.toml file or elsewhere.

Readme file requirements
The package meets the readme requirements below:

  • Package has a README.md file in the root directory.

The README should include, from top to bottom:

  • The package name
  • Badges for:
    • Continuous integration and test coverage,
    • Docs building (if you have a documentation website),
    • A repostatus.org badge,
    • Python versions supported,
    • Current package version (on PyPI / Conda).

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.)

  • Short description of package goals.
  • Package installation instructions
  • Any additional setup required to use the package (authentication tokens, etc.)
  • Descriptive links to all vignettes. If the package is small, there may only be a need for one vignette which could be placed in the README.md file.
    • Brief demonstration of package usage (as it makes sense - links to vignettes could also suffice here if package description is clear)
  • Link to your documentation website.
  • If applicable, how the package compares to other similar packages and/or how it relates to other packages in the scientific ecosystem.
  • Citation information

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:

  • Package documentation is clear and easy to find and use.
  • The need for the package is clear
  • All functions have documentation and associated examples for use
  • The package is easy to install

Functionality

  • Installation: Installation succeeds as documented.
  • Functionality: Any functional claims of the software been confirmed.
  • Performance: Any performance claims of the software been confirmed.
  • Automated tests:
    • All tests pass on the reviewer's local machine for the package version submitted by the author. Ideally this should be a tagged version making it easy for reviewers to install.
    • Tests cover essential functions of the package and a reasonable range of inputs and conditions.
  • Continuous Integration: Has continuous integration setup (We suggest using Github actions but any CI platform is acceptable for review)
  • Packaging guidelines: The package conforms to the pyOpenSci packaging guidelines.
    A few notable highlights to look at:
    • Package supports modern versions of Python and not End of life versions.
    • Code format is standard throughout package and follows PEP 8 guidelines (CI tests for linting pass)

Review Comments

  • Cannot run tests following the instructions

I cloned the repo and installed it in edit mode:

> ~/P/p/t/plot_phylo on mainpytest --cov=plot_phylo                                   (reviews) 16:09:15
=========================================== test session starts ============================================
platform darwin -- Python 3.11.9, pytest-8.2.2, pluggy-1.5.0
rootdir: /Users/kancherj/Projects/public/trash/plot_phylo
configfile: pyproject.toml
plugins: cov-5.0.0
collected 0 items / 3 errors
/opt/homebrew/lib/python3.11/site-packages/coverage/control.py:888: CoverageWarning: No data was collected. (no-data-collected)
  self._warn("No data was collected.", slug="no-data-collected")

================================================== ERRORS ==================================================
______________________________ ERROR collecting tests/test_get_boxes_data.py _______________________________
ImportError while importing test module '/Users/kancherj/Projects/public/trash/plot_phylo/tests/test_get_boxes_data.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/opt/homebrew/Cellar/python@3.11/3.11.9/Frameworks/Python.framework/Versions/3.11/lib/python3.11/importlib/__init__.py:126: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
tests/test_get_boxes_data.py:2: in <module>
    import matplotlib.pyplot as plt
E   ModuleNotFoundError: No module named 'matplotlib'
________________________________ ERROR collecting tests/test_plot_phylo.py _________________________________
ImportError while importing test module '/Users/kancherj/Projects/public/trash/plot_phylo/tests/test_plot_phylo.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/opt/homebrew/Cellar/python@3.11/3.11.9/Frameworks/Python.framework/Versions/3.11/lib/python3.11/importlib/__init__.py:126: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
tests/test_plot_phylo.py:2: in <module>
    import matplotlib.pyplot as plt
E   ModuleNotFoundError: No module named 'matplotlib'
______________________________ ERROR collecting tests/test_plot_phylo_data.py ______________________________
ImportError while importing test module '/Users/kancherj/Projects/public/trash/plot_phylo/tests/test_plot_phylo_data.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/opt/homebrew/Cellar/python@3.11/3.11.9/Frameworks/Python.framework/Versions/3.11/lib/python3.11/importlib/__init__.py:126: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
tests/test_plot_phylo_data.py:2: in <module>
    import plot_phylo
E   ModuleNotFoundError: No module named 'plot_phylo'

---------- coverage: platform darwin, python 3.11.9-final-0 ----------
Name                       Stmts   Miss  Cover   Missing
--------------------------------------------------------
plot_phylo/plot_phylo.py     144    144     0%   2-586
--------------------------------------------------------
TOTAL                        144    144     0%

========================================= short test summary info ==========================================
ERROR tests/test_get_boxes_data.py
ERROR tests/test_plot_phylo.py
ERROR tests/test_plot_phylo_data.py
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 3 errors during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  • Add a short description and link to docs for the repository metadata. Helps users quickly understand the scope and link to the documentation (right side bar on the repository page):
    image

  • Publishing seems to be manual right now and don't understand how that is setup? I usually use pyscaffold and it makes it easier for some routine package maintenance tasks.

  • code quality (linting) is not included in the CI/CD tests.

  • As I was reviewing the package, I thought a couple of features may be super helpful:

    • Highlight paths/features of interest
    • Ability to choose or specify branch widths

Overall, the package provides an intuitive and easy way to integrate phylogeny visualizations with matplotlib based workflows. Let me know if you have any questions.

@ammaraziz
Copy link

Hi @ctb and @KatyBrown, please accept my apologies. I've been stretched thin over the last few months.

I will make time for reviewing this week if that is acceptable?

@ctb
Copy link

ctb commented Aug 6, 2024

Hi @ctb and @KatyBrown, please accept my apologies. I've been stretched thin over the last few months.

as have we all! no worries and I really appreciate your willingness to review!

I will make time for reviewing this week if that is acceptable?

please and thank you!

@ammaraziz
Copy link

Package Review

  • As the reviewer I confirm that there are no conflicts of interest for me to review this work (If you are unsure whether you are in conflict, please speak to your editor before starting your review).

Documentation

The package includes all the following forms of documentation:

  • A statement of need clearly stating problems the software is designed to solve and its target audience in README.
  • Installation instructions: for the development version of the package and any non-standard dependencies in README.
  • Vignette(s) demonstrating major functionality that runs successfully locally.
  • Function Documentation: for all user-facing functions.
  • Examples for all user-facing functions.
  • Community guidelines including contribution guidelines in the README or CONTRIBUTING.
  • Metadata including author(s), author e-mail(s), a url, and any other relevant metadata e.g., in a pyproject.toml file or elsewhere.

Readme file requirements
The package meets the readme requirements below:

  • Package has a README.md file in the root directory.

The README should include, from top to bottom:

  • The package name
  • Badges for:
    • Continuous integration and test coverage,
    • Docs building (if you have a documentation website),
    • A repostatus.org badge,
    • Python versions supported,
    • Current package version (on PyPI / Conda).

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.)

  • Short description of package goals.
  • Package installation instructions
  • Any additional setup required to use the package (authentication tokens, etc.)
  • Descriptive links to all vignettes. If the package is small, there may only be a need for one vignette which could be placed in the README.md file.
    • X ] Brief demonstration of package usage (as it makes sense - links to vignettes could also suffice here if package description is clear)
  • Link to your documentation website.
  • If applicable, how the package compares to other similar packages and/or how it relates to other packages in the scientific ecosystem.
  • Citation information

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:

  • Package documentation is clear and easy to find and use.
  • The need for the package is clear
  • All functions have documentation and associated examples for use
  • The package is easy to install

Functionality

  • Installation: Installation succeeds as documented.
  • Functionality: Any functional claims of the software been confirmed.
  • Performance: Any performance claims of the software been confirmed.
  • Automated tests:
    • All tests pass on the reviewer's local machine for the package version submitted by the author. Ideally this should be a tagged version making it easy for reviewers to install.
    • Tests cover essential functions of the package and a reasonable range of inputs and conditions.
  • Continuous Integration: Has continuous integration setup (We suggest using Github actions but any CI platform is acceptable for review)
  • Packaging guidelines: The package conforms to the pyOpenSci packaging guidelines.
    A few notable highlights to look at:
    • Package supports modern versions of Python and not End of life versions.
    • Code format is standard throughout package and follows PEP 8 guidelines (CI tests for linting pass)

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:

  • A short summary describing the high-level functionality of the software
  • Authors: A list of authors with their affiliations
  • A statement of need clearly stating problems the software is designed to solve and its target audience.
  • References: With DOIs for all those that have one (e.g. papers, datasets, software).

Final approval (post-review)

  • The author has responded to my review and made changes to my satisfaction. I recommend approving this package.

Estimated hours spent reviewing:


Review Comments

Great package, works nicely and the provided example is a great start. The power of matplotlib means it's possible to make great plots.

  1. Similar to the previous review, when testing the package I get errors. However, the documentation states:

Run unit tests in the root directoy as pytest --cov=plot_phylo and ensure that they pass and that coverage is 100%.

But I get an error:

pytest: error: unrecognized arguments: --cov=plot_phylo

Testing works if you run just pytest in the root dir:

============================== test session starts ===============================
platform darwin -- Python 3.9.19, pytest-8.3.2, pluggy-1.5.0
rootdir: ~Desktop/plot_phylo
configfile: pyproject.toml
collected 138 items

tests/test_plot_phylo.py ................................................. [ 35%]
.......................................................................... [ 89%]
...............                                                            [100%]

================================ warnings summary ================================
tests/test_plot_phylo.py:23
  /Users/aaziz/Desktop/plot_phylo/tests/test_plot_phylo.py:23: MatplotlibDeprecationWarning: Auto-close()ing of figures upon backend switching is deprecated since 3.8 and will be removed in 3.10.  To suppress this warning, explicitly call plt.close('all') first.
    matplotlib.use('Agg')

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=================== 138 passed, 1 warning in 62.46s (0:01:02) ====================
  1. Consider adding some basic usage docs to the readme to get people started.
  2. Provide example of how to color internal nodes and branches.
  3. Consider using github actions for testing and publishing.
  4. Add a section on how to cite your work, even if it's just the github repo, for example:
# Cite
KatyBrown - plot_phylo https://github.com/KatyBrown/plot_phylo

Good job on the great package.

@ctb
Copy link

ctb commented Aug 12, 2024

thanks @ammaraziz and @jkanche!!

@KatyBrown please take a detailed look at the above, and I will do the same!

@ctb
Copy link

ctb commented Aug 12, 2024

@jkanche https://pyscaffold.org/en/stable/ looks fascinating!

@ctb
Copy link

ctb commented Aug 27, 2024

@jkanche and @ammaraziz, thank you so much for your reviews!!

@KatyBrown, I've extracted the unchecked bits of the reviews below -- please see bottom for my thoughts!

pyopensci -- summary of reviews by CTB

Package review by @jkanche:

Documentation

The package includes all the following forms of documentation:

  • Metadata including author(s), author e-mail(s), a url, and any other relevant metadata e.g., in a pyproject.toml file or elsewhere.

The README should include, from top to bottom:

  • The package name
  • Badges for:
    • Continuous integration and test coverage,
    • Docs building (if you have a documentation website),
    • A repostatus.org badge,
    • Python versions supported,
    • Current package version (on PyPI / Conda).
  • If applicable, how the package compares to other similar packages and/or how it relates to other packages in the scientific ecosystem.
  • Citation information

Usability

In general please consider whether:

  • The need for the package is clear

Functionality

  • Automated tests:
    • All tests pass on the reviewer's local machine for the package version submitted by the author. Ideally this should be a tagged version making it easy for reviewers to install.
  • Packaging guidelines: The package conforms to the pyOpenSci packaging guidelines.

Review Comments

  • Cannot run tests following the instructions

I cloned the repo and installed it in edit mode:

(errors elided)

  • Add a short description and link to docs for the repository metadata. Helps users quickly understand the scope and link to the documentation (right side bar on the repository page):
    image

  • Publishing seems to be manual right now and don't understand how that is setup? I usually use pyscaffold and it makes it easier for some routine package maintenance tasks.

  • code quality (linting) is not included in the CI/CD tests.

  • As I was reviewing the package, I thought a couple of features may be super helpful:

    • Highlight paths/features of interest
    • Ability to choose or specify branch widths

CTB comment: you could put these in the issue tracker, if you didn't want to implement them now :)

Overall, the package provides an intuitive and easy way to integrate phylogeny visualizations with matplotlib based workflows. Let me know if you have any questions.

Package Review by @ammaraziz

Documentation

The README should include, from top to bottom:

  • Badges for:

    • Continuous integration and test coverage,
    • Docs building (if you have a documentation website),
    • A repostatus.org badge,
    • Python versions supported,
    • Current package version (on PyPI / Conda).
  • Any additional setup required to use the package (authentication tokens, etc.)

  • If applicable, how the package compares to other similar packages and/or how it relates to other packages in the scientific ecosystem.

  • Citation information

Functionality

  • Performance: Any performance claims of the software been confirmed.
  • Automated tests:
    • All tests pass on the reviewer's local machine for the package version submitted by the author. Ideally this should be a tagged version making it easy for reviewers to install.
    • Tests cover essential functions of the package and a reasonable range of inputs and conditions.
  • Continuous Integration: Has continuous integration setup (We suggest using Github actions but any CI platform is acceptable for review)

Review Comments

Great package, works nicely and the provided example is a great start. The power of matplotlib means it's possible to make great plots.

  1. Similar to the previous review, when testing the package I get errors. However, the documentation states:

Run unit tests in the root directoy as pytest --cov=plot_phylo and ensure that they pass and that coverage is 100%.

But I get an error:

pytest: error: unrecognized arguments: --cov=plot_phylo

Testing works if you run just pytest in the root dir:

(elided)

  1. Consider adding some basic usage docs to the readme to get people started.
  2. Provide example of how to color internal nodes and branches.
  3. Consider using github actions for testing and publishing.
  4. Add a section on how to cite your work, even if it's just the github repo, for example:
# Cite
KatyBrown - plot_phylo https://github.com/KatyBrown/plot_phylo

Good job on the great package.


Editor comments from CTB

The three major suggestions from the reviews that stand out are -

  • a few more usage docs are suggested/would be welcome!
  • test the instructions for running the tests, and/or improve the documentation;
  • suggest using GitHub CI - lmk if you need some pointers to quickstarts! I have some projects that do basically what you need, I think. Note that putting CI in place will help with the test running & documentation, above, too!

The rest all seem like fairly quick add-this/adjust-that changes.

Please let me know if you have thoughts or questions!

@KatyBrown
Copy link
Author

Hi @ctb @jkanche @ammaraziz thanks so much for looking at this and sorry for my slow response. I will look at your comments over the next few days.

One quick thing, I do have CI testing which runs my test suite - the workflow is here https://github.com/KatyBrown/plot_phylo/actions/workflows/main.yml. I'm not sure if they are not showing up somehow.

Thanks again and I'll address everything else asap.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: under-review
Development

No branches or pull requests

6 participants