Skip to content

Automated pinned environments for snakemake #53

@irm-codebase

Description

@irm-codebase

Is your feature request related to a problem? Please describe.
Pinning environments in Snakemake is annoying since pixi's naming convention does not mach snakemake's.
We could automate this through tasks.

Describe the solution you'd like

[tasks.export-conda-spec]
description = "Export one Pixi environment/platform as a conda explicit spec"
args = ["env", "platform"]
cmd = "pixi workspace export conda-explicit-spec --environment '{{ env }}' --platform '{{ platform }}' workflow/envs/"

[tasks.rename-conda-spec]
description = "Rename one Pixi conda explicit spec to a Snakemake pin file"
args = ["env", "platform"]
cmd = "mv workflow/envs/{{ env }}_{{ platform }}_conda_spec.txt workflow/envs/{{ env }}.{{ platform }}.pin.txt"

[tasks.export-snakemake-pin]
description = "Export one Pixi environment/platform as a Snakemake-compatible conda pin file"
args = ["env", "platform"]
depends-on = [
  { task = "export-conda-spec", args = ["{{ env }}", "{{ platform }}"] },
  { task = "rename-conda-spec", args = ["{{ env }}", "{{ platform }}"] },
]

[tasks.export-snakemake-env]
description = "Export one Pixi environment as a conda environment YAML"
args = ["env"]
depends-on = [
  { task = "export-snakemake-pin", args = ["{{ env }}", "win-64"] },
  { task = "export-snakemake-pin", args = ["{{ env }}", "linux-64"] },
  { task = "export-snakemake-pin", args = ["{{ env }}", "osx-arm64"] },
]
cmd = "pixi workspace export conda-environment --environment '{{ env }}' workflow/envs/{{ env }}.yaml"

Describe alternatives you've considered
Waiting until snakemake finally implements pixi?

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions