DeepRank2

DeepRank2: Mining 3D Protein Structures with Geometric Deep Learning - Published in JOSS (2024)

https://github.com/deeprank/deeprank2

Science Score: 100.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 1 DOI reference(s) in JOSS metadata
  • Academic publication links
  • Committers with academic emails
    1 of 35 committers (2.9%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

convolutional-neural-networks deep-learning graph-neural-networks protein-protein-interfaces pytorch single-residue-variants structural-biology

Keywords from Contributors

meshing ode graph-generation molecular-dynamics pypi
Last synced: 6 months ago · JSON representation ·

Repository

An open-source deep learning framework for data mining of protein-protein interfaces or single-residue variants.

Basic Info
Statistics
  • Stars: 54
  • Watchers: 6
  • Forks: 13
  • Open Issues: 29
  • Releases: 15
Topics
convolutional-neural-networks deep-learning graph-neural-networks protein-protein-interfaces pytorch single-residue-variants structural-biology
Created about 4 years ago · Last pushed about 1 year ago
Metadata Files
Readme Changelog Contributing License Code of conduct Citation Zenodo

README.dev.md

deeprank2 developer documentation

If you're looking for user documentation, go here.

Code editor

We use Visual Studio Code (VS Code) as code editor. The VS Code settings for this project can be found in .vscode. The settings will be automatically loaded and applied when you open the project with VS Code. See the guide for more info about workspace settings of VS Code.

Package setup

After having followed the installation instructions and installed all the dependencies of the package, the repository can be cloned and its editable version can be installed:

bash git clone https://github.com/DeepRank/deeprank2 cd deeprank2 pip install -e .'[test]'

Running the tests

You can check that all components were installed correctly, using pytest. The quick test should be sufficient to ensure that the software works, while the full test (a few minutes) will cover a much broader range of settings to ensure everything is correct.

Run pytest tests/test_integration.py for the quick test or just pytest for the full test (expect a few minutes to run).

Test coverage

In addition to just running the tests to see if they pass, they can be used for coverage statistics, i.e. to determine how much of the package's code is actually executed during tests. In an activated conda environment with the development tools installed, inside the package directory, run:

bash coverage run -m pytest

This runs tests and stores the result in a .coverage file. To see the results on the command line, run:

bash coverage report

coverage can also generate output in HTML and other formats; see coverage help for more information.

Linting and Formatting

We use ruff for linting, sorting imports and formatting of python (notebook) files. The configurations of ruff are set in pyproject.toml file.

If you are using VS code, please install and activate the Ruff extension to automatically format and check linting.

Otherwise, please ensure check both linting (ruff check .) and formatting (ruff format .) before requesting a review.

We use prettier for formatting most other files. If you are editing or adding non-python files and using VS code, the Prettier extension can be installed to auto-format these files as well.

Versioning

Bumping the version across all files is done before creating a new package release, running bump2version [part] from command line after having installed bump2version on your local environment. Instead of [part], type the part of the version to increase, e.g. minor. The settings in .bumpversion.cfg will take care of updating all the files containing version strings.

Branching workflow

We use a Git Flow-inspired branching workflow for development. DeepRank2's repository is based on two main branches with infinite lifetime:

  • main — this branch contains production (stable) code. All development code is merged into main in sometime.
  • dev — this branch contains pre-production code. When the features are finished then they are merged into dev.

During the development cycle, three main supporting branches are used:

  • Feature branches - Branches that branch off from dev and must merge into dev: used to develop new features for the upcoming releases.
  • Hotfix branches - Branches that branch off from main and must merge into main and dev: necessary to act immediately upon an undesired status of main.
  • Release branches - Branches that branch off from dev and must merge into main and dev: support preparation of a new production release. They allow many minor bug to be fixed and preparation of meta-data for a release.

Development conventions

  • Branching
    • When creating a new branch, please use the following convention: <issue_number>_<description>_<author_name>.
    • Always branch from dev branch, unless there is the need to fix an undesired status of main. See above for more details about the branching workflow adopted.
  • Pull Requests
    • When creating a pull request, please use the following convention: <type>: <description>. Example types are fix:, feat:, build:, chore:, ci:, docs:, style:, refactor:, perf:, test:, and others based on the Angular convention.

Making a release

Automated release workflow:

  1. IMP0RTANT: Create a PR for the release branch, targeting the main branch. Ensure there are no conflicts and that all checks pass successfully. Release branches are typically: traditional release branches (these are created from the dev branch), or hotfix branches (these are created directly from the main branch).
    • if everything goes well, this PR will automatically be closed after the draft release is created.
  2. Navigate to Draft Github Release on the Actions tab.
  3. On the right hand side, you can select the level increase ("patch", "minor", or "major") and which branch to release from.
    • Follow semantic versioning conventions to chose the level increase:
      • patch: when backward compatible bug fixes were made
      • minor: when functionality was added in a backward compatible manner
      • major: when API-incompatible changes have been made
    • Note that you cannot release from main (the default shown) using the automated workflow. To release from main directly, you must create the release manually.
  4. Visit Actions tab to check whether everything went as expected.
    • NOTE: there are two separate jobs in the workflow: "draftrelease" and "tidyworkspace". The first creates the draft release on github, while the second merges changes into dev and closes the PR.
      • If "draftrelease" fails, then there are likely merge conflicts with main that need to be resolved first. No release draft is created and the "tidyworkspace" job does not run. Coversely, if this action is succesfull, then the release branch (including a version bump) have been merged into the remote main branch.
      • If "draftrelease" is succesfull but "tidyworkspace" fails, then there are likely merge conflicts with dev that are not conflicts with main. In this case, the draft release is created (and changes were merged into the remote main). Conflicts with dev need to be resolved with dev by the user.
      • If both jobs succeed, then the draft release is created and the changes are merged into both remote main and dev without any problems and the associated PR is closed. Also, the release branch is deleted from the remote repository.
  5. Navigate to the Releases tab and click on the newest draft release that was just generated.
  6. Click on the edit (pencil) icon on the right side of the draft release.
  7. Check/adapt the release notes and make sure that everything is as expected.
  8. Check that "Set as the latest release is checked".
  9. Click green "Publish Release" button to convert the draft to a published release on GitHub.

Updating the token:

In order for the workflow above to be able to bypass the branch protection on main and dev, a token with admin priviliges for the current repo is required. Below are instructions on how to create such a token. NOTE: the current token (associated to @DaniBodor) allowing to bypass branch protection will expire on 9 July 2025. To update the token do the following:

  1. Create a personal access token from a GitHub user account with admin priviliges for this repo.
  2. Check all the "repo" boxes and the "workflow" box, set an expiration date, and give the token a note.
  3. Click green "Generate token" button on the bottom
  4. Copy the token immediately, as it will not be visible again later.
  5. Navigate to the secrets settings.
  6. Edit the GH_RELEASE key giving your access token as the new value.

Manually create a release:

  1. Make sure you have all required developers tools installed pip install -e .'[test]'.
  2. Create a release- branch from main (if there has been an hotfix) or dev (regular new production release).
  3. Prepare the branch for the release (e.g., removing the unnecessary dev files, fix minor bugs if necessary). Do this by ensuring all tests pass pytest -v and that linting (ruff check) and formatting (ruff format --check) conventions are adhered to.
  4. Bump the version using bump-my-version: bump-my-version bump <level> where level must be one of the following (following semantic versioning conventions):
    • major: when API-incompatible changes have been made
    • minor: when functionality was added in a backward compatible manner
    • patch: when backward compatible bug fixes were made
  5. Merge the release branch into main and dev.
  6. On the Releases page:
    1. Click "Draft a new release"
    2. By convention, use v<version number> as both the release title and as a tag for the release.
    3. Click "Generate release notes" to automatically load release notes from merged PRs since the last release.
    4. Adjust the notes as required.
    5. Ensure that "Set as latest release" is checked and that both other boxes are unchecked.
    6. Hit "Publish release".
      • This will automatically trigger a GitHub workflow that will take care of publishing the package on PyPi.

UML

Code-base class diagrams updated on 02/11/2023, generated with https://www.gituml.com (save the images and open them in the browser for zooming).

  • Data processing classes and functions:
  • ML pipeline classes and functions:

Owner

  • Name: DeepRank
  • Login: DeepRank
  • Kind: organization

JOSS Publication

DeepRank2: Mining 3D Protein Structures with Geometric Deep Learning
Published
February 27, 2024
Volume 9, Issue 94, Page 5983
Authors
Giulia Crocioni ORCID
Netherlands eScience Center, Amsterdam, The Netherlands
Dani L. Bodor ORCID
Netherlands eScience Center, Amsterdam, The Netherlands
Coos Baakman ORCID
The Department of Medical BioSciences, Radboud University Medical Center, Nijmegen, The Netherlands
Farzaneh M. Parizi ORCID
The Department of Medical BioSciences, Radboud University Medical Center, Nijmegen, The Netherlands
Daniel-T. Rademaker ORCID
The Department of Medical BioSciences, Radboud University Medical Center, Nijmegen, The Netherlands
Gayatri Ramakrishnan ORCID
The Department of Medical BioSciences, Radboud University Medical Center, Nijmegen, The Netherlands
Sven A. van der Burg ORCID
Netherlands eScience Center, Amsterdam, The Netherlands
Dario F. Marzella ORCID
The Department of Medical BioSciences, Radboud University Medical Center, Nijmegen, The Netherlands
João M.c. Teixeira ORCID
Independent Researcher
Li C. Xue ORCID
The Department of Medical BioSciences, Radboud University Medical Center, Nijmegen, The Netherlands
Editor
Richard Gowers ORCID
Tags
PyTorch structural biology geometric deep learning 3D protein structures protein-protein interfaces single-residue variants graph neural networks convolutional neural networks DeepRank

Citation (CITATION.cff)

cff-version: "1.2.0"
authors:
  - family-names: Crocioni
    given-names: Giulia
    orcid: "https://orcid.org/0000-0002-0823-0121"
  - family-names: Bodor
    given-names: Dani L.
    orcid: "https://orcid.org/0000-0003-2109-2349"
  - family-names: Baakman
    given-names: Coos
    orcid: "https://orcid.org/0000-0003-4317-1566"
  - family-names: Parizi
    given-names: Farzaneh M.
    orcid: "https://orcid.org/0000-0003-4230-7492"
  - family-names: Rademaker
    given-names: Daniel-T.
    orcid: "https://orcid.org/0000-0003-1959-1317"
  - family-names: Ramakrishnan
    given-names: Gayatri
    orcid: "https://orcid.org/0000-0001-8203-2783"
  - family-names: Burg
    given-names: Sven A.
    name-particle: van der
    orcid: "https://orcid.org/0000-0003-1250-6968"
  - family-names: Marzella
    given-names: Dario F.
    orcid: "https://orcid.org/0000-0002-0043-3055"
  - family-names: Teixeira
    given-names: João M. C.
    orcid: "https://orcid.org/0000-0002-9113-0622"
  - family-names: Xue
    given-names: Li C.
    orcid: "https://orcid.org/0000-0002-2613-538X"
contact:
  - family-names: Crocioni
    given-names: Giulia
    orcid: "https://orcid.org/0000-0002-0823-0121"
doi: 10.5281/zenodo.10566809
message: If you use this software, please cite our article in the
  Journal of Open Source Software.
preferred-citation:
  authors:
    - family-names: Crocioni
      given-names: Giulia
      orcid: "https://orcid.org/0000-0002-0823-0121"
    - family-names: Bodor
      given-names: Dani L.
      orcid: "https://orcid.org/0000-0003-2109-2349"
    - family-names: Baakman
      given-names: Coos
      orcid: "https://orcid.org/0000-0003-4317-1566"
    - family-names: Parizi
      given-names: Farzaneh M.
      orcid: "https://orcid.org/0000-0003-4230-7492"
    - family-names: Rademaker
      given-names: Daniel-T.
      orcid: "https://orcid.org/0000-0003-1959-1317"
    - family-names: Ramakrishnan
      given-names: Gayatri
      orcid: "https://orcid.org/0000-0001-8203-2783"
    - family-names: Burg
      given-names: Sven A.
      name-particle: van der
      orcid: "https://orcid.org/0000-0003-1250-6968"
    - family-names: Marzella
      given-names: Dario F.
      orcid: "https://orcid.org/0000-0002-0043-3055"
    - family-names: Teixeira
      given-names: João M. C.
      orcid: "https://orcid.org/0000-0002-9113-0622"
    - family-names: Xue
      given-names: Li C.
      orcid: "https://orcid.org/0000-0002-2613-538X"
  date-published: 2024-02-27
  doi: 10.21105/joss.05983
  issn: 2475-9066
  issue: 94
  journal: Journal of Open Source Software
  publisher:
    name: Open Journals
  start: 5983
  title: "DeepRank2: Mining 3D Protein Structures with Geometric Deep
    Learning"
  type: article
  url: "https://joss.theoj.org/papers/10.21105/joss.05983"
  volume: 9
title: "DeepRank2: Mining 3D Protein Structures with Geometric Deep
  Learning"
version: "3.1.0"

GitHub Events

Total
  • Issues event: 1
  • Watch event: 14
  • Issue comment event: 6
  • Pull request review event: 1
  • Pull request event: 2
  • Fork event: 3
  • Create event: 1
Last Year
  • Issues event: 1
  • Watch event: 14
  • Issue comment event: 6
  • Pull request review event: 1
  • Pull request event: 2
  • Fork event: 3
  • Create event: 1

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 3,021
  • Total Committers: 35
  • Avg Commits per committer: 86.314
  • Development Distribution Score (DDS): 0.662
Past Year
  • Commits: 69
  • Committers: 2
  • Avg Commits per committer: 34.5
  • Development Distribution Score (DDS): 0.333
Top Committers
Name Email Commits
gcroci2 c****a@g****m 1,020
DaniBodor d****r@e****l 850
manonreau m****u@g****m 285
Coos Baakman c****n@r****l 256
Nicolas Renaud n****d@g****m 169
Joyce j****6@g****m 93
cbaakman c****n@u****l 52
Sven van der Burg s****g@e****l 44
Chia Yu Lin c****n@i****l 30
Giulia Crocioni c****n@i****l 30
Chia Yu Lin c****n@i****l 22
Giulia Crocioni c****n@i****l 21
Daniel Rademaker 4****r 18
Manon F. Réau m****u@i****x 15
Dani Bodor d****r@e****l 13
Chia Yu Lin c****n@s****l 13
Giulia Crocioni c****n@i****l 12
Chia Yu Lin c****n@i****l 12
Giulia Crocioni c****n@i****l 11
Manon Réau m****u@u****l 10
rgayatri r****i 10
Giulia Crocioni c****n@i****l 8
Manon F. Réau m****u@i****x 4
Giulia Crocioni c****n@i****l 4
Farzaneh Parizi 5****i 4
Coos Baakman c****n@r****l 3
Jennifer Wei 9****i 2
Alexandre Bonvin a****n@g****m 2
Coos c****n@g****m 2
root r****t@D****n 1
and 5 more...

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 120
  • Total pull requests: 100
  • Average time to close issues: 6 months
  • Average time to close pull requests: 9 days
  • Total issue authors: 17
  • Total pull request authors: 9
  • Average comments per issue: 2.28
  • Average comments per pull request: 1.52
  • Merged pull requests: 79
  • Bot issues: 0
  • Bot pull requests: 1
Past Year
  • Issues: 5
  • Pull requests: 7
  • Average time to close issues: 2 days
  • Average time to close pull requests: 3 days
  • Issue authors: 2
  • Pull request authors: 3
  • Average comments per issue: 0.6
  • Average comments per pull request: 0.71
  • Merged pull requests: 4
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • gcroci2 (67)
  • DaniBodor (43)
  • DTRademaker (3)
  • Tizzzzy (3)
  • rubenalv (3)
  • DanLep97 (2)
  • lloydtripp (2)
  • Lsz-20 (2)
  • svenvanderburg (1)
  • KevinVG207 (1)
  • cbaakman (1)
  • elboyran (1)
  • aminzia (1)
  • amjjbonvin (1)
  • Max1461 (1)
Pull Request Authors
  • gcroci2 (94)
  • DaniBodor (46)
  • DarioMarzella (2)
  • dependabot[bot] (2)
  • FriederikeBiermann (2)
  • cbaakman (1)
  • DanLep97 (1)
  • jnwei (1)
Top Labels
Issue Labels
stale (47) nice to have (23) bug (16) docs (13) feature (13) priority (13) CI (11) needs info (9) Query (8) blocking (7) testing (7) tools (6) good first issue (6) Trainer (6) SS (3) Dataset (3) JOSS (3) covariates (3) utils (2) disc (2) MolStruct (2) class diagram (2) duplicate (2) blocked (2) tutorials (1) framework paper (1) neuralnets (1)
Pull Request Labels
stale (11) SS (5) JOSS (3) dependencies (2) blocking (2) docs (1) class diagram (1) bug (1) Query (1)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 43 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 10
  • Total maintainers: 1
pypi.org: deeprank2

DeepRank2 is an open-source deep learning framework for data mining of protein-protein interfaces or single-residue missense variants.

  • Versions: 10
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 43 Last month
Rankings
Dependent packages count: 7.4%
Average: 38.1%
Dependent repos count: 68.8%
Maintainers (1)
Last synced: 6 months ago

Dependencies

.github/actions/install-python-and-package/action.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
  • s-weigand/setup-conda v1 composite
  • styfle/cancel-workflow-action 0.4.0 composite
.github/workflows/build.yml actions
  • ./.github/actions/install-python-and-package * composite
  • actions/checkout v3 composite
.github/workflows/cffconvert.yml actions
  • actions/checkout v3 composite
  • citation-file-format/cffconvert-github-action 2.0.0 composite
.github/workflows/coveralls.yml actions
  • ./.github/actions/install-python-and-package * composite
  • actions/checkout v3 composite
.github/workflows/fair-software.yml actions
  • fair-software/howfairis-github-action 0.2.1 composite
.github/workflows/linting.yml actions
  • ./.github/actions/install-python-and-package * composite
  • actions/checkout v3 composite
.github/workflows/markdown-link-check.yml actions
  • actions/checkout v3 composite
  • gaurav-nelson/github-action-markdown-link-check v1 composite
.github/workflows/release.yml actions
  • ./.github/actions/install-python-and-package * composite
  • actions/checkout v3 composite
  • actions/download-artifact v3 composite
  • actions/upload-artifact v3 composite
  • pypa/gh-action-pypi-publish v1.4.2 composite
.github/workflows/stale_issue_pr.yml actions
  • actions/stale v5.0.0 composite
docs/requirements.txt pypi
  • myst-parser *
  • readthedocs-sphinx-search ==0.1.1
  • sphinx ==5.3.0
  • sphinx_rtd_theme ==1.1.1
pyproject.toml pypi
.github/workflows/draft-pdf.yml actions
  • actions/checkout v3 composite
  • actions/upload-artifact v1 composite
  • openjournals/openjournals-draft-action master composite
Dockerfile docker
  • condaforge/miniforge3 23.3.1-1 build
env/environment.yml pypi
env/requirements.txt pypi
  • deeprank2 ==2.1.2
  • torch_cluster ==1.6.3
  • torch_scatter ==2.1.2
  • torch_sparse ==0.6.18
  • torch_spline_conv ==1.2.2