From 6c470d3a54fb922f37e4129da7b70864186cee03 Mon Sep 17 00:00:00 2001 From: Justin Bedo Date: Tue, 14 Dec 2021 14:08:49 +1100 Subject: subread: init --- default.nix | 1 + test-tnpair.nix | 1 + tools/subread-align.nix | 38 ++++++++++++++++++++++++++++++++++++++ tools/subread-index.nix | 20 ++++++++++++++++++++ tools/subread.nix | 8 ++++++++ 5 files changed, 68 insertions(+) create mode 100644 tools/subread-align.nix create mode 100644 tools/subread-index.nix create mode 100644 tools/subread.nix diff --git a/default.nix b/default.nix index 6f6fb3d..8d262f7 100644 --- a/default.nix +++ b/default.nix @@ -51,6 +51,7 @@ let whisper = callBionix ./tools/whisper.nix { }; star = callBionix ./tools/star.nix { }; genmap = callBionix ./tools/genmap.nix { }; + subread = callBionix ./tools/subread.nix { }; slurm-run = callPackage ./lib/slurm.nix { }; slurm-exec = f: x: y: diff --git a/test-tnpair.nix b/test-tnpair.nix index 0960b6f..8da1207 100644 --- a/test-tnpair.nix +++ b/test-tnpair.nix @@ -57,6 +57,7 @@ let alignments = { "bowtie-normal.bam" = bowtie.align { inherit ref; } tnpair.normal.files; + "subread.bam" = subread.align { inherit ref; } tnpair.normal.files; "last.maf" = lastal.align { inherit ref; } tnpair.normal.files; "whisper.bam" = whisper.align { inherit ref; } tnpair.normal.files; "bwa-mem.bam" = bwa.mem { inherit ref; } tnpair.normal.files; diff --git a/tools/subread-align.nix b/tools/subread-align.nix new file mode 100644 index 0000000..0b0f4c1 --- /dev/null +++ b/tools/subread-align.nix @@ -0,0 +1,38 @@ +{ bionix +, ref +, flags ? null +, indexAttrs ? { } +, RG ? { } +, type ? 1 +}: + +{ input1 +, input2 ? null +}: + +with bionix; +with lib; +with types; +with compression; + +let + fa = f: matchFiletype "subread-ref" { fa = _: f; } f; + fq = f: matchFiletype "subread-input" { fq = _: f; gz = matchFiletype' "subread-input" { fq = _: f; }; } f; + +in +stage { + name = "subread-align"; + buildInputs = with pkgs; [ subread ]; + buildCommand = '' + subread-align -i ${bionix.subread.index indexAttrs ref}/ref ${optionalString (flags != null) flags} -T $NIX_BUILD_CORES \ + -t ${toString type} \ + -r ${fq input1} \ + ${optionalString (input2 != null) "-R ${fq input2}"} \ + ${optionalString (RG ? ID) '' + --rg-id ${RG.ID} ${concatMapAttrsStringsSep " " (k: v: "--rg ${k}:${v}") (filterAttrs (k: _: k != "ID") RG)} \ + ''} \ + -o $out + ''; + passthru.filetype = filetype.bam { inherit ref; sorting = sort.none { }; }; + passthru.multicore = true; +} diff --git a/tools/subread-index.nix b/tools/subread-index.nix new file mode 100644 index 0000000..a5177a1 --- /dev/null +++ b/tools/subread-index.nix @@ -0,0 +1,20 @@ +{ bionix +, flags ? null +}: + +ref: + +with bionix; +with lib; +with types; + +assert (matchFiletype "subread-index" { fa = _: true; } ref); + +stage { + name = "subread-index"; + buildInputs = with pkgs; [ subread ]; + buildCommand = '' + mkdir $out + subread-buildindex ${optionalString (flags != null) flags} -o $out/ref ${ref} + ''; +} diff --git a/tools/subread.nix b/tools/subread.nix new file mode 100644 index 0000000..3ac563a --- /dev/null +++ b/tools/subread.nix @@ -0,0 +1,8 @@ +{ bionix }: + +with bionix; + +{ + align = callBionixE ./subread-align.nix; + index = callBionixE ./subread-index.nix; +} -- cgit v1.2.3