album
is a decentralized distribution platform for solutions to specific scientific problems.
It works across platforms, tools, and data domains and is designed to address limitations in reproducibility of
scientific data software solutions and workflows, particularly when interactivity is needed. album
can be used to
programmatically define how to interoperate between applications. It can ship versatile applications while tweaking
them for a specific target audience or use case.
Users
- one-point access to topic specific, not tool specific software solutions
- all solutions are installed in the same fashion across platforms (Linux, Windows, MacOS)
- browse existing catalogs easily online
- keep your data, run solutions locally
Run a solution from a catalog
Create a solution, wrap existing tools
Run solutions in a data workflow
Coming soon - we will share best practices for how to integrate Album into existing Data Version Control / workflow strategies.
Run solutions on the cluster / in the cloud
Coming soon - we will share best practices for running Album solutions in the cloud / on a cluster. Album catalogs already ship a Docker script for each solution.
Package your solution
Coming soon - we are working on providing a single command for generating a single file executable that takes care of installing Conda, Album and a specific solution all at once.
Repositories / releases
List of catalogs
This is a curated list of public catalogs. Please contact us to add yours to the list.
Follow this guide to learn how to benefit from Album catalogs and access their solutions.
- name / iddetails
- defaultAdd this URL to your local Album collection:https://gitlab.com/album-app/catalogs/default/
- helmholtz-imagingAdd this URL to your local Album collection:https://gitlab.com/album-app/catalogs/helmholtz-imaging
- This catalog is a collection of image data analysis solutions, curated by Helmholtz Imaging. These solutions were built for past or ongoing collaborations, projects, or support requests at Helmholtz Imaging and wrap existing tools or algorithms for common image data analysis problems.
- maintained by Helmholtz Imaging, developed here
- Browse catalog online
- random-thingsAdd this URL to your local Album collection:https://gitlab.com/frauzufall/random-things
- copick-catalogAdd this URL to your local Album collection:https://github.com/copick/copick-catalog
- cellcanvasAdd this URL to your local Album collection:https://github.com/cellcanvas/album-catalog
- solutions.computational.lifeAdd this URL to your local Album collection:https://github.com/kephale/solutions.computational.life
- cold-storageAdd this URL to your local Album collection:https://github.com/kephale/cold-storage
- album-utilsAdd this URL to your local Album collection:https://github.com/album-app/album-utils-catalog
Example solution
An Album solution is a single Python file. It includes all metadata and entry points to installing and launching the solution via a joint setup
method provided by the Album API.
The only mandatory arguments of the setup method are group
, name
, version
and album-api-version
. group
, name
, and version
build the identifier of the solution.
Here is an example with (almost) all available solution setup parameters.
from album.runner.api import setup
env_file = """
channels:
- conda-forge
dependencies:
- python=3.9
"""
def install():
print("Installing this solution...")
def run():
from album.runner.api import get_args
print("Running this solution...")
print("Hello ", str(get_args().name), ", nice to meet you!")
def pre_test():
return {'--name': 'Elsa'}
def test():
from album.runner.api import get_args
assert(get_args().name == 'Elsa')
def uninstall():
print("Uninstalling this solution...")
setup(
group="album",
name="template-python",
version="0.2.0",
album_api_version="0.5.1",
title="Python template",
description="An album solution template for running Python code.",
solution_creators=["Your name"],
cite=[{
"text": "Your first citation text",
"doi": "your first citation doi"
}],
tags=["template", "java"],
license="UNLICENSE",
documentation="",
covers=[{
"description": "Dummy cover image.",
"source": "cover.png"
}],
args=[{
"name": "name",
"type": "string",
"default": "Bugs Bunny",
"description": "How do you want to be addressed?"
}],
install=install,
run=run,
pre_test=pre_test,
test=test,
uninstall=uninstall,
dependencies={'environment_file': env_file}
)