diff --git a/CHANGELOG.html b/CHANGELOG.html index 17c7c3f..a1428b8 100644 --- a/CHANGELOG.html +++ b/CHANGELOG.html @@ -53,7 +53,7 @@ - + @@ -66,7 +66,7 @@ - + diff --git a/_images/social_previews/summary_user_guide_templates_45ad33ac.png b/_images/social_previews/summary_user_guide_templates_45ad33ac.png deleted file mode 100644 index f4e08d3..0000000 Binary files a/_images/social_previews/summary_user_guide_templates_45ad33ac.png and /dev/null differ diff --git a/_images/social_previews/summary_user_guide_templates_fb98484a.png b/_images/social_previews/summary_user_guide_templates_fb98484a.png new file mode 100644 index 0000000..c0cb5d1 Binary files /dev/null and b/_images/social_previews/summary_user_guide_templates_fb98484a.png differ diff --git a/_sources/user_guide/templates.md b/_sources/user_guide/templates.md index c52753a..514c37c 100644 --- a/_sources/user_guide/templates.md +++ b/_sources/user_guide/templates.md @@ -1,3 +1,64 @@ # Project and stage templates -TODO +DSO provides a templating engine that allows to quickly bootrstap a project (`dso init`), folder, or stages (`dso create`). +Templates are based on [jinja2](https://jinja.palletsprojects.com/en/stable/templates/). + +## Available templates + +DSO currently comes with the following templates: + +Project templates: + +- [default](https://github.com/Boehringer-Ingelheim/dso/tree/main/src/dso/templates/init/default) - Default template, with + integration of `git`, `dvc`, `uv`, `pre-commit`, and `editorconfig`. + +Folder templates: + +- [default](https://github.com/Boehringer-Ingelheim/dso/tree/main/src/dso/templates/folder/default) - This one is very minimal, just a folder with `dvc.yaml` and `params.in.yaml` files. + +Stage templates: + +- [quarto](https://github.com/Boehringer-Ingelheim/dso/tree/main/src/dso/templates/stage/quarto) - Template for quarto notebook in R +- [bash](https://github.com/Boehringer-Ingelheim/dso/tree/main/src/dso/templates/stage/bash) - Template for executing a bash snippet + +The source code of the templates can be [inspected on GitHub](https://github.com/Boehringer-Ingelheim/dso/tree/main/src/dso/templates). +Templates shipped with DSO are [licensed](https://github.com/Boehringer-Ingelheim/dso/blob/main/src/dso/templates/LICENSE) under the Creative Commons Zero v1.0 +Universal license. + +## Using custom template libraries + +Currently, dso only supports the internal templates mentioned above. However, we plan to add support to custom +stage templates soon. This enables some interesting use-cases: + +- Organization-specific templates: Use templates that make it easier to comply with internal processes or apply + corporate design. +- Best-practice codebases: Start off common analysis types off a predefined template. We believe that some analyses + require more flexibility than predefined worflows such as nf-core, but can still benefit from a structured + "base" document to get started with. + +## Writing templates + +Template directories are recursively copied to their destination and files are rendered with [jinja2](https://jinja.palletsprojects.com/en/stable/templates/). +You can use all features of jinja2 such as `if/else` blocks or loops. Additionally, you have access to the +following variables: + +Available variables for **project** templates: + +| variable | content | +| ------------------- | ----------------------------------------------------- | +| project_name | project/folder name as provided to the `dso init` CLI | +| project_description | description as provided to the `dso init` CLI | + +Available variables for **folder** templates: + +| variable | content | +| ----------- | ------------------------------------------------------ | +| folder_name | folder name as provided to the `dso create folder` CLI | + +Available variables for **stage** templates: + +| variable | content | +| ----------------- | ----------------------------------------------------- | +| stage_name | folder name as provided to the `dso create stage` CLI | +| stage_description | description as provided to the `dso create stage` CLI | +| stage_path | Path to the stage relative to the project root | diff --git a/_static/documentation_options.js b/_static/documentation_options.js index 5e60357..dd5756b 100644 --- a/_static/documentation_options.js +++ b/_static/documentation_options.js @@ -1,5 +1,5 @@ const DOCUMENTATION_OPTIONS = { - VERSION: '0.1.dev1+gf67c66b', + VERSION: '0.1.dev1+g92ce961', LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/cli_command_reference.html b/cli_command_reference.html index 76188ff..0c6dd0b 100644 --- a/cli_command_reference.html +++ b/cli_command_reference.html @@ -53,7 +53,7 @@ - + @@ -66,7 +66,7 @@ - + diff --git a/cli_configuration.html b/cli_configuration.html index 2bab451..bbe4c8d 100644 --- a/cli_configuration.html +++ b/cli_configuration.html @@ -53,7 +53,7 @@ - + @@ -66,7 +66,7 @@ - + diff --git a/cli_installation.html b/cli_installation.html index 7236e8a..7f96578 100644 --- a/cli_installation.html +++ b/cli_installation.html @@ -53,7 +53,7 @@ - + @@ -66,7 +66,7 @@ - + @@ -367,7 +367,7 @@
$ dso --version
-dso, version 0.1.dev1+gf67c66b
+dso, version 0.1.dev1+g92ce961
If you prefer to manage the Python environment yourself, you can use pip
as usual:
uv
integration"], "titleterms": {"0": 0, "1": 0, "10": 0, "11": 0, "2": 0, "3": 0, "4": 0, "5": 0, "6": 0, "7": 0, "8": 0, "9": 0, "access": [6, 10], "add": 6, "advic": 0, "all": 6, "api": 8, "ar": 5, "bash": 6, "build": 4, "can": 5, "changelog": 0, "chore": 0, "code": 4, "command": 1, "commit": 14, "compil": [1, 13], "config": [1, 10], "configur": [2, 6], "contact": 7, "continu": 4, "contribut": 4, "creat": [1, 6], "credit": 7, "data": [6, 7], "depend": 4, "dev": 4, "doc": 4, "document": [0, 4], "dso": [1, 2, 3, 6, 7], "dvc": [5, 6, 11], "environ": 2, "exampl": 6, "exec": 1, "faq": 5, "featur": 0, "file": [5, 6, 13], "fix": 0, "folder": [1, 6], "freez": 3, "from": 6, "get": [1, 6, 7], "guid": 4, "hint": 4, "i": 5, "implement": 6, "init": [1, 6], "initi": 6, "instal": [3, 4, 7, 9], "integr": [4, 11, 14, 15, 17], "json": 2, "licens": 7, "lint": [1, 12], "local": 4, "migrat": 0, "new": 0, "note": 7, "number": 4, "oper": 7, "outsid": 5, "overwrit": 13, "param": 13, "paramet": [6, 13], "pre": 14, "project": [2, 3, 6, 16], "publish": 4, "pyproject": 2, "python": 6, "quarto": [1, 6, 15], "r": 6, "refer": [1, 8], "releas": [4, 7], "remot": 6, "repositori": 5, "repro": [1, 6], "reproduc": 6, "scienc": 7, "set": 2, "specif": 2, "stage": [1, 6, 10, 16], "start": [6, 7], "style": 4, "sync": 6, "templat": [0, 16], "test": 4, "toml": 2, "track": [5, 6], "typic": 9, "unreleas": 0, "updat": [0, 4], "us": 5, "usag": 9, "user": 2, "uv": 17, "v0": 0, "variabl": 2, "version": [3, 4], "watermark": 1, "within": 3, "write": 4, "yaml": [6, 13], "your": 6}})
\ No newline at end of file
+Search.setIndex({"alltitles": {"API reference": [[8, null]], "Accessing files and parameters from R or Python": [[6, "accessing-files-and-parameters-from-r-or-python"]], "Accessing stage config": [[10, null]], "Available templates": [[16, "available-templates"]], "Bash Stage": [[6, "bash-stage"]], "Building the docs locally": [[4, "building-the-docs-locally"]], "Can I use dvc to track files that are outside the repository?": [[5, "can-i-use-dvc-to-track-files-that-are-outside-the-repository"]], "Changelog": [[0, null]], "Chore": [[0, "chore"]], "Code-style": [[4, "code-style"]], "Command reference": [[1, null]], "Compiling params.yaml files": [[13, "compiling-params-yaml-files"]], "Configuration": [[2, null]], "Configuration files": [[6, "configuration-files"]], "Contact": [[7, "contact"]], "Continuous integration": [[4, "continuous-integration"]], "Contributing guide": [[4, null]], "Credits": [[7, "credits"]], "DSO: data science operations": [[7, null]], "DVC integration": [[11, null]], "Documentation": [[0, "documentation"], [0, "id1"], [0, "id8"]], "Environment variables": [[2, "environment-variables"]], "Example": [[6, "example"]], "FAQ": [[5, null]], "Fixes": [[0, "fixes"], [0, "id2"], [0, "id5"], [0, "id7"], [0, "id10"], [0, "id11"], [0, "id13"]], "Freezing the dso version within a project": [[3, "freezing-the-dso-version-within-a-project"]], "Getting started": [[6, null], [7, "getting-started"]], "Hints": [[4, "hints"]], "Implementing a stage": [[6, "implementing-a-stage"]], "Installation": [[3, null], [7, "installation"], [9, "installation"]], "Installing dev dependencies": [[4, "installing-dev-dependencies"]], "License": [[7, "license"]], "Linting": [[12, null]], "Migration advice": [[0, "migration-advice"], [0, "id14"], [0, "id15"]], "New Features": [[0, "new-features"], [0, "id6"], [0, "id12"]], "Overwriting Parameters": [[13, "overwriting-parameters"]], "Params files": [[13, null]], "Project and stage templates": [[16, null]], "Project and user specific settings \u2013 .dso.json": [[2, "project-and-user-specific-settings-dso-json"]], "Project-specific settings \u2013 pyproject.toml": [[2, "project-specific-settings-pyproject-toml"]], "Publishing a release": [[4, "publishing-a-release"]], "Quarto Stage": [[6, "quarto-stage"]], "Quarto integration": [[15, null]], "Release notes": [[7, "release-notes"]], "Syncing data with a remote": [[6, "syncing-data-with-a-remote"]], "Template updates": [[0, "template-updates"], [0, "id3"], [0, "id4"], [0, "id9"]], "Tracking and syncing files with DVC": [[6, "tracking-and-syncing-files-with-dvc"]], "Typical usage": [[9, "typical-usage"]], "Updating the version number": [[4, "updating-the-version-number"]], "Usage": [[9, null]], "Using custom template libraries": [[16, "using-custom-template-libraries"]], "Writing documentation": [[4, "writing-documentation"]], "Writing templates": [[16, "writing-templates"]], "Writing tests": [[4, "writing-tests"]], "[Unreleased]": [[0, "unreleased"]], "dso": [[1, "dso"]], "dso compile-config": [[1, "dso-compile-config"]], "dso create": [[1, "dso-create"]], "dso create folder": [[1, "dso-create-folder"]], "dso create stage": [[1, "dso-create-stage"]], "dso create \u2013 Add folders or stages to your project": [[6, "dso-create-add-folders-or-stages-to-your-project"]], "dso exec": [[1, "dso-exec"]], "dso exec quarto": [[1, "dso-exec-quarto"]], "dso get-config": [[1, "dso-get-config"]], "dso init": [[1, "dso-init"]], "dso init \u2013 Initialize a project": [[6, "dso-init-initialize-a-project"]], "dso lint": [[1, "dso-lint"]], "dso repro": [[1, "dso-repro"]], "dso repro \u2013 Reproducing all stages": [[6, "dso-repro-reproducing-all-stages"]], "dso watermark": [[1, "dso-watermark"]], "dvc.yaml": [[6, "dvc-yaml"]], "pre-commit integration": [[14, null]], "uv integration": [[17, null]], "v0.1.0": [[0, "v0-1-0"]], "v0.10.0": [[0, "v0-10-0"]], "v0.10.1": [[0, "v0-10-1"]], "v0.11.0": [[0, "v0-11-0"]], "v0.2.0": [[0, "v0-2-0"]], "v0.3.0": [[0, "v0-3-0"]], "v0.3.1": [[0, "v0-3-1"]], "v0.4.0": [[0, "v0-4-0"]], "v0.4.1": [[0, "v0-4-1"]], "v0.4.2": [[0, "v0-4-2"]], "v0.4.3": [[0, "v0-4-3"]], "v0.4.4": [[0, "v0-4-4"]], "v0.5.0": [[0, "v0-5-0"]], "v0.6.0": [[0, "v0-6-0"]], "v0.6.1": [[0, "v0-6-1"]], "v0.7.0": [[0, "v0-7-0"]], "v0.8.0": [[0, "v0-8-0"]], "v0.8.1": [[0, "v0-8-1"]], "v0.8.2": [[0, "v0-8-2"]], "v0.9.0": [[0, "v0-9-0"]]}, "docnames": ["CHANGELOG", "cli_command_reference", "cli_configuration", "cli_installation", "contributing", "faq", "getting_started", "index", "python_api", "python_usage", "user_guide/accessing_stage_configs", "user_guide/dvc", "user_guide/linting", "user_guide/params_files", "user_guide/pre_commit", "user_guide/quarto", "user_guide/templates", "user_guide/uv"], "envversion": {"sphinx": 64, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1}, "filenames": ["CHANGELOG.md", "cli_command_reference.md", "cli_configuration.md", "cli_installation.md", "contributing.md", "faq.md", "getting_started.md", "index.md", "python_api.md", "python_usage.md", "user_guide/accessing_stage_configs.md", "user_guide/dvc.md", "user_guide/linting.md", "user_guide/params_files.md", "user_guide/pre_commit.md", "user_guide/quarto.md", "user_guide/templates.md", "user_guide/uv.md"], "indexentries": {"dso": [[8, "module-dso", false]], "here() (in module dso)": [[8, "dso.here", false]], "module": [[8, "module-dso", false]], "read_params() (in module dso)": [[8, "dso.read_params", false]], "set_stage() (in module dso)": [[8, "dso.set_stage", false]], "stage_here() (in module dso)": [[8, "dso.stage_here", false]]}, "objects": {"": [[8, 0, 0, "-", "dso"]], "dso": [[8, 1, 1, "", "here"], [8, 1, 1, "", "read_params"], [8, 1, 1, "", "set_stage"], [8, 1, 1, "", "stage_here"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "function", "Python function"]}, "objtypes": {"0": "py:module", "1": "py:function"}, "terms": {"": [0, 3, 4, 6, 8], "0": [3, 6, 7, 16], "01_": 6, "01_preprocess": 6, "02_qc": 6, "05": 6, "0m": 1, "1": [1, 2, 3, 6], "100": 0, "12": 0, "1mdso": 1, "2": [1, 2, 6, 13], "26": 0, "2m": 1, "2ma": 1, "2maddition": 1, "2maltern": 1, "2mand": 1, "2mavail": 1, "2mbash": 1, "2mbe": 1, "2mby": 1, "2mcan": 1, "2mconfigur": 1, "2mdeclar": 1, "2mdirectori": 1, "2mexist": 1, "2mfile": 1, "2mif": 1, "2mmention": 1, "2mnextflow": 1, "2mno": 1, "2mone": 1, "2moverwritten": 1, "2mpath": 1, "2mperform": 1, "2mpre": 1, "2mquarto": 1, "2mrelat": 1, "2mreport": 1, "2mspecifi": 1, "2mstage": 1, "2msuppli": 1, "2mtechnic": 1, "2mtempoarili": 1, "2mthat": 1, "2mthe": 1, "2mthi": 1, "2mto": 1, "2myou": 1, "3": [3, 7], "30": 0, "31m": 1, "32m": 1, "33": 0, "33m": 1, "33mbash": 1, "33minteg": 1, "33mquarto": 1, "33mtext": 1, "33musag": 1, "35": 0, "36": [0, 1], "36m": 1, "36marg": 1, "36mcommand": 1, "36mcompil": 1, "36mcreat": 1, "36mexec": 1, "36mfolder": 1, "36mget": 1, "36minit": 1, "36minput_imag": 1, "36mlint": 1, "36mname": 1, "36moption": 1, "36moutput_imag": 1, "36mquarto": 1, "36mrepro": 1, "36mstage": 1, "36mwatermark": 1, "40": 0, "40m": 1, "40m120": 1, "40m_quarto": 1, "40mdso": 1, "40mdso_quiet": 1, "40mdso_skip_compil": 1, "40mdso_verbos": 1, "40mdvc": 1, "40mmkdir": 1, "40mparam": 1, "40mpath": 1, "40mreport": 1, "40msrc": 1, "45": 0, "46": 0, "4mparamet": 1, "50": 0, "52": 0, "57": 0, "58": 0, "59": 0, "61": 0, "63": 0, "69": 0, "73": 0, "76": 0, "78": 0, "80": [0, 1], "A": [0, 1, 6, 7], "As": 2, "At": 7, "By": [3, 6, 9], "FOR": 7, "For": [0, 2, 4, 6], "If": [0, 2, 3, 4], "In": [0, 1, 3, 4, 6, 10, 11], "It": [0, 2, 6, 7, 8], "NO": 6, "On": 4, "The": [0, 1, 2, 3, 4, 6, 8, 9, 16], "Then": 0, "There": 0, "These": 0, "To": [0, 3, 4, 6], "With": 0, "_version2": 6, "aa111160": 0, "aaaaaa88": 1, "about": [3, 6], "abov": 16, "absolut": [0, 2, 5, 8], "access": [9, 16], "accord": 1, "account": 0, "achiev": 1, "across": [2, 13], "act": 6, "activ": [0, 4, 7, 8], "actual": 0, "ad": [0, 4, 6], "adapt": 13, "add": [0, 1, 3, 4, 16], "addit": [0, 4, 6], "addition": [0, 4, 7, 16], "address": 0, "adher": [0, 4], "adjust": 0, "advantag": 0, "affect": 2, "after": [0, 6], "again": 0, "against": [4, 6], "aim": 6, "alexand": 7, "all": [0, 1, 2, 3, 4, 13, 16], "allow": [0, 4, 16], "alreadi": [0, 4], "also": [0, 1, 3, 6, 7], "altern": [1, 4], "alwai": [0, 6, 8], "an": [0, 1, 3, 4, 5, 6, 11], "analys": 16, "analysi": [6, 7, 13, 16], "ani": [0, 1, 2, 4, 6, 7, 8, 9], "anlaysi": 7, "annot": 4, "answer": 2, "anymor": 0, "anyth": 0, "api": [0, 4, 9], "append": [6, 8], "appli": [2, 16], "appropri": 2, "ar": [0, 1, 2, 3, 4, 6, 7, 8, 9, 13, 16], "arbitrari": [1, 6], "argument": [0, 1], "around": [1, 6], "arrang": 1, "ask": [0, 2], "assm": 1, "associ": 6, "assum": 4, "attempt": 0, "audienc": 4, "auto": 6, "autodoc": 4, "autoformat": 4, "autom": [0, 2, 4], "automat": [0, 1, 3, 4, 6, 13], "automaticlli": 4, "avail": [0, 3, 4, 6], "avoid": 0, "backend": 6, "background": 3, "backward": 4, "bar": 6, "base": [0, 6, 16], "bash": [0, 1, 16], "becaus": [0, 4, 9], "becom": 3, "been": [0, 4], "befor": [0, 1, 4], "before_script": 0, "behavior": 2, "being": 0, "believ": 16, "below": 6, "benefit": 16, "best": 16, "between": 3, "bibliographi": 0, "bibtex": 4, "bin": 4, "binari": 3, "biomark": 7, "black": 0, "block": 16, "boehring": [0, 7], "bootrstap": 16, "both": [0, 6], "box": 0, "branch": [0, 4], "brief": 4, "broader": 13, "bucket": 6, "bug": 4, "build": 7, "built": 0, "cach": [0, 5], "call": [0, 1, 2, 6, 8], "can": [0, 1, 2, 3, 4, 6, 7, 8, 9, 16], "cannot": 1, "case": [0, 1, 4, 16], "catch": 0, "cd": [4, 6], "certain": [0, 2], "chang": [0, 2, 4, 6], "changelog": 7, "check": [0, 1, 4, 7], "check_ask_pre_commit": 2, "checkout": [0, 5], "checkum": 6, "child": 1, "choos": 0, "ci": 4, "citat": 4, "claus": 0, "clean": 0, "clearli": 0, "cli": [0, 2, 3, 9, 16], "clinic": 7, "cmd": 6, "code": [0, 6, 7, 16], "codebas": 16, "coher": 6, "collabor": [2, 3, 6], "combin": 0, "come": 16, "command": [0, 2, 3, 4, 6, 7], "comment": 0, "commit": [0, 1, 2, 4, 6, 16], "common": [6, 7, 16], "commun": [0, 7], "compar": [0, 6], "compat": [0, 4], "compil": [0, 2, 6, 9], "complet": 0, "compli": 16, "compos": 6, "comput": 6, "concord": 0, "conduct": 6, "conf": 4, "config": [0, 2, 6, 8, 13], "configur": [0, 1, 7, 9, 13], "confirm": 0, "conflict": 0, "connect": 7, "consid": [4, 6], "consist": [0, 1, 3, 4], "contain": [0, 1, 3, 6, 13], "content": [0, 16], "context": 6, "control": [0, 4, 6], "conveni": [0, 9], "copi": [1, 16], "core": [3, 6, 16], "corpor": 16, "correct": [0, 8, 9], "cover": 0, "creat": [0, 2, 3, 4, 7, 16], "creativ": [7, 16], "css": 0, "csv": 6, "current": [0, 1, 2, 6, 8, 9, 16], "custom": [0, 1], "d": 6, "daniel": 7, "data": 0, "date": 8, "debug": [0, 1, 2], "decid": 0, "declar": [0, 2, 3, 6, 8, 9], "default": [0, 1, 2, 3, 6, 8, 9, 16], "defer": 0, "defin": [1, 4, 6], "dep": [0, 6, 8, 9], "depend": [0, 1, 3, 6, 7], "describ": [10, 14, 15], "descript": [0, 1, 6, 16], "design": 16, "despit": 6, "destin": 16, "detail": [6, 7, 9, 10, 13], "detect": 4, "dev1": 3, "develop": [4, 7], "devic": [0, 1], "diagram": 6, "dict": 8, "dictionari": [0, 9], "didn": 4, "differ": 0, "dir": [1, 8], "directli": 6, "directori": [0, 1, 6, 7, 8, 9, 16], "directorynam": 6, "disabl": [0, 1, 2], "disclaim": 0, "displai": 6, "distribut": 7, "do": [0, 1, 4, 6], "doc": 0, "docstr": 4, "document": [6, 7, 11, 16], "doe": [2, 6, 8, 9], "doesn": 0, "don": 0, "done": 0, "download": 4, "dso": [0, 4, 8, 9, 10, 11, 13, 14, 15, 16], "dso001": 0, "dso_cor": 3, "dso_quiet": [0, 2], "dso_skip_check_ask_pre_commit": [0, 2], "dso_skip_compil": [0, 2], "dso_verbos": 2, "dure": 0, "dvc": [0, 1, 2, 7, 8, 9, 16], "dvc_storag": 6, "e": [0, 1, 3, 4, 5, 6, 9, 13], "each": [0, 2, 3, 6, 9], "earli": [0, 4], "eas": 7, "easi": [0, 3, 6], "easier": 16, "easiest": 4, "easili": [0, 6], "edit": 2, "editor": 4, "editorconfig": 16, "effect": 0, "either": [4, 6, 7], "els": 16, "embed": 6, "empti": [0, 1, 2], "enabl": [0, 2, 4, 16], "encourag": 4, "enforc": 4, "engin": 16, "enhanc": 13, "ensur": [0, 3, 6, 8, 9], "entir": 0, "entri": [0, 4], "env": [1, 4], "environ": [0, 3, 4], "eof": 6, "equival": 2, "ergonom": 3, "error": [0, 1, 4], "essenti": 6, "etc": 13, "euo": [0, 6], "evalu": 0, "even": [6, 7], "everi": [0, 3, 4], "exact": 3, "exactli": 3, "except": 0, "exclude_sampl": 6, "exec": [0, 6, 15], "execut": [0, 1, 4, 6, 16], "exist": [0, 1], "exit": 1, "experiment": [0, 3], "explain": [11, 13], "explicitli": 0, "extend": 0, "extens": [3, 4], "extern": [1, 4], "external_clinical_annot": 6, "f": 6, "fail": [0, 4], "fals": 0, "familiar": 4, "favorit": 7, "fc": 6, "featur": [3, 4, 6, 16], "feedback": 7, "field": 0, "file": [0, 1, 2, 3, 7, 9, 16], "file_with_abs_path": 6, "filenam": [0, 6], "filesystem": 6, "filter": [0, 1], "final": 4, "find": [0, 4], "fine": 0, "first": [0, 3, 4, 6], "fit": 7, "fix": 4, "flag": 0, "flexibl": 16, "fly": 8, "folder": [0, 13, 16], "folder_nam": 16, "follow": [0, 1, 2, 4, 6, 16], "font_color": [0, 1], "font_outlin": [0, 1], "font_outline_color": [0, 1], "font_siz": [0, 1], "foo": 6, "forc": [0, 1], "forget": [8, 9], "format": [0, 1, 4], "found": [0, 6, 9], "foundat": 7, "free": 7, "friendli": 3, "from": [0, 1, 3, 4, 8, 9, 16], "fulli": 0, "funciton": 0, "function": [0, 4, 8], "futur": [0, 3], "g": [0, 1, 3, 6, 9, 13], "g92ce961": 3, "gener": [1, 6, 7, 13], "get": [0, 4, 8, 10, 16], "git": [0, 2, 4, 6, 7, 16], "github": [0, 4, 16], "gitignor": [0, 6], "give": 4, "given": [0, 1, 4], "gnu": 7, "good": 3, "graphic": 1, "great": 7, "gregor": 7, "guarante": 0, "gui": 4, "guid": [6, 13], "ha": [0, 9], "had": 0, "hand": [2, 6], "hatch": 4, "have": [0, 1, 4, 6, 16], "header": 0, "help": 1, "helper": 7, "here": [2, 6, 8, 14, 15], "hierarch": 7, "high": 7, "highest": 4, "hiyapyco": [0, 7], "home": 6, "hook": [0, 2, 14], "hope": 7, "host": 0, "how": [2, 4, 6, 10, 11, 15], "howev": [5, 16], "html": 6, "http": 0, "i": [0, 1, 2, 3, 4, 6, 7, 8, 9, 11, 13, 16], "id": [0, 4], "ignor": 0, "imag": [0, 1], "implement": [0, 1], "impli": 7, "import": [0, 6, 9], "improv": 0, "inam": 0, "includ": [0, 1, 4, 6], "incompat": 4, "increas": 1, "increment": 4, "independ": [2, 9], "individu": 6, "infin": 0, "info": [0, 1, 2], "inform": [0, 3, 4, 6, 9], "ingelheim": [0, 7], "inherit": [1, 6, 13], "init": [0, 7, 16], "initi": [0, 1, 7], "input": [0, 4, 6], "inspect": 16, "instal": [0, 2], "instanc": 6, "instead": [0, 1, 3], "instruct": 0, "intact": 0, "integ": 1, "integr": [7, 16], "intend": 2, "interest": 16, "interfac": 0, "intern": [0, 2, 7, 8, 16], "interpol": 0, "intersphinx_map": 4, "introduc": [0, 7], "invalid": [0, 5], "io": 0, "irrespect": 9, "isol": 3, "issu": [0, 4, 7], "its": [4, 6], "itself": 6, "jinja": [0, 13], "jinja2": [0, 1, 6, 7, 16], "job": 4, "json": 0, "jupyt": [0, 7], "just": [0, 1, 4, 16], "keep": [0, 8, 9], "kei": 1, "kept": 0, "kind": 6, "know": 0, "label": 4, "languag": 0, "later": [0, 7], "latest": 0, "layout": 0, "led": 0, "left": 1, "less": 0, "lesser": 7, "let": 6, "level": [0, 6, 13], "lgpl": [0, 7], "librari": 0, "licens": 16, "like": [0, 3], "line": [0, 4, 7], "link": [4, 11], "lint": [0, 7], "list": [0, 1, 4], "ll": 6, "load": [0, 1, 8, 9], "local": [0, 6], "lock": [3, 6], "log": [0, 1, 2], "logger": 0, "long": [8, 9], "look": 6, "loop": [0, 16], "m": [4, 6], "made": 0, "major": 4, "make": [0, 3, 4, 6, 13, 16], "manag": [3, 4, 6, 7], "mani": [0, 6, 7], "manner": 4, "manual": 4, "markdown": 4, "markedli": 4, "matrix": 0, "matter": 8, "maximum": 4, "mean": 0, "meant": 2, "meet": 7, "mention": [1, 16], "merchant": 7, "merg": 0, "messag": [0, 1, 2, 4, 6], "metadata": [4, 6], "metadata_fil": 6, "mgr": 0, "middl": 1, "might": [0, 1, 3], "minim": 16, "minimum": 4, "minor": 4, "mirror": 0, "miss": [0, 4], "mkdir": 6, "modifi": [2, 6, 7, 13], "modul": [0, 6], "more": [0, 4, 7, 9, 13, 16], "most": [4, 6, 7], "move": [0, 6], "multipl": [0, 1, 13], "must": [1, 9], "my_stag": [6, 9], "myst": 4, "name": [0, 1, 3, 4, 6, 16], "napoloen": 4, "navig": [4, 6], "necessari": [3, 6], "need": [0, 4, 6], "nest": 1, "never": [0, 1, 6], "nevertheless": 0, "new": [1, 4, 6], "newer": 0, "nf": [6, 16], "nitpick_ignor": 4, "nois": 0, "non": 2, "none": [0, 8], "nonzero": 0, "notabl": [0, 7], "note": 5, "notebook": [0, 6, 7, 9, 16], "noth": 1, "now": 0, "null": 0, "number": 0, "numer": 6, "numpi": 4, "object": [0, 4, 8, 9], "obstrus": 0, "off": 16, "onc": [0, 1, 3], "one": [0, 4, 8, 9, 16], "ones": 0, "onli": [0, 1, 4, 5, 6, 8, 9, 16], "open": [4, 7], "option": [0, 1, 4, 6, 7], "order": [0, 6], "organ": [1, 6, 16], "origin": 6, "other": [0, 3, 4, 6], "otherwis": 0, "our": 7, "out": [0, 3, 4, 6], "output": [0, 4, 6, 8, 9], "outsid": [4, 6], "over": 13, "overlai": 7, "overrid": [0, 6], "overview": [2, 11], "overwrit": [0, 1], "overwritten": 0, "own": 4, "p_adjust": 6, "p_valu": 6, "packag": [0, 1, 3, 4, 6, 9], "page": [0, 4, 6], "panda": 9, "pandocfilt": 0, "param": [0, 1, 6, 8, 9, 16], "paramet": [0, 1, 8, 9], "parent": [0, 1, 6], "part": [0, 9], "particular": [3, 7], "particularli": 6, "partli": 0, "pass": 1, "patch": 4, "path": [0, 1, 2, 4, 5, 6, 8, 9, 16], "pattern": 0, "pd": 9, "pdf": 0, "peltzer": 7, "per": 0, "perform": [0, 1, 6], "permiss": 0, "persist": 9, "pick": 0, "pin": 3, "pip": [3, 4], "pipefail": [0, 6], "pipelin": 6, "pipx": 3, "place": 0, "placehold": 6, "plan": 16, "pleas": [2, 4, 7], "plot": 0, "png": 0, "point": [4, 6], "porject": 3, "posit": 0, "possibl": [0, 4, 5], "practic": [3, 16], "pre": [0, 1, 2, 4, 6, 16], "preced": [6, 13], "predefin": [6, 16], "prefer": [3, 4], "prefix": 6, "prepar": 0, "preprocess": 6, "present": 1, "preserv": 0, "prettier": 4, "prevent": 1, "previou": [0, 6], "previous": [0, 6], "print": [0, 1], "privat": 0, "process": [6, 16], "program": 7, "project": [0, 1, 4, 7, 8, 9, 13, 14], "project1": 6, "project_descript": 16, "project_nam": 16, "prompt": 0, "properti": 2, "prototyp": 0, "provid": [0, 2, 4, 7, 8, 9, 11, 16], "public": [0, 7], "publish": 7, "pull": [0, 4, 5], "purpos": [2, 4, 6, 7, 9], "push": [0, 4, 6], "py": 4, "pypi": [3, 4], "pyproject": [0, 3, 4], "pytest": 4, "python": [0, 3, 4, 9], "python3": 4, "q": [0, 1, 2], "qmd": [1, 6], "qq": [0, 1, 2], "qso": 0, "qualiti": [6, 7], "quarto": [0, 7, 16], "question": [0, 2], "quickli": [0, 16], "quiet": [0, 1], "r": [0, 1, 3, 16], "rais": 4, "rang": 1, "rational": 10, "re": 0, "reach": 4, "read": [0, 6], "read_csv": 9, "read_param": [0, 8, 9, 10], "readabl": 6, "realiz": 0, "reason": 0, "rebas": 4, "recommend": [3, 6], "recompil": [0, 8], "recurs": [1, 16], "redistribut": 7, "reduc": [0, 1], "redund": 0, "refactor": 0, "refer": [2, 4, 6, 7, 13], "refus": 0, "rel": [0, 1, 2, 6, 8, 9, 16], "rel_path": 8, "relat": [1, 6], "releas": 0, "reli": 4, "relicens": 0, "relvant": 0, "rememb": 3, "remote_nam": 6, "remov": 0, "remove_outli": 6, "renam": 0, "render": [0, 1, 6, 16], "repo": 0, "report": [0, 1, 6], "repositori": [4, 6], "repot": 0, "repro": [0, 5], "reproduc": [0, 3, 7], "request": 4, "requir": [0, 1, 6, 7, 8, 16], "resolv": [0, 1, 9], "respect": [0, 1, 2, 11], "result": [3, 6], "retriev": 4, "return": [0, 4, 8], "review": 0, "rgba": 1, "right": 1, "rm": 0, "rmarkdown": 0, "rna": 6, "rna_seq": 6, "rnaseq": 6, "root": [0, 1, 2, 4, 6, 8, 9, 16], "ruff": 4, "rule": [0, 1], "run": [0, 1, 3, 4, 6], "runtim": 0, "s3": 6, "same": [0, 1, 3, 13], "sample_1": 6, "sample_42": 6, "sample_6": 6, "samplesheet": [6, 9], "save": 4, "scanpi": 4, "schreyer": 7, "schwarzl": 7, "script": [0, 1, 6, 9], "search": 0, "second": 6, "section": [2, 6, 7, 10, 11, 13], "see": [0, 3, 4, 7, 9], "select": 6, "semant": [0, 4], "separ": [0, 3, 7], "seq": 6, "serv": 6, "servic": 4, "session": 9, "set": [0, 1, 6, 8, 13], "set_stag": 8, "setup": 0, "sever": [1, 6], "shall": [0, 1], "share": [0, 2, 6], "shell": 0, "ship": 16, "should": [0, 6], "show": [1, 4, 6], "shown": 0, "side": 0, "simpl": [0, 1], "simpli": 4, "sinc": [0, 3], "singl": [0, 1, 6], "size": 1, "skip": [0, 1, 2], "snippet": [0, 1, 16], "so": 4, "softwar": 7, "solv": 0, "some": [0, 1, 6, 16], "someth": 0, "soon": 16, "sort": 0, "sourc": [4, 7, 16], "space": 0, "speak": 6, "specif": [0, 3, 6, 13, 16], "specifi": [0, 1, 3, 4, 5, 6, 9, 13], "speed": 0, "sphinx": [0, 4], "sphinxcontrib": 4, "src": 6, "stage": [0, 2, 8, 9, 13], "stage_descript": 16, "stage_her": [8, 9], "stage_nam": [1, 6, 16], "stage_path": 16, "standalon": 1, "standard": 7, "start": [0, 16], "stderr": 0, "stdout": [0, 1], "step": 6, "stick": 0, "still": [3, 4, 6, 16], "storag": 6, "store": [1, 2, 6, 8, 9], "str": 8, "strongli": 4, "structur": [1, 4, 6, 16], "stuck": 0, "sturm": 7, "stylesheet": 0, "subcommand": 1, "subdirectori": [1, 8, 9], "subfold": [1, 6, 9], "successfulli": 0, "suppli": 6, "support": [0, 2, 4, 6, 16], "sure": 0, "svg": 0, "switch": 0, "syntax": 6, "system": [0, 6], "t": [0, 4], "tabl": 4, "tag": [0, 4], "take": [0, 13], "task": 4, "templat": [1, 6, 7], "term": 7, "test": [0, 6], "test_project": 6, "text": [0, 1, 4], "than": 16, "thei": [0, 2], "them": [2, 6], "therefor": 6, "thereof": 9, "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 16], "think": 3, "those": [1, 6, 13], "threshold": 6, "through": [4, 6], "throughout": 6, "ti": 0, "tile": [0, 1], "tile_s": [0, 1], "time": [3, 4], "timestamp": 0, "titl": 0, "tlf": 6, "todo": [10, 11, 12, 13, 14, 15, 17], "toler": 0, "tom": 7, "toml": [0, 3, 4], "too": 0, "tool": [1, 2, 3, 4, 7], "top": [1, 7], "toward": 0, "track": [0, 2], "tracker": 7, "transpar": 1, "trial": 7, "trigger": 4, "true": [0, 2, 6], "truth": 6, "turn": 0, "two": 6, "txt": 6, "type": [3, 4, 8, 16], "typehint": 4, "typical_analysis_data_set": 6, "u": 3, "under": [1, 7, 16], "understand": 4, "univers": [7, 16], "unless": 1, "unnecessari": 0, "unnecessarili": 0, "until": 0, "untrack": 0, "up": [0, 8], "upcom": 0, "updat": [3, 5, 8, 9], "upon": 0, "upstream": 0, "us": [0, 1, 2, 3, 4, 6, 7, 8, 9, 13, 14], "usag": [4, 6], "use_relative_path": 2, "user": [0, 3, 6], "usual": [0, 3, 6], "uv": [0, 3, 6, 7, 16], "v": [0, 1, 2], "v1": [7, 16], "valu": [0, 2, 7, 13], "var": 1, "variabl": [0, 6, 16], "variou": [0, 1], "vc": 4, "vendor": 0, "venv": 4, "verbos": [0, 1], "veri": [3, 16], "version": [0, 1, 5, 6, 7], "via": [0, 7], "virtual": 0, "visual": 0, "vx": 4, "wa": [0, 6, 7], "wai": [0, 3, 4], "want": [0, 2], "warn": [0, 1, 2], "warranti": 7, "watermark": [0, 15], "we": [0, 3, 4, 6, 7, 10, 11, 14, 15, 16], "well": 0, "were": [0, 6], "when": [0, 4, 6, 13], "where": [0, 6], "whether": 2, "which": [0, 4], "while": [0, 3, 4, 6], "who": 2, "whole": 6, "wider": 4, "wish": 1, "within": 6, "without": [0, 6, 7], "won": 0, "worflow": 16, "work": [0, 1, 3, 4, 6, 8, 9, 10, 11], "workflow": 4, "wrapper": [0, 1, 6], "x": [0, 4], "yaml": [0, 1, 8, 9, 16], "ye": 5, "yet": 1, "yml": 1, "you": [1, 3, 4, 6, 7, 9, 16], "your": [0, 4, 7, 9], "yourself": 3, "zero": [7, 16]}, "titles": ["Changelog", "Command reference", "Configuration", "Installation", "Contributing guide", "FAQ", "Getting started", "DSO: data science operations", "API reference", "Usage", "Accessing stage config", "DVC integration", "Linting", "Params files", "pre-commit integration", "Quarto integration", "Project and stage templates", "uv
integration"], "titleterms": {"0": 0, "1": 0, "10": 0, "11": 0, "2": 0, "3": 0, "4": 0, "5": 0, "6": 0, "7": 0, "8": 0, "9": 0, "access": [6, 10], "add": 6, "advic": 0, "all": 6, "api": 8, "ar": 5, "avail": 16, "bash": 6, "build": 4, "can": 5, "changelog": 0, "chore": 0, "code": 4, "command": 1, "commit": 14, "compil": [1, 13], "config": [1, 10], "configur": [2, 6], "contact": 7, "continu": 4, "contribut": 4, "creat": [1, 6], "credit": 7, "custom": 16, "data": [6, 7], "depend": 4, "dev": 4, "doc": 4, "document": [0, 4], "dso": [1, 2, 3, 6, 7], "dvc": [5, 6, 11], "environ": 2, "exampl": 6, "exec": 1, "faq": 5, "featur": 0, "file": [5, 6, 13], "fix": 0, "folder": [1, 6], "freez": 3, "from": 6, "get": [1, 6, 7], "guid": 4, "hint": 4, "i": 5, "implement": 6, "init": [1, 6], "initi": 6, "instal": [3, 4, 7, 9], "integr": [4, 11, 14, 15, 17], "json": 2, "librari": 16, "licens": 7, "lint": [1, 12], "local": 4, "migrat": 0, "new": 0, "note": 7, "number": 4, "oper": 7, "outsid": 5, "overwrit": 13, "param": 13, "paramet": [6, 13], "pre": 14, "project": [2, 3, 6, 16], "publish": 4, "pyproject": 2, "python": 6, "quarto": [1, 6, 15], "r": 6, "refer": [1, 8], "releas": [4, 7], "remot": 6, "repositori": 5, "repro": [1, 6], "reproduc": 6, "scienc": 7, "set": 2, "specif": 2, "stage": [1, 6, 10, 16], "start": [6, 7], "style": 4, "sync": 6, "templat": [0, 16], "test": 4, "toml": 2, "track": [5, 6], "typic": 9, "unreleas": 0, "updat": [0, 4], "us": [5, 16], "usag": 9, "user": 2, "uv": 17, "v0": 0, "variabl": 2, "version": [3, 4], "watermark": 1, "within": 3, "write": [4, 16], "yaml": [6, 13], "your": 6}})
\ No newline at end of file
diff --git a/user_guide/accessing_stage_configs.html b/user_guide/accessing_stage_configs.html
index 12f9b13..7a6fbb5 100644
--- a/user_guide/accessing_stage_configs.html
+++ b/user_guide/accessing_stage_configs.html
@@ -53,7 +53,7 @@
-
+
@@ -66,7 +66,7 @@
-
+
diff --git a/user_guide/dvc.html b/user_guide/dvc.html
index c18585a..fe09453 100644
--- a/user_guide/dvc.html
+++ b/user_guide/dvc.html
@@ -53,7 +53,7 @@
-
+
@@ -66,7 +66,7 @@
-
+
diff --git a/user_guide/linting.html b/user_guide/linting.html
index d65192d..4d4f7cd 100644
--- a/user_guide/linting.html
+++ b/user_guide/linting.html
@@ -53,7 +53,7 @@
-
+
@@ -66,7 +66,7 @@
-
+
diff --git a/user_guide/params_files.html b/user_guide/params_files.html
index 8fadd45..78da9fc 100644
--- a/user_guide/params_files.html
+++ b/user_guide/params_files.html
@@ -53,7 +53,7 @@
-
+
@@ -66,7 +66,7 @@
-
+
diff --git a/user_guide/pre_commit.html b/user_guide/pre_commit.html
index 8b6f1e2..c66297b 100644
--- a/user_guide/pre_commit.html
+++ b/user_guide/pre_commit.html
@@ -53,7 +53,7 @@
-
+
@@ -66,7 +66,7 @@
-
+
diff --git a/user_guide/quarto.html b/user_guide/quarto.html
index 800a166..ce05528 100644
--- a/user_guide/quarto.html
+++ b/user_guide/quarto.html
@@ -53,7 +53,7 @@
-
+
@@ -66,7 +66,7 @@
-
+
diff --git a/user_guide/templates.html b/user_guide/templates.html
index 2228acf..b58a5b5 100644
--- a/user_guide/templates.html
+++ b/user_guide/templates.html
@@ -11,12 +11,12 @@
-
+
-
-
-
+
+
+
TODO
+DSO provides a templating engine that allows to quickly bootrstap a project (dso init
), folder, or stages (dso create
).
+Templates are based on jinja2.
DSO currently comes with the following templates:
+Project templates:
+default - Default template, with
+integration of git
, dvc
, uv
, pre-commit
, and editorconfig
.
Folder templates:
+default - This one is very minimal, just a folder with dvc.yaml
and params.in.yaml
files.
Stage templates:
+ +The source code of the templates can be inspected on GitHub. +Templates shipped with DSO are licensed under the Creative Commons Zero v1.0 +Universal license.
+Currently, dso only supports the internal templates mentioned above. However, we plan to add support to custom +stage templates soon. This enables some interesting use-cases:
+Organization-specific templates: Use templates that make it easier to comply with internal processes or apply +corporate design.
Best-practice codebases: Start off common analysis types off a predefined template. We believe that some analyses +require more flexibility than predefined worflows such as nf-core, but can still benefit from a structured +“base” document to get started with.
Template directories are recursively copied to their destination and files are rendered with jinja2.
+You can use all features of jinja2 such as if/else
blocks or loops. Additionally, you have access to the
+following variables:
Available variables for project templates:
+variable |
+content |
+
---|---|
project_name |
+project/folder name as provided to the |
+
project_description |
+description as provided to the |
+
Available variables for folder templates:
+variable |
+content |
+
---|---|
folder_name |
+folder name as provided to the |
+
Available variables for stage templates:
+variable |
+content |
+
---|---|
stage_name |
+folder name as provided to the |
+
stage_description |
+description as provided to the |
+
stage_path |
+Path to the stage relative to the project root |
+