Skip to content

BioCypher submission #110

Closed
Closed

Description

@slobentanzer

Submitting Author: Sebastian Lobentanzer (@slobentanzer)
All current maintainers: (@slobentanzer)
Package Name: biocypher
One-Line Description of Package: framework for creating biomedical knowledge graphs
Repository Link: https://github.com/biocypher/biocypher
Version submitted: 0.5.14
Editor: @arianesasso
Reviewer 1: @Zethson
Reviewer 2: @Midnighter
Reviewer 3: Sinna
Archive: DOI
Version accepted: v0.5.33
JOSS DOI: N/A
Date accepted (month/day/year): 11/14/2023


Code of Conduct & Commitment to Maintain Package

Description

  • Include a brief paragraph describing what your package does:
    BioCypher is a flexible and modular framework for the creation of knowledge graphs on the basis of ontologies, yielding a number of representations of the input knowledge sources. Its aim is to increase accessibility of biomedical knowledge graphs to a wide range of biomedical researchers.

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?

    • Are there other Python packages that accomplish the same thing? If so, how does yours differ?

    • 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: 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.

  • 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. ↩

Activity

  1. lwasser commented on May 12, 2023

    @lwasser
    Member

    hi @slobentanzer thank you for this submission and welcome to pyOpenSci! I just wanted to say hello 👋 and to let you know that we see this submission. We will get back to you with the start of our initial checks next week! In the meantime, have a wonderful weekend. we will be in touch. ✨

  2. NickleDave commented on May 16, 2023

    @NickleDave
    Contributor

    Welcome to pyOpenSci @slobentanzer and thank you for your patience.

    I'm happy to report that biocypher passes almost all of the initial editor checks.

    There is one thing we need you to take care of before we start the review:

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

    Please add the following to the README:

    • a clear explanation of what the package does, such that it could be understood by a general scientific audience.
      • What is a knowledge graph? How are they used? This can be brief with a link to a review or wikipedia article to supplement, that is understandable even to people that don't already work with knowledge graphs
      • It would really help to have a precise, succinct definition of what the package does and how it does it; use verbs. "Allows users to construct knowledge graphs from heterogeneous biomedical data, using adapters written in Python". This should ideally be the first thing in the README. The description that comes a bit lower has a helpful figure, but the language makes it sound very abstract without any detail on what or how, "this is our proposal for a framework..."
    • instructions on how to install: this can be simple, pip install biocypher and if there is a package on a community conda channel, conda install biocypher -c conda-forge (or bioconda or whatever)

    Please let me know once you have addressed this requirement.

    The filled-out template with checks follows.

    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).
      • pip install biocypher works. There is not a conda-forge package as far as I can tell
      • The package imports properly into a standard Python environment import package-name.
    • 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. We suggest using the Numpy 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.
        • There is a README but it does not have an explanation of what the package does or install instructions8
      • 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 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 GitHub actions or another 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.
      • there is already a pre-print associated with the package, see link in README
    • 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

    None of these are required but are just things I noted during the checks:

    • In addition to adding the required clear explanation and install instructions to the README, you might consider adding more info from the index of the docs; there is a lot of very useful info / context there. For more on good practices for READMEs, see https://www.pyopensci.org/python-package-guide/documentation/repository-files/readme-file-best-practices.html
    • It's a bit confusing that the install instructions (1) recommend a specific development tool and show adding the package as a dependency with that tool, and (2) use pip inside a conda environment. Typically one might show pip install package for the first and conda install package -c conda-forge for the second
    • I noticed the package defaults to logging at the INFO level and writing a log file on import. Not sure that everyone will want that by default, especially if they are on a shared system
  3. slobentanzer commented on May 17, 2023

    @slobentanzer
    Author

    Hi @NickleDave,
    thanks for the feedback, I added the requested details to the README.

    Regarding your comments, here's my opinion:

    • I prefer not having dual maintenance of content, i.e., I do not want to keep a readme and the docs up to date simultaneously; so I am not in favour of packing things from the docs into the readme, because they need to be kept in sync in this case. What is the benefit of having it in the README, if users can just read the docs? BTW, that was also the reason that the docs were the first section of the README, as opposed to the description as suggested by you.
    • I always use pip inside conda envs and did not know this was unusual. Happy for suggestions as to how to make that section clearer or more aligned with good practise.
    • I am new to Python and find logging quite confusing; happy for suggestions (or a pointer to a best practise resource) here as well.
  4. NickleDave commented on May 22, 2023

    @NickleDave
    Contributor

    Thank you @slobentanzer for adding those details to the README. Looks great!

    What is the benefit of having it in the README, if users can just read the docs?

    I hear you. I also do not like the idea of duplicating content in the README that can go out of sync.
    One way around this is to have the single source of truth be your README, and then get that into your docs by using an include directive in RST or in MyST

    What is the benefit of having it in the README, if users can just read the docs?

    There is an argument to be made that developers hyper-fixate on "Awesome" READMEs, mainly to impress other developers. Still, you don't want to lose a user because they found your GitHub repo first, and they couldn't figure out what your project really does, so they gave up without bothering to read the docs. What is the killer feature and what does it look like in code? If you can express that in one sentence and a single snippet with a few lines of code, at the top of both your README and on the index page of your docs, then you know you're making the best case for your package to new users. Of course that's not possible for every package, but seems like a good general goal to aim for.

    I always use pip inside conda envs and did not know this was unusual. Happy for suggestions as to how to make that section clearer or more aligned with good practise.

    I am not a conda expert but my understanding is that it's good practice to prefer conda install over pip install, to be able to reproduce environments. Basically because pip does things that conda doesn't do, or that conda doesn't know about. Maybe @jjhelmus can let us know if the advice in this blog post is still up-to-date:
    https://www.anaconda.com/blog/using-pip-in-a-conda-environment

    I am new to Python and find logging quite confusing; happy for suggestions (or a pointer to a best practise resource) here as well.

    I am less new to Python but I still find logging confusing 😭

    I'd suggest a quote from Hitchhiker's guide to Python is relevant here:

    the user, not the library, should dictate what happens when a logging event occurs

    https://docs.python-guide.org/writing/logging/#logging-in-a-library

    For that reason I would avoid forcing a logging file and messages on your users.

    I have looked several times but have never found a guide to logging that I felt answered my questions.

    You probably know these already but:

    The main question I had as a library developer is how to use the logger in my modules, and how should I configure it. Through trial and error I have found it's "good enough" practice to make a new logger instance in each module, assigning it __name__ as its name (as you will read in most guides). I have also found that if I do want to configure those logger instances, it's easiest to achieve this through a function I call that checks if there are already existing Handlers attached, so that I don't stomp on a user's existing configuration. See here: vocalpy/vak#535

    In my experience is that most scientific Python libraries do not include logging. There are exceptions I can think of:

    You might find reading the code of those libraries helpful

  5. NickleDave commented on May 22, 2023

    @NickleDave
    Contributor

    Hope I did not just overwhelm you with advice.
    I will find an editor and we will proceed with the review.
    I know I got off to a bit of a slow start--thank you for your patience.

  6. NickleDave commented on May 23, 2023

    @NickleDave
    Contributor

    Hi again @slobentanzer, happy to inform you that @arianesasso will be editor for this review.
    We are seeking appropriate reviewers now and she will tag them in once we have found them.

  7. self-assigned this
    on Jun 1, 2023
  8. arianesasso commented on Jun 1, 2023

    @arianesasso

    Hello @slobentanzer 👋🏼 . Thanks for the intro @NickleDave :). It is my pleasure to review BioCypher! We are now in the process of finding reviewers for the package. Hopefully, depending on their response, this should take one to two weeks. I will keep you posted on this thread, and if you have any questions, feel free to reach out!

  9. arianesasso commented on Jun 24, 2023

    @arianesasso

    Dear @slobentanzer, finding reviewers is taking a bit longer than expected. I hope that is ok. We might have someone already but he would only be able to start the review in a few weeks. Would that be acceptable?

  10. slobentanzer commented on Jun 26, 2023

    @slobentanzer
    Author

    Hi @arianesasso,
    sure, I have no immediate time pressures.

  11. 40 remaining items

  12. slobentanzer commented on Nov 8, 2023

    @slobentanzer
    Author

    Thanks for the great input, @Zethson!

  13. Midnighter commented on Nov 8, 2023

    @Midnighter

    Can confirm that all our comments regarding the code project have been addressed. Still think it'd be motivating for potential users unfamiliar with or new to knowledge graphs to see some usage scenarios, but we can understand that you consider it too much right now.

    We recommend approval.

  14. slobentanzer commented on Nov 8, 2023

    @slobentanzer
    Author

    @Midnighter and Sinna, thanks a lot for your feedback! We agree that use cases are very important, and we will definitely be updating the docs regularly with more applied scenarios, as time permits. :)

  15. NickleDave commented on Nov 15, 2023

    @NickleDave
    Contributor

    Hi all 👋 I'm here to help our excellent editor @arianesasso who had a family emergency.

    Thank you @Midnighter and @Zethson for confirming your comments were addressed, and letting us know you recommend approval.

    @slobentanzer I am happy to report that 🎉 BioCypher has been approved by pyOpenSci! Thank you for submitting! 🎉

    Author Wrap Up Tasks

    There are a few things left to do to wrap up this submission:

    • Activate Zenodo watching the repo if you haven't already done so.
    • Tag and create a release to create a Zenodo version and DOI.
    • Add the badge for pyOpenSci peer-review to the README.md of . The badge should be [![pyOpenSci](https://tinyurl.com/y22nb8up)](https://github.com/pyOpenSci/software-review/issues/issue-number).
    • Please fill out the post-review survey. All maintainers and reviewers should fill this out.

    Editor Final Checks

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

    • Make sure that the maintainers filled out the post-review survey
    • Invite the maintainers to submit a blog post highlighting their package. Feel free to use / adapt language found in this comment to help guide the author.
    • Change the status tag of the issue to 6/pyOS-approved6 🚀🚀🚀.

    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

  16. moved this from under-review to pyos-accepted in peer-review-statuson Nov 15, 2023
  17. slobentanzer commented on Nov 20, 2023

    @slobentanzer
    Author

    Thanks a lot, @NickleDave! I have activated Zenodo, added the bade, and filled out the form. Thanks for everything to everybody who helped in this review! :)

  18. NickleDave commented on Nov 28, 2023

    @NickleDave
    Contributor

    Thank you @slobentanzer and congratulations again! 🎉

    I have announced it on our Discourse too.

    If you are interested, we'd love to help you spread the word about BioCypher with a blog post on pyOpenSci's site.

    @Midnighter and @Zethson huge thank you again for your work as reviewers. Please if you have a few minutes it would also help us if you could fill out the post-review survey.

    And thanks of course to @arianesasso for being the editor for this one. I'll go ahead and close this issue.

  19. slobentanzer commented on Nov 28, 2023

    @slobentanzer
    Author

    Hi @NickleDave, thanks again (also to all), and happy to help with a blog post if it should be required.

  20. NickleDave commented on Nov 28, 2023

    @NickleDave
    Contributor

    Definitely not required @slobentanzer, we just want to give you a venue to share BioCypher. Sometimes a blog post can be a way to talk about the package that's not as clear from docs and papers.
    I'll invite you to our Slack team too if you'd like to join there and ask questions.

  21. slobentanzer commented on Nov 28, 2023

    @slobentanzer
    Author

    Sure, sounds great. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

Relationships

None yet

Development

No branches or pull requests

Issue actions