shpc-registry

A remote registry for Singularity Registry HPC 🖊️

https://github.com/singularityhub/shpc-registry

Science Score: 36.0%

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

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (16.7%) to scientific vocabulary

Keywords

container-recipes environment-modules lmod shpc singularity singularity-hpc
Last synced: 6 months ago · JSON representation

Repository

A remote registry for Singularity Registry HPC 🖊️

Basic Info
Statistics
  • Stars: 13
  • Watchers: 2
  • Forks: 21
  • Open Issues: 30
  • Releases: 39
Topics
container-recipes environment-modules lmod shpc singularity singularity-hpc
Created over 3 years ago · Last pushed 6 months ago
Metadata Files
Readme Contributing Funding License Code of conduct Citation

README.md

Singularity HPC Registry

This is the main remote registry for Singularity HPC.

DOI

Read the documentation Browse the container module collection

Contribution

This registry showcases Singularity HPC (shpc), and provides the default set of containers for its default registry. Contributions are very much welcome, so please do submit a pull-request if you'd like more software to be added, or open an issue to request a new addition!

The documentation has an introduction about registries, and explains how to organize the required files for a container entry.

Automated generation

First of all, there is an automated way of getting most of the container.yaml written via GitHub magic automation.

  1. Fork of this repository.
  2. Go to the Actions tab.
  3. Select "Generate New Container" in the left-hand side menu.
  4. Click the "Run workflow" dropdown on the right-hand side.
  5. Fill in the name of the container you want to build a container.yaml for, as well as a URL and a description (both are mandatory fields). Leave the branch as main.
  6. Hit the green "Run workflow" button, wait and marvel at the magic :sparkles: happening. The GitHub Action will automatically open a pull request with most of the container.yaml filled in for you. You can check the branch out, edit it further in particular refine the list aliases.

Updates

Note that all of these scripts registry singularity-hpc (shpc) to be installed:

bash $ pip install singularity-hpc

Aliases

If you find a container missing aliases (or having extras) and you don't want to manually open files, we provide a helper script to do so. After cloning the repository, you could check out a new branch and add an alias (note the --registry defaults to the present working directory where you are running the script, so this should be run in the root of the cloned repository):

bash $ python .github/scripts/alias.py add quay.io/biocontainers/samtools test /opt/bin/test

If you ask to add an alias that already exists, this might mean changing the path, and you need to use force:

bash $ python .github/scripts/alias.py add quay.io/biocontainers/samtools test /opt/bin/test --force

And then to remove:

bash $ python .github/scripts/alias.py remove quay.io/biocontainers/samtools test

If an alias doesn't exist, you will get an error on remove. After these changes you would want to open a pull request to persist your changes to the registry.

Features

The equivalent helper exists for features. As an example, here is how to set a boolean (true/false) or value of None):

bash $ python .github/scripts/feature.py add quay.io/biocontainers/samtools home true $ python .github/scripts/feature.py add quay.io/biocontainers/samtools home false $ python .github/scripts/feature.py add quay.io/biocontainers/samtools home none

And how to remove it:

bash $ python .github/scripts/feature.py remove quay.io/biocontainers/samtools home

And then to remove:

bash $ python .github/scripts/alias.py remove quay.io/biocontainers/samtools test /opt/bin/test

The same rule applies for using --force.

Environment

And finally, we have the same for environment. Here are examples:

bash $ python .github/scripts/env.py add quay.io/biocontainers/samtools maintainer vsoch $ python .github/scripts/env.py remove quay.io/biocontainers/samtools maintainer

BioContainers

We have a script that will generate (non existing) modules for BioContainers, and it is run once a week! It works by way of using an updated cache at [https://github.com/singularityhub/shpc-registry-cache] generated directly from Biocontainers, which not only captures aliases for a latest tag, but also derives the accumulated counts across all 8K+ containers. With these counts we can generate aliases as follows:

  • Start with the loaded global counts, counts.json
  • Subset to those in a container, the alias counts
  • Rank ordering from least to greatest (lower frequency is a more unique commands we are interested in)
  • Including any counts with a frequency <= 10 (this accounts for containers with many unique aliases) --min-count-inclusion
  • Above that threshold, including the next N --additional-count-inclusion (less unique but possibly important or interesting)
  • Use these to generate a new container.yaml for the file (if it does not exist yet!)

To run the above, you'll need the cache cloned locally, and singularity-hpc installed

bash $ pip install git+https://github.com/singularityhub/singularity-hpc@main $ pip install requests pipelib beautifulsoup4 $ git clone https://github.com/singularityhub/shpc-registry-cache /tmp/cache

And then to run the script (this shows the defaults)

bash $ python .github/scripts/get_biocontainers.py --cache /tmp/cache --registry $(pwd) --min-count-inclusion 10 --additional-count-inclusion 25

from the root. Since this added over 8K containers to the registry, we needed a new strategy for running the updater TBA!

Expected content

Refer to the documentation for a list of the container.yaml fields, especially the required ones. A pull-request that doesn't contain the required fields will have changes requested to add them.

This registry is only for container images freely available. We can't accept container.yaml for private or access-restricted containers.

Furthermore, consider the following tips when making the pull-request:

  • Ideally, the container tags listed in container.yaml should be actual versions, not generic latest, stable, which tend to be moving targets. Remember that containers and Singularity HPC are there for reproducibility !
  • The convention here is to put containers hosted on the Docker Hub at the top of the repository, e.g. ruby, rather than in a docker.io sub-directory.
  • By putting your name down as author, you accept you may be contacted to review further updates of the container.yaml

Contributors

We use the all-contributors tool to generate a contributors graphic below.

Vanessasaurus
Vanessasaurus

Audrey Stott
Audrey Stott

Alec Scott
Alec Scott

manbat
manbat

Marco De La Pierre
Marco De La Pierre

Alexandre Strube
Alexandre Strube

Xavier Delaruelle
Xavier Delaruelle

SarahBeecroft
SarahBeecroft

Matthieu Muffato
Matthieu Muffato

Georgia Stuart
Georgia Stuart

Cristian Di Pietrantonio
Cristian Di Pietrantonio

Alexis Espinosa
Alexis Espinosa

Georgie Samaha
Georgie Samaha

Hasse Hagen Johansen
Hasse Hagen Johansen

License

This code is licensed under the MPL 2.0 LICENSE.

Owner

  • Name: Container Tools
  • Login: singularityhub
  • Kind: organization

open source container hosting registry, tools, and clients

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 17
  • Total pull requests: 290
  • Average time to close issues: about 1 month
  • Average time to close pull requests: about 15 hours
  • Total issue authors: 9
  • Total pull request authors: 10
  • Average comments per issue: 3.41
  • Average comments per pull request: 0.28
  • Merged pull requests: 251
  • Bot issues: 0
  • Bot pull requests: 245
Past Year
  • Issues: 2
  • Pull requests: 113
  • Average time to close issues: N/A
  • Average time to close pull requests: about 6 hours
  • Issue authors: 2
  • Pull request authors: 5
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.02
  • Merged pull requests: 86
  • Bot issues: 0
  • Bot pull requests: 100
Top Authors
Issue Authors
  • muffato (4)
  • vsoch (4)
  • SomePersonSomeWhereInTheWorld (2)
  • github-actions[bot] (2)
  • marcodelapierre (2)
  • HasseJohansen (1)
  • gq1 (1)
  • mdehollander (1)
  • clessig (1)
  • y-vectorfield (1)
Pull Request Authors
  • github-actions[bot] (312)
  • vsoch (19)
  • dipietrantonio (10)
  • HasseJohansen (5)
  • marcodelapierre (3)
  • muffato (3)
  • audreystott (1)
  • craigmeyer (1)
  • georgiastuart (1)
  • AlexisEspinosaGayosso (1)
Top Labels
Issue Labels
help wanted (1)
Pull Request Labels

Dependencies

.github/workflows/docs.yml actions
  • JamesIves/github-pages-deploy-action 4.1.1 composite
  • actions/checkout v3 composite
.github/workflows/new-recipe.yaml actions
  • actions/checkout v3 composite
  • vsoch/pull-request-action 1.0.16 composite
.github/workflows/release.yaml actions
  • actions/checkout v3 composite
  • avakar/tag-and-release 8f4b627f03fe59381267d3925d39191e27f44236 composite
.github/workflows/update-biocontainers.yaml actions
  • actions/checkout v3 composite
  • singularityhub/singularity-hpc/actions/cache-update main composite
.github/workflows/update-contributors.yaml actions
  • actions/checkout v2 composite
  • con/tributors 0.0.21 composite
  • vsoch/pull-request-action 1.0.12 composite
.github/workflows/update.yaml actions
  • actions/checkout v3 composite
  • vsoch/split-list-action main composite
.github/scripts/dev-requirements.txt pypi
  • beautifulsoup4 * development
  • packaging * development
  • requests * development
  • singularity-hpc * development